3.2. 创建所需的 Alibaba 云资源
在安装 OpenShift Container Platform 前,您必须使用 Alibaba Cloud 控制台创建一个资源访问管理(RAM)用户,该用户有足够的权限将 OpenShift Container Platform 安装到 Alibaba Cloud 中。此用户还必须具有创建新 RAM 用户的权限。您还可以配置和使用 ccoctl
工具为 OpenShift Container Platform 组件创建新凭证,及其所需的权限。
OpenShift Container Platform 上的 Alibaba Cloud 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
3.2.1. 创建所需的 RAM 用户
您必须有一个 Alibaba Cloud Resource Access Management(RAM)用户才能进行安装具有足够权限。您可以使用 Alibaba Cloud Resource Access Management 控制台来创建新用户或修改现有用户。之后,您可以根据用户的权限在 OpenShift Container Platform 中创建凭证。
当您配置 RAM 用户时,请确定考虑以下要求:
用户必须具有 Alibaba Cloud AccessKey ID 和 AccessKey secret 对。
-
对于新用户,您可以在创建用户时为 Access Mode 选择
Open API Access
。这个模式会生成所需的 AccessKey 对。 对于现有用户,您可以添加 AccessKey 对,或者您可以获取该用户的 AccessKey 对。
注意创建后,AccessKey secret 仅显示一次。您必须立即保存 AccessKey 对,因为 API 调用需要 accessKey 对。
-
对于新用户,您可以在创建用户时为 Access Mode 选择
将 AccessKey ID 和 secret 添加到本地计算机上的
~/.alibabacloud/credentials
文件中。在登录到控制台时,Alibaba Cloud 会自动创建此文件。Cloud Credential Operator(CCO)实用程序 ccoutil 在处理凭证请求对象
时使用这些凭证。例如:
[default] # Default client type = access_key # Certification type: access_key access_key_id = LTAI5t8cefXKmt # Key 1 access_key_secret = wYx56mszAN4Uunfh # Secret
- 1
- 在这里添加您的 AccessKeyID 和 AccessKeySecret。
RAM 用户必须具有
AdministratorAccess
策略,以确保帐户有充足的权限来创建 OpenShift Container Platform 集群。此策略授予管理所有 Alibaba Cloud 资源的权限。将
AdministratorAccess
策略附加到 RAM 用户时,您可以授予用户对所有 Alibaba Cloud 服务和资源的完整访问权限。如果您不想创建具有完全访问权限的用户,请创建自定义策略,使其包含可添加到 RAM 用户以进行安装的以下操作。这些操作足以安装 OpenShift Container Platform。提示您可以将以下 JSON 代码复制并粘贴到 Alibaba Cloud 控制台中,以创建自定义策略。有关创建自定义策略的详情,请参考 Alibaba Cloud 文档中的创建自定义策略。
例 3.1. 自定义策略 JSON 文件示例
{ "Version": "1", "Statement": [ { "Action": [ "tag:ListTagResources", "tag:UntagResources" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "vpc:DescribeVpcs", "vpc:DeleteVpc", "vpc:DescribeVSwitches", "vpc:DeleteVSwitch", "vpc:DescribeEipAddresses", "vpc:DescribeNatGateways", "vpc:ReleaseEipAddress", "vpc:DeleteNatGateway", "vpc:DescribeSnatTableEntries", "vpc:CreateSnatEntry", "vpc:AssociateEipAddress", "vpc:ListTagResources", "vpc:TagResources", "vpc:DescribeVSwitchAttributes", "vpc:CreateVSwitch", "vpc:CreateNatGateway", "vpc:DescribeRouteTableList", "vpc:CreateVpc", "vpc:AllocateEipAddress", "vpc:ListEnhanhcedNatGatewayAvailableZones" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ecs:ModifyInstanceAttribute", "ecs:DescribeSecurityGroups", "ecs:DeleteSecurityGroup", "ecs:DescribeSecurityGroupReferences", "ecs:DescribeSecurityGroupAttribute", "ecs:RevokeSecurityGroup", "ecs:DescribeInstances", "ecs:DeleteInstances", "ecs:DescribeNetworkInterfaces", "ecs:DescribeInstanceRamRole", "ecs:DescribeUserData", "ecs:DescribeDisks", "ecs:ListTagResources", "ecs:AuthorizeSecurityGroup", "ecs:RunInstances", "ecs:TagResources", "ecs:ModifySecurityGroupPolicy", "ecs:CreateSecurityGroup", "ecs:DescribeAvailableResource", "ecs:DescribeRegions", "ecs:AttachInstanceRamRole" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "pvtz:DescribeRegions", "pvtz:DescribeZones", "pvtz:DeleteZone", "pvtz:DeleteZoneRecord", "pvtz:BindZoneVpc", "pvtz:DescribeZoneRecords", "pvtz:AddZoneRecord", "pvtz:SetZoneRecordStatus", "pvtz:DescribeZoneInfo", "pvtz:DescribeSyncEcsHostTask", "pvtz:AddZone" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "slb:DescribeLoadBalancers", "slb:SetLoadBalancerDeleteProtection", "slb:DeleteLoadBalancer", "slb:SetLoadBalancerModificationProtection", "slb:DescribeLoadBalancerAttribute", "slb:AddBackendServers", "slb:DescribeLoadBalancerTCPListenerAttribute", "slb:SetLoadBalancerTCPListenerAttribute", "slb:StartLoadBalancerListener", "slb:CreateLoadBalancerTCPListener", "slb:ListTagResources", "slb:TagResources", "slb:CreateLoadBalancer" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ram:ListResourceGroups", "ram:DeleteResourceGroup", "ram:ListPolicyAttachments", "ram:DetachPolicy", "ram:GetResourceGroup", "ram:CreateResourceGroup", "ram:DeleteRole", "ram:GetPolicy", "ram:DeletePolicy", "ram:ListPoliciesForRole", "ram:CreateRole", "ram:AttachPolicyToRole", "ram:GetRole", "ram:CreatePolicy", "ram:CreateUser", "ram:DetachPolicyFromRole", "ram:CreatePolicyVersion", "ram:DetachPolicyFromUser", "ram:ListPoliciesForUser", "ram:AttachPolicyToUser", "ram:CreateUser", "ram:GetUser", "ram:DeleteUser", "ram:CreateAccessKey", "ram:ListAccessKeys", "ram:DeleteAccessKey", "ram:ListUsers", "ram:ListPolicyVersions" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "oss:DeleteBucket", "oss:DeleteBucketTagging", "oss:GetBucketTagging", "oss:GetBucketCors", "oss:GetBucketPolicy", "oss:GetBucketLifecycle", "oss:GetBucketReferer", "oss:GetBucketTransferAcceleration", "oss:GetBucketLog", "oss:GetBucketWebSite", "oss:GetBucketInfo", "oss:PutBucketTagging", "oss:PutBucket", "oss:OpenOssService", "oss:ListBuckets", "oss:GetService", "oss:PutBucketACL", "oss:GetBucketLogging", "oss:ListObjects", "oss:GetObject", "oss:PutObject", "oss:DeleteObject" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "alidns:DescribeDomainRecords", "alidns:DeleteDomainRecord", "alidns:DescribeDomains", "alidns:DescribeDomainRecordInfo", "alidns:AddDomainRecord", "alidns:SetDomainRecordStatus" ], "Resource": "*", "Effect": "Allow" }, { "Action": "bssapi:CreateInstance", "Resource": "*", "Effect": "Allow" }, { "Action": "ram:PassRole", "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "acs:Service": "ecs.aliyuncs.com" } } } ] }
有关创建 RAM 用户和授予权限的更多信息,请参阅 Alibaba Cloud 文档中的 创建 RAM 用户和 Grant 权限。
3.2.2. 配置 Cloud Credential Operator 工具
要分配为每个集群组件提供长期 RAM 访问密钥(AK)的 RAM 用户和策略,请提取并准备 Cloud Credential Operator (CCO) 实用程序 (ccoctl
) 二进制文件。
ccoctl
工具是在 Linux 环境中运行的 Linux 二进制文件。
先决条件
- 您可以访问具有集群管理员权限的 OpenShift Container Platform 帐户。
-
已安装 OpenShift CLI(
oc
)。
流程
运行以下命令,为 OpenShift Container Platform 发行镜像设置变量:
$ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
运行以下命令,从 OpenShift Container Platform 发行镜像获取 CCO 容器镜像:
$ CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)
注意确保
$RELEASE_IMAGE
的架构与将使用ccoctl
工具的环境架构相匹配。运行以下命令,将 CCO 容器镜像中的
ccoctl
二进制文件提取到 OpenShift Container Platform 发行镜像中:$ oc image extract $CCO_IMAGE --file="/usr/bin/ccoctl" -a ~/.pull-secret
运行以下命令更改权限以使
ccoctl
可执行:$ chmod 775 ccoctl
验证
要验证
ccoctl
是否准备就绪,可以尝试显示帮助文件。运行命令时使用相对文件名,例如:$ ./ccoctl.rhel9
输出示例
OpenShift credentials provisioning tool Usage: ccoctl [command] Available Commands: alibabacloud Manage credentials objects for alibaba cloud aws Manage credentials objects for AWS cloud azure Manage credentials objects for Azure gcp Manage credentials objects for Google cloud help Help about any command ibmcloud Manage credentials objects for IBM Cloud nutanix Manage credentials objects for Nutanix Flags: -h, --help help for ccoctl Use "ccoctl [command] --help" for more information about a command.
其他资源
3.2.3. 后续步骤
您可以使用以下方法之一在 OpenShift Container Platform 安装程序置备的 Alibaba Cloud 基础架构上安装集群:
- 在 Alibaba Cloud 上快速安装集群:您可以使用默认配置选项快速安装集群。
- 在 Alibaba Cloud 上安装自定义集群 :安装程序允许在安装阶段应用一些自定义。其它自定义选项可在安装后使用。