第5章 Red Hat Quay コンテナーへの認証局の追加
extra_ca_certs
ディレクトリーは、信頼できる証明書のセットを拡張するために認証局 (CA) を追加で保存できるディレクトリーです。これらの証明書は、Red Hat Quay によって外部サービスとの SSL/TLS 接続を検証するために使用されます。Red Hat Quay をデプロイするときに、必要な CA をこのディレクトリーに配置して、LDAP、OIDC、ストレージシステムなどのサービスへの接続が適切に保護され、検証されるようにすることができます。
スタンドアロンの Red Hat Quay デプロイメントの場合は、このディレクトリーを作成し、追加の CA 証明書をそのディレクトリーにコピーする必要があります。
前提条件
- 希望するサービス用の CA があります。
手順
次のコマンドを入力して、コンテナーに追加する証明書を表示します。
$ cat storage.crt
出力例
-----BEGIN CERTIFICATE----- MIIDTTCCAjWgAwIBAgIJAMVr9ngjJhzbMA0GCSqGSIb3DQEBCwUAMD0xCzAJBgNV... -----END CERTIFICATE-----
次のコマンドを入力して、Red Hat Quay ディレクトリーの
/config
フォルダーにextra_ca_certs
を作成します。$ mkdir -p /path/to/quay_config_folder/extra_ca_certs
CA ファイルを
extra_ca_certs
フォルダーにコピーします。以下に例を示します。$ cp storage.crt /path/to/quay_config_folder/extra_ca_certs/
次のコマンドを入力して、
extra_ca_certs
フォルダー内にstorage.crt
ファイルが存在することを確認します。$ tree /path/to/quay_config_folder/extra_ca_certs
出力例
/path/to/quay_config_folder/extra_ca_certs ├── storage.crt----
次のコマンドを入力して、
Quay
のCONTAINER ID
を取得します。$ podman ps
出力例
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS 5a3e82c4a75f <registry>/<repo>/quay:{productminv} "/sbin/my_init" 24 hours ago Up 18 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 443/tcp grave_keller
次のコマンドを入力してコンテナーを再起動します。
$ podman restart 5a3e82c4a75f
次のコマンドを実行して、証明書がコンテナー名前空間にコピーされたことを確認します。
$ podman exec -it 5a3e82c4a75f cat /etc/ssl/certs/storage.pem
出力例
-----BEGIN CERTIFICATE----- MIIDTTCCAjWgAwIBAgIJAMVr9ngjJhzbMA0GCSqGSIb3DQEBCwUAMD0xCzAJBgNV... -----END CERTIFICATE-----
5.1. Red Hat Quay が Kubernetes にデプロイされている場合のカスタム SSL/TLS 証明書の追加
Kubernetes にデプロイすると、Red Hat Quay は config アセットを保存するボリュームとしてシークレットにマウントします。現在、これによりスーパーユーザーパネルの証明書のアップロード機能が中断されます。
一時的な回避策として、Red Hat Quay の デプロイ後 に、base64
でエンコードされた証明書をシークレットに追加できます。
Red Hat Quay が Kubernetes にデプロイされている場合は、次の手順を使用してカスタム SSL/TLS 証明書を追加します。
前提条件
- Red Hat Quay がデプロイされている。
-
カスタムの
ca.crt
ファイルがある。
手順
次のコマンドを入力して、SSL/TLS 証明書の内容を Base64 でエンコードします。
$ cat ca.crt | base64 -w 0
出力例
...c1psWGpqeGlPQmNEWkJPMjJ5d0pDemVnR2QNCnRsbW9JdEF4YnFSdVd3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
次の
kubectl
コマンドを入力して、quay-enterprise-config-secret
ファイルを編集します。$ kubectl --namespace quay-enterprise edit secret/quay-enterprise-config-secret
証明書のエントリーを追加し、
base64
でエンコードされた完全なストリンガーをエントリーの下に貼り付けます。以下に例を示します。custom-cert.crt: c1psWGpqeGlPQmNEWkJPMjJ5d0pDemVnR2QNCnRsbW9JdEF4YnFSdVd3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
kubectl delete
コマンドを使用して、すべての Red Hat Quay Pod を削除します。以下に例を示します。$ kubectl delete pod quay-operator.v3.7.1-6f9d859bd-p5ftc quayregistry-clair-postgres-7487f5bd86-xnxpr quayregistry-quay-app-upgrade-xq2v6 quayregistry-quay-database-859d5445ff-cqthr quayregistry-quay-redis-84f888776f-hhgms
その後、Red Hat Quay デプロイメントにより、Pod を新しい証明書データに置き換えるスケジュールが自動的に設定されます。