5.4. OpenShift クラスター内からの Service Registry への HTTPS 接続の設定
以下の手順では、OpenShift クラスター内から HTTPS 接続のポートを公開するように Service Registry デプロイメントを設定する方法を説明します。
このような接続は、クラスター外部で直接利用できません。ルーティングはホスト名に基づいており、HTTPS 接続の場合はエンコードされます。そのため、エッジターミネーションまたはその他の設定は必要です。「OpenShift クラスター外から Service Registry への HTTPS 接続の設定」 を参照してください。
前提条件
- Service 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.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書と秘密鍵を保持する新しいシークレットを作成します。
- 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.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Service Registry デプロイメントの
ApicurioRegistryCR のspec.configuration.security.httpsセクションを編集します。次に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 接続が機能していることを確認します。
SSH を使用してクラスターの Pod に接続します (Service Registry Pod を使用できます)。
oc rsh example-apicurioregistry-deployment-6f788db977-2wzpw
oc rsh example-apicurioregistry-deployment-6f788db977-2wzpwCopy to Clipboard Copied! Toggle word wrap Toggle overflow Serviceリソースから Service Registry Pod のクラスター IP を見つけます (Web コンソールの Location 列を参照)。その後、テスト要求を実行します (自己署名証明書を使用するので、セキュアでないフラグが必要になります)。
curl -k https://172.30.230.78:8443/health
curl -k https://172.30.230.78:8443/healthCopy to Clipboard Copied! Toggle word wrap Toggle overflow
HTTPS 証明書とキーを含む Kubernetes シークレットでは、指定された値に tls.crt および tls.key という名前を使用する必要があります。これは現在設定できません。
HTTP の無効化
このセクションの手順を使用して HTTPS を有効にした場合は、spec.security.https.disableHttp を true に設定することで、デフォルトの HTTP 接続を無効にすることもできます。これにより、Service Registry Pod コンテナー、Service、および NetworkPolicy (存在する場合) から HTTP ポート 8080 が削除されます。
重要なのは、Service Registry Operator が現在 Ingress での HTTPS の設定をサポートしていないため、Ingress も削除されることです。ユーザーは HTTPS 接続用の Ingress を手動で作成する必要があります。