10.4. 部署 Zero Trust Workload Identity Manager 操作对象


重要

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

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

您可以通过创建对应的自定义资源(CR)来部署以下操作对象。您必须按照以下序列部署操作对象,以确保安装成功。

  1. SPIRE 服务器
  2. SPIRE 代理
  3. SPIFFE CSI 驱动程序
  4. SPIRE OIDC 发现供应商

10.4.1. 部署 SPIRE 服务器

您可以配置 SpireServer 自定义资源(CR)来部署和配置 SPIRE 服务器。

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。
  • 已在集群中安装了 Zero Trust Workload Identity Manager。

流程

  1. 创建 SpireServer CR:

    1. 创建一个 YAML 文件来定义 SpireServer CR,如 SpireServer.yaml

      SpireServer.yaml 示例

      apiVersion: operator.openshift.io/v1alpha1
      kind: SpireServer
      metadata:
        name: cluster
      spec:
        trustDomain: <trust_domain> 
      1
      
        clusterName: <cluster_name> 
      2
      
        caSubject:
          commonName: example.org 
      3
      
          country: "US" 
      4
      
          organization: "RH" 
      5
      
        persistence:
          type: pvc 
      6
      
          size: "5Gi" 
      7
      
          accessMode: ReadWriteOnce 
      8
      
        datastore:
          databaseType: sqlite3
          connectionString: "/run/spire/data/datastore.sqlite3"
          maxOpenConns: 100 
      9
      
          maxIdleConns: 2 
      10
      
          connMaxLifetime: 3600 
      11
      
        jwtIssuer: <jwt_issuer_domain> 
      12
      Copy to Clipboard Toggle word wrap

      1
      用于 SPIFFE 标识符的信任域。
      2
      集群的名称。
      3
      SPIRE 服务器 CA 的通用名称。
      4
      SPIRE 服务器 CA 的国家/地区。
      5
      SPIRE 服务器 CA 的组织。
      6
      用于持久性的卷类型。有效选项为 pvchostPath
      7
      用于持久性的卷大小
      8
      用于持久性的访问模式。有效选项有 ReadWriteOnce,ReadWriteOncePod, 和 ReadWriteMany
      9
      开放数据库连接的最大数量。
      10
      池中的最大闲置连接数。
      11
      可重复使用连接的最大时间量。要指定无限时间,您可以将值设为 0
      12
      JSON Web Token (JWT) 签发者域。默认值为 oidc-discovery.$trustDomain 中指定的值。
    2. 运行以下命令来应用配置:

      $ oc apply -f SpireServer.yaml
      Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令,验证有状态的 SPIRE 服务器是否已就绪并可用:

    $ oc get statefulset -l app.kubernetes.io/name=server -n zero-trust-workload-identity-manager
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME            READY   AGE
    spire-server    1/1     65s
    Copy to Clipboard Toggle word wrap

  • 运行以下命令,验证 SPIRE 服务器 pod 的状态是否为 Running

    $ oc get po -l app.kubernetes.io/name=server -n zero-trust-workload-identity-manager
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME               READY   STATUS    RESTARTS        AGE
    spire-server-0     2/2     Running   1 (108s ago)    111s
    Copy to Clipboard Toggle word wrap

  • 运行以下命令,验证持久性卷声明 (PVC) 是否已绑定:

    $ oc get pvc -l app.kubernetes.io/name=server -n zero-trust-workload-identity-manager
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                        STATUS    VOLUME                                     CAPACITY   ACCESS MODES  STORAGECLASS  VOLUMEATTRIBUTECLASS  AGE
    spire-data-spire-server-0   Bound     pvc-27a36535-18a1-4fde-ab6d-e7ee7d3c2744   5Gi        RW0           gp3-csi       <unset>               22m
    Copy to Clipboard Toggle word wrap

10.4.2. 部署 SPIRE 代理

您可以配置 SpireAgent 自定义资源(CR)来部署和配置 SPIRE 代理。

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。
  • 已在集群中安装了 Zero Trust Workload Identity Manager。

流程

  1. 创建 SpireAgent CR:

    1. 创建一个定义 SpireAgent CR 的 YAML 文件,如 SpireAgent.yaml

      SpireAgent.yaml 示例

      apiVersion: operator.openshift.io/v1alpha1
      kind: SpireAgent
      metadata:
        name: cluster
      spec:
        trustDomain: <trust_domain> 
      1
      
        clusterName: <cluster_name> 
      2
      
        nodeAttestor:
          k8sPSATEnabled: "true" 
      3
      
        workloadAttestors:
          k8sEnabled: "true" 
      4
      
          workloadAttestorsVerification:
            type: "auto" 
      5
      Copy to Clipboard Toggle word wrap

      1
      用于 SPIFFE 标识符的信任域。
      2
      集群的名称。
      3
      在测试时启用或禁用投射服务帐户令牌 (PSAT) Kubernetes 节点。有效选项为 truefalse
      4
      在测试时启用或禁用 Kubernetes 工作负载。有效选项为 truefalse
      5
      针对 kubelet 完成的验证类型。有效选项为 auto,hostCert,apiServerCA,skip.auto 选项最初尝试使用 hostCert,然后回退到 apiServerCA
    2. 运行以下命令来应用配置:

      $ oc apply -f SpireAgent.yaml
      Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令,验证 SPIRE Agent 的守护进程集是否已就绪并可用:

    $ oc get daemonset -l app.kubernetes.io/name=agent -n zero-trust-workload-identity-manager
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME          DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    spire-agent   3         3         3       3            3           <none>          10m
    Copy to Clipboard Toggle word wrap

  • 运行以下命令,验证 SPIRE Agent pod 的状态是否为 Running

    $ oc get po -l app.kubernetes.io/name=agent -n zero-trust-workload-identity-manager
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                READY   STATUS    RESTARTS   AGE
    spire-agent-dp4jb   1/1     Running   0          12m
    spire-agent-nvwjm   1/1     Running   0          12m
    spire-agent-vtvlk   1/1     Running   0          12m
    Copy to Clipboard Toggle word wrap

