2.4. 安装 AWS Load Balancer Operator


AWS Load Balancer Operator 部署和管理 AWS Load Balancer Controller。您可以使用 OpenShift Container Platform Web 控制台或 CLI 从软件目录安装 AWS Load Balancer Operator。

您可以使用 Web 控制台安装 AWS Load Balancer Operator。

先决条件

  • 已作为具有 cluster-admin 权限的用户身份登录 OpenShift Container Platform Web 控制台。
  • 集群被配置为使用 AWS 作为平台类型和云供应商。
  • 如果您使用安全令牌服务(STS)或用户置备的基础架构,请按照相关的准备步骤操作。例如,如果您使用 AWS 安全令牌服务,请参阅使用 AWS 安全令牌服务(STS) "在集群中准备 AWS Load Balancer Operator"。

流程

  1. 在 OpenShift Container Platform Web 控制台中进入到 Ecosystem Software Catalog
  2. 选择 AWS Load Balancer Operator。您可以使用 Filter by keyword 文本框,或者使用过滤器列表从 Operator 列表搜索 AWS Load Balancer Operator。
  3. 选择 aws-load-balancer-operator 命名空间。
  4. Install Operator 页面中,选择以下选项:

    1. 更新频道stable-v1
    2. 安装模式All namespaces on the cluster (default)
    3. Installed Namespaceaws-load-balancer-operator。如果 aws-load-balancer-operator 命名空间不存在,它会在 Operator 安装过程中创建。
    4. 选择 Update approvalAutomaticManual。默认情况下,Update approval 设置为 Automatic。如果选择自动更新,Operator Lifecycle Manager(OLM)将自动升级 Operator 的运行实例,而无需任何干预。如果选择手动更新,OLM 将创建一个更新请求。作为集群管理员,您必须手动批准该更新请求,以便将 Operator 更新至新版本。
  5. Install

验证

  • 在 Installed Operators 仪表板中验证 AWS Load Balancer Operator 的 Status 显示为 Succeeded

2.4.2. 使用 CLI 安装 AWS Load Balancer Operator

您可以使用 CLI 安装 AWS Load Balancer Operator。

先决条件

  • 以具有 cluster-admin 权限的用户身份登录 OpenShift Container Platform Web 控制台。
  • 集群被配置为使用 AWS 作为平台类型和云供应商。
  • 已登陆到 OpenShift CLI (oc)。

流程

  1. 创建一个 Namespace 对象:

    1. 创建定义 Namespace 对象的 YAML 文件:

      namespace.yaml 文件示例

      apiVersion: v1
      kind: Namespace
      metadata:
        name: aws-load-balancer-operator
      Copy to Clipboard Toggle word wrap

    2. 运行以下命令来创建 Namespace 对象:

      $ oc apply -f namespace.yaml
      Copy to Clipboard Toggle word wrap
  2. 创建一个 OperatorGroup 对象:

    1. 创建定义 OperatorGroup 对象的 YAML 文件:

      operatorgroup.yaml 文件示例

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: aws-lb-operatorgroup
        namespace: aws-load-balancer-operator
      spec:
        upgradeStrategy: Default
      Copy to Clipboard Toggle word wrap

    2. 运行以下命令来创建 OperatorGroup 对象:

      $ oc apply -f operatorgroup.yaml
      Copy to Clipboard Toggle word wrap
  3. 创建 Subscription 对象:

    1. 创建定义 Subscription 对象的 YAML 文件:

      subscription.yaml 文件示例

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: aws-load-balancer-operator
        namespace: aws-load-balancer-operator
      spec:
        channel: stable-v1
        installPlanApproval: Automatic
        name: aws-load-balancer-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace
      Copy to Clipboard Toggle word wrap

    2. 运行以下命令来创建 Subscription 对象:

      $ oc apply -f subscription.yaml
      Copy to Clipboard Toggle word wrap

验证

  1. 从订阅中获取安装计划的名称:

    $ oc -n aws-load-balancer-operator \
      get subscription aws-load-balancer-operator \
      --template='{{.status.installplan.name}}{{"\n"}}'
    Copy to Clipboard Toggle word wrap
  2. 检查安装计划的状态:

    $ oc -n aws-load-balancer-operator \
      get ip <install_plan_name> \
      --template='{{.status.phase}}{{"\n"}}'
    Copy to Clipboard Toggle word wrap

    输出必须是 Complete

2.4.3. 创建 AWS Load Balancer Controller

