このドキュメントでは、Kubernetes クラスターの仮想ノードに、Ingress アプリケーションをデプロイする方法について説明します。 仮想ノードを使用すると、Kubernetes クラスターは、クラスター用に新しいノードを作成する必要がなく、アプリケーションのコンピューティング機能を強化できます。

前提条件

仮想ノードが、対象となる Kubernetes クラスターにデプロイされていること。 詳細は、「仮想ノードのデプロイ」をご参照ください。

virtual-node-affinity-injection: enabled タグは、対象となる名前空間に追加されます。 詳細については、「名前空間タグを設定してポッドを作成する」をご参照ください。

手順

  1. Container Service コンソール にログインします。
  2. [コンテナーサービス - Kubernetes] の左側のナビゲーションウィンドウで、[アプリケーション] > [デプロイメント] をクリックします。
  3. 右上隅で、 [テンプレートによる作成] をクリックします。
  4. 対象となるクラスターおよび名前空間を選択し、サンプルテンプレートを選択するか、またはテンプレートをカスタマイズします。その後、[デプロイ] をクリックします。
    次のテンプレートを使用して YAML テンプレートをカスタマイズし、Ingress アプリケーションを作成できます。
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: coffee
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: coffee
      template:
        metadata:
          labels:
            app: coffee
        spec:
          containers:
          - name: coffee
            image: nginxdemos/hello:plain-text
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: coffee-svc
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: coffee
      clusterIP: None
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: tea
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: tea
      template:
        metadata:
          labels:
            app: tea
        spec:
          containers:
          - name: tea
            image: nginxdemos/hello:plain-text
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: tea-svc
      labels:
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: tea
      clusterIP: None
    ---
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress
    spec:
      rules:
      - host: foo.example.com
        http:
          paths:
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          - path: /coffee
            backend:
              serviceName: coffee-svc
              servicePort: 80

結果の検証

  • coffee および tea デプロイが作成されたことを確認するには、次の手順に従います。
    1. [コンテナーサービス - Kubernetes] の左側のナビゲーションウィンドウで、[アプリケーション] > [デプロイメント] を選択します。
    2. 対象となるクラスターおよび名前空間を選択します。
  • Ingress アプリケーションのすべてのポッドが virtual-kubelet ノードで実行されていることを確認するには、次の手順に従います。
    1. [コンテナーサービス - Kubernetes] の左側のナビゲーションウィンドウで、[アプリケーション] > [ポッド] を選択します。
    2. 対象となるクラスターおよび名前空間を選択します。
  • 対象となる Ingress が作成されたことを確認するには、次の手順に従います。
    1. [コンテナーサービス - Kubernetes] の左側のナビゲーションウィンドウで、[ディスカバリとロードバランシング] > [Ingress] を選択します。
    2. 対象となるクラスターおよび名前空間を選択します。
  • 作成された Ingress アプリケーションにアクセスできることを確認するには、次のコマンドを実行します。
    kubectl -n vk get ing
    curl -H "Host:cafe.example.com" <EXTERNAL_IP>/tea
    curl -H "Host:cafe.example.com" <EXTERNAL_IP>/coffee