2.5. 配置 AWS Load Balancer Operator


2.5.1. 信任集群范围代理的证书颁发机构

您可以在 AWS Load Balancer Operator 中配置集群范围代理。配置集群范围代理后,Operator Lifecycle Manager (OLM) 会使用 HTTP_PROXYHTTPS_PROXYNO_PROXY 等环境变量自动更新 Operator 的所有部署。这些变量由 AWS Load Balancer Operator 填充给受管控制器。

  1. 运行以下命令,创建配置映射以在 aws-load-balancer-operator 命名空间中包含证书颁发机构 (CA) 捆绑包:

    $ oc -n aws-load-balancer-operator create configmap trusted-ca
    Copy to Clipboard Toggle word wrap
  2. 要将可信 CA 捆绑包注入配置映射中,请运行以下命令将 config.openshift.io/inject-trusted-cabundle=true 标签添加到配置映射中:

    $ oc -n aws-load-balancer-operator label cm trusted-ca config.openshift.io/inject-trusted-cabundle=true
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令,更新 AWS Load Balancer Operator 订阅以访问 AWS Load Balancer Operator 部署中的配置映射:

    $ oc -n aws-load-balancer-operator patch subscription aws-load-balancer-operator --type='merge' -p '{"spec":{"config":{"env":[{"name":"TRUSTED_CA_CONFIGMAP_NAME","value":"trusted-ca"}],"volumes":[{"name":"trusted-ca","configMap":{"name":"trusted-ca"}}],"volumeMounts":[{"name":"trusted-ca","mountPath":"/etc/pki/tls/certs/albo-tls-ca-bundle.crt","subPath":"ca-bundle.crt"}]}}}'
    Copy to Clipboard Toggle word wrap
  4. 部署 AWS Load Balancer Operator 后,运行以下命令来验证 CA 捆绑包是否已添加到 aws-load-balancer-operator-controller-manager 部署中:

    $ oc -n aws-load-balancer-operator exec deploy/aws-load-balancer-operator-controller-manager -c manager -- bash -c "ls -l /etc/pki/tls/certs/albo-tls-ca-bundle.crt; printenv TRUSTED_CA_CONFIGMAP_NAME"
    Copy to Clipboard Toggle word wrap

    输出示例

    -rw-r--r--. 1 root 1000690000 5875 Jan 11 12:25 /etc/pki/tls/certs/albo-tls-ca-bundle.crt
    trusted-ca
    Copy to Clipboard Toggle word wrap

  5. 可选:通过运行以下命令,每次 configmap 发生变化时重启 AWS Load Balancer Operator 的部署:

    $ oc -n aws-load-balancer-operator rollout restart deployment/aws-load-balancer-operator-controller-manager
    Copy to Clipboard Toggle word wrap

2.5.2. 在 AWS Load Balancer 中添加 TLS 终止

您可以将域的流量路由到服务的 pod,并在 AWS 负载均衡器中添加 TLS 终止。

先决条件

  • 您可以访问 OpenShift CLI(oc)。

流程

  1. 创建定义 AWSLoadBalancerController 资源的 YAML 文件:

    add-tls-termination-albc.yaml 文件示例

    apiVersion: networking.olm.openshift.io/v1
    kind: AWSLoadBalancerController
    metadata:
      name: cluster
    spec:
      subnetTagging: Auto
      ingressClass: tls-termination 
    1
    Copy to Clipboard Toggle word wrap

    1
    定义入口类名称。如果集群中没有 ingress 类,AWS Load Balancer Controller 会创建一个。如果 spec.controller 设置为 ingress.k8s.aws/alb,AWS Load Balancer Controller 会协调额外的入口类值。
  2. 创建定义 Ingress 资源的 YAML 文件:

    add-tls-termination-ingress.yaml 文件示例

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: <example> 
    1
    
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing 
    2
    
        alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:xxxxx 
    3
    
    spec:
      ingressClassName: tls-termination 
    4
    
      rules:
      - host: example.com 
    5
    
        http:
            paths:
              - path: /
                pathType: Exact
                backend:
                  service:
                    name: <example_service> 
    6
    
                    port:
                      number: 80
    Copy to Clipboard Toggle word wrap

    1
    指定入口名称。
    2
    控制器在公共子网中为入口置备负载均衡器,以便通过互联网访问负载均衡器。
    3
    附加到负载均衡器的证书的 Amazon 资源名称(ARN)。
    4
    定义入口类名称。
    5
    定义流量路由的域。
    6
    定义流量路由的服务。

您可以通过单个 AWS Load Balancer 将流量路由到属于单个域一部分的、带有多个 ingress 资源的不同服务。每个 ingress 资源提供了域的不同端点。

先决条件

  • 您可以访问 OpenShift CLI(oc)。

