21.5. 创建 AWS Load Balancer Controller 实例
安装 AWS Load Balancer Operator 后,您可以创建 AWS Load Balancer Controller。
21.5.1. 创建 AWS Load Balancer Controller
您只能在集群中安装 AWSLoadBalancerController
对象的单个实例。您可以使用 CLI 创建 AWS Load Balancer Controller。AWS Load Balancer Operator 只协调名为 resource 的集群
。
先决条件
-
您已创建了
echoserver
命名空间。 -
您可以访问 OpenShift CLI(
oc
)。
流程
创建定义
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
- 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
注解。
运行以下命令来创建
AWSLoadBalancerController
对象:$ oc create -f sample-aws-lb.yaml
创建定义
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
创建定义
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
创建定义
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
验证
运行以下命令,将
Ingress
资源的状态保存到HOST
变量中:$ HOST=$(oc get ingress -n echoserver echoserver --template='{{(index .status.loadBalancer.ingress 0).hostname}}')
运行以下命令,验证
Ingress
资源的状态:$ curl $HOST