19.3. AWS Load Balancer コントローラーのインスタンスの作成
Operator をインストールした後、 AWS Load Balancer コントローラーのインスタンスを作成できます。
19.3.1. AWS Load Balancer Operator を使用した AWS Load Balancer コントローラーインスタンスの作成 リンクのコピーリンクがクリップボードにコピーされました!
クラスターにインストールできる aws-load-balancer-controller のインスタンスは 1 つだけです。CLI を使用して AWS Load Balancer コントローラーを作成できます。AWS Load Balancer (ALB) Operator は、cluster という名前のリソースのみを調整します。
前提条件
-
echoservernamespace を作成している。 -
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 コントローラーインスタンスの名前を定義します。このインスタンス名は、関連するすべてのリソースの接尾辞として追加されます。
- 3
- 有効なオプションは
AutoとManualです。値がAutoに設定されている場合、Operator はクラスターに属するサブネットを判別し、それらに適切なタグを付けようと試みます。内部サブネットタグが内部サブネットに存在しない場合、Operator はロールを正しく判別できません。ユーザー提供のインフラストラクチャーにクラスターをインストールした場合は、サブネットに適切なロールタグを手動でタグ付けし、サブネットタグ付けポリシーをManualに設定できます。 - 4
- コントローラーが AWS リソースをプロビジョニングするときに使用するタグを定義します。
- 5
- このフィールドのデフォルト値は
albです。IngressClassリソースが存在しない場合、Operator は同じ名前でプロビジョニングします。 - 6
- コントローラーのレプリカ数を指定します。
- 7
- アノテーションを介して指定される AWS Load Balancer のアドオンを指定します。
- 8
alb.ingress.kubernetes.io/wafv2-acl-arnアノテーションを有効にします。
次のコマンドを実行して、
aws-load-balancer-controllerリソースを作成します。$ oc create -f sample-aws-lb.yamlAWS Load Balancer コントローラーが起動したら、
deploymentリソースを作成します。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: 8080serviceリソースを作成します。apiVersion: v1 kind: Service1 metadata: name: <echoserver>2 namespace: echoserver spec: ports: - port: 80 targetPort: 8080 protocol: TCP type: NodePort selector: app: echoserverALB ベースの
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