1.4.5. 外部管理証明書を使用したルートの作成
ルート API の .spec.tls.externalCertificate フィールドを使用して、サードパーティーの証明書管理ソリューションで OpenShift Container Platform ルートを設定できます。シークレットを介して外部で管理されている TLS 証明書を参照できるため、手動での証明書管理が不要になります。
外部で管理される証明書を使用することでエラーが減り、証明書の更新がよりスムーズにロールアウトされます。これにより、OpenShift ルーターは更新された証明書を迅速に提供できます。外部で管理された証明書は、edge ルートと re-encrypt ルートの両方で使用できます。
前提条件
-
tls.keyキーとtls.crtキーの両方を含む、kubernetes.io/tlsタイプの PEM エンコード形式の有効な証明書またはキーペアを含むシークレットが必要です。サンプルコマンド:$ oc create secret tls myapp-tls --cert=server.crt --key=server.key。
手順
次のコマンドを実行して、シークレットと同じ namespace に
roleオブジェクトを作成し、ルーターサービスアカウントに読み取りアクセスを許可します。$ oc create role secret-reader --verb=get,list,watch --resource=secrets --resource-name=<secret-name> \ --namespace=<current-namespace>-
<secret-name>: シークレットの実際の名前を指定します。 -
<current-namespace>: シークレットとルートの両方が存在する namespace を指定します。
-
次のコマンドを実行して、シークレットと同じ namespace に
rolebindingオブジェクトを作成し、ルーターサービスアカウントを新しく作成されたロールにバインドします。$ oc create rolebinding secret-reader-binding --role=secret-reader --serviceaccount=openshift-ingress:router --namespace=<current-namespace>-
<current-namespace>: シークレットとルートの両方が存在する namespace を指定します。
-
次の例を使用して、
routeを定義し、証明書を含むシークレットを指定する YAML ファイルを作成します。セキュアなルートの YAML 定義
apiVersion: route.openshift.io/v1 kind: Route metadata: name: myedge namespace: test spec: host: myedge-test.apps.example.com tls: externalCertificate: name: <secret-name> termination: edge [...] [...]-
<secret-name>: シークレットの実際の名前を指定します。
-
次のコマンドを実行して
routeリソースを作成します。$ oc apply -f <route.yaml><route.yaml>: 生成された YAML ファイル名を指定します。シークレットが存在し、証明書/キーペアがある場合、すべての前提条件が満たされていれば、ルーターは生成された証明書を提供します。
注記.spec.tls.externalCertificateが指定されていないと、ルーターはデフォルトで生成された証明書を使用します。.spec.tls.externalCertificateフィールドを使用する場合は、.spec.tls.certificateフィールドまたは.spec.tls.keyフィールドを指定することはできません。