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

Container Service for Kubernetes:ALB Ingressを介した登録済みクラスターのサービスへのアクセス

最終更新日:Jan 07, 2025

Application Load Balancer (ALB) Ingressは、HTTP、HTTPS、およびQUICをサポートしており、大規模な高弾力性とレイヤ7トラフィック管理のためのクラウドネイティブアプリケーションの要件を満たしています。 ALB IngressはNGINX Ingressとも互換性があります。 さらに、ALB Ingressは複雑なルートと自動TLS証明書管理をサポートしているため、トラフィックを柔軟に管理できます。 異なるURLを介してクラスター内の異なるサービスにアクセスするようにIngressルールを設定できます。

前提条件

ステップ1: AlbConfigオブジェクトの作成

  1. alb-test.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。 ファイルは、AlbConfigオブジェクトを作成するために使用されます。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    メタデータ:
      名前: alb-demo
    spec:
      config:
        名前: alb-test
        addressType: インターネット
        zoneMappings:
        -vSwitchId: vsw-uf6ccg2a9g71hx8go ****
        -vSwitchId: vsw-uf6nun9tql5t8nh15 ****
      リスナー:
        - port: 80
          プロトコル: 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が利用可能なリージョンとゾーン」をご参照ください。

  2. 次のコマンドを実行して、AlbConfigを作成します。

    kubectl apply -f alb-test.yaml

    期待される出力:

    albconfig.alibabacloud.com/alb-demo作成
  3. alb.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。

    Kubernetes 1.19以降を実行するクラスター

    apiVersion: networking.k8s.io/v1
    種類: IngressClass
    メタデータ:
      名前: alb
    spec:
      コントローラー: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        名前: alb-demo 

    V1.19より前のバージョンのKubernetesを実行するクラスター

    apiVersion: networking.k8s.io/v1beta1
    種類: IngressClass
    メタデータ:
      名前: alb
    spec:
      コントローラー: ingress.k8s.alibabacloud/alb
      パラメータ:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        名前: alb-demo 
  4. 次のコマンドを実行してIngressClassを作成します。

    kubectl apply -f alb.yaml

    期待される出力:

    ingressclass.net working.k8s.io/alb作成

ステップ2: サービスのデプロイ

  1. cafe-service.yamlファイルを作成し、次の内容をファイルにコピーします。 このファイルは、coffeeteaという名前の2つの展開と、coffeeteaという名前の2つのサービスを展開するために使用されます。

    YAMLファイルの内容を表示する

    apiVersion: apps/v1
    kind: 配置
    メタデータ:
      名前: コーヒー
    spec:
      レプリカ:2
      セレクタ:
        matchLabels:
          app: coffee
      template:
        metadata:
          labels:
            app: coffee
        仕様:
          containers:
          - name: coffee
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ポート:
            -containerPort: 80
    ---
    apiVersion: v1
    種類: サービス
    メタデータ:
      名前: coffee-svc
    spec:
      ポート:
      - port: 80
        targetPort: 80
        protocol: TCP
      セレクタ:
        app: coffee
      clusterIP: なし
    ---
    apiVersion: apps/v1
    kind: 配置
    メタデータ:
      名前: お茶
    spec:
      replicas: 1
      セレクタ:
        matchLabels:
          app: tea
      template:
        metadata:
          labels:
            app: tea
        仕様:
          containers:
          - name: tea
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ポート:
            -containerPort: 80
    ---
    apiVersion: v1
    種類: サービス
    メタデータ:
      name: tea-svc
      ラベル:
    spec:
      ポート:
      -ポート: 80
        targetPort: 80
        protocol: TCP
      セレクタ:
        アプリ: お茶
      clusterIP: なし 
  2. 次のコマンドを実行して、デプロイメントとサービスをデプロイします。

    kubectl apply -f cafe-service.yaml

    期待される出力:

    展開「コーヒー」作成
    サービス "coffee-svc" が作成されました
    展開 "tea" が作成されました
    サービス "tea-svc" が作成 
  3. デプロイメントとサービスのステータスを照会します。

    1. 次のコマンドを実行して、アプリケーションのデプロイの進行状況を照会します。

      kubectl get deploy

      期待される出力:

      の名前は日付まで利用可能な年齢を準備しています
      コーヒー1/2 2 1 2m26s
      ティー1/1 1 1 2m2 6s 
    2. 次のコマンドを実行して、サービスのステータスを照会します。

      kubectl get svc

      期待される出力:

      名タイプCLUSTER-IP EXTERNAL-IPポート年齢
      coffee-svc NodePort 172.16.XX.XX <none> 80:32056/TCP 9m38s
      tea-svc NodePort 172.16.XX.XX <none> 80:31696/TCP 9m3 8s 

ステップ3: ALB Ingressの設定

  1. cafe-ingress.yamlという名前のファイルを作成し、次のコンテンツをファイルにコピーします。

    Kubernetes 1.19以降を実行するクラスター

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    メタデータ:
      名前: cafe-ingress
    spec:
      ingressClassName: alb
      ルール:
       -host: demo.domain.ingress.top
         http:
          パス:
          # コンテキストパスを設定します。
          - path: /tea
            pathType: ImplementationSpecific
            backend:
              service:
                name: tea-svc
                port:
                  number: 80
          # コンテキストパスを設定します。
          - path: /coffee
            pathType: ImplementationSpecific
            backend:
              service:
                name: coffee-svc
                port: 
                  番号: 80 

    V1.19より前のバージョンのKubernetesを実行するクラスター

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    メタデータ:
      名前: cafe-ingress
    spec:
      ingressClassName: alb
      rules:
       -host: demo.domain.ingress.top
         http:
          paths:
          # コンテキストパスを設定します。 
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          # コンテキストパスを設定します。 
          - path: /coffee
            backend:
              serviceName: coffee-svc
              servicePort: 80 
  2. 次のコマンドを実行して、外部からアクセス可能なドメイン名とcoffeeおよびtea Servicesのパスを個別に設定します。

    kubectl apply -f cafe-ingress.yaml

    期待される出力:

    ingress.net working.k8s.io/cafe-ingress作成
  3. 次のコマンドを実行して、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ホスト: demo.domain.ingress.top http:// alb-lhwdm5c9h8lrcm **** .cn-hangzhou.alb.aliyuncs.com/coffee
  • ALBインスタンスのアドレスを取得したら、CLIを使用してteaサービスにアクセスします。

    curl -Hホスト: demo.domain.ingress.top http:// alb-lhwdm5c9h8lrcm **** .cn-hangzhou.alb.aliyuncs.com/tea

関連ドキュメント

  • さまざまなドメイン名またはURL宛てのリクエストのさまざまなバックエンドサーバーグループへの転送、ヘルスチェック、HTTPからHTTPSへのリクエストのリダイレクト、カナリアリリース、カスタムリスナーポートなどの高度なALB Ingress設定の詳細については、「高度なALB Ingress設定」をご参照ください。

  • AlbConfigは、Container Service for Kubernetes (ACK) がApplication Load Balancer (ALB) Ingressコントローラーに提供するCustomResourceDefinition (CRD) です。 ALB Ingressコントローラーは、AlbConfigsを使用してALBインスタンスとリスナーを設定します。 詳細については、「AlbConfigsを使用したALBインスタンスの設定」をご参照ください。