Dodawanie wpisu tajnego kubernetes w zadaniu apache Airflow
Uwaga
Zadanie apache Airflow jest obsługiwane przez platformę Apache Airflow.
Wpis tajny kubernetes jest obiektem zaprojektowanym do bezpiecznego przechowywania poufnych informacji, takich jak hasła, tokeny lub klucze. Korzystając z wpisów tajnych, należy unikać osadzania poufnych danych bezpośrednio w kodzie aplikacji.
Ten przewodnik przeprowadzi Cię przez proces dodawania wpisu tajnego kubernetes w środowisku Apache Airflow hostowanym w usłudze Microsoft Fabric w celu ściągania obrazów kontenerów z prywatnych rejestrów. W tym przykładzie użyjemy usługi Azure Container Registry do utworzenia obrazu niestandardowego, który następnie zostanie ściągnięty w grupie DAG przepływu powietrza.
Wymagania wstępne
- Azure Container Registry: skonfiguruj usługę Azure Container Registry przy użyciu obrazu niestandardowego, który ma być używany w grafie acyklicznym (DAG). Aby uzyskać więcej informacji na temat obrazów kontenerów wypychania i ściągania, zobacz Wypychanie i ściąganie obrazu kontenera — Azure Container Registry.
Dodaj wpis tajny platformy Kubernetes.
- Przejdź do
Environment configuration
strony, klikając pozycjęConfigure Airflow
. - W
Kubernetes secrets
sekcji kliknijNew
przycisk. - Wypełnij pola wyświetlane w oknie dialogowym:
- Nazwa: nazwa wpisu tajnego kubernetes.
- Przestrzeń nazw: przestrzeń nazw do uruchomienia w ramach platformy Kubernetes. Domyślnie: wypełnij pole jako
adf
. - Typ wpisu tajnego: wybierz typ wpisu tajnego między wartościami:
Private registry credential
iBasic auth credential
. - Adres URL serwera rejestru: adres URL prywatnego rejestru kontenerów, na przykład
\registry_name\>.azurecr.io
. - Nazwa użytkownika: nazwa użytkownika prywatnego rejestru kontenerów.
- Hasło: hasło umożliwiające dostęp do prywatnego rejestru kontenerów.
- Po wypełnieniu wszystkich pól kliknij
Create
przycisk , aby sfinalizować tworzenie wpisu tajnego kubernetes.
Przykładowa grupa DAG, która używa przechowywanego wpisu tajnego kubernetes do ściągania obrazu niestandardowego z usługi 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,
)