19.3. 创建 AWS Load Balancer Controller 实例


安装 Operator 后,您可以创建 AWS Load Balancer Controller 实例。

19.3.1. 使用 AWS Load Balancer Operator 创建 AWS Load Balancer Controller 实例

您只能在集群中安装 aws-load-balancer-controller 的单个实例。您可以使用 CLI 创建 AWS Load Balancer Controller。AWS Load Balancer(ALB)Operator 只会协调名为 cluster 的资源。

先决条件

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

流程

  1. 创建一个 aws-load-balancer-controller 资源 YAML 文件,如 sample-aws-lb.yaml,如下所示:

    apiVersion: networking.olm.openshift.io/v1alpha1
    kind: AWSLoadBalancerController 1
    metadata:
      name: cluster 2
    spec:
      subnetTagging: Auto 3
      additionalResourceTags: 4
        example.org/cost-center: 5113232
        example.org/security-scope: staging
      ingressClass: alb 5
      config:
        replicas: 2 6
      enabledAddons: 7
        - AWSWAFv2 8
    1
    定义 aws-load-balancer-controller 资源。
    2
    定义 AWS Load Balancer Controller 实例名称。此实例名称作为后缀添加到所有相关资源。
    3
    有效选项为 AutoManual。当将值设置为 Auto 时,Operator 会尝试确定属于集群的子网并适当标记它们。如果内部子网上不存在内部子网标签,Operator 无法正确确定角色。如果在用户提供的基础架构上安装集群,您可以使用适当的角色标签手动标记子网,并将子网标记策略设置为 Manual
    4
    定义控制器在置备 AWS 资源时使用的标签。
    5
    此字段的默认值为 alb。如果 Operator 不存在,Operator 会置备具有相同名称的 IngressClass 资源。
    6
    指定控制器的副本数。
    7
    指定 AWS 负载均衡器的附加组件,该附加组件通过注解指定。
    8
    启用 alb.ingress.kubernetes.io/wafv2-acl-arn 注解。
  2. 运行以下命令,创建一个 aws-load-balancer-controller 资源:

    $ oc create -f sample-aws-lb.yaml
  3. 在 AWS Load Balancer Controller 运行后,创建一个部署资源 :

    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
              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
    1
    定义部署资源。
    2
    指定部署名称。
    3
    指定部署的副本数量。
  4. 创建一个服务资源 :

    apiVersion: v1
    kind: Service 1
    metadata:
      name: <echoserver> 2
      namespace: echoserver
    spec:
      ports:
        - port: 80
          targetPort: 8080
          protocol: TCP
      type: NodePort
      selector:
        app: echoserver
    1
    定义服务资源。
    2
    指定服务的名称。
  5. 部署 ALB 支持的 Ingress 资源:

    apiVersion: networking.k8s.io/v1
    kind: Ingress 1
    metadata:
      name: <echoserver> 2
      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> 3
                    port:
                      number: 80
    1
    定义入口资源。
    2
    指定入口资源的名称。
    3
    指定服务资源的名称。

验证

  • 运行以下命令,验证 Ingress 资源的状态,以显示置备的 AWS Load Balancer(ALB)的主机:

    $ HOST=$(kubectl get ingress -n echoserver echoserver -o json | jq -r '.status.loadBalancer.ingress[0].hostname')
  • 运行以下命令,验证置备的 AWS Load Balancer(ALB)主机的状态:

    $ curl $HOST
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.