9.10. 将 Red Hat OpenShift 的 cert-manager Operator 与 Istio-CSR 集成


重要

Red Hat OpenShift 的 cert-manager Operator 的 Istio-CSR 集成只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

Red Hat OpenShift 的 cert-manager Operator 提供了对 Red Hat OpenShift Service Mesh 或 Istio 中保护工作负载和 control plane 组件的支持。这包括启用 mutual TLS (mTLS)的支持,这些 TLS 使用 cert-manager issuers 签名、交付和续订。您可以使用 cert-manager Operator for Red Hat OpenShift 管理的 Istio-CSR 代理来保护 Istio 工作负载和 control plane 组件。

通过这个 Istio-CSR 集成,Istio 现在可从 cert-manager Operator for Red Hat OpenShift 获取证书,从而简化安全性和证书管理。

9.10.1. 通过 cert-manager Operator 为 Red Hat OpenShift 安装 Istio-CSR 代理

9.10.1.1. 启用 Istio-CSR 功能

使用这个流程为 Red Hat OpenShift 在 cert-manager Operator 中启用 Istio-CSR 功能。

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。

流程

  • 运行以下命令,为 Red Hat OpenShift 更新 cert-manager Operator 的部署以使用配置映射:

    $ oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type='merge' -p '{"spec":{"config":{"env":[{"name":"UNSUPPORTED_ADDON_FEATURES","value":"IstioCSR=true"}]}}}'

验证

  1. 运行以下命令验证部署是否已推出:

    $ oc rollout status deployment/cert-manager-operator-controller-manager -n cert-manager-operator

    输出示例

    deployment "cert-manager-operator-controller-manager" successfully rolled out

9.10.1.2. 为 Istio-CSR 代理创建根 CA 签发者

使用这个流程为 Istio-CSR 代理创建 root CA 签发者。

注意

可以使用其他支持的签发者,但 ACME 签发者除外,这不被支持。如需更多信息,请参阅 "cert-manager Operator for Red Hat OpenShift issuer provider"。

  • 创建一个 YAML 文件,如 issuer.yaml,用于定义 IssuerCertificate 对象:

    issuer.yaml 文件示例

    apiVersion: cert-manager.io/v1
    kind: Issuer 1
    metadata:
      name: selfsigned
      namespace: <istio_project_name> 2
    spec:
      selfSigned: {}
    ---
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: istio-ca
      namespace: <istio_project_name>
    spec:
     isCA: true
      duration: 87600h # 10 years
      secretName: istio-ca
      commonName: istio-ca
      privateKey:
        algorithm: ECDSA
        size: 256
      subject:
        organizations:
          - cluster.local
          - cert-manager
      issuerRef:
        name: selfsigned
        kind: Issuer 3
        group: cert-manager.io
    ---
    kind: Issuer
    metadata:
      name: istio-ca
      namespace: <istio_project_name> 4
    spec:
      ca:
        secretName: istio-ca

    1 3
    指定 IssuerClusterIssuer
    2 4
    指定 Istio 项目的名称。

验证

  • 运行以下命令验证 Issuer 是否已创建并可使用:

    $ oc get issuer istio-ca -n <istio_project_name>

    输出示例

    NAME       READY   AGE
    istio-ca   True    3m

9.10.1.3. 创建 IstioCSR 自定义资源

使用这个流程,通过 Red Hat OpenShift 的 cert-manager Operator 安装 Istio-CSR 代理。

先决条件

  • 您可以使用 cluster-admin 权限访问集群。
  • 您已启用了 Istio-CSR 功能。
  • 您已创建了为 Istio-CSR 代理生成证书所需的 IssuerClusterIssuer 资源。

    注意

    如果使用 Issuer 资源,请在 Red Hat OpenShift Service Mesh 或 Istiod 命名空间中创建 IssuerCertificate 资源。证书请求会在同一命名空间中生成,并且相应地配置基于角色的访问控制(RBAC)。

