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 文档

流程

  1. 创建 SelfSigned ClusterIssuer 自定义资源(CR):

    ClusterIssuer CR 示例

    apiVersion: cert-manager.io/v1
    kind: ClusterIssuer
    metadata:
      name: knative-serving-selfsigned-issuer
    spec:
      selfSigned: {}

  2. 运行以下命令来应用 ClusterIssuer CR:

    $ oc apply -f <filename>
  3. 创建引用 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

    1
    默认情况下,Red Hat OpenShift 命名空间 cert-manager 的 cert-manager Operator。
    2
    之后用于 Knative Serving 的 ClusterIssuer CR 的 secret 名称。
  4. 运行以下命令来应用 证书 CR:

    $ oc apply -f <filename>

7.3.2. 创建由 Serving 使用的 ClusterIssuer

要启用通过 Serving 使用证书,您必须创建一个集群签发者。

流程

  1. 为 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 组件用于新证书的证书。
  2. 运行以下命令来应用 ClusterIssuer 资源:

    $ oc apply -f <filename>

7.3.3. 配置传输加密

配置传输加密由两个部分组成:

  1. 指定要使用的 ClusterIssuer 签发者:

    • clusterLocalIssuerRef: 用于 ingress 的 cluster-local-domain 证书的签发者。
    • systemInternalIssuerRef: Knative 内部组件使用的 system-internal-tls 证书的签发者。
  2. 指定要使用的传输加密功能:

    • cluster-local-domain-tls :启用 cluster-local 域的传输加密功能
    • system-internal-tls :为 OpenShift Serverless Serving 内部组件启用传输加密功能。

流程

  1. 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
    1
    为每个功能定义集群签发者。可以使用相同的或单独的集群签发者。
    2
    定义集群签发者。
    3
    启用 cluster-local-domain-tls 功能。这可以单独启用或禁用此功能。
    4
    启用 system-internal-tls 功能。
  2. 运行以下命令来应用 KnativeServing 资源:

    $ oc apply -f <filename>
  3. 另外,还可更改 Ingress Controller 中的 defaultCertificate 值:

    apiVersion: operator.openshift.io/v1
    kind: IngressController
     ...
    spec:
      defaultCertificate:
        name: ca-ingress-cert
  4. 如果更改了 defaultCertificate 值,则必须在 KnativeServing 自定义资源的 openshift-ingress-default-certificate 字段中指定自定义证书名称。

    例如,如果自定义证书名称是 ca-ingress-cert,请添加以下配置:

    ...
    spec:
      config:
        network:
          system-internal-tls: Enabled
          openshift-ingress-default-certificate: "ca-ingress-cert"
    ...
  5. 如果启用了 cluster-local-domain-tlssystem-internal-tls,请运行以下命令重启 Controller 组件。

    重要

    当启用了 cluster-local-domain-tlssystem-internal-tls 功能时,您必须重启 Controller 组件以启用 Knative Serving cert-manager 集成。

    $ oc rollout restart deploy/controller -n knative-serving
  6. 如果启用了 system-internal-tls,请运行以下命令重启 Activator 组件。

    重要

    激活 system-internal-tls 功能时,您必须重启 Activator 组件来重新配置其内部 Web 服务器,因为在运行时无法实现这个功能。

    $ oc rollout restart deploy/activator -n knative-serving
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.