20.4. 使用 AWS 安全令牌服务在集群中准备 AWS Load Balancer Operator
您可以在使用 STS 的集群中安装 AWS Load Balancer Operator。在安装 Operator 前,按照以下步骤准备集群。
AWS Load Balancer Operator 依赖于 CredentialsRequest 对象来引导 Operator 和 AWS Load Balancer Controller。AWS Load Balancer Operator 等待所需的 secret 创建并可用。Cloud Credential Operator 不会在 STS 集群中自动置备 secret。您必须使用 ccoctl 二进制文件手动设置凭证 secret。
如果您不想使用 Cloud Credential Operator 置备凭证 secret,您可以通过在 AWS Load Balancer Controller 自定义资源 (CR) 中指定凭证 secret 在 STS 集群上配置 AWSLoadBalancerController 实例。
20.4.1. 在安全令牌服务集群中引导 AWS Load Balancer Operator 复制链接链接已复制到粘贴板!
先决条件
-
您必须提取并准备
ccoctl二进制文件。
流程
运行以下命令来创建
aws-load-balancer-operator命名空间:oc create namespace aws-load-balancer-operator
$ oc create namespace aws-load-balancer-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,下载 AWS Load Balancer Operator 的
CredentialsRequest自定义资源 (CR),并创建一个目录来存储它:curl --create-dirs -o <path-to-credrequests-dir>/cr.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-credentials-request.yaml
$ curl --create-dirs -o <path-to-credrequests-dir>/cr.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/operator-credentials-request.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用
ccoctl工具处理 AWS Load Balancer Operator 的CredentialsRequest对象:ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>$ ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令应用在集群 manifests 目录中生成的 secret:
ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}$ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证 AWS Load Balancer Operator 的凭证 secret 是否已创建:
oc -n aws-load-balancer-operator get secret aws-load-balancer-operator --template='{{index .data "credentials"}}' | base64 -d$ oc -n aws-load-balancer-operator get secret aws-load-balancer-operator --template='{{index .data "credentials"}}' | base64 -dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
[default] sts_regional_endpoints = regional role_arn = arn:aws:iam::999999999999:role/aws-load-balancer-operator-aws-load-balancer-operator web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token
[default] sts_regional_endpoints = regional role_arn = arn:aws:iam::999999999999:role/aws-load-balancer-operator-aws-load-balancer-operator web_identity_token_file = /var/run/secrets/openshift/serviceaccount/tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow
先决条件
-
您必须提取并准备
ccoctl二进制文件。
流程
AWS Load Balancer Operator 为每个
AWSLoadBalancerController自定义资源 (CR) 在openshift-cloud-credential-operator命名空间中创建CredentialsRequest对象。您可以运行以下命令来将创建的CredentialsRequest对象提取到目录中:oc get credentialsrequest -n openshift-cloud-credential-operator \ aws-load-balancer-controller-<cr-name> -o yaml > <path-to-credrequests-dir>/cr.yaml$ oc get credentialsrequest -n openshift-cloud-credential-operator \ aws-load-balancer-controller-<cr-name> -o yaml > <path-to-credrequests-dir>/cr.yaml1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
aws-load-balancer-controller-<cr-name>参数指定 AWS Load Balancer Operator 创建的凭证请求名称。cr-name指定 AWS Load Balancer Controller 实例的名称。
运行以下命令,使用
ccoctl工具处理credrequests目录中的所有CredentialsRequest对象:ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>$ ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令应用在集群 manifests 目录中生成的 secret:
ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}$ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
aws-load-balancer-controllerpod 是否已创建:oc -n aws-load-balancer-operator get pods
$ oc -n aws-load-balancer-operator get pods NAME READY STATUS RESTARTS AGE aws-load-balancer-controller-cluster-9b766d6-gg82c 1/1 Running 0 137m aws-load-balancer-operator-controller-manager-b55ff68cc-85jzg 2/2 Running 0 3h26mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
20.4.3. 使用特定凭证在安全令牌服务集群中配置 AWS Load Balancer Operator 复制链接链接已复制到粘贴板!
您可以使用 AWS Load Balancer Controller 自定义资源(CR) 中的 spec.credentials 字段指定凭证 secret。您可以使用控制器的预定义 CredentialsRequest 对象来知道需要哪些角色。
先决条件
-
您必须提取并准备
ccoctl二进制文件。
流程
运行以下命令,下载 AWS Load Balancer Controller 的 CredentialsRequest 自定义资源 (CR),并创建一个目录来存储它:
curl --create-dirs -o <path-to-credrequests-dir>/cr.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/controller/controller-credentials-request.yaml
$ curl --create-dirs -o <path-to-credrequests-dir>/cr.yaml https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/main/hack/controller/controller-credentials-request.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
ccoctl工具处理控制器的CredentialsRequest对象:ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>$ ccoctl aws create-iam-roles \ --name <name> --region=<aws_region> \ --credentials-requests-dir=<path-to-credrequests-dir> \ --identity-provider-arn <oidc-arn>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 secret 应用到集群:
ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}$ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证控制器是否已创建凭证 secret 以供控制器使用:
oc -n aws-load-balancer-operator get secret aws-load-balancer-controller-manual-cluster --template='{{index .data "credentials"}}' | base64 -d$ oc -n aws-load-balancer-operator get secret aws-load-balancer-controller-manual-cluster --template='{{index .data "credentials"}}' | base64 -dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
[default] sts_regional_endpoints = regional role_arn = arn:aws:iam::999999999999:role/aws-load-balancer-operator-aws-load-balancer-controller web_identity_token_file = /var/run/secrets/openshift/serviceaccount/token[default] sts_regional_endpoints = regional role_arn = arn:aws:iam::999999999999:role/aws-load-balancer-operator-aws-load-balancer-controller web_identity_token_file = /var/run/secrets/openshift/serviceaccount/tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
AWSLoadBalancerController资源 YAML 文件,如sample-aws-lb-manual-creds.yaml,如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow