第 10 章 更改云供应商凭证配置
对于支持的配置,您可以更改 OpenShift Container Platform 与云供应商进行身份验证的方式。
要确定集群使用哪个云凭证策略,请参阅 确定 Cloud Credential Operator 模式。
10.1. 使用 Cloud Credential Operator 实用程序轮转云供应商服务密钥 复制链接链接已复制到粘贴板!
有些机构需要轮转验证集群的服务密钥。您可以使用 Cloud Credential Operator (CCO)实用程序(ccoctl
)更新安装在以下云供应商上的集群的密钥:
10.1.1. 轮转 AWS OIDC 绑定服务帐户签名者密钥 复制链接链接已复制到粘贴板!
如果 Amazon Web Services (AWS)上的 OpenShift Container Platform 集群的 Cloud Credential Operator (CCO)被配置为使用 STS 以手动模式运行,您可以轮转绑定服务帐户签名者密钥。
要轮转密钥,您需要删除集群中的现有密钥,这会导致 Kubernetes API 服务器创建新密钥。要减少这个过程中的身份验证失败,您必须立即将新公钥添加到现有签发者文件中。在集群使用新密钥进行身份验证后,您可以删除所有剩余的密钥。
轮转 OIDC 绑定服务帐户签名者密钥的过程具有破坏性,需要花费大量时间。有些步骤是时间敏感的。在继续操作前,请观察以下注意事项:
- 阅读以下步骤,并确保您了解并接受时间要求。具体的时间要求因单个集群而异,但可能需要至少一个小时。
- 要降低身份验证失败的风险,请确保了解并准备对时间敏感的步骤。
- 在此过程中,您必须刷新所有服务帐户并重启集群中的所有 pod。这些操作对工作负载具有破坏性。要缓解这种影响,您可以临时停止这些服务,然后在集群就绪时重新部署它们。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问 OpenShift CLI (oc
)。
您已为
ccoctl
工具创建了用于以下权限的 AWS 帐户:-
s3:GetObject
-
s3:PutObject
-
s3:PutObjectTagging
-
对于将 OIDC 配置存储在 IAM 身份提供程序通过公共 CloudFront 分发 URL 访问的专用 S3 存储桶中的集群,运行
ccoctl
工具的 AWS 帐户需要cloudfront:ListDistributions
权限。
-
-
您已配置了
ccoctl
工具。 集群处于稳定状态。您可以运行以下命令来确认集群稳定:
oc adm wait-for-stable-cluster --minimum-stable-period=5s
$ oc adm wait-for-stable-cluster --minimum-stable-period=5s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
配置以下环境变量:
INFRA_ID=$(oc get infrastructures cluster -o jsonpath='{.status.infrastructureName}') CLUSTER_NAME=${INFRA_ID%-*}
INFRA_ID=$(oc get infrastructures cluster -o jsonpath='{.status.infrastructureName}') CLUSTER_NAME=${INFRA_ID%-*}
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您的集群可能与本例不同,资源名称可能无法与集群名称相同。确保为集群指定正确的相应资源名称。
对于将 OIDC 配置存储在公共 S3 存储桶中的 AWS 集群,请配置以下环境变量:
AWS_BUCKET=$(oc get authentication cluster -o jsonpath={'.spec.serviceAccountIssuer'} | awk -F'://' '{print$2}' |awk -F'.' '{print$1}')
AWS_BUCKET=$(oc get authentication cluster -o jsonpath={'.spec.serviceAccountIssuer'} | awk -F'://' '{print$2}' |awk -F'.' '{print$1}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于将 OIDC 配置存储在 IAM 身份提供程序通过公共 CloudFront 发布 URL 访问的专用 S3 存储桶中的 AWS 集群,请完成以下步骤:
运行以下命令提取公共 CloudFront 发布 URL:
basename $(oc get authentication cluster -o jsonpath={'.spec.serviceAccountIssuer'} )
$ basename $(oc get authentication cluster -o jsonpath={'.spec.serviceAccountIssuer'} )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
<subdomain>.cloudfront.net
<subdomain>.cloudfront.net
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<subdomain>
是一个由字母数字组成的字符串。运行以下命令来确定私有 S3 存储桶名称:
aws cloudfront list-distributions --query "DistributionList.Items[].{DomainName: DomainName, OriginDomainName: Origins.Items[0].DomainName}[?contains(DomainName, '<subdomain>.cloudfront.net')]"
$ aws cloudfront list-distributions --query "DistributionList.Items[].{DomainName: DomainName, OriginDomainName: Origins.Items[0].DomainName}[?contains(DomainName, '<subdomain>.cloudfront.net')]"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<s3_bucket>
是集群的私有 S3 存储桶名称。配置以下环境变量:
AWS_BUCKET=$<s3_bucket>
AWS_BUCKET=$<s3_bucket>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<s3_bucket>
是集群的私有 S3 存储桶名称。
运行以下命令,创建一个临时目录来使用并为它分配一个环境变量:
TEMPDIR=$(mktemp -d)
$ TEMPDIR=$(mktemp -d)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要让 Kubernetes API 服务器创建新的绑定服务帐户签名密钥,您需要删除下一个绑定服务帐户签名密钥。
重要完成此步骤后,Kubernetes API 服务器开始推出新密钥。要降低身份验证失败的风险,请尽快完成剩余的步骤。剩余的步骤可能会对工作负载造成破坏。
准备就绪后,运行以下命令来删除下一个绑定服务帐户签名密钥:
oc delete secrets/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator
$ oc delete secrets/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,从 Kubernetes API 服务器创建的服务帐户签名密钥 secret 下载公钥:
oc get secret/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator \ -ojsonpath='{ .data.service-account\.pub }' | base64 \ -d > ${TEMPDIR}/serviceaccount-signer.public
$ oc get secret/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator \ -ojsonpath='{ .data.service-account\.pub }' | base64 \ -d > ${TEMPDIR}/serviceaccount-signer.public
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用公钥创建一个
key.json
文件:ccoctl aws create-identity-provider \ --dry-run \ --output-dir ${TEMPDIR} \ --name fake \ --region us-east-1
$ ccoctl aws create-identity-provider \ --dry-run \
1 --output-dir ${TEMPDIR} \ --name fake \
2 --region us-east-1
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来重命名
keys.json
文件:cp ${TEMPDIR}/<number>-keys.json ${TEMPDIR}/jwks.new.json
$ cp ${TEMPDIR}/<number>-keys.json ${TEMPDIR}/jwks.new.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<number>
是一个两位数字的值,具体因您的环境而异。运行以下命令,从云供应商下载现有的
key.json
文件:aws s3api get-object \ --bucket ${AWS_BUCKET} \ --key keys.json ${TEMPDIR}/jwks.current.json
$ aws s3api get-object \ --bucket ${AWS_BUCKET} \ --key keys.json ${TEMPDIR}/jwks.current.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令组合两个
keys.json
文件:jq -s '{ keys: map(.keys[])}' ${TEMPDIR}/jwks.current.json ${TEMPDIR}/jwks.new.json > ${TEMPDIR}/jwks.combined.json
$ jq -s '{ keys: map(.keys[])}' ${TEMPDIR}/jwks.current.json ${TEMPDIR}/jwks.new.json > ${TEMPDIR}/jwks.combined.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在轮转过程中为旧密钥和新密钥启用身份验证,请运行以下命令将组合的
keys.json
文件上传到云供应商:aws s3api put-object \ --bucket ${AWS_BUCKET} \ --tagging "openshift.io/cloud-credential-operator/${CLUSTER_NAME}=owned" \ --key keys.json \ --body ${TEMPDIR}/jwks.combined.json
$ aws s3api put-object \ --bucket ${AWS_BUCKET} \ --tagging "openshift.io/cloud-credential-operator/${CLUSTER_NAME}=owned" \ --key keys.json \ --body ${TEMPDIR}/jwks.combined.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待 Kubernetes API 服务器更新并使用新密钥。您可以运行以下命令来监控更新进度:
oc adm wait-for-stable-cluster
$ oc adm wait-for-stable-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个过程可能需要 15 分钟或更长时间。以下输出表示进程已完成:
All clusteroperators are stable
All clusteroperators are stable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为确保集群中的所有 pod 使用新密钥,您必须重启它们。
重要此步骤对于被配置为在多个节点之间实现高可用性的服务可以维护正常运行,但可能会导致不具有高可用性的服务停机。
运行以下命令重启集群中的所有 pod:
oc adm reboot-machine-config-pool mcp/worker mcp/master
$ oc adm reboot-machine-config-pool mcp/worker mcp/master
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令监控重启和更新进程:
oc adm wait-for-node-reboot nodes --all
$ oc adm wait-for-node-reboot nodes --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个过程可能需要 15 分钟或更长时间。以下输出表示进程已完成:
All nodes rebooted
All nodes rebooted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令监控更新进度:
oc adm wait-for-stable-cluster
$ oc adm wait-for-stable-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个过程可能需要 15 分钟或更长时间。以下输出表示进程已完成:
All clusteroperators are stable
All clusteroperators are stable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将组合的
keys.json
文件替换为在云供应商中更新的keys.json
文件。aws s3api put-object \ --bucket ${AWS_BUCKET} \ --tagging "openshift.io/cloud-credential-operator/${CLUSTER_NAME}=owned" \ --key keys.json \ --body ${TEMPDIR}/jwks.new.json
$ aws s3api put-object \ --bucket ${AWS_BUCKET} \ --tagging "openshift.io/cloud-credential-operator/${CLUSTER_NAME}=owned" \ --key keys.json \ --body ${TEMPDIR}/jwks.new.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.1.2. 轮转 GCP OIDC 绑定服务帐户签名者密钥 复制链接链接已复制到粘贴板!
如果 Google Cloud Platform (GCP) 上的 OpenShift Container Platform 集群的 Cloud Credential Operator (CCO) 被配置为使用 GCP Workload Identity 以手动模式运行,您可以轮转绑定服务帐户签名者密钥。
要轮转密钥,您需要删除集群中的现有密钥,这会导致 Kubernetes API 服务器创建新密钥。要减少这个过程中的身份验证失败,您必须立即将新公钥添加到现有签发者文件中。在集群使用新密钥进行身份验证后,您可以删除所有剩余的密钥。
轮转 OIDC 绑定服务帐户签名者密钥的过程具有破坏性,需要花费大量时间。有些步骤是时间敏感的。在继续操作前,请观察以下注意事项:
- 阅读以下步骤,并确保您了解并接受时间要求。具体的时间要求因单个集群而异,但可能需要至少一个小时。
- 要降低身份验证失败的风险,请确保了解并准备对时间敏感的步骤。
- 在此过程中,您必须刷新所有服务帐户并重启集群中的所有 pod。这些操作对工作负载具有破坏性。要缓解这种影响,您可以临时停止这些服务,然后在集群就绪时重新部署它们。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问 OpenShift CLI (oc
)。
您已在
ccoctl
工具使用的 GCP 帐户中添加以下身份验证选项之一:- IAM Workload Identity Pool Admin 角色
以下粒度权限:
-
storage.objects.create
-
storage.objects.delete
-
-
您已配置了
ccoctl
工具。 集群处于稳定状态。您可以运行以下命令来确认集群稳定:
oc adm wait-for-stable-cluster --minimum-stable-period=5s
$ oc adm wait-for-stable-cluster --minimum-stable-period=5s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
配置以下环境变量:
CURRENT_ISSUER=$(oc get authentication cluster -o jsonpath='{.spec.serviceAccountIssuer}') GCP_BUCKET=$(echo ${CURRENT_ISSUER} | cut -d "/" -f4)
CURRENT_ISSUER=$(oc get authentication cluster -o jsonpath='{.spec.serviceAccountIssuer}') GCP_BUCKET=$(echo ${CURRENT_ISSUER} | cut -d "/" -f4)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您的集群可能与本例不同,资源名称可能无法与集群名称相同。确保为集群指定正确的相应资源名称。
运行以下命令,创建一个临时目录来使用并为它分配一个环境变量:
TEMPDIR=$(mktemp -d)
$ TEMPDIR=$(mktemp -d)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要让 Kubernetes API 服务器创建新的绑定服务帐户签名密钥,您需要删除下一个绑定服务帐户签名密钥。
重要完成此步骤后,Kubernetes API 服务器开始推出新密钥。要降低身份验证失败的风险,请尽快完成剩余的步骤。剩余的步骤可能会对工作负载造成破坏。
准备就绪后,运行以下命令来删除下一个绑定服务帐户签名密钥:
oc delete secrets/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator
$ oc delete secrets/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,从 Kubernetes API 服务器创建的服务帐户签名密钥 secret 下载公钥:
oc get secret/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator \ -ojsonpath='{ .data.service-account\.pub }' | base64 \ -d > ${TEMPDIR}/serviceaccount-signer.public
$ oc get secret/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator \ -ojsonpath='{ .data.service-account\.pub }' | base64 \ -d > ${TEMPDIR}/serviceaccount-signer.public
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用公钥创建一个
key.json
文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来重命名
keys.json
文件:cp ${TEMPDIR}/<number>-keys.json ${TEMPDIR}/jwks.new.json
$ cp ${TEMPDIR}/<number>-keys.json ${TEMPDIR}/jwks.new.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<number>
是一个两位数字的值,具体因您的环境而异。运行以下命令,从云供应商下载现有的
key.json
文件:gcloud storage cp gs://${GCP_BUCKET}/keys.json ${TEMPDIR}/jwks.current.json
$ gcloud storage cp gs://${GCP_BUCKET}/keys.json ${TEMPDIR}/jwks.current.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令组合两个
keys.json
文件:jq -s '{ keys: map(.keys[])}' ${TEMPDIR}/jwks.current.json ${TEMPDIR}/jwks.new.json > ${TEMPDIR}/jwks.combined.json
$ jq -s '{ keys: map(.keys[])}' ${TEMPDIR}/jwks.current.json ${TEMPDIR}/jwks.new.json > ${TEMPDIR}/jwks.combined.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在轮转过程中为旧密钥和新密钥启用身份验证,请运行以下命令将组合的
keys.json
文件上传到云供应商:gcloud storage cp ${TEMPDIR}/jwks.combined.json gs://${GCP_BUCKET}/keys.json
$ gcloud storage cp ${TEMPDIR}/jwks.combined.json gs://${GCP_BUCKET}/keys.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待 Kubernetes API 服务器更新并使用新密钥。您可以运行以下命令来监控更新进度:
oc adm wait-for-stable-cluster
$ oc adm wait-for-stable-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个过程可能需要 15 分钟或更长时间。以下输出表示进程已完成:
All clusteroperators are stable
All clusteroperators are stable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为确保集群中的所有 pod 使用新密钥,您必须重启它们。
重要此步骤对于被配置为在多个节点之间实现高可用性的服务可以维护正常运行,但可能会导致不具有高可用性的服务停机。
运行以下命令重启集群中的所有 pod:
oc adm reboot-machine-config-pool mcp/worker mcp/master
$ oc adm reboot-machine-config-pool mcp/worker mcp/master
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令监控重启和更新进程:
oc adm wait-for-node-reboot nodes --all
$ oc adm wait-for-node-reboot nodes --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个过程可能需要 15 分钟或更长时间。以下输出表示进程已完成:
All nodes rebooted
All nodes rebooted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令监控更新进度:
oc adm wait-for-stable-cluster
$ oc adm wait-for-stable-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个过程可能需要 15 分钟或更长时间。以下输出表示进程已完成:
All clusteroperators are stable
All clusteroperators are stable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将组合的
keys.json
文件替换为在云供应商中更新的keys.json
文件。gcloud storage cp ${TEMPDIR}/jwks.new.json gs://${GCP_BUCKET}/keys.json
$ gcloud storage cp ${TEMPDIR}/jwks.new.json gs://${GCP_BUCKET}/keys.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.1.3. 轮转 Azure OIDC 绑定服务帐户签名者密钥 复制链接链接已复制到粘贴板!
如果 Microsoft Azure 上的 OpenShift Container Platform 集群的 Cloud Credential Operator (CCO)配置为使用 Microsoft Entra Workload ID 以手动模式运行,您可以轮转绑定服务帐户签名者密钥。
要轮转密钥,您需要删除集群中的现有密钥,这会导致 Kubernetes API 服务器创建新密钥。要减少这个过程中的身份验证失败,您必须立即将新公钥添加到现有签发者文件中。在集群使用新密钥进行身份验证后,您可以删除所有剩余的密钥。
轮转 OIDC 绑定服务帐户签名者密钥的过程具有破坏性,需要花费大量时间。有些步骤是时间敏感的。在继续操作前,请观察以下注意事项:
- 阅读以下步骤,并确保您了解并接受时间要求。具体的时间要求因单个集群而异,但可能需要至少一个小时。
- 要降低身份验证失败的风险,请确保了解并准备对时间敏感的步骤。
- 在此过程中,您必须刷新所有服务帐户并重启集群中的所有 pod。这些操作对工作负载具有破坏性。要缓解这种影响,您可以临时停止这些服务,然后在集群就绪时重新部署它们。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问 OpenShift CLI (oc
)。
您已为
ccoctl
工具创建了全局 Azure 帐户,用于以下权限:-
Microsoft.Storage/storageAccounts/listkeys/action
-
Microsoft.Storage/storageAccounts/read
-
Microsoft.Storage/storageAccounts/write
-
Microsoft.Storage/storageAccounts/blobServices/containers/read
-
Microsoft.Storage/storageAccounts/blobServices/containers/write
-
-
您已配置了
ccoctl
工具。 集群处于稳定状态。您可以运行以下命令来确认集群稳定:
oc adm wait-for-stable-cluster --minimum-stable-period=5s
$ oc adm wait-for-stable-cluster --minimum-stable-period=5s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
配置以下环境变量:
CURRENT_ISSUER=$(oc get authentication cluster -o jsonpath='{.spec.serviceAccountIssuer}') AZURE_STORAGE_ACCOUNT=$(echo ${CURRENT_ISSUER} | cut -d "/" -f3 | cut -d "." -f1) AZURE_STORAGE_CONTAINER=$(echo ${CURRENT_ISSUER} | cut -d "/" -f4)
CURRENT_ISSUER=$(oc get authentication cluster -o jsonpath='{.spec.serviceAccountIssuer}') AZURE_STORAGE_ACCOUNT=$(echo ${CURRENT_ISSUER} | cut -d "/" -f3 | cut -d "." -f1) AZURE_STORAGE_CONTAINER=$(echo ${CURRENT_ISSUER} | cut -d "/" -f4)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您的集群可能与本例不同,资源名称可能无法与集群名称相同。确保为集群指定正确的相应资源名称。
运行以下命令,创建一个临时目录来使用并为它分配一个环境变量:
TEMPDIR=$(mktemp -d)
$ TEMPDIR=$(mktemp -d)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要让 Kubernetes API 服务器创建新的绑定服务帐户签名密钥,您需要删除下一个绑定服务帐户签名密钥。
重要完成此步骤后,Kubernetes API 服务器开始推出新密钥。要降低身份验证失败的风险,请尽快完成剩余的步骤。剩余的步骤可能会对工作负载造成破坏。
准备就绪后,运行以下命令来删除下一个绑定服务帐户签名密钥:
oc delete secrets/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator
$ oc delete secrets/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,从 Kubernetes API 服务器创建的服务帐户签名密钥 secret 下载公钥:
oc get secret/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator \ -ojsonpath='{ .data.service-account\.pub }' | base64 \ -d > ${TEMPDIR}/serviceaccount-signer.public
$ oc get secret/next-bound-service-account-signing-key \ -n openshift-kube-apiserver-operator \ -ojsonpath='{ .data.service-account\.pub }' | base64 \ -d > ${TEMPDIR}/serviceaccount-signer.public
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用公钥创建一个
key.json
文件:ccoctl aws create-identity-provider \ --dry-run \ --output-dir ${TEMPDIR} \ --name fake \ --region us-east-1
$ ccoctl aws create-identity-provider \
1 --dry-run \
2 --output-dir ${TEMPDIR} \ --name fake \
3 --region us-east-1
4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来重命名
keys.json
文件:cp ${TEMPDIR}/<number>-keys.json ${TEMPDIR}/jwks.new.json
$ cp ${TEMPDIR}/<number>-keys.json ${TEMPDIR}/jwks.new.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<number>
是一个两位数字的值,具体因您的环境而异。运行以下命令,从云供应商下载现有的
key.json
文件:az storage blob download \ --container-name ${AZURE_STORAGE_CONTAINER} \ --account-name ${AZURE_STORAGE_ACCOUNT} \ --name 'openid/v1/jwks' \ -f ${TEMPDIR}/jwks.current.json
$ az storage blob download \ --container-name ${AZURE_STORAGE_CONTAINER} \ --account-name ${AZURE_STORAGE_ACCOUNT} \ --name 'openid/v1/jwks' \ -f ${TEMPDIR}/jwks.current.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令组合两个
keys.json
文件:jq -s '{ keys: map(.keys[])}' ${TEMPDIR}/jwks.current.json ${TEMPDIR}/jwks.new.json > ${TEMPDIR}/jwks.combined.json
$ jq -s '{ keys: map(.keys[])}' ${TEMPDIR}/jwks.current.json ${TEMPDIR}/jwks.new.json > ${TEMPDIR}/jwks.combined.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在轮转过程中为旧密钥和新密钥启用身份验证,请运行以下命令将组合的
keys.json
文件上传到云供应商:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待 Kubernetes API 服务器更新并使用新密钥。您可以运行以下命令来监控更新进度:
oc adm wait-for-stable-cluster
$ oc adm wait-for-stable-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个过程可能需要 15 分钟或更长时间。以下输出表示进程已完成:
All clusteroperators are stable
All clusteroperators are stable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为确保集群中的所有 pod 使用新密钥,您必须重启它们。
重要此步骤对于被配置为在多个节点之间实现高可用性的服务可以维护正常运行,但可能会导致不具有高可用性的服务停机。
运行以下命令重启集群中的所有 pod:
oc adm reboot-machine-config-pool mcp/worker mcp/master
$ oc adm reboot-machine-config-pool mcp/worker mcp/master
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令监控重启和更新进程:
oc adm wait-for-node-reboot nodes --all
$ oc adm wait-for-node-reboot nodes --all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个过程可能需要 15 分钟或更长时间。以下输出表示进程已完成:
All nodes rebooted
All nodes rebooted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令监控更新进度:
oc adm wait-for-stable-cluster
$ oc adm wait-for-stable-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个过程可能需要 15 分钟或更长时间。以下输出表示进程已完成:
All clusteroperators are stable
All clusteroperators are stable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将组合的
keys.json
文件替换为在云供应商中更新的keys.json
文件。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.1.4. 轮转 IBM Cloud 凭证 复制链接链接已复制到粘贴板!
您可以为现有服务 ID 轮转 API 密钥,并更新对应的 secret。
先决条件
-
您已配置了
ccoctl
工具。 - 已安装 live OpenShift Container Platform 集群中现有的服务 ID。
流程
运行以下命令,使用
ccoctl
工具轮转服务 ID 的 API 密钥并更新 secret:ccoctl <provider_name> refresh-keys \ --kubeconfig <openshift_kubeconfig_file> \ --credentials-requests-dir <path_to_credential_requests_directory> \ --name <name>
$ ccoctl <provider_name> refresh-keys \
1 --kubeconfig <openshift_kubeconfig_file> \
2 --credentials-requests-dir <path_to_credential_requests_directory> \
3 --name <name>
4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您的集群使用
TechPreviewNoUpgrade
功能集启用的技术预览功能,则必须包含--enable-tech-preview
参数。