7.3. 设置 OpenShift Serverless 传输加密
先决条件
- 您可以访问具有集群管理员权限的 OpenShift Container Platform 帐户。
- 安装 {oc-first}。
- 为 Red Hat OpenShift 安装 cert-manager Operator。
- 安装 OpenShift Serverless Operator。
如果在为 Red Hat OpenShift 安装 cert-manager Operator 前安装 OpenShift Serverless Operator,则必须重启 knative-serving
命名空间中的 controller 和 activator 部署。重启这些部署失败可防止 Knative 创建必要的 cert-manager
资源,这会导致待处理的 Knative Services,并防止启用 Knative Serving cert-manager
集成。
7.3.1. 配置自助集群签发者
以下流程使用 SelfSigned
issuer 作为 root 证书。有关此方法的影响和限制的详情,请参考 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 的 root 证书:root 证书示例
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
运行以下命令来应用
证书
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
- Red Hat OpenShift 命名空间(默认为 cert-manager)的
cert-manager
Operator 中的 secret 名称,其中包含可供 OpenShift Serverless Serving 组件用于新证书的证书。
运行以下命令来应用
ClusterIssuer
资源:$ oc apply -f <filename>
7.3.3. 配置传输加密
配置传输加密由两个部分组成:
指定要使用的
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
功能时,您必须重启 Controller 组件以启用 Knative Servingcert-manager
集成。$ 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