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: Manual 1 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=aws
此命令为每个
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: AWSProviderSpec statementEntries: - effect: Allow action: - iam:GetUser - iam:GetUserPolicy - iam:ListAccessKeys resource: "*" ...
在之前生成的
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 kind: AWSProviderSpec statementEntries: - effect: Allow action: - s3:CreateBucket - s3:DeleteBucket resource: "*" ... secretRef: name: <component-secret> namespace: <component-namespace> ...
Secret
对象示例apiVersion: v1 kind: Secret metadata: name: <component-secret> namespace: <component-namespace> data: aws_access_key_id: <base64_encoded_aws_access_key_id> aws_secret_access_key: <base64_encoded_aws_secret_access_key>
重要发行镜像包含通过
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 处于可升级状态。