更新记录
-
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;
-
-
2025-05-01
-
PostgreSQL版本由v16.4.0更新至v17.4.0; -
PostgreSQL Helm Chart by Bitnami版本由v15.5.36更新至v16.6.6;
-
概述
本文用于整理基于Kubernetes环境的PostgreSQL部署与应用,作为后续演练项目的前置环境准备。
随着各相关组件版本的更新,笔者将在验证通过后对本文进行补充和更新,请参考更新记录。
本次演练环境为Kubernetes集群环境,环境配置可参考笔者另一篇笔记《Kubernetes集群部署笔记》。
注意:本文部署的PostgreSQL实例仅用于演练环境,不可用于生产环境。
组件版本
-
PostgreSQL
v17.4.0 -
PostgreSQL Helm Chart by Bitnami
v16.6.6
配置过程
安装PostgreSQL
本次演练中将PostgreSQL安装至data-postgresql命名空间,可根据需要替换。
-
创建命名空间
kubectl create namespace data-postgresql -
创建密码配置文件
# 创建一个Secret对象,其中`postgres-password`的值将被设置为`postgres`用户的密码 kubectl create secret --namespace data-postgresql generic postgresql-secret \ --from-literal=postgres-password=jSTugla950BMlUFuqgXeKWg0 # 或者可以按指定的规则随机生成密码,例如: kubectl create secret --namespace data-postgresql generic postgresql-secret \ --from-literal=postgres-password=$(openssl rand -base64 18) -
安装PostgreSQL
# architecture=standalone 部署架构(本文演练环境中使用独立架构) # auth.existingSecret=postgresql-secret 包含密码的Secret对象名称 # primary.persistence.enabled=true 启用持久卷 # primary.persistence.size=8Gi 持久化卷大小 # primary.persistence.storageClass=local-path 存储类名称 # primary.service.type=LoadBalancer 服务类型(本文演练环境中使用`LoadBalancer`访问PostgreSQL服务) helm upgrade --install --namespace data-postgresql \ --set architecture=standalone \ --set auth.existingSecret=postgresql-secret \ --set primary.persistence.enabled=true \ --set primary.persistence.size=8Gi \ --set primary.persistence.storageClass=local-path \ --set primary.service.type=LoadBalancer \ postgresql oci://registry-1.docker.io/bitnamicharts/postgresql --version 16.6.6
访问PostgreSQL
-
集群外部访问PostgreSQL服务
# --watch 等待集群分配LoadBalancer地址 kubectl get svc --namespace data-postgresql --watch postgresql上面的命令会输出类似下面的内容。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE postgresql LoadBalancer 10.108.10.147 10.0.0.203 5432:30823/TCP 35s -
使用
psql工具访问PostgreSQL服务获取
postgres用户的密码,并打开一个psql命令行界面。# 获取`postgres`用户的密码,保存在变量`POSTGRES_PASSWORD`中 export POSTGRES_PASSWORD=$(kubectl get secret --namespace data-postgresql postgresql-secret -o jsonpath="{.data.postgres-password}" | base64 -d) # 打开一个`psql`命令行界面 kubectl run postgresql-client --rm -it --restart Never --namespace data-postgresql \ --image docker.io/bitnami/postgresql:17.4.0 \ --env "PGPASSWORD=$POSTGRES_PASSWORD" \ --command -- psql --host postgresql -U postgres -d postgres -p 5432 # If you don't see a command prompt, try pressing enter. # 如果没有看到命令提示符,请尝试按回车键。执行以下的命令,验证PostgreSQL服务可用。
-- 创建一个示例数据库 CREATE DATABASE demo; -- \l 列出所有数据库 -- \c demo 切换到`demo`数据库 -- 创建一张示例表`users` CREATE TABLE public.users (id int8 NOT NULL, username varchar(128) NOT NULL, PRIMARY KEY (id)); -- 向`users`表中插入示例数据 INSERT INTO public.users (id, username) VALUES(1, 'galen.suen'); -- 查询上一步中插入的数据 SELECT id, username FROM public.users WHERE id = 1; -- 删除`users`表中的示例数据 DELETE FROM public.users WHERE id = 1; -- 删除示例表`users` DROP TABLE public.users; -- \c postgres 切换到`postgres`数据库 -- 删除示例数据库 DROP DATABASE demo WITH (FORCE);