Eğitim: İş yükü kimliği kullanarak Hizmet Bağlayıcısı ile AKS'de Azure Depolama'a bağlanma

Bu öğreticide, iş yükü kimliğini kullanarak bir Azure Depolama hesabını Azure Kubernetes Service (AKS) kümesindeki bir pod'a bağlamak için Service Connector'ı kullanmayı öğreneceksiniz. Aşağıdaki görevleri tamamlarsınız:

  • AKS kümesi ve Azure Depolama hesabı oluşturun.
  • Hizmet Bağlayıcısı'nı kullanarak AKS kümesi ile Azure Depolama hesabı arasında bir bağlantı oluşturun.
  • AKS kümesinden Azure Depolama hesabına bağlanan örnek bir uygulamayı kopyalayın.
  • Uygulamayı AKS kümesindeki bir pod'a dağıtın ve bağlantıyı test edin.
  • Kaynakları temizleyin.

Önkoşullar

  • Kapsayıcılar, iş yükü kimliği ve AKS hakkında temel bilgiler. Daha fazla bilgi için bkz. Tutorial: Azure Kubernetes Service (AKS) için uygulama hazırlama.
  • Azure kaynak yazma izinlerine sahip olduğunuz, "Hizmet Bağlayıcıyı destekleyen" ve öğreticiyi çalıştırmak için yeterli "AKS desteği ve işlem kotasına" sahip Azure bölgesinde bir Azure aboneliği. Ücretsiz hesap oluşturun.
  • Azure aboneliğinde kayıtlı Microsoft.ServiceLinker, Microsoft.ContainerService, Microsoft.ContainerRegistry ve Microsoft.ManagedIdentity kaynak sağlayıcıları. Sağlayıcıları kaydetmek için az provider register -n Microsoft.[service] çalıştırabilirsiniz.
  • Örnek depoya erişmek ve bu depoyu kopyalamak için Git.
  • Kapsayıcı görüntüsünü ve Kubernetes kaynaklarını yönetmek için Docker ve kubectl yüklendi. komutunu çalıştırarak kubectlyerel olarak yükleyinaz aks install-cli.
  • Azure CLI yüklendi.

Azure kaynakları oluşturma

  1. az login komutunu çalıştırıp istemleri izleyerek Azure oturum açın.

  2. Bu öğreticide kullanmak üzere Azure kaynak grubu oluşturun ve <region> yer tutucusunu geçerli bir değerle değiştirin. location, aboneliğinizin Azure kaynakları için yeterli işlem kotası olduğu ve hizmetlerin hiçbirinde kısıtlama olmadığı Azure bir bölge olmalıdır.

    az group create \
        --name MyResourceGroup \
        --location <region>
    
  3. Aşağıdaki komutu çalıştırarak hizmet bağlantısını, pod tanımını ve örnek uygulamayı içerecek bir AKS kümesi oluşturun. Daha fazla bilgi için bkz. Quickstart: Azure CLI kullanarak Azure Kubernetes Service (AKS) kümesi dağıtma.

    az aks create \
        --resource-group MyResourceGroup \
        --name MyAKSCluster \
        --enable-managed-identity \
        --node-count 1
    
  4. Aşağıdaki komutu çalıştırarak kümeye bağlanın.

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  5. AKS kümesinin bağlanacağı ve örnek uygulamanın etkileşim kurduğu hedef hizmet olmak için bir Azure Depolama hesabı oluşturun. Daha fazla bilgi için bkz. Azure depolama hesabı oluşturma. <storageaccountname>'yı, 3 ila 24 karakter arasında olan ve yalnızca küçük harf veya rakamlardan oluşan, Azure genelinde benzersiz bir adla değiştirerek aşağıdaki komutu çalıştırın.

    az storage account create \
        --resource-group MyResourceGroup \
        --name <storageaccountname> \
        --sku Standard_LRS
    
  6. AKS pod tanımı tarafından kullanılan uygulama kapsayıcı görüntüsünü barındırmak için bir Azure kapsayıcı kayıt defteri oluşturun. Daha fazla bilgi için bkz. Quickstart: Azure portalını kullanarak Azure kapsayıcı kayıt defteri oluşturma. Aşağıdaki komutu, <registryname> yerine Azure üzerinde benzersiz olan, 5-50 küçük harf veya sayı içeren bir adla değiştirerek çalıştırın.

    az acr create \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --sku Standard
    
  7. AKS kümesinin kayıt imajlarına erişebilmesi için anonim çekmeyi etkinleştirin. Yer tutucuyu <registryname> kayıt defteri adınızla değiştirin.

    az acr update \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --anonymous-pull-enabled
    
  8. Aşağıdaki komutu çalıştırarak hizmet bağlantısı oluşturma işleminin AKS iş yükleri için iş yükü kimliğini etkinleştirmek için kullanabileceği kullanıcı tarafından atanan bir yönetilen kimlik oluşturun. Daha fazla bilgi için bkz. Azure portalını kullanarak kullanıcı tarafından atanan yönetilen kimlikleri yönetme.

    az identity create \
        --resource-group MyResourceGroup \
        --name MyIdentity
    

