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] を選択します。
方法2: 既存のACKサーバーレスクラスターのコンポーネントを有効にするには、
eci-profile
ConfigMapのenablePrivateZone
パラメーターをtrue
に設定します。
課金
Alibaba Cloud DNS PrivateZoneの課金ルールの詳細については、「料金」をご参照ください。
手順
配置を配置し、サービスを作成します。
次のコードブロックはサンプルテンプレートです。 次の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
次のコマンドを実行して、デプロイメントのステータスを照会します。
kubectl get svc,pod,deployment
Alibaba Cloud DNS コンソールにログインします。
左側のナビゲーションウィンドウで、[プライベートDNS (PrivateZone)] をクリックします。 ページの右上にある [設定モード] をクリックし、ページ中央にある [権限モジュールの組み込み] タブをクリックします。 次に、[ユーザー定義ゾーン] をクリックします。
[ユーザー定義ゾーン] タブで、管理するドメイン名の [操作] 列で [リソースレコードの設定] をクリックします。
説明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解決の仕組み」をご参照ください。