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

Container Service for Kubernetes:Alibaba Cloud DNS PrivateZoneに基づくサービス検出の有効化

最終更新日:Nov 17, 2024

1つ以上の仮想プライベートクラウド (VPC) のプライベートドメイン名をIPアドレスにマッピングし、他のネットワークからのプライベートドメイン名へのアクセスをブロックする場合は、Alibaba Cloud DNS PrivateZoneに基づくサービス検出機能を使用できます。 ACK Serverlessは、VPCのプライベートドメイン名の解決と管理を可能にするサービス検出機能を提供します。 サービス検出機能は、イントラネットサービス、ヘッドレスサービス、およびClusterIPサービスをサポートします。

前提条件

  • Alibaba Cloud DNS PrivateZoneは、Alibaba Cloud DNSコンソールで有効化されています。

    PrivateZoneが利用可能なリージョンを選択します。 PrivateZoneはUAE (ドバイ) リージョンではサポートされていません。

  • ACKサーバーレスクラスターが作成され、PrivateZoneコンポーネントが有効になります。

    • 方法1: 新しいACKサーバーレスクラスターのコンポーネントを有効にするには、クラスターを作成するときに [サービス検出] パラメーターとして [PrivateZone] を選択します。

      image.png

    • 方法2: 既存のACKサーバーレスクラスターのコンポーネントを有効にするには、eci-profile ConfigMapのenablePrivateZoneパラメーターをtrueに設定します。

  • kubectlクライアントがクラスターに接続されています

課金

Alibaba Cloud DNS PrivateZoneの課金ルールの詳細については、「料金」をご参照ください。

手順

  1. 配置を配置し、サービスを作成します。

    次のコードブロックはサンプルテンプレートです。 次のYAMLコンテンツをYAMLファイルにコピーし、kubectl create -f nginx-service.yamlコマンドを実行してサービスを作成します。

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-headless-service
    spec:
      ports:
      - port: 80
        protocol: TCP
      selector:
        app: nginx
      clusterIP: None
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-clusterip-service
    spec:
      ports:
      - port: 80
        protocol: TCP
      selector:
        app: nginx
      type: ClusterIP
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-intranet-service
      annotations:
        service.beta.kubernetes.io/alicloud-loadbalancer-address-type: intranet
    spec:
      ports:
      - port: 80
        protocol: TCP
      selector:
        app: nginx
      type: LoadBalancer
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image:  nginx:alpine
            ports:
            - containerPort: 80
  2. 次のコマンドを実行して、デプロイメントのステータスを照会します。

    kubectl get svc,pod,deployment
  3. Alibaba Cloud DNS コンソールにログインします。

  4. 左側のナビゲーションウィンドウで、[プライベートDNS (PrivateZone)] をクリックします。 ページの右上にある [設定モード] をクリックし、ページ中央にある [権限モジュールの組み込み] タブをクリックします。 次に、[ユーザー定義ゾーン] をクリックします。

  5. [ユーザー定義ゾーン] タブで、管理するドメイン名の [操作] 列で [リソースレコードの設定] をクリックします。

    説明

    PrivateZoneレコードは、$svc.$ns形式を使用してドメイン名をIPアドレスに解決します。 PrivateZoneレコードを作成するときは、次のルールに注意してください。

    • LoadBalancerサービスは、1つのPrivateZoneレコードのみに対応します。 レコードは、Server Load Balancer (SLB) インスタンスのIPアドレスにサービスをマッピングします。

    • ClusterIPサービスは、1つのPrivateZoneレコードのみに対応します。 レコードは、サービスをクラスターのIPアドレスにマッピングします。

    • ヘッドレスサービスは、複数のPrivateZoneレコードに対応する。 レコードは、サービスをバックエンドポッドのIPアドレスにマッピングします。

    VPC内のサービスには、サービスのプライベートドメイン名を使用してアクセスできます。

    • $svc.$ns.svc.cluster.local.$clusterIdを使用して、現在のクラスターで検出されたサービスにアクセスできます。 Alibaba Cloud DNS PrivateZoneを使用してこれらのサービスを検出した後、長いドメイン名を使用して他のクラスターのサービスにアクセスすることもできます。

    • $svcを使用して現在の名前空間のサービスにアクセスし、$svc.$nsを使用して他の名前空間のサービスにアクセスできます。

    詳しくは、『serverless-k8s-examples』をご参照ください。

関連ドキュメント

Alibaba Cloud DNS PrivateZoneに加えて、CoreDNSを使用してACKサーバーレスクラスターでDNS解決サービスを提供することもできます。 詳細については、「ACKサーバーレスクラスターでのDNS解決の仕組み」をご参照ください。