Citrix ADC ingress controller

Kubernetesシークレットを使用してCitrix ADC資格情報を保存する方法

ほとんどの組織では、ティア1 Citrix ADC IngressデバイスとKubernetesクラスタは別々のチームによって管理されています。Citrix ingress controller では、Citrix ADC を構成するために、Citrix ADC ユーザー名とパスワードなどのCitrix ADC 資格情報が必要です。通常、Citrix ADC 資格情報は、Citrix イングレスコントローラーポッドの仕様で環境変数として指定されます。ただし、もう1つの安全なオプションは、Kubernetesシークレットを使用してCitrix ADC資格情報を保存することです。

このトピックでは、Kubernetesシークレットを使用してADC資格情報を保存する方法と、Citrix ingress controller erのシークレットデータとして保存されている資格情報を提供するさまざまな方法について説明します。

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

Kubernetes シークレットを作成するには、次の手順を実行します。

  1. 以下のdataセクションで、Citrix ADC ユーザー名とパスワードを使用して 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 シークレットを作成したら、次のいずれかのオプションを使用して、Citrix ingress controller Pod 仕様のシークレットデータを使用できます。

Citrix ingress controller Pod 仕様でシークレットデータを環境変数として使用する

Citrix ingress controller erデプロイメント仕様の環境変数の値として、Kubernetesシークレットのシークレットデータを使用できます。

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

以下は、シークレットオブジェクトから取得した環境変数の値を使用したCitrix 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
<!--NeedCopy-->

シークレットボリュームマウントを使用してCitrix ingress controller に資格情報を渡す

または、シークレットオブジェクトをCitrix ADC資格情報のソースとして使用するボリュームマウントを使用することもできます。Citrix 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
<!--NeedCopy-->

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

Hashicorp Vaultサーバーに保存されているCitrix ADC資格情報をCitrix ingress controller に使用し、サイドカーコンテナを介して資格情報をプッシュすることもできます。

詳しくは、「 Vaultサーバーに保存されているCitrix ADC 資格情報を使用する」を参照してください。

Kubernetesシークレットを使用してCitrix ADC資格情報を保存する方法