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 二进制文件。

流程

  1. 运行以下命令来创建 aws-load-balancer-operator 命名空间:

    $ oc create namespace aws-load-balancer-operator
  2. 运行以下命令,下载 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
  3. 运行以下命令,使用 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>
  4. 运行以下命令应用在集群 manifests 目录中生成的 secret:

    $ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
  5. 运行以下命令,验证 AWS Load Balancer Operator 的凭证 secret 是否已创建:

    $ oc -n aws-load-balancer-operator get secret aws-load-balancer-operator --template='{{index .data "credentials"}}' | base64 -d

    输出示例

    [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

20.4.2. 使用受管 CredentialsRequest 对象在安全令牌服务集群中配置 AWS Load Balancer Operator

先决条件

  • 您必须提取并准备 ccoctl 二进制文件。

流程

  1. 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 1
    1
    aws-load-balancer-controller-<cr-name> 参数指定 AWS Load Balancer Operator 创建的凭证请求名称。cr-name 指定 AWS Load Balancer Controller 实例的名称。
  2. 运行以下命令,使用 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>
  3. 运行以下命令应用在集群 manifests 目录中生成的 secret:

    $ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
  4. 验证 aws-load-balancer-controller pod 是否已创建:

    $ 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          3h26m

20.4.3. 使用特定凭证在安全令牌服务集群中配置 AWS Load Balancer Operator

您可以使用 AWS Load Balancer Controller 自定义资源(CR) 中的 spec.credentials 字段指定凭证 secret。您可以使用控制器的预定义 CredentialsRequest 对象来知道需要哪些角色。

先决条件

  • 您必须提取并准备 ccoctl 二进制文件。

流程

  1. 运行以下命令,下载 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
  2. 使用 ccoctl 工具处理控制器的 CredentialsRequest 对象:

    $ ccoctl aws create-iam-roles \
            --name <name> --region=<aws_region> \
            --credentials-requests-dir=<path-to-credrequests-dir> \
            --identity-provider-arn <oidc-arn>
  3. 将 secret 应用到集群:

    $ ls manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
  4. 验证控制器是否已创建凭证 secret 以供控制器使用:

    $ oc -n aws-load-balancer-operator get secret aws-load-balancer-controller-manual-cluster --template='{{index .data "credentials"}}' | base64 -d

    输出示例

    [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

  5. 创建 AWSLoadBalancerController 资源 YAML 文件,如 sample-aws-lb-manual-creds.yaml,如下所示:

    apiVersion: networking.olm.openshift.io/v1
    kind: AWSLoadBalancerController 1
    metadata:
      name: cluster 2
    spec:
      credentials:
        name: <secret-name> 3
    1
    定义 AWSLoadBalancerController 资源。
    2
    定义 AWS Load Balancer Controller 实例名称。此实例名称作为后缀添加到所有相关资源。
    3
    指定包含控制器使用的 AWS 凭证的 secret 名称。

20.4.4. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.