23.5. 创建 AWS Load Balancer Controller 实例
安装 Operator 后,您可以创建 AWS Load Balancer Controller 实例。
23.5.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)。
流程
创建一个
aws-load-balancer-controller资源 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: cloud 5 config: replicas: 2 6 enabledAddons: 7 - AWSWAFv2 8
- 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: 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
创建一个
服务资源 :apiVersion: v1 kind: Service 1 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: 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
验证
运行以下命令,验证
Ingress资源的状态,以显示置备的 AWS Load Balancer(ALB)的主机:$ HOST=$(oc get ingress -n echoserver echoserver --template='{{(index .status.loadBalancer.ingress 0).hostname}}')运行以下命令,验证置备的 AWS Load Balancer(ALB)主机的状态:
$ curl $HOST