23.5. AWS Load Balancer コントローラーのインスタンスの作成
Operator をインストールした後、 AWS Load Balancer コントローラーのインスタンスを作成できます。
23.5.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/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 コントローラーインスタンスの名前を定義します。このインスタンス名は、関連するすべてのリソースの接尾辞として追加されます。
- 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.yaml
AWS Load Balancer コントローラーが起動したら、
deploymentリソースを作成します。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リソースを作成します。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