3.2. 手动创建 IAM
在无法访问云身份和访问管理(IAM)API 的环境中,或者管理员更不希望将管理员级别的凭证 secret 存储在集群 kube-system 命名空间中时,可以在安装前将 Cloud Credential Operator(CCO)放入手动模式。
流程
运行以下命令,切换到包含安装程序的目录并创建
install-config.yaml文件:$ openshift-install create install-config --dir <installation_directory>其中
<installation_directory>是安装程序在其中创建文件的目录。编辑
install-config.yaml配置文件,使其包含将credentialsMode参数设置为Manual。install-config.yaml配置文件示例apiVersion: v1 baseDomain: cluster1.example.com credentialsMode: Manual1 compute: - architecture: amd64 hyperthreading: Enabled ...- 1
- 添加这一行将
credentialsMode参数设置为Manual。
从包含安装程序的目录中运行以下命令来生成清单:
$ openshift-install create manifests --dir <installation_directory>其中
<installation_directory>是安装程序在其中创建文件的目录。在包含安装程序的目录中,运行以下命令来获取构建
openshift-install二进制文件的 OpenShift Container Platform 发行镜像的详情:$ openshift-install version输出示例
release image quay.io/openshift-release-dev/ocp-release:4.y.z-x86_64运行以下命令,找到此发行版本镜像中的所有
CredentialsRequest对象:$ oc adm release extract quay.io/openshift-release-dev/ocp-release:4.y.z-x86_64 \ --credentials-requests \ --cloud=gcp此命令为每个
CredentialsRequest对象创建一个 YAML 文件。CredentialsRequest对象示例apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: name: <component-credentials-request> namespace: openshift-cloud-credential-operator ... spec: providerSpec: apiVersion: cloudcredential.openshift.io/v1 kind: GCPProviderSpec predefinedRoles: - roles/storage.admin - roles/iam.serviceAccountUser skipServiceCheck: true ...在之前生成的
openshift-install清单目录中为 secret 创建 YAML 文件。secret 必须使用在spec.secretRef中为每个CredentialsRequest定义的命名空间和 secret 名称存储。带有 secret 的
CredentialsRequest对象示例apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: name: <component-credentials-request> namespace: openshift-cloud-credential-operator ... spec: providerSpec: apiVersion: cloudcredential.openshift.io/v1 ... secretRef: name: <component-secret> namespace: <component-namespace> ...Secret对象示例apiVersion: v1 kind: Secret metadata: name: <component-secret> namespace: <component-namespace> data: service_account.json: <base64_encoded_gcp_service_account_file>重要发行镜像包含通过
TechPreviewNoUpgrade功能集启用的技术预览功能的CredentialsRequest对象。您可以使用release.openshift.io/feature-set: TechPreviewNoUpgrade注解来识别这些对象。- 如果不使用这些功能,请不要为这些对象创建 secret。为不使用的技术预览功能创建 secret 可能会导致安装失败。
- 如果使用这些功能,必须为对应的对象创建 secret。
要使用
TechPreviewNoUpgrade注解查找CredentialsRequest对象,请运行以下命令:$ grep "release.openshift.io/feature-set" *输出示例
0000_30_capi-operator_00_credentials-request.yaml: release.openshift.io/feature-set: TechPreviewNoUpgrade
从包含安装程序的目录中,开始创建集群:
$ openshift-install create cluster --dir <installation_directory>重要在升级使用手动维护凭证的集群前,您必须确保 CCO 处于可升级状态。