使用外部 PostgreSQL 数据库

对于卡巴斯基容器安全,您可以使用解决方案中包含的 PostgreSQL 数据库或您自己的 PostgreSQL 数据库。要安装不适用于卡巴斯基容器安全模式的外部 PostgreSQL 数据库,您必须创建单独的用户。您可以通过安装带有为外部 PostgreSQL 数据库指定的模式参数的 Helm Chart 包来执行此操作。

要使用外部 PostgreSQL 数据库:

  1. 在 values.yaml 配置文件中指定以下内容:

    --set default.postgresql.external="true"

    --set configmap.infraconfig.envs.postgres_host="<PostgreSQL DBMS 的 IP 地址或 FQDN>"

    --set configmap.infraconfig.envs.postgres_port="<用于连接到 PostgreSQL DBMS 的端口;默认使用端口 5432>"

    --set configmap.infraconfig.envs.postgres_db_name="<PostgreSQL DBMS 管理员创建的数据库名称,默认使用 api>"

  2. 要求 PostgreSQL DBMS 管理员明确 DBMS 服务器证书验证的要求。卡巴斯基容器安全支持以下验证模式:
    • --set configmap.infraconfig.envs.postgres_verify_level= "disable" – 不验证服务器证书。
    • --set configmap.infraconfig.envs.postgres_verify_level= "require" – 需要证书,解决方案信任所有证书,且不进行任何进一步验证。
    • --set configmap.infraconfig.envs.postgres_verify_level= "verify-ca" – 需要证书,解决方案检查证书是否由受信任的 CA(证书颁发机构)签发。
    • --set configmap.infraconfig.envs.postgres_verify_level= "verify-full" – 需要证书,解决方案验证证书是否由受信任的 CA 签发并包含正确的 IP 地址或 FQDN。
  3. 如果需要验证外部 PostgreSQL DBMS 的证书,请执行以下操作:
    1. 使用 certs/pgsql-ca.crt 掩码将 CA 证书的公共部分上传到文件夹以及 Helm Chart 包。
    2. 指定以下验证参数:--set configmap.infraconfig.envs.postgres_root_ca_path="/etc/ssl/certs/pgsql-ca.crt"
    3. 取消注释 values.yaml 配置文件中的 secret.cert-pgsql-ca 部分以创建 Secret。

要为外部 PostgreSQL 数据库创建具有自定义模式的用户:

  1. 运行以下命令为外部 PostgreSQL 数据库创建单独的命名空间:

    kubectl create ns kcspg

    其中kcspg是外部 PostgreSQL 数据库的命名空间。

  2. 要部署外部 PostgreSQL 数据库:
    1. 在 pg.yaml 配置文件中指定部署外部 PostgreSQL 数据库的参数。

      用于部署外部 PostgreSQL 数据库的参数

      该参数指定数据库的密码。然后,您必须在 values.yaml 配置文件的infraconfig部分中指定此密码,该文件是解决方案分发套件中包含的Helm Chart 包的一部分。

    2. 运行以下命令:

      kubectl apply -f pg.yaml -n kcspg

    该外部数据库的名称格式如下:

    <pod_name>.<命名空间名称>.<服务>.cluster.local

    例如,postgres.kcspg.svc.cluster.local

  3. 要在集群中部署服务对象:
    1. 在 svc.yaml 配置文件中指定服务对象部署参数。

      用于在集群中部署服务对象的参数

    2. 运行以下命令:

      kubectl apply -f svc.yaml -n kcspg

  4. 要创建用户、模式和用户-模式关系:
    1. 使用步骤 2b 中展开的 postgres 元素,登录到Pod。
    2. 启动 psql 交互式终端:

      psql -h localhost -U postgres -d api

    3. 运行以下命令:

      CREATE ROLE kks LOGIN PASSWORD 'kks' NOINHERIT CREATEDB;

      CREATE SCHEMA kks AUTHORIZATION kks;

      GRANT USAGE ON SCHEMA kks TO PUBLIC;

  5. 在 values.yaml 配置文件中,指定使用外部 PostgreSQL 数据库所需的参数。

    values.yaml 文件中的参数

    values.yaml 中指定的参数值必须与 pg.yaml 和 svc.yaml 配置文件中对应参数的值匹配。

  6. 开始解决方案更新

    使用外部 PostgreSQL 数据库创建用户的命令示例

页首