3.3.3. サービス CA バンドルの設定マップへの追加
Pod は、service.beta.openshift.io/inject-cabundle=true アノテーションを持つ ConfigMap オブジェクトをマウントすることで、サービスの認証局 (CA) 証明書にアクセスできます。config map にアノテーションが付けられると、クラスターがサービスの CA 証明書を config map の service-ca.crt キーに自動的に注入します。この CA 証明書へのアクセスにより、TLS クライアントがサービス提供証明書を使用してサービスへの接続を検証することが可能になります。
OpenShift Service CA Operator は、このアノテーションを config map に追加した後、config map 内のすべてのデータを削除します。Pod の設定を格納している config map と同じものを使用するのではなく、別の config map を使用して service-ca.crt を格納することを検討してください。
手順
次のコマンドを入力して、config map に
service.beta.openshift.io/inject-cabundle=trueアノテーションを付けます。$ oc annotate configmap <config_map_name> \1 service.beta.openshift.io/inject-cabundle=true- 1
<config_map_name>を、アノテーションを付ける設定マップの名前に置き換えます。注記ボリュームマウントで
service-ca.crtキーを明示的に参照すると、config map に CA バンドルが注入されるまで Pod が起動しなくなります。この動作は、ボリュームのサービス証明書設定でoptionalパラメーターをtrueに設定することでオーバーライドできます。
config map を表示して、サービス CA バンドルが注入されていることを確認します。
$ oc get configmap <config_map_name> -o yamlCA バンドルは、YAML 出力の
service-ca.crtキーの値として表示されます。apiVersion: v1 data: service-ca.crt: | -----BEGIN CERTIFICATE----- ...Deploymentオブジェクトを設定して、Pod 内に存在する各コンテナーに config map をボリュームとしてマウントします。マウントされる config map のボリュームを定義する Deployment オブジェクトの例
apiVersion: apps/v1 kind: Deployment metadata: name: my-example-custom-ca-deployment namespace: my-example-custom-ca-ns spec: ... spec: ... containers: - name: my-container-that-needs-custom-ca volumeMounts: - name: trusted-ca mountPath: /etc/pki/ca-trust/extracted/pem readOnly: true volumes: - name: trusted-ca configMap: name: <config_map_name>1 items: - key: ca-bundle.crt2 path: tls-ca-bundle.pem3 # ...