流程

  1. 创建一个 IngressClassParams 资源 YAML 文件,如 sample-single-lb-params.yaml,如下所示:

    apiVersion: elbv2.k8s.aws/v1beta1 
    1
    
    kind: IngressClassParams
    metadata:
      name: single-lb-params 
    2
    
    spec:
      group:
        name: single-lb 
    3
    Copy to Clipboard Toggle word wrap
    1
    定义 IngressClassParams 资源的 API 组和版本。
    2
    指定 IngressClassParams 资源名称。
    3
    指定 IngressGroup 资源名称。此类的所有 Ingress 资源都属于此 IngressGroup
  2. 运行以下命令来创建 IngressClassParams 资源:

    $ oc create -f sample-single-lb-params.yaml
    Copy to Clipboard Toggle word wrap
  3. 创建 IngressClass 资源 YAML 文件,如 sample-single-lb-class.yaml,如下所示:

    apiVersion: networking.k8s.io/v1 
    1
    
    kind: IngressClass
    metadata:
      name: single-lb 
    2
    
    spec:
      controller: ingress.k8s.aws/alb 
    3
    
      parameters:
        apiGroup: elbv2.k8s.aws 
    4
    
        kind: IngressClassParams 
    5
    
        name: single-lb-params 
    6
    Copy to Clipboard Toggle word wrap
    1
    定义 IngressClass 资源的 API 组和版本。
    2
    指定入口类名称。
    3
    定义控制器名称。ingress.k8s.aws/alb 值表示此类的所有入口资源都应由 AWS Load Balancer Controller 管理。
    4
    定义 IngressClassParams 资源的 API 组。
    5
    定义 IngressClassParams 资源的资源类型。
    6
    定义 IngressClassParams 资源名称。
  4. 运行以下命令来创建 IngressClass 资源:

    $ oc create -f sample-single-lb-class.yaml
    Copy to Clipboard Toggle word wrap
  5. 创建 AWSLoadBalancerController 资源 YAML 文件,如 sample-single-lb.yaml,如下所示:

    apiVersion: networking.olm.openshift.io/v1
    kind: AWSLoadBalancerController
    metadata:
      name: cluster
    spec:
      subnetTagging: Auto
      ingressClass: single-lb 
    1
    Copy to Clipboard Toggle word wrap
    1
    定义 IngressClass 资源的名称。
  6. 运行以下命令来创建 AWSLoadBalancerController 资源:

    $ oc create -f sample-single-lb.yaml
    Copy to Clipboard Toggle word wrap
  7. 创建 Ingress 资源 YAML 文件,如 sample-multiple-ingress.yaml,如下所示:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: example-1 
    1
    
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing 
    2
    
        alb.ingress.kubernetes.io/group.order: "1" 
    3
    
        alb.ingress.kubernetes.io/target-type: instance 
    4
    
    spec:
      ingressClassName: single-lb 
    5
    
      rules:
      - host: example.com 
    6
    
        http:
            paths:
            - path: /blog 
    7
    
              pathType: Prefix
              backend:
                service:
                  name: example-1 
    8
    
                  port:
                    number: 80 
    9
    
    ---
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: example-2
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/group.order: "2"
        alb.ingress.kubernetes.io/target-type: instance
    spec:
      ingressClassName: single-lb
      rules:
      - host: example.com
        http:
            paths:
            - path: /store
              pathType: Prefix
              backend:
                service:
                  name: example-2
                  port:
                    number: 80
    ---
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: example-3
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/group.order: "3"
        alb.ingress.kubernetes.io/target-type: instance
    spec:
      ingressClassName: single-lb
      rules:
      - host: example.com
        http:
            paths:
            - path: /
              pathType: Prefix
              backend:
                service:
                  name: example-3
                  port:
                    number: 80
    Copy to Clipboard Toggle word wrap
    1
    指定入口名称。
    2
    指明在公共子网中置备的负载均衡器,以访问互联网。
    3
    指定在负载均衡器收到请求时,来自多个入口资源的规则的顺序匹配。
    4
    表示负载均衡器将针对 OpenShift Container Platform 节点为目标,以访问该服务。
    5
    指定属于此入口的入口类。
    6
    定义用于请求路由的域名。
    7
    定义必须路由到服务的路径。
    8
    定义提供 Ingress 资源中配置的端点的服务名称。
    9
    定义服务上提供端点的端口。
  8. 运行以下命令来创建 Ingress 资源:

    $ oc create -f sample-multiple-ingress.yaml
    Copy to Clipboard Toggle word wrap

2.5.4. AWS Load Balancer Operator 日志

您可以使用 oc logs 命令查看 AWS Load Balancer Operator 日志。

流程

  • 运行以下命令,查看 AWS Load Balancer Operator 的日志:

    $ oc logs -n aws-load-balancer-operator deployment/aws-load-balancer-operator-controller-manager -c manager
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat