19.3. 创建 AWS Load Balancer Controller 实例
安装 Operator 后,您可以创建 AWS Load Balancer Controller 实例。
您只能在集群中安装 aws-load-balancer-controller 的单个实例。您可以使用 CLI 创建 AWS Load Balancer Controller。AWS Load Balancer(ALB)Operator 只会协调名为 cluster 的资源。
先决条件
-
您已创建了
echoserver命名空间。 -
您可以访问 OpenShift CLI(
oc)。
流程
创建一个
aws-load-balancer-controller资源 YAML 文件,如sample-aws-lb.yaml,如下所示:apiVersion: networking.olm.openshift.io/v1alpha1 kind: AWSLoadBalancerController1 metadata: name: cluster2 spec: subnetTagging: Auto3 additionalResourceTags:4 example.org/cost-center: 5113232 example.org/security-scope: staging ingressClass: alb5 config: replicas: 26 enabledAddons:7 - AWSWAFv28 - 1
- 定义
aws-load-balancer-controller资源。 - 2
- 定义 AWS Load Balancer Controller 实例名称。此实例名称作为后缀添加到所有相关资源。
- 3
- 有效选项为
Auto和Manual。当将值设置为Auto时,Operator 会尝试确定属于集群的子网并适当标记它们。如果内部子网上不存在内部子网标签,Operator 无法正确确定角色。如果在用户提供的基础架构上安装集群,您可以使用适当的角色标签手动标记子网,并将子网标记策略设置为Manual。 - 4
- 定义控制器在置备 AWS 资源时使用的标签。
- 5
- 此字段的默认值为
alb。如果 Operator 不存在,Operator 会置备具有相同名称的IngressClass资源。 - 6
- 指定控制器的副本数。
- 7
- 指定 AWS 负载均衡器的附加组件,该附加组件通过注解指定。
- 8
- 启用
alb.ingress.kubernetes.io/wafv2-acl-arn注解。
运行以下命令,创建一个
aws-load-balancer-controller资源:$ oc create -f sample-aws-lb.yaml在 AWS Load Balancer Controller 运行后,创建一个
部署资源 :apiVersion: apps/v1 kind: Deployment1 metadata: name: <echoserver>2 namespace: echoserver spec: selector: matchLabels: app: echoserver replicas: 33 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创建一个
服务资源 :apiVersion: v1 kind: Service1 metadata: name: <echoserver>2 namespace: echoserver spec: ports: - port: 80 targetPort: 8080 protocol: TCP type: NodePort selector: app: echoserver部署 ALB 支持的
Ingress资源:apiVersion: networking.k8s.io/v1 kind: Ingress1 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
验证
运行以下命令,验证
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