流程

  1. 运行以下命令,为安装 Istio-CSR 创建一个新项目。您可以使用现有项目并跳过这一步。

    $ oc new-project <istio_csr_project_name>
  2. 创建 IstioCSR 自定义资源,为 Red Hat OpenShift 为 Red Hat OpenShift 启用由 cert-manager Operator 管理的 Istio-CSR 代理,以处理 Istio 工作负载和 control plane 证书签名请求。

    注意

    一次只支持一个 IstioCSR 自定义资源(CR)。如果创建了多个 IstioCSR CR,则只有一个将处于活跃状态。使用 IstioCSRstatus 子资源检查资源是否未被处理。

    • 如果同时创建多个 IstioCSR CR,则不会处理任何 IstioCSR CR。
    • 如果按顺序创建多个 IstioCSR CR,则只有第一个 IstioCSR CR 会被处理。
    • 要防止新请求被拒绝,请删除任何未处理的 IstioCSR CR。
    • Operator 不会自动删除为 IstioCSR 创建的对象。如果删除了活跃的 IstioCSR 资源,并在没有删除之前的部署的情况下创建新资源,则多个 istio-csr 部署可能会保持活动状态。不建议使用此行为,且不被支持。
    1. 创建一个定义 IstioCSR 对象的 YAML 文件,如 istiocsr.yaml

      IstioCSR.yaml 文件示例

      apiVersion: operator.openshift.io/v1alpha1
      kind: IstioCSR
      metadata:
        name: default
        namespace: <istio_csr_project_name>
      spec:
        IstioCSRConfig:
          certManager:
            issuerRef:
              name: istio-ca  1
              kind: Issuer 2
              group: cert-manager.io
          istiodTLSConfig:
            trustDomain: cluster.local
          istio:
            namespace: istio-system

      1
      指定 IssuerClusterIssuer 名称。它应与 issuer.yaml 文件中定义的 CA 签发者名称相同。
      2
      指定 IssuerClusterIssuer kind。它应该与 issuer.yaml 文件中定义的 CA 签发者相同。
    2. 运行以下命令来创建 IstioCSR 自定义资源:

      $ oc create -f IstioCSR.yaml

验证

  1. 运行以下命令验证 Istio-CSR 部署是否已就绪:

    $ oc get deployment -n <istio_csr_project_name>

    输出示例

    NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
    cert-manager-istio-csr   1/1     1            1           24s

  2. 运行以下命令验证 Istio-CSR pod 是否正在运行:

    $ oc get pod -n <istio_csr_project_name>

    输出示例

    NAME                                  	 READY   STATUS	  RESTARTS    AGE
    cert-manager-istio-csr-5c979f9b7c-bv57w  1/1     Running  0           45s

    • 运行以下命令,验证 Istio-CSR pod 是否没有报告日志中的任何错误:

      $ oc -n <istio_csr_project_name> logs <istio_csr_pod_name>
    • 运行以下命令,验证 Red Hat OpenShift pod 的 cert-manager Operator 是否没有报告任何错误:

      $ oc -n cert-manager-operator logs <cert_manager_operator_pod_name>

9.10.2. 为 Red Hat OpenShift 卸载由 cert-manager Operator 管理的 Istio-CSR 代理

使用这个流程为 Red Hat OpenShift 卸载由 cert-manager Operator 管理的 Istio-CSR 代理。

先决条件

  • 您可以使用 cluster-admin 权限访问集群。
  • 您已启用了 Istio-CSR 功能。
  • 您已创建了 IstioCSR 自定义资源。

流程

  1. 运行以下命令来删除 IstioCSR 自定义资源:

    $ oc -n <istio-csr_project_name> delete istiocsrs.operator.openshift.io default
  2. 删除相关资源:

    重要

    为了避免破坏任何 Red Hat OpenShift Service Mesh 或 Istio 组件,请确保在删除以下资源前没有引用 Istio-CSR 服务或为 Istio 发布的证书。

    1. 运行以下命令列出 cluster scoped-resources,并保存列出的资源的名称以供以后参考:

      $ oc get clusterrolebindings,clusterroles -l "app=cert-manager-istio-csr,app.kubernetes.io/name=cert-manager-istio-csr"
    2. 运行以下命令列出 Istio-csr 部署命名空间中的资源,并保存列出的资源的名称以供以后参考:

      $ oc get certificate,deployments,services,serviceaccounts -l "app=cert-manager-istio-csr,app.kubernetes.io/name=cert-manager-istio-csr" -n <istio_csr_project_name>
    3. 运行以下命令,列出 Red Hat OpenShift Service Mesh 或 Istio 部署命名空间中的资源,并保存列出的资源的名称以供以后参考:

      $ oc get roles,rolebindings -l "app=cert-manager-istio-csr,app.kubernetes.io/name=cert-manager-istio-csr" -n <istio_csr_project_name>
    4. 对于前面步骤中列出的每个资源,运行以下命令来删除资源:

      $ oc -n <istio_csr_project_name> delete <resource_type>/<resource_name>

      重复此过程,直到所有相关资源都已被删除。

9.10.3. 为启用了 Istio-CSR 功能的 Red Hat OpenShift 升级 cert-manager Operator

当启用了 Istio-CSR TechPreview 功能门时,无法升级 Operator。要使用下一个可用版本,您必须为 Red Hat OpenShift 卸载 cert-manager Operator,并在重新安装前删除所有 Istio-CSR 资源。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.