Tilføj en Kubernetes-hemmelighed i Apache Airflow-job
Bemærk
Apache Airflow-jobbet drives af Apache Airflow.
En Kubernetes-hemmelighed er et objekt, der er designet til sikkert at gemme følsomme oplysninger, f.eks. adgangskoder, tokens eller nøgler. Når du bruger hemmeligheder, undgår du at integrere fortrolige data direkte i programkoden.
Denne vejledning fører dig gennem tilføjelse af en Kubernetes-hemmelighed i et Apache Airflow-miljø, der hostes på Microsoft Fabric, for at hente objektbeholderbilleder fra private registre. I dette eksempel bruger vi Azure Container Registry til at oprette et brugerdefineret billede, som derefter hentes i en Airflow DAG.
Forudsætninger
- Azure Container Registry: Konfigurer en Azure Container Registry med det brugerdefinerede billede, du vil bruge i den styrede acycliske graf (DAG). Du kan få flere oplysninger om push- og pull-objektbeholderbilleder under Billede af push- og pull-objektbeholder – Azure Container Registry.
Tilføj en Kubernetes-hemmelighed.
- Gå til
Environment configuration
siden ved at klikke påConfigure Airflow
. - Klik på
New
knappen UnderKubernetes secrets
sektion. - Udfyld de felter, der vises i dialogboksen:
- Navn: Navnet på Kubernetes-hemmeligheden.
- Navneområde: Det navneområde, der skal køres i Kubernetes. Som standard: Udfyld feltet som
adf
. - Secret type: Vælg typen af hemmeligheden mellem værdierne:
Private registry credential
ogBasic auth credential
. - URL-adresse til registreringsdatabaseserveren: URL-adressen til registreringsdatabasen for din private objektbeholder,
\registry_name\>.azurecr.io
f.eks. . - Brugernavn: Brugernavn i registreringsdatabasen for din private objektbeholder.
- Adgangskode: Adgangskode for at få adgang til registreringsdatabasen for den private objektbeholder.
- Når alle felterne er udfyldt, skal du klikke på knappen
Create
for at færdiggøre oprettelsen af Kubernetes-hemmeligheden.
En eksempel-DAG, der bruger gemt Kubernetes-hemmelighed til at hente et brugerdefineret billede fra 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,
)