环境信息
- Kubernetes:v1.20.6
- StorageClass:UFS
- Helm:v3.5.2
添加 Helm仓库
这里选用BitNami提供的chart仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
同步海外源镜像
在国内环境部署应用,经常因为获取国外源站容器镜像超时,导致部署失败,可以提前将容器镜像同步到本地镜像仓库中,以自有镜像仓库 uhub.service.ucloud.cn/ucloud_pts 为例:
docker login uhub.service.ucloud.cn/ucloud_pts
docker pull bitnami/postgresql:13.3.0-debian-10-r55
docker tag bitnami/postgresql:13.3.0-debian-10-r55 uhub.service.ucloud.cn/ucloud_pts/postgresql:13.3.0-debian-10-r55
docker push uhub.service.ucloud.cn/ucloud_pts/postgresql:13.3.0-debian-10-r55
创建 imagePullSecrets
创建容器集群访问 uhub.service.ucloud.cn/ucloud_pts 需要的 secret
kubectl create namespace db
kubectl create secret docker-registry registry-secret-name \
--namespace=db \
--docker-server=uhub.service.ucloud.cn/ucloud_pts \
--docker-username='xxxxxx' \
--docker-password='xxxxxx'
使用Helm部署postgresql
cat > pg-values.yaml << EOF
image:
registry: uhub.service.ucloud.cn/ucloud_pts
repository: postgresql
tag: 13.3.0-debian-10-r55
global:
imagePullSecrets:
- registry-secret-name
storageClass: csi-udisk-rssd
postgresql:
postgresqlDatabase: dbname
postgresqlUsername: pgadmin
postgresqlPassword: passwdxxxx
EOF
helm install gitlib-db -f pg-values.yaml bitnami/postgresql -n gitlib
如果需要部署不同PG版本,选择同步不同版本镜像即可:
- PG v13: bitnami/postgresql:13.3.0-debian-10-r55
- PG v12: bitnami/postgresql:12.7.0-debian-10-r51
- PG v11: bitnami/postgresql:11.12.0-debian-10-r53
更多版本可以参考,https://hub.docker.com/r/bitnami/postgresql/tags?page=1&ordering=last_updated&name=debian
验证部署
集群内域名:gitlib-db-postgresql.gitlib.svc.cluster.local
获取 postgres 用户密码:
export POSTGRES_ADMIN_PASSWORD=$(kubectl get secret --namespace db dbname-postgresql -o jsonpath="{.data.postgresql-postgres-password}" | base64 --decode)
- 获取 pgadmin 用户密码
export POSTGRES_PASSWORD=$(kubectl get secret --namespace db dbname-postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode)
- 验证连接数据
kubectl run dbname-postgresql-client --rm --tty -i --restart='Never' --namespace db --image uhub.service.ucloud.cn/ucloud_pts/postgresql:11.12.0-debian-10-r44 --env="PGPASSWORD=$POSTGRES_PASSWORD" --command -- psql --host gitlib-db-postgresql -U pgadmin -d gitlib-db -p 5432