前提条件
Kubernetes導入で外部データベースのmTLSを構成する前に、次のことを確認してください:
-
環境設定:
-
KubernetesとHelmがインストールされ、適切に構成されている。
-
永続ボリューム(PV)と永続ボリューム要求(PVC)が環境に設定されている。
-
-
導入準備:
-
使用する正しい導入ファイルを特定してあり、ダウンロードする場所を把握している。
-
外部データベースを使用するBlack Duck導入の設定に習熟している。
-
外部データベースでBlack Duck導入を実施するために必要なコマンドが準備できている。
-
-
mTLS要件:
-
openssl.cnfファイルは、証明書の生成にサーバー上で利用できます。 -
シークレットは、導入手順で提供されるデフォルト値を使用して命名されます。
-
導入によっては、mTLSにルート証明書、管理者証明書、管理者キー、ユーザー証明書、ユーザーキーの最大5つのシークレットが存在する場合があります。これらを1つ以上使用していない場合は、
values.yamlファイル内の対応するエントリを空の文字列("")に更新します。-
例:ルート証明書を構成するには、value.yamlの
postgres.customCerts.rootCAKeyNameフィールドを更新します。デフォルトでは"HUB_POSTGRES_CA"に設定されています。ルート証明書がない場合は、この値を""に設定します。
-
-
-
名前空間の一貫性:
-
Black Duck導入とPostgreSQL導入は両方とも同じ名前空間を使用します。
-
Black Duckデプロイメントへの変更点
次を更新: values.yaml
Black Duck導入用にmTLSを構成するには、必要な設定のシークレットを使用してvalues.yamlファイルを更新する必要があります。次のステップに従います:
-
次を構成:
postgres.sslModepostgres.sslMode構成オプションをvalues.yamlに追加します。このオプションは、導入に証明書とキーのシークレットを含めるかどうかを判断します。このオプションが構成されていない場合、setenv.shスクリプトは導入から証明書/キーのシークレットを除外します。この値がmTLSを有効にするように設定されていることを確認してください。 -
カスタム証明書のシークレット名を設定
postgres.customCerts.useCustomCertsオプションをvalues.yamlに追加します。これは、外部データベースに接続するために必要な証明書とキーデータ(ルートCA、管理者証明書/キー、ユーザー証明書/キーなど)を含むシークレットの名前を指定します。 -
カスタム証明書データを定義
values.yamlのpostgres.customCertsセクションで、証明書とキーのデータを指定するよう、次の5つのオプションを構成します:-
rootCAKeyName:ルートCA証明書のキー名。 -
clientCertName:ユーザー証明書のキー名。 -
clientKeyName:ユーザー秘密キーのキー名。 -
adminClientCertName:管理者証明書のキー名。 -
adminClientKeyName:管理者プライベートキーのキー名。
これらの値がシークレット構成内の名前と一致していることを確認してください。
-
次を更新: postgres-init.yaml
mTLSをサポートするには、postgres-init.yamlファイルに次の変更を加える必要があります:
-
5つの新しいSSLシークレットのボリュームとボリュームマウントロジックを追加します。
-
PGSSLMODE環境変数を設定するロジックを含めます。 -
PGSSLROOTCERT環境変数を設定するロジックを追加します。 -
最初に
PGSSLCERT環境変数をHUB_POSTGRES_CRTに基づいて、次にHUB_ADMIN_POSTGRES_CRTに基づいて設定します。明確にするため、別のifステートメントを使用する必要があります。 -
最初に
PGSSLKEY環境変数をHUB_POSTGRES_KEYに基づいて、次にHUB_ADMIN_POSTGRES_KEYに基づいて設定します。明確にするため、別のifステートメントを使用する必要があります。 -
/tmp/postgres-init/init.pgsqlを実行するためにロジックを移動し、他のシェルコマンドとグループ化して読みやすさを向上させることで、シェルコマンドロジックを再編成します。
環境を更新
HUB_POSTGRES_ENABLE_SSL_CERT_AUTH: "true"を環境に追加します。
次を更新: postgres.name
データベースポッドを開始後、ポッドのホスト値を取得し、values.yamlのpostgres.hostフィールドを更新します。
postgres.customCerts.useCustomCertsを更新
postgres.customCerts.useCustomCertsをtrueに更新します。
証明書とキーのシークレットを作成
次のコマンドを使用し、証明書とキーのシークレットを作成します:
kubectl create secret generic -n bdbd-blackduck-postgres-certificate --from-file=HUB_POSTGRES_CA=root.crt
--from-file=HUB_POSTGRES_CRT=blackduck_user.crt
--from-file=HUB_POSTGRES_KEY=blackduck_user.pk8
--from-file=HUB_ADMIN_POSTGRES_CRT=blackduck_admin.crt
--from-file=HUB_ADMIN_POSTGRES_KEY=blackduck_admin.pk8