3.2. Red Hat Quay on OpenShift Container Platform への認証局のさらなる追加
Red Hat Quay on OpenShift Container Platform では、extra_ca_certs 設定フィールドを使用して追加の認証局 (CA) が CA ディレクトリーに入力され、その後、CA がシステムトラストバンドルに追加されます。これらの証明書は、LDAP、OIDC、ストレージシステムなどの外部サービスとの SSL/TLS 接続を検証するために Red Hat Quay によって使用されます。
OpenShift Container Platform に Red Hat Quay をデプロイまたは再デプロイする場合、外部サービスが適切に保護されて検証されるように、1 つまたは複数の CA を CA ディレクトリーに追加できます。OpenShift Container Platform デプロイメント上の Red Hat Quay では、extra_ca_certs 設定フィールドを config.yaml ファイルに手動で追加し、config.yaml を OpenShift Container Platform に再アップロードする必要があります。
以下の手順では、既存の設定ファイルをダウンロードし、OpenShift Container Platform デプロイメント上の Red Hat Quay に CA をさらに追加して、設定ファイルを再アップロードする方法を示します。
3.2.1. CLI を使用して設定ファイルを変更する リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用して既存の設定をダウンロードすることにより、configBundleSecret によって保存されている config.yaml ファイルを変更できます。変更を加えた後、configBundleSecret リソースを再度アップロードして、Red Hat Quay レジストリーに変更を加えることができます。
configBundleSecret リソースによって保存される config.yaml ファイルを変更するには、既存の設定ファイルを base64 でデコードした後に変更をアップロードするという、複数のステップからなる手順が必要です。ほとんどの場合、OpenShift Container Platform Web コンソールを使用して config.yaml ファイルに変更を加える方が簡単です。
前提条件
- 管理者権限を持つユーザーとして OpenShift Container Platform クラスターにログインしている。
手順
次のコマンドを入力して、
QuayRegistryリソースを記述します。$ oc describe quayregistry -n <quay_namespace># ... Config Bundle Secret: example-registry-config-bundle-v123x # ...次のコマンドを入力してシークレットデータを取得します。
$ oc get secret -n <quay_namespace> <example-registry-config-bundle-v123x> -o jsonpath='{.data}'出力例
{ "config.yaml": "RkVBVFVSRV9VU0 ... MDAwMAo=" }>> config.yamlフラグを渡して、データをカレントディレクトリーの YAML ファイルにデコードします。以下に例を示します。$ echo 'RkVBVFVSRV9VU0 ... MDAwMAo=' | base64 --decode >> config.yaml-
config.yamlファイルに必要な変更を加え、ファイルをconfig.yamlとして保存します。 次のコマンドを入力して、新しい
configBundleSecretYAML を作成します。$ touch <new_configBundleSecret_name>.yaml次のコマンドを入力し、
config.yamlファイルを渡して新しいconfigBundleSecretリソースを作成します。$ oc -n <namespace> create secret generic <secret_name> \ --from-file=config.yaml=</path/to/config.yaml> \1 --dry-run=client -o yaml > <new_configBundleSecret_name>.yaml- 1
<config.yaml>はbase64 でデコードされたconfig.yamlファイルです。
次のコマンドを入力して、
configBundleSecretリソースを作成します。$ oc create -n <namespace> -f <new_configBundleSecret_name>.yaml出力例
secret/config-bundle created次のコマンドを入力して、新しい
configBundleSecretオブジェクトを参照するようにQuayRegistryYAML ファイルを更新します。$ oc patch quayregistry <registry_name> -n <namespace> --type=merge -p '{"spec":{"configBundleSecret":"<new_configBundleSecret_name>"}}'出力例
quayregistry.quay.redhat.com/example-registry patched
検証
QuayRegistryCR が新しいconfigBundleSecretで更新されていることを確認します。$ oc describe quayregistry -n <quay_namespace>出力例
# ... Config Bundle Secret: <new_configBundleSecret_name> # ...レジストリーにパッチを適用すると、Red Hat Quay Operator が自動的に変更を調整します。
3.2.2. Red Hat Quay on OpenShift Container Platform への認証局のさらなる追加 リンクのコピーリンクがクリップボードにコピーされました!
次の例は、OpenShift Container Platform デプロイメント上の Red Hat Quay に認証局をさらに追加する方法を示しています。
前提条件
-
base64 で元の設定バンドルを
config.yamlファイルにデコードしている。詳細は、既存の設定のダウンロード を参照してください。 - 認証局 (CA) ファイルがある。
手順
新しい YAML ファイル (例:
extra-ca-certificate-config-bundle-secret.yaml)を作成します。$ touch extra-ca-certificate-config-bundle-secret.yamlextra-ca-certificate-config-bundle-secretリソースを作成します。次のコマンドを入力してリソースを作成します。
$ oc -n <namespace> create secret generic extra-ca-certificate-config-bundle-secret \ --from-file=config.yaml=</path/to/config.yaml> \1 --from-file=extra_ca_cert_<name-of-certificate-one>=<path/to/certificate_one> \2 --from-file=extra_ca_cert_<name-of-certificate-two>=<path/to/certificate_two> \3 --from-file=extra_ca_cert_<name-of-certificate-three>=<path/to/certificate_three> \4 --dry-run=client -o yaml > extra-ca-certificate-config-bundle-secret.yaml
オプション: 次のコマンドを入力すると、
extra-ca-certificate-config-bundle-secret.yamlファイルの内容を確認できます。$ cat extra-ca-certificate-config-bundle-secret.yaml出力例
apiVersion: v1 data: config.yaml: QUxMT1dfUFVMTFNfV0lUSE9VVF9TVFJJQ1RfTE9HR0lORzogZmFsc2UKQVVUSEVOVElDQVRJT05fVFlQRTogRGF0YWJhc2UKREVGQVVMVF9UQUdfRVhQSVJBVElPTjogMncKUFJFRkVSU... extra_ca_cert_certificate-one: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQyVENDQXNHZ0F3SUJBZ0lVS2xOai90VUJBZHBkNURjYkdRQUo4anRuKzd3d0RRWUpLb1pJaHZjTkFRRUwKQlFBd2ZERUxNQWtHQ... extra_ca_cert_certificate-three: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQ0ekNDQXN1Z0F3SUJBZ0lVQmJpTXNUeExjM0s4ODNWby9GTThsWXlOS2lFd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2ZERUxNQWtHQ... extra_ca_cert_certificate-two: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQ0ekNDQXN1Z0F3SUJBZ0lVVFVPTXZ2YVdFOFRYV3djYTNoWlBCTnV2QjYwd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2ZERUxNQWtHQ... kind: Secret metadata: creationTimestamp: null name: custom-ssl-config-bundle-secret namespace: <namespace>次のコマンドを入力して、
configBundleSecretリソースを作成します。$ oc create -n <namespace> -f extra-ca-certificate-config-bundle-secret.yaml出力例
secret/extra-ca-certificate-config-bundle-secret created次のコマンドを入力して、
QuayRegistryYAML ファイルを更新し、extra-ca-certificate-config-bundle-secretオブジェクトを参照します。$ oc patch quayregistry <registry_name> -n <namespace> --type=merge -p '{"spec":{"configBundleSecret":"extra-ca-certificate-config-bundle-secret"}}'出力例
quayregistry.quay.redhat.com/example-registry patched次のコマンドを入力して、
QuayRegistryYAML ファイルが更新され、追加の CA 証明書configBundleSecretリソースが使用されるようにします。$ oc get quayregistry <registry_name> -n <namespace> -o yaml出力例
# ... configBundleSecret: extra-ca-certificate-config-bundle-secret # ...