Alibaba Cloud Container Service では、信頼性の高い Ingress コントローラーコンポーネントを提供しています。Alibaba Cloud Server Load Balancer と統合し、お使いの Kubernetes クラスターに柔軟で信頼性の高い Ingress サービスを提供しています。

以下の Ingress オーケストレーションの例をご参照ください。 Container Service コンソールで Ingress を作成時、アノテーションを設定する必要があります。 設定によっては依存関係の作成が必要です。 詳しくは、Container Service コンソールでの Ingress の作成Ingress のサポートおよび Kubernetes Ingressをご参照ください。 Ingress は、設定マップの設定もサポートしています。 詳細は、『https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/』をご参照ください。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  Annotations:
    nginx.ingress.kubernetes.io/service-match: 'new-nginx: header("foo", /^bar$/)' #Grayscale publish rule, this example is request header
    Nginx. ingress. kubernetes. IO/service-weight: 'New-nginx: 50, old-nginx: 50' # FTraffic weight annotation
  creationTimestamp: null
  generation: 1
  name: nginx-ingress
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/nginx-ingress
spec:
  rules: ## Ingress ルール
  - host: foo.bar.com
    http:
      paths:
      - backend:
          serviceName: new-nginx
          servicePort: 80
        path: /
      - backend:
          serviceName: old-nginx
          servicePort: 80
        path: /
tls: ## TLS を有効化してセキュリティ保護された Ingress サービスを設定します。
  - hosts:
    - *.xxxxxx.cn-hangzhou.alicontainer.com
    - foo.bar.com
    secretName: nginx-ingress-secret ## 使用するシークレット名です。
status:
  loadBalancer: {}

アノテーション

Ingress アノテーションを設定できます。使用する Ingress コントローラーの指定、ルーティング重みルールや、グレースケース公開、および書き換えルールなどのルーティングルールを設定できます。 詳細は、『https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/』をご参照ください。

たとえば、典型的な書き換えアノテーション nginx.ingress.kubernetes.io/rewrite-target: / は、パス /pathをバックエンドサービスにより認識されるパス / にリダイレクトします。

ルール

ルールは、クラスターにインバウンドアクセス権限を付与するルールを示し、通常、ドメイン名 (仮想ホスト名)、URL アクセスパス、サービス名、およびポートなどを含む HTTP ルールです。

HTTP ルールごとに次の設定が必要です。

  • ホスト: Alibaba Cloud Kubernetes クラスターのテストドメイン名、または foo.bar.com などの仮想ホスト名を入力します。
  • パス: サービスがアクセスする URL パスを指定します。 それぞれのパスはバックエンドサービスに関連付けられます。 Alibaba Cloud Server Load Balancer によりトラフィックがバックエンドへ転送される前に、すべてのインバウンドリクエストがドメイン名およびパスと一致する必要があります。
  • バックエンド設定: service:port および トラフィックの重みを組み合わたサービス設定です。 Ingress トラフィックは、トラフィックの重みを基に、一致したバックエンドサービスへ転送されます。
    • 名前: Ingress により転送されるバックエンドサービス名です。
    • ポート: サービスにより開放されるポートです。
    • 重み: サービスグループ内のそれぞれのサービスの重みの割合です。
      1. サービスの重みは関連する値により算出されます。 たとえば、2 つのサービスの重みがどちらも 50 に設定されている場合、どちらのサービスの重みの割合も 50% になります。
      2. サービスグループ (同一の Ingress yaml にある同一のホストおよびパスを持ったサービス) はデフォルトの重みは 100 であり、 重みは明示的に設定されていません。

グレースケール公開

Container Service により、グレースケール公開および AB テストシナリオに対する異なるトラフィックセグメンテーションメソッドがサポートされます。
現在、Alibaba Cloud Container Service Kubernetes イングレスコントローラーは、トラフィックセグメンテーション機能のサポートのため 0.12.0-5 およびそれ以上が必要です。
  1. リクエストヘッダーをベースにしたトラフィックセグメンテーション
  2. Cookie をベースにしたトラフィックセグメンテーション
  3. クエリ (リクエスト) パラメーターをベースにしたトラフィックセグメンテーション

グレースケールルールの設定後、グレースケール公開ルールと一致するリクエストを設定されたサービスへのルーティングすることが可能です。 100% 未満の重み割合がサービスに設定された場合、グレースケール公開ルールに一致したリクエストが重み割合をベースにした対応するサービスにルーティングされ続けます。

TLS

TLS 秘密鍵および証明書を含むシークレットを指定することにより、Ingress を暗号化できます。これにより、セキュリティ保護された Ingress のアクセスが実装されます。 TLS シークレットには、"tls.crt" という名称の証明書および "tls.key" という名称が設定された秘密鍵が含まれている必要があります。 TLS の原則についての詳細は、『TLS』をご参照ください。 シークレットの作成法については、安全なルーティングサービスの設定をご参照ください。

ラベル

Ingress に対しタグを追加し、Ingress の特性を示すことができます。