10.4.3. 部署 SPIFFE 容器存储接口驱动程序

您可以配置 SpiffeCSIDriver 自定义资源(CR)来部署和配置 SPIFFE Container Storage Interface (CSI)驱动程序。

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。
  • 已在集群中安装了 Zero Trust Workload Identity Manager。

流程

  1. 创建 SpiffeCSIDriver CR:

    1. 创建一个定义 SpiffeCSIDriver CR 对象的 YAML 文件,如 SpiffeCSIDriver.yaml

      SpiffeCSIDriver.yaml示例

      apiVersion: operator.openshift.io/v1alpha1
      kind: SpiffeCSIDriver
      metadata:
        name: cluster
      spec:
        agentSocketPath: '/run/spire/agent-sockets/spire-agent.sock' 
      1
      Copy to Clipboard Toggle word wrap

      1
      到 SPIRE 代理的 UNIX 套接字路径。
    2. 运行以下命令来应用配置:

      $ oc apply -f SpiffeCSIDriver.yaml
      Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令,验证 SPIFFE CSI 驱动程序的守护进程集是否已就绪并可用:

    $ oc get daemonset -l app.kubernetes.io/name=spiffe-csi-driver -n zero-trust-workload-identity-manager
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    spire-spiffe-csi-driver   3         3         3       3            3           <none>          114s
    Copy to Clipboard Toggle word wrap

  • 运行以下命令,验证 SPIFFE Container Storage Interface (CSI) Driver pod 的状态是否为 Running

    $ oc get po -l app.kubernetes.io/name=spiffe-csi-driver -n zero-trust-workload-identity-manager
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                            READY   STATUS    RESTARTS   AGE
    spire-spiffe-csi-driver-gpwcp   2/2     Running   0          2m37s
    spire-spiffe-csi-driver-rrbrd   2/2     Running   0          2m37s
    spire-spiffe-csi-driver-w6s6q   2/2     Running   0          2m37s
    Copy to Clipboard Toggle word wrap

10.4.4. 部署 SPIRE OpenID Connect Discovery 提供程序

您可以配置 SpireOIDCDiscoveryProvider 自定义资源(CR) 来部署和配置 SPIRE OpenID Connect (OIDC) 发现供应商。

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。
  • 已在集群中安装了 Zero Trust Workload Identity Manager。

流程

  1. 创建 SpireOIDCDiscoveryProvider CR:

    1. 创建一个 YAML 文件来定义 SpireOIDCDiscoveryProvider CR,例如 SpireOIDCDiscoveryProvider.yaml:

      SpireOIDCDiscoveryProvider.yaml 示例

      apiVersion: operator.openshift.io/v1alpha1
      kind: SpireOIDCDiscoveryProvider
      metadata:
        name: cluster
      spec:
        trustDomain: <trust_domain> 
      1
      
        agentSocketName: 'spire-agent.sock' 
      2
      
        jwtIssuer: <jwt_issuer_domain> 
      3
      Copy to Clipboard Toggle word wrap

      1
      用于 SPIFFE 标识符的信任域。
      2
      SPIRE Agent unix 套接字的名称。
      3
      JSON Web Token (JWT) 签发者域。默认值为 oidc-discovery.$trustDomain 中指定的值。
    2. 运行以下命令来应用配置:

      $ oc apply -f SpireOIDCDiscoveryProvider.yaml
      Copy to Clipboard Toggle word wrap

验证

  1. 运行以下命令,验证 OIDC Discovery Provider 的部署是否已就绪并可用:

    $ oc get deployment -l app.kubernetes.io/name=spiffe-oidc-discovery-provider -n zero-trust-workload-identity-manager
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                                    READY  UP-TO-DATE  AVAILABLE  AGE
    spire-spiffe-oidc-discovery-provider    1/1    1           1          2m58s
    Copy to Clipboard Toggle word wrap

  2. 运行以下命令,验证 OIDC Discovery Provider pod 的状态是否为 Running

    $ oc get po -l app.kubernetes.io/name=spiffe-oidc-discovery-provider -n zero-trust-workload-identity-manager
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                                                    READY   STATUS    RESTARTS   AGE
    spire-spiffe-oidc-discovery-provider-64586d599f-lcc94   2/2     Running   0          7m15s
    Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat