Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Azure Kubernetes Service'te (AKS) Apache Airflow çalıştırmak için gereken altyapı kaynaklarını oluşturacaksınız.
Önkoşullar
- Henüz yapmadıysanız Azure Kubernetes Service'te (AKS) Apache Airflow kümesi dağıtmaya genel bakış'ı gözden geçirin.
- Azure aboneliği. Aboneliğiniz yoksa ücretsiz bir hesap oluşturun.
- Azure CLI sürüm 2.61.0. Yüklemek veya yükseltmek için bkz . Azure CLI'yı yükleme.
- Helm sürüm 3 veya üzeri. Yüklemek için bkz Helm'i Yükleme.
-
kubectlvarsayılan olarak Azure Cloud Shell'de yüklüdür. - Airflow DAG'larını saklamak için GitHub deposu.
- Docker yerel makinenize yüklendi. Yüklemek için Docker'ı Alma sayfasına bakın.
Ortam değişkenlerini belirleme
Bu kılavuz boyunca kullanmak için gerekli ortam değişkenlerini ayarlayın:
random=$(echo $RANDOM | tr '[0-9]' '[a-z]') export MY_LOCATION=canadacentral export MY_RESOURCE_GROUP_NAME=apache-airflow-rg export MY_IDENTITY_NAME=airflow-identity-123 export MY_ACR_REGISTRY=mydnsrandomname$(echo $random) export MY_KEYVAULT_NAME=airflow-vault-$(echo $random)-kv export MY_CLUSTER_NAME=apache-airflow-aks export SERVICE_ACCOUNT_NAME=airflow export SERVICE_ACCOUNT_NAMESPACE=airflow export AKS_AIRFLOW_NAMESPACE=airflow export AKS_AIRFLOW_CLUSTER_NAME=cluster-aks-airflow export AKS_AIRFLOW_LOGS_STORAGE_ACCOUNT_NAME=airflowsasa$(echo $random) export AKS_AIRFLOW_LOGS_STORAGE_CONTAINER_NAME=airflow-logs export AKS_AIRFLOW_LOGS_STORAGE_SECRET_NAME=storage-account-credentials
Kaynak grubu oluşturma
komutunu kullanarak
az group createbir kaynak grubu oluşturun.az group create --name $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --output tableÖrnek çıkış:
Location Name ------------- ----------------- $MY_LOCATION $MY_RESOURCE_GROUP_NAME
Azure Key Vault'ta gizli bilgileri erişmek için kimlik oluşturma
Bu adımda, Dış Gizli Dizi Operatörü'nün Azure Key Vault'ta depolanan Airflow parolalarına erişmek için kullandığı, kullanıcı tarafından atanmış yönetilen kimliği oluşturacağız.
komutunu kullanarak
az identity createkullanıcı tarafından atanan bir yönetilen kimlik oluşturun.az identity create --name $MY_IDENTITY_NAME --resource-group $MY_RESOURCE_GROUP_NAME --output table export MY_IDENTITY_NAME_ID=$(az identity show --name $MY_IDENTITY_NAME --resource-group $MY_RESOURCE_GROUP_NAME --query id --output tsv) export MY_IDENTITY_NAME_PRINCIPAL_ID=$(az identity show --name $MY_IDENTITY_NAME --resource-group $MY_RESOURCE_GROUP_NAME --query principalId --output tsv) export MY_IDENTITY_NAME_CLIENT_ID=$(az identity show --name $MY_IDENTITY_NAME --resource-group $MY_RESOURCE_GROUP_NAME --query clientId --output tsv)Örnek çıkış:
ClientId Location Name PrincipalId ResourceGroup TenantId ------------------------------------ ------------- -------------------- ------------------------------------ ----------------------- ------------------------------------ 00001111-aaaa-2222-bbbb-3333cccc4444 $MY_LOCATION $MY_IDENTITY_NAME aaaaaaaa-bbbb-cccc-1111-222222222222 $MY_RESOURCE_GROUP_NAME aaaabbbb-0000-cccc-1111-dddd2222eeee
Azure Key Vault örneği oluşturma
komutunu kullanarak
az keyvault createbir Azure Key Vault örneği oluşturun.az keyvault create --name $MY_KEYVAULT_NAME --resource-group $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --enable-rbac-authorization false --output table export KEYVAULTID=$(az keyvault show --name $MY_KEYVAULT_NAME --query "id" --output tsv) export KEYVAULTURL=$(az keyvault show --name $MY_KEYVAULT_NAME --query "properties.vaultUri" --output tsv)Örnek çıkış:
Location Name ResourceGroup ------------- -------------------- ---------------------- $MY_LOCATION $MY_KEYVAULT_NAME $MY_RESOURCE_GROUP_NAME
Bir Azure kapsayıcı kayıt defteri oluşturun
komutunu kullanarak
az acr createkapsayıcı görüntülerinizi depolamak ve yönetmek için bir Azure kapsayıcı kayıt defteri oluşturun.az acr create \ --name ${MY_ACR_REGISTRY} \ --resource-group $MY_RESOURCE_GROUP_NAME \ --sku Premium \ --location $MY_LOCATION \ --admin-enabled true \ --output table export MY_ACR_REGISTRY_ID=$(az acr show --name $MY_ACR_REGISTRY --resource-group $MY_RESOURCE_GROUP_NAME --query id --output tsv)Örnek çıkış:
NAME RESOURCE GROUP LOCATION SKU LOGIN SERVER CREATION DATE ADMIN ENABLED -------------------- ---------------------- ------------- ------- ------------------------------- -------------------- --------------- mydnsrandomnamebfbje $MY_RESOURCE_GROUP_NAME $MY_LOCATION Premium mydnsrandomnamebfbje.azurecr.io 2024-11-07T00:32:48Z True
Azure Depolama hesabı oluşturma
komutunu kullanarak
az acr createAirflow günlüklerini depolamak için bir Azure Depolama Hesabı oluşturun.az storage account create --name $AKS_AIRFLOW_LOGS_STORAGE_ACCOUNT_NAME --resource-group $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --sku Standard_ZRS --output table export AKS_AIRFLOW_LOGS_STORAGE_ACCOUNT_KEY=$(az storage account keys list --account-name $AKS_AIRFLOW_LOGS_STORAGE_ACCOUNT_NAME --query "[0].value" -o tsv) az storage container create --name $AKS_AIRFLOW_LOGS_STORAGE_CONTAINER_NAME --account-name $AKS_AIRFLOW_LOGS_STORAGE_ACCOUNT_NAME --output table --account-key $AKS_AIRFLOW_LOGS_STORAGE_ACCOUNT_KEY az keyvault secret set --vault-name $MY_KEYVAULT_NAME --name AKS-AIRFLOW-LOGS-STORAGE-ACCOUNT-NAME --value $AKS_AIRFLOW_LOGS_STORAGE_ACCOUNT_NAME az keyvault secret set --vault-name $MY_KEYVAULT_NAME --name AKS-AIRFLOW-LOGS-STORAGE-ACCOUNT-KEY --value $AKS_AIRFLOW_LOGS_STORAGE_ACCOUNT_KEYÖrnek çıkış:
AccessTier AllowBlobPublicAccess AllowCrossTenantReplication CreationTime EnableHttpsTrafficOnly Kind Location MinimumTlsVersion Name PrimaryLocation ProvisioningState ResourceGroup StatusOfPrimary ------------ ----------------------- ----------------------------- -------------------------------- ------------------------ --------- ------------- ------------------- ---------------- ----------------- ------------------- ----------------- ----------------- Hot False False 2024-11-07T00:22:13.323104+00:00 True StorageV2 $MY_LOCATION TLS1_0 airflowsasabfbje $MY_LOCATION Succeeded $MY_RESOURCE_GROUP_NAME available Created --------- True
AKS kümesi oluşturma
Bu adımda iş yükü kimliği ve OIDC sağlayıcısı aktif bir AKS kümesi oluşturacağız. Bu yapılandırma, Apache Airflow gibi üretim iş yüklerini çalıştırmak için iyileştirilmiş yüksek kullanılabilirliğe sahip bir AKS kümesi oluşturur. Üç kullanılabilirlik alanına yayılmış sanal makineleri (VM) kullanarak dayanıklılık için bir üç düğüm kümesi oluşturur. Küme, güvenli görüntü çekme işlemleri için ACR ile entegredir ve Azure kaynaklarına güvenli, kimlik tabanlı erişim sağlamak için OIDC veren ve iş yükü kimliği desteğini içerir. Ayrıca gelişmiş performans ve güvenlik için Azure CNI ağ eklentisi, Blob CSI sürücüsü ve otomatik düğüm işletim sistemi ile Kubernetes sürüm yükseltmelerini etkinleştirir.
komutunu kullanarak
az aks createbir AKS kümesi oluşturun.az aks create \ --location $MY_LOCATION \ --name $MY_CLUSTER_NAME \ --tier standard \ --resource-group $MY_RESOURCE_GROUP_NAME \ --network-plugin azure \ --node-vm-size Standard_DS4_v2 \ --node-count 3 \ --auto-upgrade-channel stable \ --node-os-upgrade-channel NodeImage \ --attach-acr ${MY_ACR_REGISTRY} \ --enable-oidc-issuer \ --enable-blob-driver \ --enable-workload-identity \ --zones 1 2 3 \ --generate-ssh-keys \ --output tableÖrnek çıkış:
AzurePortalFqdn CurrentKubernetesVersion DisableLocalAccounts DnsPrefix EnableRbac Fqdn KubernetesVersion Location MaxAgentPools Name NodeResourceGroup ProvisioningState ResourceGroup ResourceUid SupportPlan ------------------------------------------------------------------------------ -------------------------- ---------------------- ---------------------------------- ------------ ----------------------------------------------------------------------- ------------------- ------------- --------------- ------------------ ----------------------------------------------------- ------------------- ----------------------- ------------------------------------ ------------------ apache-air-apache-airflow-r-363a0a-rhf6saad.portal.hcp.$MY_LOCATION.azmk8s.io 1.29.9 False apache-air-apache-airflow-r-363a0a True apache-air-apache-airflow-r-363a0a-rhf6saad.hcp.$MY_LOCATION.azmk8s.io 1.29 $MY_LOCATION 100 $MY_CLUSTER_NAME MC_apache-airflow-rg_apache-airflow-aks_$MY_LOCATION Succeeded $MY_RESOURCE_GROUP_NAME b1b1b1b1-cccc-dddd-eeee-f2f2f2f2f2f2 KubernetesOfficialİş yükü kimlik yapılandırması için kullanılacak OIDC veren URL'sini elde etmek üzere
az aks showkomutunu kullanın.export OIDC_URL=$(az aks show --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_CLUSTER_NAME --query oidcIssuerProfile.issuerUrl --output tsv)AcrPullrolünü kubelet kimliğine atamak içinaz role assignment createkomutunu kullanın.export KUBELET_IDENTITY=$(az aks show -g $MY_RESOURCE_GROUP_NAME --name $MY_CLUSTER_NAME --output tsv --query identityProfile.kubeletidentity.objectId) az role assignment create \ --assignee ${KUBELET_IDENTITY} \ --role "AcrPull" \ --scope ${MY_ACR_REGISTRY_ID} \ --output tableÖrnek çıkış:
CreatedBy CreatedOn Name PrincipalId PrincipalName PrincipalType ResourceGroup RoleDefinitionId RoleDefinitionName Scope UpdatedBy UpdatedOn ------------------------------------ -------------------------------- ------------------------------------ ------------------------------------ ------------------------------------ ---------------- ----------------------- ------------------------------------------------------------------------------------------------------------------------------------------ -------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------ -------------------------------- ccccdddd-2222-eeee-3333-ffff4444aaaa 2024-11-07T00:43:26.905445+00:00 b1b1b1b1-cccc-dddd-eeee-f2f2f2f2f2f2 bbbbbbbb-cccc-dddd-2222-333333333333 cccccccc-dddd-eeee-3333-444444444444 ServicePrincipal $MY_RESOURCE_GROUP_NAME /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d AcrPull /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/$MY_RESOURCE_GROUP_NAME/providers/Microsoft.ContainerRegistry/registries/mydnsrandomnamebfbje ccccdddd-2222-eeee-3333-ffff4444aaaa 2024-11-07T00:43:26.905445+00:00
AKS kümesine bağlanma
kubectl, AKS kümenize bağlanacak şekildeaz aks get-credentialskomutunu kullanarak yapılandırın.az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_CLUSTER_NAME --overwrite-existing --output table
Apache Airflow görüntülerini kapsayıcı kayıt defterinize yükleme
Bu bölümde, Apache Airflow görüntülerini Docker Hub'dan indirip Azure Container Registry'ye yükleyeceğiz. Bu adım, görüntülerin özel kayıt defterinizde kullanılabilir olmasını ve AKS kümenizde kullanılabilmesini sağlar. Genel görüntüyü üretim ortamında kullanmanızı önermiyoruz.
Airflow görüntülerini Docker Hub'dan içeri aktarın ve komutunu kullanarak
az acr importkapsayıcı kayıt defterinize yükleyin.az acr import --name $MY_ACR_REGISTRY --source docker.io/apache/airflow:airflow-pgbouncer-2025.03.05-1.23.1 --image airflow:airflow-pgbouncer-2025.03.05-1.23.1 az acr import --name $MY_ACR_REGISTRY --source docker.io/apache/airflow:airflow-pgbouncer-exporter-2025.03.05-0.18.0 --image airflow:airflow-pgbouncer-exporter-2025.03.05-0.18.0 az acr import --name $MY_ACR_REGISTRY --source docker.io/bitnamilegacy/postgresql:16.1.0-debian-11-r15 --image postgresql:16.1.0-debian-11-r15 az acr import --name $MY_ACR_REGISTRY --source quay.io/prometheus/statsd-exporter:v0.28.0 --image statsd-exporter:v0.28.0 az acr import --name $MY_ACR_REGISTRY --source docker.io/apache/airflow:3.0.2 --image airflow:3.0.2 az acr import --name $MY_ACR_REGISTRY --source registry.k8s.io/git-sync/git-sync:v4.3.0 --image git-sync:v4.3.0
Sonraki adım
Katkıda Bulunanlar
Microsoft bu makaleyi korur. Başlangıçta aşağıdaki katkıda bulunanlar yazdı:
- Don High | Baş Müşteri Mühendisi
- Satya Chandragiri | Kıdemli Dijital Bulut Çözümü Mimarı
- Erin Schaffer | İçerik Geliştirici 2