5.3. OpenShift クラスター内から Service Registry への HTTPS 接続の設定
以下の手順では、OpenShift クラスター内から HTTPS 接続のポートを公開するように Service Registry デプロイメントを設定する方法を説明します。
このような接続は、クラスター外部で直接利用できません。ルーティングはホスト名に基づいており、HTTPS 接続の場合はエンコードされます。そのため、エッジターミネーションまたはその他の設定は必要です。「OpenShift クラスター外から Service Registry への HTTPS 接続の設定」 を参照してください。
前提条件
- Service Registry Operator がインストールされている。
手順
自己署名証明書を使用して
keystore
を生成します。独自の証明書を使用している場合は、この手順を省略できます。keytool -genkey -trustcacerts -keyalg RSA -keystore registry-keystore.jks -storepass password
キーストアおよびキーストアのパスワードを保持する新しいシークレットを作成します。
- OpenShift Web コンソールの左側のナビゲーションメニューで、Workloads > Secrets > Create Key/Value Secret とクリックします。
次の値を使用します。
名前:registry-keystore
キー 1:keystore.jks
値 1: registry-keystore.jks (アップロードされたファイル)
キー 2:password
値 2: password注記java.io.IOException が発生した場合:キーストア形式が無効です
、バイナリーファイルのアップロードが正しく機能しませんでした。別の方法として、cat registry-keystore.jks | base64 -w0 > data.txt
を使用してファイルを base64 文字列にエンコードし、yaml として Secret リソースを編集してエンコードされたファイルを手動で追加してください。
Service Registry インスタンスの Deployment リソースを編集します。Service Registry Operator の status フィールドで正しい名前を見つけることができます。
キーストアシークレットをボリュームとして追加します。
template: spec: volumes: - name: registry-keystore-secret-volume secret: secretName: registry-keystore
ボリュームマウントを追加します。
volumeMounts: - name: registry-keystore-secret-volume mountPath: /etc/registry-keystore readOnly: true
JAVA_OPTIONS
およびKEYSTORE_PASSWORD
環境変数を追加します。- name: KEYSTORE_PASSWORD valueFrom: secretKeyRef: name: registry-keystore key: password - name: JAVA_OPTIONS value: >- -Dquarkus.http.ssl.certificate.key-store-file=/etc/registry-keystore/keystore.jks -Dquarkus.http.ssl.certificate.key-store-file-type=jks -Dquarkus.http.ssl.certificate.key-store-password=$(KEYSTORE_PASSWORD)
注記順序は、文字列の補間を使用する場合に重要です。
HTTPS ポートを有効にします。
ports: - containerPort: 8080 protocol: TCP - containerPort: 8443 protocol: TCP
Service Registry インスタンスの Service リソースを編集します。Service Registry Operator の status フィールドで正しい名前を見つけることができます。
ports: - name: http protocol: TCP port: 8080 targetPort: 8080 - name: https protocol: TCP port: 8443 targetPort: 8443
接続が機能していることを確認します。
SSH を使用してクラスターの Pod に接続します (Service Registry Pod を使用できます)。
oc rsh -n default example-apicurioregistry-deployment-vx28s-4-lmtqb
Serviceリソースから Service Registry Pod のクラスター IP を見つけます (Web コンソールの Location 列を参照)。その後、テスト要求を実行します (自己署名証明書を使用するので、セキュアでないフラグが必要になります)。
curl -k https://172.30.209.198:8443/health [...]