すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ACK マネージドクラスター (auto モード) でのワークロードのデプロイとロードバランシングの設定

最終更新日:Dec 28, 2025

このトピックでは、Container Service for Kubernetes (ACK) マネージドクラスター (auto モード) にワークロードをデプロイし、Application Load Balancer (ALB) Ingress を使用してパブリックアクセスを有効にする方法について説明します。デプロイが完了すると、ドメイン名を使用してアプリケーションにアクセスできるようになり、外部トラフィックの効率的な管理とロードバランシングが可能になります。

このトピックでは、以下の操作について説明します。

  1. サンプルアプリケーション用の名前空間を作成します。

  2. NGINX サンプルアプリケーションをデプロイし、Service を作成してアプリケーションをクラスターネットワークに公開します。

  3. ALB Ingress を作成し、ALB インスタンスを使用してアプリケーションへのパブリックアクセスを有効にします。手動で AlbConfig を作成して ALB インスタンスを管理し、IngressClass を作成して AlbConfig に関連付ける必要があります。

  4. デプロイが成功したことを確認し、ブラウザを使用してアプリケーションにアクセスします。リソースが不要になった場合はクリーンアップします。

これらの操作を完了すると、以下の結果が得られます。

  • 2 つのレプリカを持つ NGINX サンプルアプリケーションが実行されます。

  • ALB Ingress と Service によって、アプリケーション用の安定したパブリックエントリポイントが提供されます。

  • auto モードでは、ACK はワークロードに基づいてアプリケーションを自動的にスケーリングします。また、ACK はノードのライフサイクルを管理し、運用保守 (O&M) の負担を軽減します。

前提条件

ステップ 1:名前空間の作成

この例では、リソースを分離するために名前空間を作成します。

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. クラスター ページで、対象のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[名前空間とクォータ] をクリックします。

  3. 作成する をクリックします。表示されるダイアログボックスで、名前空間にカスタム名 (この 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 の管理」をご参照ください。
  1. 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 を使用する必要があります。
  2. Deployment と Service をデプロイします。

    kubectl apply -f my-nginx.yaml
  3. Deployment と Service のステータスを確認します。

    • Deployment のステータスを確認します。

      kubectl get deployment my-nginx -n my-nginx-namespace

      想定される出力:

      NAME       READY   UP-TO-DATE   AVAILABLE   AGE
      my-nginx   2/2     2            2           4m36s
    • Service のステータスを確認します。

      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 の作成

  1. alb.yaml という名前のファイルを作成し、次の内容をファイルに追加します。この内容は AlbConfig を作成するために使用されます。

    • この AlbConfig は、addressTypeInternet に設定します。これは、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: HTTP
  2. AlbConfig を作成します。

    kubectl apply -f alb.yaml
  3. AlbConfig リソースを表示できます。

    kubectl get AlbConfig alb

    想定される出力:

    NAME   ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID   AGE
    alb    alb-******   alb-******.<regionID>.alb.aliyuncs.com                            60s
    説明

    PORT&PROTOCOLCERTID フィールドは、HTTPS リスナーを作成して証明書を設定するまで空のままです。

IngressClass の作成

  1. 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 の名前。
  2. IngressClass を作成します。

    kubectl apply -f ingress_class.yaml

ALB Ingress の作成

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. 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 アプリケーションにアクセスします。

image

(任意) ステップ 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

関連ドキュメント