Partager via


Attacher votre application

Cet article suppose que vous avez créé un volume persistant (PV) et une revendication de volume persistant (PVC). Pour obtenir plus d’informations sur la création d’un volume persistant, consultez Créer un volume persistant. Pour obtenir plus d’informations sur la création d’une revendication de volume persistant, consultez Créer un volume persistant.

Ajouter Cache Volumes à vos pods aio-dp-runner-worker-0

Ces pods font partie d’un statefulSet. Vous ne pouvez pas modifier le statefulSet en place pour ajouter des points de montage. Suivez plutôt cette procédure :

  1. Effectuez une copie de sauvegarde de statefulSet dans yaml :

    kubectl get statefulset -o yaml -n azure-iot-operations aio-dp-runner-worker > stateful_worker.yaml
    
  2. Modifiez le statefulSet afin d’inclure les nouveaux montages pour Cache Volumes dans des volumes et des volumeMounts :

    volumeMounts: 
    - mountPath: /etc/bluefin/config 
      name: config-volume 
      readOnly: true 
    - mountPath: /var/lib/bluefin/registry 
      name: nfs-volume 
    - mountPath: /var/lib/bluefin/local 
      name: runner-local
      ### Add the next 2 lines ###
    - mountPath: /mnt/esa 
      name: esa4 
    
    volumes: 
    - configMap: 
        defaultMode: 420 
        name: file-config 
      name: config-volume 
    - name: nfs-volume 
    persistentVolumeClaim: 
      claimName: nfs-provisioner
      ### Add the next 3 lines ### 
    - name: esa4 
      persistentVolumeClaim: 
        claimName: esa4
    
  3. Supprimez le statefulSet existant :

    kubectl delete statefulset -n azure-iot-operations aio-dp-runner-worker
    

    Cette opération supprime tous les pods aio-dp-runner-worker-n. Il s’agit d’un événement au niveau de l’interruption.

  4. Créez un statefulSet du ou des aio-dp-runner-worker avec les montages Cache Volumes :

    kubectl apply -f stateful_worker.yaml -n azure-iot-operations
    

    Quand les pods aio-dp-runner-worker-n démarrent, ils incluent des montages dans Cache Volumes. La PVC doit exprimer ceci dans l’état.

  5. Une fois vos Workers de processeur de données reconfigurés pour avoir accès à Cache Volumes, vous devez manuellement mettre à jour la configuration de pipeline pour utiliser un chemin d’accès local qui correspond à l’emplacement monté de votre instance Cache Volumes sur les POD de Worker.

    Pour modifier le pipeline, utilisez kubectl edit pipeline <name of your pipeline>. Dans ce pipeline, remplacez votre phase de sortie par le YAML suivant :

    output:
      batch:
        path: .payload
        time: 60s
      description: An example file output stage
      displayName: Sample File output
      filePath: '{{{instanceId}}}/{{{pipelineId}}}/{{{partitionId}}}/{{{YYYY}}}/{{{MM}}}/{{{DD}}}/{{{HH}}}/{{{mm}}}/{{{fileNumber}}}'
      format:
        type: jsonStream
      rootDirectory: /mnt/esa
      type: output/file@v1
    

Configurer une application native Kubernetes

  1. Pour configurez un seul pod générique (application native Kubernetes) sur la revendication de volume persistant (PVC), créez un fichier nommé configPod.yaml avec le contenu suivant :

    kind: Deployment
    apiVersion: apps/v1
    metadata:
      name: example-static
      labels:
        app: example-static
      ### Uncomment the next line and add your namespace only if you are not using the default namespace (if you are using azure-iot-operations) as specified from Line 6 of your pvc.yaml. If you are not using the default namespace, all future kubectl commands require "-n YOUR_NAMESPACE" to be added to the end of your command.
      # namespace: YOUR_NAMESPACE
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: example-static
      template:
        metadata:
          labels:
            app: example-static
        spec:
          containers:
            - image: mcr.microsoft.com/cbl-mariner/base/core:2.0
              name: mariner
              command:
                - sleep
                - infinity
              volumeMounts:
                ### This name must match the 'volumes.name' attribute in the next section. ###
                - name: blob
                  ### This mountPath is where the PVC is attached to the pod's filesystem. ###
                  mountPath: "/mnt/blob"
          volumes:
            ### User-defined 'name' that's used to link the volumeMounts. This name must match 'volumeMounts.name' as specified in the previous section. ###
            - name: blob
              persistentVolumeClaim:
                ### This claimName must refer to the PVC resource 'name' as defined in the PVC config. This name must match what your PVC resource was actually named. ###
                claimName: YOUR_CLAIM_NAME_FROM_YOUR_PVC
    

    Remarque

    Si vous utilisez votre propre espace de noms, toutes les commandes kubectl nécessitent l’ajout de -n YOUR_NAMESPACE à la commande. Par exemple, vous devez utiliser kubectl get pods -n YOUR_NAMESPACE au lieu de kubectl get pods standard.

  2. Pour appliquer ce fichier .yaml, exécutez la commande suivante :

    kubectl apply -f "configPod.yaml"
    
  3. Utilisez kubectl get pods pour trouver le nom de votre pod. Copiez ce nom car vous en aurez besoin à l’étape suivante.

  4. Exécutez la commande suivante et remplacez POD_NAME_HERE par votre valeur copiée de l’étape précédente :

    kubectl exec -it POD_NAME_HERE -- bash
    
  5. Modifiez les répertoires dans le chemin d’accès de montage /mnt/blob, comme spécifié dans votre configPod.yaml.

  6. Par exemple, exécutez touch file.txt pour écrire un fichier.

  7. Dans le Portail Azure, accédez à votre compte de stockage et recherchez le conteneur. Il s’agit du même conteneur spécifié dans votre fichier pv.yaml. Lorsque vous sélectionnez votre conteneur, vous voyez file.txt rempli dans le conteneur.

Étapes suivantes

Une fois ces étapes effectuées, commencez à monitorer votre déploiement en utilisant Azure Monitor et Monitoring Kubernetes, ou une surveillance tierce avec Prometheus et Grafana :

Monitoring tiers