IPAMコントローラーおよびイングレスコントローラーとのBIND DNS統合

最終公開日 : Oct 02, 2026
BIND 9は、DNSプロトコルの完全な実装です。BIND 9は、権威ネームサーバー、リゾルバー、およびサポートされているホストではスタブリゾルバーとして構成できます。詳細については、Bind 9を参照してください。
NetScaler Ingress Controllerは、ipam-rangeアノテーションを使用して、IngressおよびLoadBalancerタイプのサービスにIPアドレスを割り当てることをサポートしています。IPAMコントローラーは、NetScaler Ingress Controllerとの内部通信にVIP CustomResourceDefinition (CRD)を使用します。VIP CRDは、IPAMコントローラーのHelmインストールの一部として自動的にインストールされ、現在、VIPに関連付けられたhostnameフィールドをサポートしています。

前提条件

  1. IPAMをtrueとして有効にし、サービスクラスとイングレスクラスを設定したhelm値を使用してイングレスコントローラーをデプロイします。次の例では、helmチャートを使用して、NetScaler Ingress Controllerを目的の構成でデプロイしています。
    helm install nsic netscaler/netscaler-ingress-controller --set nsIP=       <NSIP>,license.accept=yes,adcCredentialSecret=nslogin,ingressClass[0]=cic-vpx,serviceClass[0]=cic-vpx,ipam=true,entityPrefix=demo
  2. ドキュメントTSIGに従って、TSIG (Transaction SIGnatures) を設定し、binddnsでアクセス制御を提供します。TSIG KEYとTSIG Secretは後で使用するために控えておいてください。

BIND DNSを使用したIPAMコントローラーのデプロイ

BIND DNSを有効にするには、以下の構成でIPAMコントローラーをデプロイします。
  1. KubernetesシークレットとしてBIND DNS TSIG KEYとTSIG SECRETを作成します。
    kubectl create secret generic binddns-tsig-secret --from-literal=tsigKey=<TSIG Key Name> --from-literal=tsigSecret=<TSIG Secret> -n <namespace>
  2. 次のコマンドでIPAMコントローラーをインストールします。
    helm install my-release netscaler/netscaler-ipam-controller \
      --set vipRange=<IP_RANGE> \
      --set dns.enabled=true \
      --set dns.type=binddns \
      --set dns.binddns.server=<BIND_SERVER_IP> \
      --set dns.binddns.zone=example.com \
      --set dns.binddns.tsigKeySecret=binddns-tsig-secret

ユースケース

現在、ホスト名がサポートされる方法は2つあります。
  • イングレス
  • サービスタイプ LoadBalancer

イングレス

イングレスの場合、目的のイングレスクラスを指定して、次のアノテーションでIPAM範囲を提供する必要があります。
ingress.citrix.com/ipam-range: prod
次の例で詳細を示します。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    ingress.citrix.com/ipam-range: prod
  name: web-ingress
spec:
  ingressClassName: cic-vpx
  defaultBackend:
    service:
      name: frontend
      port:
        number: 80
  rules:
    - host: web-frontend.example.com
      http:
        paths:
          - backend:
              service:
                name: frontend
                port:
                  number: 80
            path: /
            pathType: ImplementationSpecific
    - host: web-backend.example.com
      http:
        paths:
          - backend:
              service:
                name: backend
                port:
                  number: 80
            path: /
            pathType: ImplementationSpecific
イングレスが作成されると、各ルールに対してspec.rules[].hostフィールドで指定されたホスト名でそれぞれのVIPオブジェクトが作成されます。
apiVersion: citrix.com/v1
kind: vip
metadata:
  name: ingress-web-ingress
  namespace: default
spec:
  description: VIP for the web-ingress Service
  hostname:
  - web-frontend.example.com
  - web-backend.example.com
  ipaddress:
  kind: ingress
  name: web-ingress
  range-name: prod
IPAMコントローラーはこのVIPを読み取り、利用可能な場合はIP範囲からIPを割り当てます。IP割り当てが完了すると、IPAMはBIND DNSを呼び出し、ホスト名のリストと、BIND DNSでホスト名にAレコードとして割り当てられるIPアドレスを渡します。

サービス

LoadBalancerタイプのサービスの場合、次のアノテーションでIPAM範囲を提供する必要があります。
service.citrix.com/ipam-range: 'prod'
次のアノテーションのホスト名:
service.citrix.com/external-hostname: 'svc.lb.example.com'
サービスYAML内のサービス クラス。
apiVersion: v1
kind: Service
metadata:
  name: apache
  annotations:
    service.citrix.com/ipam-range: 'prod'
    service.citrix.com/external-hostname: 'svc.lb.example.com'
    service.citrix.com/class: 'cic-vpx'
  labels:
    name: apache
spec:
  externalTrafficPolicy: Local
  type: LoadBalancer
  selector:
    name: apache
  ports:
  - name: http
    port: 80
    targetPort: http
これにより、external-hostnameアノテーションで指定されたホスト名を持つVIPオブジェクトが作成されます。
apiVersion: citrix.com/v1
kind: vip
metadata:
  name: service-apache
  namespace: default
spec:
  description: VIP for the apache Service
  hostname:
  - svc.lb.example.com
  ipaddress:
  kind: service
  name: apache
  range-name: prod
IPAMコントローラーはこのVIPを読み取り、設定されたIP範囲から利用可能なIPアドレスを割り当てます。IPアドレスが割り当てられた後、IPAMコントローラーは、各ホスト名を割り当てられたIPアドレスにマッピングするAレコードをBIND DNSに作成します。