7.3. OpenShift Serverless トランスポート暗号化のセットアップ
前提条件
- クラスター管理者のアクセスを持つ OpenShift Container Platform アカウントを使用できる。
- {oc-first} をインストールします。
- cert-manager Operator for Red Hat OpenShift をインストールします。
- OpenShift Serverless Operator をインストールしている。
Red Hat OpenShift 用の cert-manager Operator をインストールする前に OpenShift Serverless Operator をインストールする場合は、knative-serving
namespace でコントローラーとアクティベーターのデプロイメントを再起動する必要があります。これらのデプロイメントを再起動しないと、Knative は必要な cert-manager
リソースを作成できなくなり、Knative Service が保留となり、Knative Serving cert-manager
統合を有効にできなくなります。
7.3.1. SelfSigned クラスター発行者の設定
次の手順では、ルート証明書として SelfSigned
発行者を使用します。この方法の影響と制限については、SelfSigned cert-manager のドキュメント を参照してください。
独自の会社固有の秘密鍵インフラストラクチャー (PKI) を管理する場合は、CA 発行者を使用します。詳細は、CA 発行者に関する cert-manager ドキュメント を参照してください。
手順
SelfSigned
ClusterIssuer
カスタムリソース (CR) を作成します。ClusterIssuer CR の例
apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: knative-serving-selfsigned-issuer spec: selfSigned: {}
次のコマンドを実行して
ClusterIssuer
CR を適用します。$ oc apply -f <filename>
ClusterIssuer
CR を参照するルート証明書を作成します。ルート証明書の例
apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: knative-serving-selfsigned-ca namespace: cert-manager 1 spec: secretName: knative-serving-ca 2 isCA: true commonName: selfsigned-ca privateKey: algorithm: ECDSA size: 256 issuerRef: name: knative-serving-selfsigned-issuer kind: ClusterIssuer group: cert-manager.io
次のコマンドを実行して
Certificate
CR を適用します。$ oc apply -f <filename>
7.3.2. Serving で使用する ClusterIssuer の作成
Serving による証明書の使用を有効にするには、クラスター発行者を作成する必要があります。
手順
Serving 用の
knative-serving-ca-issuer
ClusterIssuer
を作成します。apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: knative-serving-ca-issuer spec: ca: secretName: knative-serving-ca 1
- 1
- 新しい証明書の OpenShift Serverless Serving コンポーネントで使用できる証明書を含む、Red Hat OpenShift namespace の cert-manager Operator 内のシークレット名 (デフォルトでは
cert-manager
)。
次のコマンドを実行して
ClusterIssuer
リソースを適用します。$ oc apply -f <filename>
7.3.3. トランスポート暗号化の設定
トランスポート暗号化の設定には、以下の 2 つの部分があります。
使用する
ClusterIssuer
発行者を指定します。-
clusterLocalIssuerRef
: Ingress に使用される cluster-local-domain 証明書の発行者 -
systemInternalIssuerRef
: Knative 内部コンポーネントによって使用される system-internal-tls 証明書の発行者
-
使用するトランスポート暗号化機能を指定します。
-
cluster-local-domain-tls
: cluster-local ドメインのトランスポート暗号化機能の有効化 -
system-internal-tls
: OpenShift Serverless Serving 内部コンポーネントのトランスポート暗号化機能を有効にします。
-
手順
KnativeServing
リソースでのトランスポート暗号化の有効化apiVersion: operator.knative.dev/v1beta1 kind: KnativeServing metadata: name: knative-serving namespace: knative-serving spec: ... config: certmanager: clusterLocalIssuerRef: | kind: ClusterIssuer name: knative-serving-ca-issuer 1 systemInternalIssuerRef: | kind: ClusterIssuer name: knative-serving-ca-issuer 2 network: cluster-local-domain-tls: Enabled 3 system-internal-tls: Enabled 4
次のコマンドを実行して、
KnativeServing
リソースを適用します。$ oc apply -f <filename>
必要に応じて、Ingress Controller の
defaultCertificate
値を変更します。apiVersion: operator.openshift.io/v1 kind: IngressController ... spec: defaultCertificate: name: ca-ingress-cert
defaultCertificate
値を変更した場合は、KnativeServing
カスタムリソースのopenshift-Ingress-default-certificate
フィールドにカスタム証明書名を指定する必要があります。たとえば、カスタム証明書名が
ca-ingress-cert
の場合、次の設定を追加します。... spec: config: network: system-internal-tls: Enabled openshift-ingress-default-certificate: "ca-ingress-cert" ...
cluster-local-domain-tls
またはsystem-internal-tls
を有効にした場合は、次のコマンドを実行して Controller コンポーネントを再起動します。重要cluster-local-domain-tls
またはsystem-internal-tls
機能のいずれかが有効になっている場合は、Knative Servingcert-manager
インテグレーションを有効にするために、Controller コンポーネントを再起動する必要があります。$ oc rollout restart deploy/controller -n knative-serving
system-internal-tls
を有効にした場合は、次のコマンドを実行して Activator コンポーネントを再起動します。重要system-internal-tls
機能が有効化されている場合、Activator コンポーネントを再起動して内部 Web サーバーを再設定する必要があります (ランタイム時にはできないため)。$ oc rollout restart deploy/activator -n knative-serving