Application Load Balancer (ALB) Ingressは、HTTP、HTTPS、およびQUICをサポートしており、大規模な高弾力性とレイヤ7トラフィック管理のためのクラウドネイティブアプリケーションの要件を満たしています。 ALB IngressはNGINX Ingressとも互換性があります。 さらに、ALB Ingressは複雑なルートと自動TLS証明書管理をサポートしているため、トラフィックを柔軟に管理できます。 異なるURLを介してクラスター内の異なるサービスにアクセスするようにIngressルールを設定できます。
前提条件
ACKサーバーレスクラスターが作成され、クラスターはKubernetes 1.18以降を実行します。 詳細については、「ACK Serverlessクイックスタート」をご参照ください。
ACKクラスターがデプロイされている仮想プライベートクラウド (VPC) の異なるゾーンに存在する2つのvSwitchが作成されます。 詳細については、「vSwitchの作成と管理」をご参照ください。
ALB Ingressコントローラーがクラスターにインストールされています。 詳細については、「ALB Ingressコントローラーの管理」をご参照ください。
kubectlクライアントはACKサーバーレスクラスターに接続されています。 詳細については、「kubectlを使用したACKクラスターへの接続」をご参照ください。
使用上の注意
Flannelネットワークプラグインを使用する場合、ALB IngressゲートウェイのバックエンドサービスはNodePortまたはLoadBalancerタイプである必要があります。
AlbConfigオブジェクト、名前空間、Ingress、およびServicesの名前は、aliyunで始めることはできません。
以前のNGINX Ingressコントローラーのバージョンでは、Ingressリソースの
spec : ingressClassName
フィールドを認識できません。 以前のバージョンのNGINX Ingressコントローラーがインストールされ、ACKクラスターでNGINX IngressとALB Ingressの両方が使用されている場合、ALB IngressはNGINX Ingressコントローラーによって調整される可能性があります。 この問題を回避するには、できるだけ早くNGINX Ingressコントローラーを更新するか、アノテーションを使用してALB IngressのIngressClassesを指定します。 詳細については、「NGINX Ingressコントローラーの更新」または「高度なALB Ingress設定」をご参照ください。
ステップ1: AlbConfigオブジェクトの作成
alb-test.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。 ファイルは、AlbConfigオブジェクトを作成するために使用されます。
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb-demo spec: config: name: alb-test addressType: Internet zoneMappings: - vSwitchId: vsw-uf6ccg2a9g71hx8go**** - vSwitchId: vsw-uf6nun9tql5t8nh15**** listeners: - port: 80 protocol: HTTP
パラメーター
説明
spec.config.name
ALBインスタンスの名前。 このパラメーターはオプションです。
spec.config.addressType
ALBインスタンスがサービスの提供に使用するIPアドレスのタイプ。 This parameter is required. 有効な値:
インターネット: ALBインスタンスはパブリックIPアドレスを使用します。 Ingressのドメイン名は、ALBインスタンスのパブリックIPアドレスに解決されています。 したがって、ALBインスタンスはインターネット経由でアクセスできます。 デフォルト値です。
イントラネット: ALBインスタンスはプライベートIPアドレスを使用します。 Ingressのドメイン名はプライベートIPアドレスに解決されます。 したがって、ALBインスタンスには、ALBインスタンスがデプロイされているVPC内でのみアクセスできます。
spec.config.zoneMappings
ALB Ingressによって使用されるvSwitchのID。 少なくとも2つのvSwitch IDを指定する必要があります。 vSwitchは、異なるゾーンおよびクラスターが存在するVPCにデプロイする必要があります。 vSwitchのゾーンは、ALB Ingressでサポートされている必要があります。 This parameter is required. ALB Ingressでサポートされているリージョンとゾーンの詳細については、「ALBが利用可能なリージョンとゾーン」をご参照ください。
次のコマンドを実行して、AlbConfigを作成します。
kubectl apply -f alb-test.yaml
期待される出力:
albconfig.alibabacloud.com/alb-demo created
alb.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。
Kubernetes 1.19以降を実行するクラスター
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demo
V1.19より前のバージョンのKubernetesを実行するクラスター
apiVersion: networking.k8s.io/v1beta1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demo
次のコマンドを実行してIngressClassを作成します。
kubectl apply -f alb.yaml
期待される出力:
ingressclass.networking.k8s.io/alb created
ステップ2: サービスのデプロイ
cafe-service.yamlファイルを作成し、次の内容をファイルにコピーします。 このファイルは、
coffee
とtea
という名前の2つの展開と、coffee
とtea
という名前の2つのサービスを展開するために使用されます。次のコマンドを実行して、デプロイメントとサービスをデプロイします。
kubectl apply -f cafe-service.yaml
期待される出力:
deployment "coffee" created service "coffee-svc" created deployment "tea" created service "tea-svc" created
デプロイメントとサービスのステータスを照会します。
次のコマンドを実行して、アプリケーションのデプロイの進行状況を照会します。
kubectl get deploy
期待される出力:
NAME READY UP-TO-DATE AVAILABLE AGE coffee 1/2 2 1 2m26s tea 1/1 1 1 2m26s
次のコマンドを実行して、サービスのステータスを照会します。
kubectl get svc
期待される出力:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE coffee-svc NodePort 172.16.XX.XX <none> 80:32056/TCP 9m38s tea-svc NodePort 172.16.XX.XX <none> 80:31696/TCP 9m38s
ステップ3: ALB Ingressの設定
cafe-ingress.yamlという名前のファイルを作成し、次のコンテンツをファイルにコピーします。
Kubernetes 1.19以降を実行するクラスター
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: # Configure a context path. - path: /tea pathType: ImplementationSpecific backend: service: name: tea-svc port: number: 80 # Configure a context path. - path: /coffee pathType: ImplementationSpecific backend: service: name: coffee-svc port: number: 80
V1.19より前のバージョンのKubernetesを実行するクラスター
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: # Configure a context path. - path: /tea backend: serviceName: tea-svc servicePort: 80 # Configure a context path. - path: /coffee backend: serviceName: coffee-svc servicePort: 80
次のコマンドを実行して、外部からアクセス可能なドメイン名と
coffee
およびtea
Servicesのパス
を個別に設定します。kubectl apply -f cafe-ingress.yaml
期待される出力:
ingress.networking.k8s.io/cafe-ingress created
次のコマンドを実行して、ALBインスタンスの公開に使用されるIngressのドメイン名を照会します。
kubectl get ing
期待される出力:
NAME CLASS HOSTS ADDRESS PORTS AGE cafe-ingress alb demo.domain.ingress.top alb-m551oo2zn63yov****.cn-hangzhou.alb.aliyuncs.com 80 50s
ステップ4: サービスへのアクセス
ALBインスタンスのアドレスを取得したら、CLIを使用して
coffee
Serviceにアクセスします。curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/coffee
ALBインスタンスのアドレスを取得したら、CLIを使用して
tea
サービスにアクセスします。curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/tea
関連ドキュメント
さまざまなドメイン名またはURL宛てのリクエストのさまざまなバックエンドサーバーグループへの転送、ヘルスチェック、HTTPからHTTPSへのリクエストのリダイレクト、カナリアリリース、カスタムリスナーポートなどの高度なALB Ingress設定の詳細については、「高度なALB Ingress設定」をご参照ください。
カスタムALB Ingressルーティングルール、転送条件、およびアクションを設定する方法の詳細については、「ALB Ingressのルーティングルールのカスタマイズ」をご参照ください。
HTTPSリクエストを転送するようにHTTPSリスナーを設定する方法の詳細については、「暗号化通信用のHTTPS証明書の設定」をご参照ください。
ALB Ingressの問題のトラブルシューティング方法の詳細については、「ALB Ingress FAQ」をご参照ください。