在 Apache Airflow 作業中新增 Kubernetes 秘密

注意

Apache Airflow 作業是由Apache Airflow驅動的。

目前,Fabric Apache Airflow 工作不支援私有網路和虛擬網路。

Kubernetes Secret 是一個物件,用於安全地儲存敏感資訊,例如密碼、令牌或密鑰。 藉由利用秘密,您可以避免將機密數據直接內嵌在應用程式程序代碼中。

本指南會逐步引導您在裝載於 Microsoft Fabric 的 Apache Airflow 環境中新增 Kubernetes 秘密,以從私人登錄提取容器映像。 在此範例中,我們將使用 Azure Container Registry 來建立自定義映射,然後會在 Airflow DAG 內提取該映像。

必要條件

新增 Kubernetes 祕密。

  1. 按下 [Environment configuration] 以瀏覽至 [Configure Airflow] 頁面。
  2. 在 [Kubernetes secrets] 區段下,按下 [New] 按鈕。 螢幕擷取畫面,其中顯示了新增新 Kubernetes 祕密的按鈕。
  3. 填寫對話框中出現的欄位:
    • 名稱:Kubernetes 祕密的名稱。
    • 命名空間:在 Kubernetes 內執行的命名空間。 根據預設:請依照 adf 填入欄位。
    • 祕密類型:請在以下值之間選擇祕密類型:Private registry credentialBasic auth credential
    • 登錄伺服器網址:您私人容器登錄的網址,例如 \registry_name\>.azurecr.io
    • 使用者名稱:您私人容器登錄的使用者名稱。
    • 密碼:用來存取私人容器登錄的密碼。 螢幕擷取畫面,其中顯示了新增 Kubernetes 秘密的表單。
  4. 在填寫所有欄位後,按下 [Create] 按鈕以完成建立 Kubernetes 祕密。

使用儲存的 Kubernetes 憑證從 ACR 拉取自定義映像檔的範例 DAG。

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

快速入門:建立 Apache Airflow 任務