Partager via


Ajouter un secret Kubernetes dans un travail Apache Airflow

Remarque

Apache Airflow Job est alimenté par Apache Airflow.

Un secret Kubernetes est un objet conçu pour stocker de manière sécurisée des informations sensibles comme des mots de passe, des jetons ou des clés. Les secrets vous évitent d’avoir à incorporer des données confidentielles directement dans le code de votre application.

Ce guide vous explique pas à pas comment ajouter un secret Kubernetes dans un environnement Apache Airflow hébergé sur Microsoft Fabric pour extraire des images conteneur de registres privés. Dans cet exemple, nous allons utiliser Azure Container Registry pour créer une image personnalisée qui sera ensuite extraite dans un DAG Airflow.

Prérequis

Ajouter un secret Kubernetes.

  1. Accédez à la page Environment configuration en cliquant sur Configure Airflow.
  2. Sous la section Kubernetes secrets, cliquez sur le bouton New. Capture d’écran montrant le bouton permettant d’ajouter un nouveau secret Kubernetes.
  3. Remplissez les champs qui s’affichent dans la boîte de dialogue :
    • Nom : nom du secret Kubernetes.
    • Espace de noms : l’espace de noms à exécuter dans Kubernetes. Par défaut : remplissez le champ en tant que adf.
    • Type de secret : choisissez le type de secret entre les valeurs : Private registry credential et Basic auth credential.
    • URL du serveur de registre : URL de votre registre de conteneurs privé, par exemple, \registry_name\>.azurecr.io.
    • Nom d’utilisateur : nom d’utilisateur de votre registre de conteneurs privé.
    • Mot de passe: le mot de passe permettant d’accéder au registre de conteneurs privés. Capture d’écran montrant le formulaire pour ajouter un nouveau secret Kubernetes.
  4. Une fois que tous les champs sont remplis, cliquez sur le bouton Create pour finaliser la création du secret Kubernetes.

Exemple de DAG utilisant un secret Kubernetes stocké pour extraire une image personnalisée d’ACR.

from datetime import datetime, timedelta
from airflow import DAG
from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator
from kubernetes.client import models as kubernetes

default_args = {
    "retries": 1,
    "retry_delay": timedelta(minutes=3),
}

dag = DAG(
    dag_id="pull_custom_image_from_acr",
    start_date=datetime(2022, 5, 14),
    schedule_interval="@daily",
    catchup=False,
    default_args=default_args,
)

acr_kubernetes = KubernetesPodOperator(
    task_id="task-one",
    namespace="adf",
    image="<docker_image_you_wish_to_launch>",
    image_pull_secrets=[kubernetes.V1LocalObjectReference("<stored_kubernetes_password")],
    cmds=["echo", "10"],
    labels={"foo": "bar"},
    name="private-image-pod",
    in_cluster=True,
    dag=dag,
)

Démarrage rapide : créer une tâche Apache Airflow Job