您只能在集群中安装 AWSLoadBalancerController 对象的单个实例。您可以使用 CLI 创建 AWS Load Balancer Controller。AWS Load Balancer Operator 只协调名为 resource 的集群

先决条件

  • 您已创建了 echoserver 命名空间。
  • 您可以访问 OpenShift CLI(oc)。

流程

  1. 创建定义 AWSLoadBalancerController 对象的 YAML 文件:

    sample-aws-lb.yaml 文件示例

    apiVersion: networking.olm.openshift.io/v1
    kind: AWSLoadBalancerController 
    1
    
    metadata:
      name: cluster 
    2
    
    spec:
      subnetTagging: Auto 
    3
    
      additionalResourceTags: 
    4
    
      - key: example.org/security-scope
        value: staging
      ingressClass: alb 
    5
    
      config:
        replicas: 2 
    6
    
      enabledAddons: 
    7
    
        - AWSWAFv2 
    8
    Copy to Clipboard Toggle word wrap

    1
    定义 AWSLoadBalancerController 对象。
    2
    定义 AWS Load Balancer Controller 名称。此实例名称作为后缀添加到所有相关资源。
    3
    配置 AWS Load Balancer Controller 的子网标记方法。以下值有效:
    • Auto :AWS Load Balancer Operator 决定属于集群的子网,并相应地标记它们。如果内部子网上不存在内部子网标签,Operator 无法正确确定角色。
    • Manual :您可以使用适当的角色标签手动标记属于集群的子网。如果在用户提供的基础架构上安装集群,则使用这个选项。
    4
    定义在置备 AWS 资源时 AWS Load Balancer Controller 使用的标签。
    5
    定义入口类名称。默认值为 alb
    6
    指定 AWS Load Balancer Controller 的副本数。
    7
    将注解指定为 AWS Load Balancer Controller 的附加组件。
    8
    启用 alb.ingress.kubernetes.io/wafv2-acl-arn 注解。
  2. 运行以下命令来创建 AWSLoadBalancerController 对象:

    $ oc create -f sample-aws-lb.yaml
    Copy to Clipboard Toggle word wrap
  3. 创建定义 Deployment 资源的 YAML 文件:

    sample-aws-lb.yaml 文件示例

    apiVersion: apps/v1
    kind: Deployment 
    1
    
    metadata:
      name: <echoserver> 
    2
    
      namespace: echoserver
    spec:
      selector:
        matchLabels:
          app: echoserver
      replicas: 3 
    3
    
      template:
        metadata:
          labels:
            app: echoserver
        spec:
          containers:
            - image: openshift/origin-node
              command:
               - "/bin/socat"
              args:
                - TCP4-LISTEN:8080,reuseaddr,fork
                - EXEC:'/bin/bash -c \"printf \\\"HTTP/1.0 200 OK\r\n\r\n\\\"; sed -e \\\"/^\r/q\\\"\"'
              imagePullPolicy: Always
              name: echoserver
              ports:
                - containerPort: 8080
    Copy to Clipboard Toggle word wrap

    1
    定义部署资源。
    2
    指定部署名称。
    3
    指定部署的副本数量。
  4. 创建定义 Service 资源的 YAML 文件:

    service-albo.yaml 文件示例

    apiVersion: v1
    kind: Service 
    1
    
    metadata:
      name: <echoserver> 
    2
    
      namespace: echoserver
    spec:
      ports:
        - port: 80
          targetPort: 8080
          protocol: TCP
      type: NodePort
      selector:
        app: echoserver
    Copy to Clipboard Toggle word wrap

    1
    定义服务资源。
    2
    指定服务名称。
  5. 创建定义 Ingress 资源的 YAML 文件:

    ingress-albo.yaml 文件示例

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: <name> 
    1
    
      namespace: echoserver
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/target-type: instance
    spec:
      ingressClassName: alb
      rules:
        - http:
            paths:
              - path: /
                pathType: Exact
                backend:
                  service:
                    name: <echoserver> 
    2
    
                    port:
                      number: 80
    Copy to Clipboard Toggle word wrap

    1
    Ingress 资源指定一个名称。
    2
    指定服务名称。

验证

  • 运行以下命令,将 Ingress 资源的状态保存到 HOST 变量中:

    $ HOST=$(oc get ingress -n echoserver echoserver --template='{{(index .status.loadBalancer.ingress 0).hostname}}')
    Copy to Clipboard Toggle word wrap
  • 运行以下命令,验证 Ingress 资源的状态:

    $ curl $HOST
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat