NetScalerの資格情報を保存するためにKubernetesシークレットを使用する方法

最終公開日 : Oct 02, 2026
ほとんどの組織では、Tier 1 NetScaler IngressデバイスとKubernetesクラスターは別々のチームによって管理されています。NetScaler Ingress Controllerは、NetScalerを構成するためにNetScalerのユーザー名とパスワードなどのNetScaler資格情報を必要とします。通常、NetScaler資格情報はNetScaler Ingress ControllerのPod仕様で環境変数として指定されます。しかし、別の安全なオプションとして、Kubernetesシークレットを使用してNetScaler資格情報を保存する方法があります。
このトピックでは、Kubernetesシークレットを使用してADC資格情報を保存する方法と、NetScaler Ingress Controllerのシークレットデータとして保存された資格情報を提供するさまざまな方法について説明します。

Kubernetesシークレットを作成する

Kubernetesシークレットを作成するには、以下の手順を実行します。
  1. dataセクションにNetScalerのユーザー名とパスワードを含むKubernetesシークレットYAMLを定義するadc-credential-secret.yamlファイルを作成します。
    apiVersion: v1
    kind: Secret
    metadata:
      name: adc-credential
    data:
      username: <ADC user name>
      password: <ADC password>
  2. シークレットを作成するために、adc-credential-secret.yamlファイルを適用します。
    kubectl apply -f adc-credential-secret.yaml
    または、次のようにkubectlコマンドの--from-literalオプションを使用してKubernetesシークレットを作成することもできます。
    kubectl create secret generic adc-credentials --from-literal=username=<username> --from-literal=password=<password>
Kubernetesシークレットを作成したら、NetScaler Ingress ControllerのPod仕様でシークレットデータを使用するために、以下のいずれかのオプションを使用できます。

NetScaler Ingress ControllerのPod仕様でシークレットデータを環境変数として使用する

Kubernetesシークレットからのシークレットデータを、NetScaler Ingress Controllerのデプロイメント仕様の環境変数の値として使用できます。
YAMLファイルのスニペットを以下に示します。
- name: "NS_USER"
  valueFrom:
    secretKeyRef:
      name: adc-credentials
      key: username
# Set user password for Nitro
- name: "NS_PASSWORD"
  valueFrom:
    secretKeyRef:
      name: adc-credentials
      key: password
以下は、シークレットオブジェクトから取得した環境変数の値を持つNetScaler Ingress Controllerデプロイメントの例です。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cic-k8s-ingress-controller
spec:
  selector:
    matchLabels:
      app: cic-k8s-ingress-controller
  replicas: 1
  template:
    metadata:
      name: cic-k8s-ingress-controller
      labels:
        app: cic-k8s-ingress-controller
      annotations:
    spec:
      serviceAccountName: cic-k8s-role
      containers:
      - name: cic-k8s-ingress-controller
        image: <image location>
        env:
         # Set NetScaler NSIP/SNIP, SNIP in case of HA (mgmt has to be enabled)
         - name: "NS_IP"
           value: "x.x.x.x"
         # Set username for Nitro
         - name: "NS_USER"
           valueFrom:
            secretKeyRef:
             name: adc-credentials
             key: username
         # Set user password for Nitro
         - name: "NS_PASSWORD"
           valueFrom:
            secretKeyRef:
             name: adc-credentials
             key: password
         # Set log level
         - name: "EULA"
           value: "yes"
        imagePullPolicy: Always

NetScaler Ingress Controller に資格情報を渡すためにシークレットボリュームマウントを使用する

あるいは、NetScaler の資格情報のソースとしてシークレットオブジェクトを使用するボリュームマウントも利用できます。NetScaler Ingress Controller は、シークレットがパス /etc/citrix にマウントされていることを想定しており、ファイル username と password で資格情報を探します。
以下の展開例に示すように、シークレットオブジェクトからボリュームを作成し、/etc/citrix で volumeMounts を使用してそのボリュームをマウントできます。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: cic-k8s-ingress-controller
spec:
  selector:
    matchLabels:
      app: cic-k8s-ingress-controller
  replicas: 1
  template:
    metadata:
      name: cic-k8s-ingress-controller
      labels:
        app: cic-k8s-ingress-controller
      annotations:
    spec:
      serviceAccountName: cic-k8s-role
      containers:
      - name: cic-k8s-ingress-controller
        image: <image location>
        env:
         # Set NetScaler NSIP/SNIP, SNIP in case of HA (mgmt has to be enabled)
         - name: "NS_IP"
           value: "x.x.x.x"
         # Set log level
         - name: "EULA"
           value: "yes"
        volumeMounts:
        # name must match the volume name below
          - name: secret-volume
            mountPath: /etc/citrix
        imagePullPolicy: Always
      # The secret data is exposed to Containers in the Pod through a Volume.
      volumes:
      - name: secret-volume
        secret:
          secretName: adc-credentials

Hashicorp Vault サーバーに保存されている NetScaler 資格情報を使用する

NetScaler Ingress Controller のために、Hashicorp Vault サーバーに保存されている NetScaler 資格情報を使用し、サイドカーコンテナを介して資格情報をプッシュすることもできます。
詳細については、「Vault サーバーに保存されている NetScaler 資格情報を使用する」を参照してください。