2.4. 安装 AWS Load Balancer Operator
AWS Load Balancer Operator 部署和管理 AWS Load Balancer Controller。您可以使用 OpenShift Container Platform Web 控制台或 CLI 安装来自 OperatorHub 的 AWS Load Balancer Operator。
2.4.1. 使用 Web 控制台安装 AWS Load Balancer Operator 复制链接链接已复制到粘贴板!
您可以使用 Web 控制台安装 AWS Load Balancer Operator。
先决条件
-
已作为具有
cluster-admin权限的用户身份登录 OpenShift Container Platform Web 控制台。 - 集群被配置为使用 AWS 作为平台类型和云供应商。
- 如果您使用安全令牌服务(STS)或用户置备的基础架构,请按照相关的准备步骤操作。例如,如果您使用 AWS 安全令牌服务,请参阅使用 AWS 安全令牌服务(STS) "在集群中准备 AWS Load Balancer Operator"。
流程
-
在 OpenShift Container Platform Web 控制台中进入 Operators
OperatorHub。 - 选择 AWS Load Balancer Operator。您可以使用 Filter by keyword 文本框,或者使用过滤器列表从 Operator 列表搜索 AWS Load Balancer Operator。
-
选择
aws-load-balancer-operator命名空间。 在 Install Operator 页面中,选择以下选项:
- 更新频道为 stable-v1。
- 安装模式 为 All namespaces on the cluster (default)。
-
Installed Namespace 为
aws-load-balancer-operator。如果aws-load-balancer-operator命名空间不存在,它会在 Operator 安装过程中创建。 - 选择 Update approval 为 Automatic 或 Manual。默认情况下,Update approval 设置为 Automatic。如果选择自动更新,Operator Lifecycle Manager(OLM)将自动升级 Operator 的运行实例,而无需任何干预。如果选择手动更新,OLM 将创建一个更新请求。作为集群管理员,您必须手动批准该更新请求,以便将 Operator 更新至新版本。
- 点 Install。
验证
- 在 Installed Operators 仪表板中验证 AWS Load Balancer Operator 的 Status 显示为 Succeeded。
2.4.2. 使用 CLI 安装 AWS Load Balancer Operator 复制链接链接已复制到粘贴板!
您可以使用 CLI 安装 AWS Load Balancer Operator。
先决条件
-
以具有
cluster-admin权限的用户身份登录 OpenShift Container Platform Web 控制台。 - 集群被配置为使用 AWS 作为平台类型和云供应商。
-
已登陆到 OpenShift CLI (
oc)。
流程
创建一个
Namespace对象:创建定义
Namespace对象的 YAML 文件:namespace.yaml文件示例apiVersion: v1 kind: Namespace metadata: name: aws-load-balancer-operator运行以下命令来创建
Namespace对象:$ oc apply -f namespace.yaml
创建一个
OperatorGroup对象:创建定义
OperatorGroup对象的 YAML 文件:operatorgroup.yaml文件示例apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: aws-lb-operatorgroup namespace: aws-load-balancer-operator spec: upgradeStrategy: Default运行以下命令来创建
OperatorGroup对象:$ oc apply -f operatorgroup.yaml
创建
Subscription对象:创建定义
Subscription对象的 YAML 文件:subscription.yaml文件示例apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: aws-load-balancer-operator namespace: aws-load-balancer-operator spec: channel: stable-v1 installPlanApproval: Automatic name: aws-load-balancer-operator source: redhat-operators sourceNamespace: openshift-marketplace运行以下命令来创建
Subscription对象:$ oc apply -f subscription.yaml
验证
从订阅中获取安装计划的名称:
$ oc -n aws-load-balancer-operator \ get subscription aws-load-balancer-operator \ --template='{{.status.installplan.name}}{{"\n"}}'检查安装计划的状态:
$ oc -n aws-load-balancer-operator \ get ip <install_plan_name> \ --template='{{.status.phase}}{{"\n"}}'输出必须是
Complete。
2.4.3. 创建 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: AWSLoadBalancerController1 metadata: name: cluster2 spec: subnetTagging: Auto3 additionalResourceTags:4 - key: example.org/security-scope value: staging ingressClass: alb5 config: replicas: 26 enabledAddons:7 - AWSWAFv28 - 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: 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 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: Service1 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