Verwenden von Kubernetes-Secrets zum Speichern von NetScaler-Anmeldeinformationen

Last published : Oct 02, 2026
In den meisten Organisationen werden Tier-1-NetScaler-Ingress-Geräte und Kubernetes-Cluster von getrennten Teams verwaltet. Der NetScaler Ingress Controller benötigt NetScaler-Anmeldeinformationen wie NetScaler-Benutzernamen und -Passwort, um den NetScaler zu konfigurieren. Normalerweise werden NetScaler-Anmeldeinformationen als Umgebungsvariablen in der NetScaler Ingress Controller Pod-Spezifikation angegeben. Eine weitere sichere Option ist jedoch die Verwendung von Kubernetes-Secrets zum Speichern der NetScaler-Anmeldeinformationen.
Dieses Thema beschreibt, wie Kubernetes-Secrets zum Speichern der ADC-Anmeldeinformationen verwendet werden und welche verschiedenen Möglichkeiten es gibt, die als Secret-Daten gespeicherten Anmeldeinformationen für den NetScaler Ingress Controller bereitzustellen.

Ein Kubernetes-Secret erstellen

Führen Sie die folgenden Schritte aus, um ein Kubernetes-Secret zu erstellen.
  1. Erstellen Sie eine Datei adc-credential-secret.yaml, die ein Kubernetes-Secret-YAML mit NetScaler-Benutzernamen und -Passwort im Abschnitt data wie folgt definiert.
    apiVersion: v1
    kind: Secret
    metadata:
      name: adc-credential
    data:
      username: <ADC user name>
      password: <ADC password>
  2. Wenden Sie die Datei adc-credential-secret.yaml an, um ein Secret zu erstellen.
    kubectl apply -f adc-credential-secret.yaml
    Alternativ können Sie das Kubernetes-Secret auch mit der Option --from-literal des Befehls kubectl wie folgt erstellen:
    kubectl create secret generic adc-credentials --from-literal=username=<username> --from-literal=password=<password>
Sobald Sie ein Kubernetes-Secret erstellt haben, können Sie eine der folgenden Optionen verwenden, um die Secret-Daten in der NetScaler Ingress Controller Pod-Spezifikation zu nutzen.

Verwenden von Secret-Daten als Umgebungsvariablen in der NetScaler Ingress Controller Pod-Spezifikation

Sie können Secret-Daten aus dem Kubernetes-Secret als Werte für die Umgebungsvariablen in der NetScaler Ingress Controller Bereitstellungsspezifikation verwenden.
Ein Ausschnitt der YAML-Datei wird wie folgt dargestellt.
- 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
Hier ist ein Beispiel für die NetScaler Ingress Controller-Bereitstellung, bei der die Werte der Umgebungsvariablen aus dem Secret-Objekt stammen.

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

Verwenden Sie eine geheime Volume-Bereitstellung, um Anmeldeinformationen an den NetScaler Ingress Controller zu übergeben

Alternativ können Sie auch eine Volume-Bereitstellung verwenden, die das Secret-Objekt als Quelle für die NetScaler-Anmeldeinformationen nutzt. Der NetScaler Ingress Controller erwartet, dass das Secret unter dem Pfad /etc/citrix bereitgestellt wird, und sucht die Anmeldeinformationen in den Dateien username und password.
Sie können ein Volume aus dem Secret-Objekt erstellen und das Volume dann mit volumeMounts unter /etc/citrix bereitstellen, wie im folgenden Bereitstellungsbeispiel gezeigt.
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

Verwenden Sie NetScaler-Anmeldeinformationen, die auf einem Hashicorp Vault-Server gespeichert sind

Sie können auch die auf einem Hashicorp Vault-Server gespeicherten NetScaler-Anmeldeinformationen für den NetScaler Ingress Controller verwenden und die Anmeldeinformationen über einen Sidecar-Container übertragen.