このトピックでは、Container Service for Kubernetes (ACK) マネージドクラスター (auto モード) にワークロードをデプロイし、Application Load Balancer (ALB) Ingress を使用してパブリックアクセスを有効にする方法について説明します。デプロイが完了すると、ドメイン名を使用してアプリケーションにアクセスできるようになり、外部トラフィックの効率的な管理とロードバランシングが可能になります。
このトピックでは、以下の操作について説明します。
サンプルアプリケーション用の名前空間を作成します。
NGINX サンプルアプリケーションをデプロイし、Service を作成してアプリケーションをクラスターネットワークに公開します。
ALB Ingress を作成し、ALB インスタンスを使用してアプリケーションへのパブリックアクセスを有効にします。手動で AlbConfig を作成して ALB インスタンスを管理し、IngressClass を作成して AlbConfig に関連付ける必要があります。
デプロイが成功したことを確認し、ブラウザを使用してアプリケーションにアクセスします。リソースが不要になった場合はクリーンアップします。
これらの操作を完了すると、以下の結果が得られます。
2 つのレプリカを持つ NGINX サンプルアプリケーションが実行されます。
ALB Ingress と Service によって、アプリケーション用の安定したパブリックエントリポイントが提供されます。
auto モードでは、ACK はワークロードに基づいてアプリケーションを自動的にスケーリングします。また、ACK はノードのライフサイクルを管理し、運用保守 (O&M) の負担を軽減します。
前提条件
ステップ 1:名前空間の作成
この例では、リソースを分離するために名前空間を作成します。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、対象のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[名前空間とクォータ] をクリックします。
作成する をクリックします。表示されるダイアログボックスで、名前空間にカスタム名 (この Topic では my-nginx-namespace を例として使用) を設定し、プロンプトに従って他のパラメーターを設定して、OK をクリックします。
ステップ 2:NGINX アプリケーションのデプロイと Service の作成
このセクションでは、my-nginx という名前の NGINX サンプル Deployment と、アプリケーションを公開するための my-nginx-svc という名前の Service をデプロイする方法について説明します。
Deployment:レプリカ数は 2 です。イメージは NGINX サンプルアプリケーションです。ポート 80 が公開され、HTTP ネットワークトラフィックを受け入れます。
Service:Service タイプは ClusterIP です。Service のポート 80 は Pod のコンテナーのポート 80 にマッピングされます。Service はラベルセレクターを使用して Pod を照合します。
このセクションでは、サンプルプロシージャを提供します。ワークロードと Service の作成方法の詳細については、「ワークロードの作成」および「Service の管理」をご参照ください。
my-nginx.yaml という名前のファイルを作成し、次の内容を追加します。この構成により、Deployment と Service が名前空間にデプロイされます。
apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx # サンプルアプリケーションの名前。 namespace: my-nginx-namespace # 作成した名前空間の名前に置き換えてください。 labels: app: nginx spec: replicas: 2 # レプリカ数。 selector: matchLabels: app: nginx # このアプリケーションを公開する Service のセレクターの値と同じである必要があります。 template: metadata: labels: app: nginx spec: # nodeSelector: # env: test-team containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 # このポートは Service で公開する必要があります。 --- apiVersion: v1 kind: Service metadata: labels: app: nginx name: my-nginx-svc namespace: my-nginx-namespace # 作成した名前空間の名前に置き換えてください。 spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: ClusterIP # Flannel を使用する場合は、NodePort を使用する必要があります。Deployment と Service をデプロイします。
kubectl apply -f my-nginx.yamlDeployment と Service のステータスを確認します。
Deployment のステータスを確認します。
kubectl get deployment my-nginx -n my-nginx-namespace想定される出力:
NAME READY UP-TO-DATE AVAILABLE AGE my-nginx 2/2 2 2 4m36sService のステータスを確認します。
kubectl get svc my-nginx-svc -n my-nginx-namespace想定される出力:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-nginx-svc ClusterIP 192.XX.XX.164 <none> 80/TCP 42s
ステップ 3:ALB Ingress とその関連リソースの作成
ALB Ingress を使用してクラスターアプリケーションへの外部トラフィックを管理するには、次のリソースを準備する必要があります。
ALB Ingress を作成する前に、その仕組みと要件を理解していることを確認してください。詳細については、「ALB Ingress の管理」をご参照ください。
ALB Ingress コントローラー:Ingress リソースを管理するコンポーネントです。ALB Ingress コントローラーは、クラスターの auto モードを有効にするとデフォルトでインストールされます。
AlbConfig:ALB Ingress コントローラーによって作成されるカスタムリソース定義 (CRD) で、ALB インスタンスの構成を宣言します。各 AlbConfig は 1 つの ALB インスタンスに対応します。ALB インスタンスは、ユーザートラフィックのエントリポイントとして機能し、リクエストをバックエンド Service に転送します。
IngressClass:ALB Ingress を作成するときに、この IngressClass を指定して対応する AlbConfig を参照できます。これにより、特定のアプリケーションルーティング構成とロードバランシングポリシーを実装できます。
AlbConfig の作成
alb.yaml という名前のファイルを作成し、次の内容をファイルに追加します。この内容は AlbConfig を作成するために使用されます。
この AlbConfig は、
addressTypeをInternetに設定します。これは、ALB インスタンスがパブリック IP アドレスを持つことを意味します。DNS ドメイン名はパブリック IP アドレスに解決でき、インターネットからアクセスできます。vSwitchIdを、異なるゾーンにある 2 つの vSwitch の ID に設定します。vSwitch は、クラスターと同じ Virtual Private Cloud (VPC) 内にあり、かつ ALB がサポートするゾーンにある必要があります。vSwitch ID は、VPC コンソールの vSwitchvSwitch の作成と管理
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb spec: config: name: alb addressType: Internet # ロードバランサーのアドレスタイプ。Internet タイプはパブリックネットワーク経由でアクセスできます。 zoneMappings: - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # ご利用の vSwitch の ID に置き換えてください。 - vSwitchId: vsw-uf6nun9tql5t8nh15**** # ご利用の vSwitch の ID に置き換えてください。 listeners: - port: 80 protocol: HTTPAlbConfig を作成します。
kubectl apply -f alb.yamlAlbConfig リソースを表示できます。
kubectl get AlbConfig alb想定される出力:
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb alb-****** alb-******.<regionID>.alb.aliyuncs.com 60s説明PORT&PROTOCOLとCERTIDフィールドは、HTTPS リスナーを作成して証明書を設定するまで空のままです。
IngressClass の作成
ingress_class.yaml という名前のファイルを作成し、次の内容を追加して IngressClass を作成します。
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb # IngressClass に関連付けられている AlbConfig の名前。IngressClass を作成します。
kubectl apply -f ingress_class.yaml
ALB Ingress の作成
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
Ingress ページで、作成した名前空間を選択します。ingress の作成 をクリックします。ingress の作成 ダイアログボックスで、プロンプトに従って Ingress を設定します。
次の表に、主要なパラメーターを示します。パラメーターと関連操作 (名前解決の設定など) の詳細については、「ALB Ingress の作成」をご参照ください。
パラメーター
説明
ゲートウェイタイプ
[ALB Ingress] を選択します。
名前
my-albingress など、Ingress のカスタム名を入力します。
Ingress クラス
作成した IngressClass を選択して、対応する AlbConfig を参照します。
ルール
名:ターゲットサービスを選択します。これは作成した Service です。
ポート:サービスで公開するポートを選択します。この例ではポート 80 を使用します。
他のパラメーターはデフォルト値のままにします。
Ingress が作成されたら、左側のナビゲーションウィンドウで Ingress を選択して、Ingress がデプロイされているかどうかを確認します。約 1 分待ってから、エンドポイント 列から ALB DNS エンドポイントを見つけてコピーします。
ステップ 4:アプリケーションへのアクセス
ALB DNS エンドポイントをブラウザに貼り付けて、NGINX アプリケーションにアクセスします。

(任意) ステップ 5:リソースのクリーンアップ
このトピックで作成したリソースには、Deployment、Service、AlbConfig、IngressClass、ALB Ingress が含まれます。次のコマンドを実行して、リソースをクリーンアップします。
以下のコマンドのリソース名は一例です。コマンドを実行する際は、実際のリソース名に置き換えてください。
kubectl delete deployment my-nginx -n my-nginx-namespace
kubectl delete Service my-nginx-svc -n my-nginx-namespace
kubectl delete ALBIngress my-albingress -n my-nginx-namespace
kubectl delete AlbConfig alb
kubectl delete IngressClass alb関連ドキュメント
ワークロード作成の詳細なパラメーター説明については、「ワークロードの作成」をご参照ください。構成の推奨事項については、「推奨されるワークロード構成」をご参照ください。
リスナーに HTTPS プロトコルを使用する場合は、SSL/TLS 証明書を設定する必要があります。ALB Ingress がサポートする証明書構成メソッドの詳細については、「暗号化通信のための HTTPS 証明書の設定」をご参照ください。
AlbConfig リソースを構成することで、ALB インスタンスの構成をカスタマイズできます。詳細については、「ALB Ingress 構成ディクショナリ」をご参照ください。