#{ commentsCount } comment.
Kubernetes环境PostgreSQL部署与应用
发布于2022-09-11
,最后编辑于2024-12-05
,全文约1085
字,阅读时间约3
分钟。
Kubernetes Helm Database PostgreSQL Bitnami
更新记录
-
2022-09-17
PostgreSQL Helm Chart by Bitnami
版本由v11.8.1
更新至v11.8.2
;
-
2022-10-14
PostgreSQL Helm Chart by Bitnami
版本由v11.8.2
更新至v11.9.8
;
-
2022-10-20
PostgreSQL Helm Chart by Bitnami
版本由v11.9.8
更新至v11.9.11
;
-
2022-11-13
PostgreSQL Helm Chart by Bitnami
版本由v11.9.11
更新至v11.9.13
;
-
2023-06-07
PostgreSQL
版本由v14.5.0
更新至v15.3.0
;PostgreSQL Helm Chart by Bitnami
版本由v11.9.13
更新至v12.5.6
;
-
2023-07-24
PostgreSQL Helm Chart by Bitnami
版本由v12.5.6
更新至v12.6.8
;
-
2023-08-08
PostgreSQL Helm Chart by Bitnami
版本由v12.6.8
更新至v12.8.0
;
-
2023-08-17
PostgreSQL
版本由v15.3.0
更新至v15.4.0
;PostgreSQL Helm Chart by Bitnami
版本由v12.8.0
更新至v12.8.2
;
-
2023-09-01
PostgreSQL Helm Chart by Bitnami
版本由v12.8.2
更新至v12.10.0
;
-
2024-01-01
PostgreSQL
版本由v15.4.0
更新至v16.1.0
;PostgreSQL Helm Chart by Bitnami
版本由v12.10.0
更新至v13.2.27
;
-
2024-03-31
PostgreSQL
版本由v16.1.0
更新至v16.2.0
;PostgreSQL Helm Chart by Bitnami
版本由v13.2.27
更新至v15.1.4
;
-
2024-08-27
PostgreSQL
版本由v16.2.0
更新至v16.4.0
;PostgreSQL Helm Chart by Bitnami
版本由v15.1.4
更新至v15.5.24
;
-
2024-09-30
PostgreSQL Helm Chart by Bitnami
版本由v15.5.24
更新至v15.5.36
;
概述¶
本文用于整理基于Kubernetes环境的PostgreSQL部署与应用,作为后续演练项目的前置环境准备。
随着各相关组件版本的更新,笔者将在验证通过后对本文进行补充和更新,请参考更新记录。
本次演练环境为Kubernetes集群环境,环境配置可参考笔者另一篇笔记《Kubernetes集群部署笔记》。
注意:本文部署的PostgreSQL实例仅用于演练环境,不可用于生产环境。
组件版本¶
-
PostgreSQL
v16.4.0
-
PostgreSQL Helm Chart by Bitnami
v15.5.36
配置过程¶
安装PostgreSQL¶
本次演练中将PostgreSQL安装至data-postgresql
命名空间,可根据需要替换。
-
添加Helm仓库
1helm repo add bitnami https://charts.bitnami.com/bitnami 2helm repo update bitnami
-
创建命名空间
1kubectl create namespace data-postgresql
-
创建密码配置文件
1# 创建一个Secret对象,其中`postgres-password`的值将被设置为`postgres`用户的密码 2kubectl create secret --namespace data-postgresql generic postgresql-secret \ 3 --from-literal=postgres-password=jSTugla950BMlUFuqgXeKWg0 4 5# 或者可以按指定的规则随机生成密码,例如: 6kubectl create secret --namespace data-postgresql generic postgresql-secret \ 7 --from-literal=postgres-password=$(openssl rand -base64 18)
-
安装PostgreSQL
1# architecture=standalone 部署架构(本文演练环境中使用独立架构) 2# auth.existingSecret=postgresql-secret 包含密码的Secret对象名称 3# primary.persistence.enabled=true 启用持久卷 4# primary.persistence.size=8Gi 持久化卷大小 5# primary.persistence.storageClass=local-path 存储类名称 6# primary.service.type=LoadBalancer 服务类型(本文演练环境中使用`LoadBalancer`访问PostgreSQL服务) 7helm upgrade --install --namespace data-postgresql \ 8 --set architecture=standalone \ 9 --set auth.existingSecret=postgresql-secret \ 10 --set primary.persistence.enabled=true \ 11 --set primary.persistence.size=8Gi \ 12 --set primary.persistence.storageClass=local-path \ 13 --set primary.service.type=LoadBalancer \ 14 postgresql bitnami/postgresql --version v15.5.36
访问PostgreSQL¶
-
集群外部访问PostgreSQL服务
1# --watch 等待集群分配LoadBalancer地址 2kubectl get svc --namespace data-postgresql --watch postgresql
上面的命令会输出类似下面的内容。
1NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE 2postgresql LoadBalancer 10.108.10.147 10.0.0.203 5432:30823/TCP 35s
-
使用
psql
工具访问PostgreSQL服务获取
postgres
用户的密码,并打开一个psql
命令行界面。1# 获取`postgres`用户的密码,保存在变量`POSTGRES_PASSWORD`中 2export POSTGRES_PASSWORD=$(kubectl get secret --namespace data-postgresql postgresql-secret -o jsonpath="{.data.postgres-password}" | base64 -d) 3 4# 打开一个`psql`命令行界面 5kubectl run postgresql-client --rm -it --restart Never --namespace data-postgresql \ 6 --image docker.io/bitnami/postgresql:16.4.0 \ 7 --env "PGPASSWORD=$POSTGRES_PASSWORD" \ 8 --command -- psql --host postgresql -U postgres -d postgres -p 5432 9# If you don't see a command prompt, try pressing enter. 10# 如果没有看到命令提示符,请尝试按回车键。
执行以下的命令,验证PostgreSQL服务可用。
1-- 创建一个示例数据库 2CREATE DATABASE demo; 3 4-- \l 列出所有数据库 5-- \c demo 切换到`demo`数据库 6 7-- 创建一张示例表`users` 8CREATE TABLE public.users (id int8 NOT NULL, username varchar(128) NOT NULL, PRIMARY KEY (id)); 9 10-- 向`users`表中插入示例数据 11INSERT INTO public.users (id, username) VALUES(1, 'galen.suen'); 12 13-- 查询上一步中插入的数据 14SELECT id, username FROM public.users WHERE id = 1; 15 16-- 删除`users`表中的示例数据 17DELETE FROM public.users WHERE id = 1; 18 19-- 删除示例表`users` 20DROP TABLE public.users; 21 22-- \c postgres 切换到`postgres`数据库 23 24-- 删除示例数据库 25DROP DATABASE demo WITH (FORCE);