5.4. OpenShift クラスター内から Apicurio Registry への HTTPS 接続の設定
以下の手順では、OpenShift クラスター内から HTTPS 接続のポートを公開するように Apicurio Registry デプロイメントを設定する方法を説明します。
このような接続は、クラスター外部で直接利用できません。ルーティングはホスト名に基づいており、HTTPS 接続の場合はエンコードされます。そのため、エッジターミネーションまたはその他の設定は必要です。「OpenShift クラスター外から Apicurio Registry への HTTPS 接続の設定」 を参照してください。
前提条件
- Apicurio Registry Operator がインストールされている。
手順
自己署名証明書を使用して
keystore
を生成します。独自の証明書を使用している場合は、この手順を省略できます。openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout tls.key -out tls.crt
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout tls.key -out tls.crt
Copy to Clipboard Copied! 証明書と秘密鍵を保持する新しいシークレットを作成します。
- OpenShift Web コンソールの左側のナビゲーションメニューで、Workloads > Secrets > Create Key/Value Secret とクリックします。
-
次の値を使用します。
名前:https-cert-secret
キー 1:tls.key
値 1: tls.key (アップロードされたファイル)
キー 2:tls.crt
値 2: tls.crt (アップロードされたファイル)
または、次のコマンドを使用してシークレットを作成します。
oc create secret generic https-cert-secret --from-file=tls.key --from-file=tls.crt
oc create secret generic https-cert-secret --from-file=tls.key --from-file=tls.crt
Copy to Clipboard Copied! Apicurio Registry デプロイメントの
ApicurioRegistry
CR のspec.configuration.security.https
セクションを編集します。次に例を示します。apiVersion: registry.apicur.io/v1 kind: ApicurioRegistry metadata: name: example-apicurioregistry spec: configuration: # ... security: https: secretName: https-cert-secret
apiVersion: registry.apicur.io/v1 kind: ApicurioRegistry metadata: name: example-apicurioregistry spec: configuration: # ... security: https: secretName: https-cert-secret
Copy to Clipboard Copied! 接続が機能していることを確認します。
SSH を使用してクラスターの Pod に接続します (Apicurio Registry Pod を使用できます)。
oc rsh example-apicurioregistry-deployment-6f788db977-2wzpw
oc rsh example-apicurioregistry-deployment-6f788db977-2wzpw
Copy to Clipboard Copied! Serviceリソースから Apicurio Registry Pod のクラスター IP を見つけます (Web コンソールの Location 列を参照)。その後、テスト要求を実行します (自己署名証明書を使用するので、セキュアでないフラグが必要になります)。
curl -k https://172.30.230.78:8443/health
curl -k https://172.30.230.78:8443/health
Copy to Clipboard Copied!
HTTPS 証明書とキーを含む Kubernetes シークレットでは、指定された値に tls.crt
および tls.key
という名前を使用する必要があります。これは現在設定できません。
HTTP の無効化
このセクションの手順を使用して HTTPS を有効にした場合は、spec.security.https.disableHttp
を true
に設定することで、デフォルトの HTTP 接続を無効にすることもできます。これにより、Apicurio Registry Pod コンテナー、Service
、および NetworkPolicy
(存在する場合) から HTTP ポート 8080 が削除されます。
重要なのは、Apicurio Registry Operator が現在 Ingress
での HTTPS の設定をサポートしていないため、Ingress
も削除されることです。ユーザーは HTTPS 接続用の Ingress
を手動で作成する必要があります。