Service Connector kullanarak hizmet bağlantısı oluşturma

Azure CLI veya Azure portalını kullanarak AKS kümesi ile Azure Depolama hesabı arasında bir hizmet bağlantısı oluşturun.

Azure depolama hesabına hizmet bağlantısı oluşturmak için aşağıdaki Azure CLI komutunu çalıştırın. <storageaccountname> değerini depolama hesabı adınızla ve <user-identity-resource-id> kullanıcı tarafından atanan yönetilen kimlik kaynak kimliğinizle değiştirin.

Kullanıcı tarafından atanan yönetilen kimlik kaynak kimliğinizi önceki az identity create komutunun çıkışından alabilir veya /subscriptions/<subscription-id>/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyIdentity biçimini kullanabilirsiniz.

az aks connection create storage-blob \
  --resource-group MyResourceGroup \
  --name MyAKSCluster \
  --target-resource-group MyResourceGroup \
  --account <storageaccountname> \
  --workload-identity <user-identity-resource-id>

Bağlantı oluşturulduktan sonra, Azure portalı Hizmet Bağlayıcısı sayfası yeni bağlantı hakkındaki bilgileri gösterir. Bu öğreticinin devamında pod.yaml dosyasını düzenlerken bu bilgileri kullanabilirsiniz.

Service Connector tarafından oluşturulan Kubernetes kaynaklarını görüntüleyen Azure portalının ekran görüntüsü.

Örnek uygulamayı oluşturma

  1. Örnek depoyu kopyalayın ve ardından örnek uygulamayı içeren dizine geçin. Bu klasörden kalan komutları çalıştırın.

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    cd serviceconnector-aks-samples/azure-storage-workload-identity
    
  2. komutunu kullanarak az acr build görüntüleri derleyin ve kapsayıcı kayıt defterinize gönderin. Yer tutucuyu <registryname> kayıt defteri adınızla değiştirin.

    az acr build --registry <registryname> --image sc-demo-storage-identity:latest ./
    
  3. komutunu kullanarak az acr repository list kapsayıcı kayıt defterinizdeki görüntüyü görüntüleyin. Yer tutucuyu <registryname> kayıt defteri adınızla değiştirin.

    az acr repository list --name <registryname> --output table
    

Uygulamayı çalıştırma ve bağlantıyı test edin

  1. Yerel uygulama klasörünüzdeki pod.yaml dosyasında aşağıdaki yer tutucuları değiştirin:

    • <YourContainerImage>: değerini kapsayıcı kayıt defterinizdeki görüntü adıyla değiştirin, örneğin <registryname>.azurecr.io/sc-demo-storage-identity:latest.
    • <ServiceAccountCreatedByServiceConnector>: Bağlantı oluşturulduktan sonra oluşturulan Hizmet Bağlayıcı hizmet hesabı ile değiştirin. hizmet hesabı adını Azure portalındaki AKS kümesi Hizmet Bağlayıcısı sayfanızda de kontrol edebilirsiniz.
    • <SecretCreatedByServiceConnector>: Bağlantı oluşturulduktan sonra oluşturulan gizli Hizmet Bağlayıcısı ile değiştirin. hizmet hesabı adını Azure portalındaki AKS kümesi Hizmet Bağlayıcısı sayfanızda de kontrol edebilirsiniz.
  2. kubectl apply kullanarak pod'u kümenize dağıtın. komutu, AKS kümenizin varsayılan ad alanında adlı sc-demo-storage-identity bir pod oluşturur.

    kubectl apply -f pod.yaml
    
  3. kullanarak kubectlpodu görüntüleyerek dağıtımın başarılı olup olmadığını denetleyin.

    kubectl get pod/sc-demo-storage-identity
    
  4. Bağlantının kurulduğunu kontrol etmek için kubectl kullanarak günlükleri görüntüleyin.

    kubectl logs pod/sc-demo-storage-identity
    

Kaynakları temizleme

Bu öğretici için oluşturduğunuz Azure kaynaklarına artık ihtiyacınız yoksa, MyResourceGroup kaynak grubunu silerek bunları silebilirsiniz.

az group delete \
  --resource-group MyResourceGroup