Contrôleur d'entrée Citrix ADC

Comment utiliser les secrets Kubernetes pour stocker les informations d’identification Citrix ADC

Dans la plupart des entreprises, les appareils Citrix ADC Ingress de niveau 1 et les clusters Kubernetes sont gérés par des équipes distinctes. Le Citrix ingress controller nécessite des informations d’identification Citrix ADC telles que le nom d’utilisateur et le mot de passe Citrix ADC pour configurer Citrix ADC. En général, les informations d’identification Citrix ADC sont spécifiées en tant que variables d’environnement dans la spécification de l’espace Citrix Ingress Controller. Cependant, une autre option sécurisée consiste à utiliser des secrets Kubernetes pour stocker les informations d’identification Citrix ADC.

Cette rubrique décrit comment utiliser les secrets Kubernetes pour stocker les informations d’identification ADC et différentes manières de fournir les informations d’identification stockées en tant que données secrètes pour le Citrix ingress controller.

Créer un secret Kubernetes

Effectuez les étapes suivantes pour créer un secret Kubernetes.

  1. Créez un fichier adc-credential-secret.yaml qui définit un code YAML secret Kubernetes avec le nom d’utilisateur et le mot de passe Citrix ADC dans la section data suivante.

    apiVersion: v1
    kind: Secret
    metadata:
      name: adc-credential
    data:
      username: <ADC user name>
      password: <ADC password>
    
  2. Appliquez le fichier adc-credential-secret.yaml pour créer un secret.

    kubectl apply -f adc-credential-secret.yaml
    

    Vous pouvez également créer le secret Kubernetes à l’aide de l’option --from-literal de la commande kubectl comme indiqué ci-dessous :

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

Une fois que vous avez créé un secret Kubernetes, vous pouvez utiliser l’une des options suivantes pour utiliser les données secrètes dans la spécification de l’espace du Citrix ingress controller.

Utiliser des données secrètes en tant que variables d’environnement dans la spécification de l’espace du Citrix ingress controller

Vous pouvez utiliser les données secrètes du secret Kubernetes comme valeurs pour les variables d’environnement dans la spécification de déploiement du Citrix ingress controller.

Un extrait du fichier YAML s’affiche comme suit.

  - 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

Voici un exemple de déploiement du Citrix ingress controller avec la valeur des variables d’environnement provenant de l’objet secret.


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-->

Utilisez un montage de volume secret pour transmettre des informations d’identification au Citrix ingress controller

Vous pouvez également utiliser un montage de volume en utilisant l’objet secret comme source pour les informations d’identification Citrix ADC. Le Citrix ingress controller s’attend à ce que le secret soit monté sur le chemin d’accès /etc/citrix et recherche les informations d’identification dans les fichiers username et password.

Vous pouvez créer un volume à partir de l’objet secret, puis le monter à l’aide de VolumeMounts à, /etc/citrix comme illustré dans l’exemple de déploiement suivant.

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-->

Utiliser les informations d’identification Citrix ADC stockées sur un serveur Hashicorp Vault

Vous pouvez également utiliser les informations d’identification Citrix ADC stockées dans un serveur Hashicorp Vault pour le Citrix ingress controller et envoyer les informations d’identification via un conteneur annexe.

Pour plus d’informations, consultez Utilisation des informations d’identification Citrix ADC stockées sur un serveur Vault.

Comment utiliser les secrets Kubernetes pour stocker les informations d’identification Citrix ADC