Citrix ADC Ingress Controller

So verwenden Sie Kubernetes-Geheimnisse zum Speichern von Citrix ADC-Anmeldeinformationen

In den meisten Organisationen werden Citrix ADC Ingress-Geräte der Stufe 1 und Kubernetes-Cluster von separaten Teams verwaltet. Der Citrix Ingress Controller benötigt Citrix ADC-Anmeldeinformationen wie Citrix ADC-Benutzernamen und -Kennwort, um den Citrix ADC zu konfigurieren. Normalerweise werden Citrix ADC-Anmeldeinformationen als Umgebungsvariablen in der Pod-Spezifikation des Citrix Ingress Controller angegeben. Eine weitere sichere Option besteht jedoch darin, Kubernetes-Geheimnisse zum Speichern der Citrix ADC-Anmeldeinformationen zu verwenden.

In diesem Thema wird beschrieben, wie Kubernetes-Geheimnisse zum Speichern der ADC-Anmeldeinformationen verwendet werden, und verschiedene Möglichkeiten, die als geheime Daten für den Citrix Ingress Controller gespeicherten Anmeldeinformationen bereitzustellen.

Erstellen Sie ein Kubernetes-Secret

Führen Sie die folgenden Schritte aus, um einen Kubernetes-Schlüssel zu erstellen.

  1. Erstellen Sie im folgenden data Abschnitt eine Datei adc-credential-secret.yaml, die eine geheime Kubernetes-YAML mit Citrix ADC-Benutzernamen und -Kennwort definiert.

    apiVersion: v1
    kind: Secret
    metadata:
      name: adc-credential
    data:
      username: <ADC user name>
      password: <ADC password>
    
  2. Wenden Sie die adc-credential-secret.yaml Datei an, um ein Geheimnis zu erstellen.

    kubectl apply -f adc-credential-secret.yaml
    

    Alternativ können Sie das Kubernetes-Geheimnis auch mit der --from-literal Option des kubectl Befehls wie folgt erstellen:

    kubectl create secret generic adc-credentials --from-literal=username=<username> --from-literal=password=<password>
    

Nachdem Sie einen Kubernetes-Schlüssel erstellt haben, können Sie eine der folgenden Optionen verwenden, um die geheimen Daten in der Pod-Spezifikation des Citrix Ingress Controller zu verwenden.

Verwenden Sie geheime Daten als Umgebungsvariablen in der Pod-Spezifikation des Citrix Ingress Controller

Sie können geheime Daten aus dem Kubernetes-Secret als Werte für die Umgebungsvariablen in der Citrix Ingress Controller-Bereitstellungsspezifikation verwenden.

Ein Snippet der YAML-Datei wird wie folgt angezeigt.

  - 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 Bereitstellung des Citrix Ingress Controller mit dem Wert der Umgebungsvariablen, die aus dem geheimen 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
<!--NeedCopy-->

Verwenden Sie einen geheimen Volume-Mount, um Anmeldeinformationen an den Citrix Ingress Controller zu übergeben

Alternativ können Sie auch eine Volume-Mount verwenden, indem Sie das geheime Objekt als Quelle für die Citrix ADC-Anmeldeinformationen verwenden. Der Citrix Ingress Controller erwartet, dass das Secret im Pfad gemountet wird, /etc/citrix und sucht nach den Anmeldeinformationen in Dateien username und password.

Sie können ein Volume aus dem geheimen Objekt erstellen und das Volume dann mithilfe von VolumeMounts at mounten, /etc/citrix 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
<!--NeedCopy-->

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

Sie können auch die Citrix ADC-Anmeldeinformationen verwenden, die in einem Hashicorp-Vault-Server für den Citrix Ingress Controller gespeichert sind, und die Anmeldeinformationen durch einen Sidecar-Container übertragen.

Weitere Informationen finden Sie unter Verwenden von Citrix ADC-Anmeldeinformationen, die auf einem Tresor-Server gespeichert sind.

So verwenden Sie Kubernetes-Geheimnisse zum Speichern von Citrix ADC-Anmeldeinformationen