9.6. 为 Red Hat OpenShift 验证 cert-manager Operator
您可以通过配置云凭证,为集群中的 Red Hat OpenShift 验证 cert-manager Operator。
9.6.1. 在 AWS 上进行身份验证 复制链接链接已复制到粘贴板!
先决条件
- 您已为 Red Hat OpenShift 安装了 cert-manager Operator 版本 1.11.1 或更高版本。
- 您已将 Cloud Credential Operator 配置为以 mint 或 passthrough 模式运行。
流程
创建一个
CredentialsRequest
资源 YAML 文件,如sample-credential-request.yaml
,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
CredentialsRequest
资源:oc create -f sample-credential-request.yaml
$ oc create -f sample-credential-request.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 Red Hat OpenShift 更新 cert-manager Operator 的订阅对象:
oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"CLOUD_CREDENTIALS_SECRET_NAME","value":"aws-creds"}]}}}'
$ oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"CLOUD_CREDENTIALS_SECRET_NAME","value":"aws-creds"}]}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,获取重新部署的 cert-manager 控制器 pod 的名称:
oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
$ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 15m39s
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 15m39s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证 cert-manager 控制器 pod 是否使用挂载在
mountPath
中指定的路径下的 AWS 凭证卷更新:oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
$ oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.6.2. 使用 AWS 安全令牌服务进行身份验证 复制链接链接已复制到粘贴板!
先决条件
-
您已提取并准备好
ccoctl
二进制文件。 - 已使用手动模式的 Cloud Credential Operator 配置了一个带有 AWS STS 的 OpenShift Container Platform 集群。
流程
运行以下命令,创建一个目录来存储
CredentialsRequest
资源 YAML 文件:mkdir credentials-request
$ mkdir credentials-request
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过应用以下 yaml,在
credentials-request
目录下创建一个CredentialsRequest
资源 YAML 文件,如sample-credential-request.yaml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用
ccoctl
工具处理CredentialsRequest
对象:ccoctl aws create-iam-roles \ --name <user_defined_name> --region=<aws_region> \ --credentials-requests-dir=<path_to_credrequests_dir> \ --identity-provider-arn <oidc_provider_arn> --output-dir=<path_to_output_dir>
$ ccoctl aws create-iam-roles \ --name <user_defined_name> --region=<aws_region> \ --credentials-requests-dir=<path_to_credrequests_dir> \ --identity-provider-arn <oidc_provider_arn> --output-dir=<path_to_output_dir>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
2023/05/15 18:10:34 Role arn:aws:iam::XXXXXXXXXXXX:role/<user_defined_name>-cert-manager-aws-creds created 2023/05/15 18:10:34 Saved credentials configuration to: <path_to_output_dir>/manifests/cert-manager-aws-creds-credentials.yaml 2023/05/15 18:10:35 Updated Role policy for Role <user_defined_name>-cert-manager-aws-creds
2023/05/15 18:10:34 Role arn:aws:iam::XXXXXXXXXXXX:role/<user_defined_name>-cert-manager-aws-creds created 2023/05/15 18:10:34 Saved credentials configuration to: <path_to_output_dir>/manifests/cert-manager-aws-creds-credentials.yaml 2023/05/15 18:10:35 Updated Role policy for Role <user_defined_name>-cert-manager-aws-creds
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从输出中复制
<aws_role_arn>
以在下一步中使用。例如,"arn:aws:iam::XXXXXXXXXXXX:role/<user_defined_name>-cert-manager-aws-creds"
运行以下命令,将
eks.amazonaws.com/role-arn="<aws_role_arn>"
注解添加到服务帐户:oc -n cert-manager annotate serviceaccount cert-manager eks.amazonaws.com/role-arn="<aws_role_arn>"
$ oc -n cert-manager annotate serviceaccount cert-manager eks.amazonaws.com/role-arn="<aws_role_arn>"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要创建新 pod,请运行以下命令删除现有 cert-manager 控制器 pod:
oc delete pods -l app.kubernetes.io/name=cert-manager -n cert-manager
$ oc delete pods -l app.kubernetes.io/name=cert-manager -n cert-manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS 凭证在一分钟内应用到一个新的 cert-manager 控制器 pod。
验证
运行以下命令,获取更新的 cert-manager 控制器 pod 的名称:
oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
$ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 39s
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 39s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证 AWS 凭证是否已更新:
oc set env -n cert-manager po/<cert_manager_controller_pod_name> --list
$ oc set env -n cert-manager po/<cert_manager_controller_pod_name> --list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
pods/cert-manager-57f9555c54-vbcpg, container cert-manager-controller POD_NAMESPACE from field path metadata.namespace
# pods/cert-manager-57f9555c54-vbcpg, container cert-manager-controller # POD_NAMESPACE from field path metadata.namespace AWS_ROLE_ARN=XXXXXXXXXXXX AWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/eks.amazonaws.com/serviceaccount/token
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.6.3. 在 GCP 上进行身份验证 复制链接链接已复制到粘贴板!
先决条件
- 您已为 Red Hat OpenShift 安装了 cert-manager Operator 版本 1.11.1 或更高版本。
- 您已将 Cloud Credential Operator 配置为以 mint 或 passthrough 模式运行。
流程
通过应用以下 yaml 创建
CredentialsRequest
资源 YAML 文件,如sample-credential-request.yaml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意dns.admin
角色为管理 Google Cloud DNS 资源的服务帐户提供管理员特权。要确保 cert-manager 使用具有最小权限的服务帐户运行,您可以创建一个具有以下权限的自定义角色:-
dns.resourceRecordSets.*
-
dns.changes.*
-
dns.managedZones.list
-
运行以下命令来创建
CredentialsRequest
资源:oc create -f sample-credential-request.yaml
$ oc create -f sample-credential-request.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 Red Hat OpenShift 更新 cert-manager Operator 的订阅对象:
oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"CLOUD_CREDENTIALS_SECRET_NAME","value":"gcp-credentials"}]}}}'
$ oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"CLOUD_CREDENTIALS_SECRET_NAME","value":"gcp-credentials"}]}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,获取重新部署的 cert-manager 控制器 pod 的名称:
oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
$ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 15m39s
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 15m39s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证 cert-manager 控制器 pod 是否使用挂载在
mountPath
中指定的路径下的 GCP 凭证卷更新:oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
$ oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.6.4. 使用 GCP Workload Identity 进行身份验证 复制链接链接已复制到粘贴板!
先决条件
-
已提取并准备好
ccoctl
二进制文件。 - 您已为 Red Hat OpenShift 安装了 cert-manager Operator 版本 1.11.1 或更高版本。
- 您已在手动模式中使用 Cloud Credential Operator 配置了一个带有 GCP Workload Identity 的 OpenShift Container Platform 集群。
流程
运行以下命令,创建一个目录来存储
CredentialsRequest
资源 YAML 文件:mkdir credentials-request
$ mkdir credentials-request
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
credentials-request
目录中,创建一个包含以下CredentialsRequest
清单的 YAML 文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意dns.admin
角色为管理 Google Cloud DNS 资源的服务帐户提供管理员特权。要确保 cert-manager 使用具有最小权限的服务帐户运行,您可以创建一个具有以下权限的自定义角色:-
dns.resourceRecordSets.*
-
dns.changes.*
-
dns.managedZones.list
-
运行以下命令,使用
ccoctl
工具处理CredentialsRequest
对象:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令应用在集群 manifests 目录中生成的 secret:
ls <path_to_output_dir>/manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
$ ls <path_to_output_dir>/manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为 Red Hat OpenShift 更新 cert-manager Operator 的订阅对象:
oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"CLOUD_CREDENTIALS_SECRET_NAME","value":"gcp-credentials"}]}}}'
$ oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type=merge -p '{"spec":{"config":{"env":[{"name":"CLOUD_CREDENTIALS_SECRET_NAME","value":"gcp-credentials"}]}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,获取重新部署的 cert-manager 控制器 pod 的名称:
oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
$ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 15m39s
NAME READY STATUS RESTARTS AGE cert-manager-bd7fbb9fc-wvbbt 1/1 Running 0 15m39s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证 cert-manager 控制器 pod 是否已使用挂载到
mountPath
中指定的路径下的 GCP 工作负载身份凭证卷更新:oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
$ oc get -n cert-manager pod/<cert-manager_controller_pod_name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow