Bagikan melalui


Cara menggunakan Konektor Layanan di Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) adalah salah satu layanan komputasi yang didukung oleh Konektor Layanan. Artikel ini bertujuan untuk membantu Anda memahami:

  • Operasi apa yang dibuat pada kluster saat membuat koneksi layanan.
  • Cara menggunakan sumber daya kubernetes yang dibuat Konektor Layanan.
  • Cara memecahkan masalah dan melihat log Konektor Layanan di kluster AKS.

Prasyarat

Operasi apa yang dilakukan Konektor Layanan pada kluster

Bergantung pada berbagai layanan target dan jenis autentikasi yang dipilih saat membuat koneksi layanan, Konektor Layanan membuat operasi yang berbeda pada kluster AKS. Berikut ini mencantumkan kemungkinan operasi yang dibuat oleh Konektor Layanan.

Menambahkan ekstensi kubernetes Konektor Layanan

Ekstensi kubernetes bernama sc-extension ditambahkan ke kluster saat pertama kali koneksi layanan dibuat. Kemudian, ekstensi membantu membuat sumber daya kubernetes di kluster pengguna, setiap kali permintaan koneksi layanan datang ke Konektor Layanan. Anda dapat menemukan ekstensi di kluster AKS Anda di portal Azure, di menu Ekstensi + aplikasi.

Cuplikan layar portal Azure, lihat ekstensi AKS.

Ekstensi ini juga merupakan tempat metadata koneksi kluster disimpan. Menghapus instalan ekstensi membuat semua koneksi dalam kluster tidak tersedia. Operator ekstensi dihosting di namespace sc-systemkluster .

Membuat sumber daya kubernetes

Konektor Layanan membuat beberapa sumber daya kubernetes ke namespace yang ditentukan pengguna saat membuat koneksi layanan. Sumber daya kubernetes menyimpan informasi koneksi, yang diperlukan oleh definisi beban kerja pengguna atau kode aplikasi untuk berbicara dengan layanan target. Bergantung pada jenis autentikasi yang berbeda, sumber daya kubernetes yang berbeda dibuat. Connection String Untuk jenis dan Service Principal autentikasi, rahasia kubernetes dibuat. Workload Identity Untuk jenis autentikasi, akun layanan kubernetes juga dibuat selain rahasia kubernetes.

Anda dapat menemukan sumber daya kubernetes yang dibuat oleh Konektor Layanan untuk setiap koneksi layanan pada portal Azure di sumber daya kubernetes Anda, di menu Konektor Layanan.

Cuplikan layar portal Azure, lihat Konektor Layanan yang membuat sumber daya kubernetes.

Menghapus koneksi layanan tidak menghapus sumber daya Kubernetes terkait. Jika perlu, hapus sumber daya Anda secara manual, menggunakan misalnya perintah kubectl delete.

Aktifkan azureKeyvaultSecretsProvider addon

Jika layanan target adalah Azure Key Vault dan Driver CSI Secret Store diaktifkan saat membuat koneksi layanan, Konektor Layanan mengaktifkan azureKeyvaultSecretsProvider add-on untuk kluster.

Cuplikan layar portal Azure, mengaktifkan driver CSI untuk keyvault saat membuat koneksi.

Ikuti tutorialSambungkan ke Azure Key Vault menggunakan driver CSI untuk menyiapkan koneksi ke Azure Key Vault menggunakan driver Secret Store CSI.

Mengaktifkan identitas beban kerja dan penerbit OpenID Connect (OIDC)

Jika jenis autentikasi adalah Workload Identity saat membuat koneksi layanan, Konektor Layanan mengaktifkan identitas beban kerja dan penerbit OIDC untuk kluster.

Cuplikan layar portal Azure, menggunakan identitas beban kerja untuk membuat koneksi.

Ketika jenis autentikasi adalah Workload Identity, identitas terkelola yang ditetapkan pengguna diperlukan untuk membuat kredensial identitas federasi. Pelajari selengkapnya dari identitas beban kerja, atau ikuti tutorialuntuk menyiapkan koneksi ke Azure Storage menggunakan identitas beban kerja.

Cara menggunakan sumber daya kubernetes yang dibuat Konektor Layanan

Sumber daya kubernetes yang berbeda dibuat ketika jenis layanan target dan jenis autentikasi berbeda. Bagian berikut menunjukkan cara menggunakan sumber daya kubernetes yang dibuat Konektor Layanan dalam definisi beban kerja kluster dan kode aplikasi Anda.

Rahasia Kubernetes

Rahasia kubernetes dibuat ketika jenis autentikasi adalah Connection String atau Service Principal. Definisi beban kerja kluster Anda dapat mereferensikan rahasia secara langsung. Cuplikan berikut adalah contohnya.

apiVersion: batch/v1
kind: Job
metadata:
  namespace: default
  name: sc-sample-job
spec:
  template:
    spec:
      containers:
      - name: raw-linux
        image: alpine
        command: ['printenv']
        envFrom:
          - secretRef:
              name: <SecretCreatedByServiceConnector>
      restartPolicy: OnFailure

Kemudian, kode aplikasi Anda dapat menggunakan string koneksi dalam rahasia dari variabel lingkungan. Anda dapat memeriksa kode sampel untuk mempelajari selengkapnya tentang nama variabel lingkungan dan cara menggunakannya dalam kode aplikasi Anda untuk mengautentikasi ke layanan target yang berbeda.

Akun layanan Kubernetes

Baik akun layanan kubernetes maupun rahasia dibuat ketika jenis autentikasi adalah Workload Identity. Definisi beban kerja kluster Anda dapat mereferensikan akun layanan dan rahasia untuk mengautentikasi melalui identitas beban kerja. Cuplikan berikut memberikan contoh.

apiVersion: batch/v1
kind: Job
metadata:
  namespace: default
  name: sc-sample-job
  labels:
    azure.workload.identity/use: "true"
spec:
  template:
    spec:
      serviceAccountName: <ServiceAccountCreatedByServiceConnector>
      containers:
      - name: raw-linux
        image: alpine
        command: ['printenv']
        envFrom:
          - secretRef:
              name: <SecretCreatedByServiceConnector>
      restartPolicy: OnFailure

Anda dapat memeriksa tutorial untuk mempelajari cara menyambungkan ke Azure Storage menggunakan identitas beban kerja.

Cara memecahkan masalah dan melihat log

Jika kesalahan terjadi dan tidak dapat dimitigasi dengan mencoba kembali saat membuat koneksi layanan, metode berikut dapat membantu mengumpulkan informasi lebih lanjut untuk pemecahan masalah.

Periksa ekstensi kubernetes Konektor Layanan

Ekstensi kubernetes Konektor Layanan dibangun di atas ekstensi kluster Kubernetes dengan dukungan Azure Arc. Gunakan perintah berikut untuk menyelidiki apakah ada kesalahan selama penginstalan atau pembaruan ekstensi.

  1. k8s-extension Instal ekstensi Azure CLI.
az extension add --name k8s-extension
  1. Dapatkan status ekstensi Konektor Layanan. statuses Periksa properti dalam output perintah untuk melihat apakah ada kesalahan.
az k8s-extension show \
    --resource-group MyClusterResourceGroup \
    --cluster-name MyCluster \
    --cluster-type managedClusters \
    --name sc-extension

Memeriksa log kluster kubernetes

Jika ada kesalahan selama penginstalan ekstensi, dan pesan kesalahan di statuses properti tidak memberikan informasi yang cukup tentang apa yang terjadi, Anda dapat memeriksa lebih lanjut log kubernetes dengan langkah-langkah berikut.

  1. Sambungkan ke kluster AKS Anda.

    az aks get-credentials \
        --resource-group MyClusterResourceGroup \
        --name MyCluster
    
  2. Ekstensi Konektor Layanan diinstal di namespace sc-system melalui bagan helm, periksa namespace layanan dan rilis helm dengan mengikuti perintah.

    • Periksa namespace layanan yang ada.
    kubectl get ns
    
    • Periksa status rilis helm.
    helm list -n sc-system
    
  3. Selama penginstalan atau pembaruan ekstensi, pekerjaan kubernetes yang disebut sc-job membuat sumber daya kubernetes untuk koneksi layanan. Kegagalan eksekusi pekerjaan biasanya menyebabkan kegagalan ekstensi. Periksa status pekerjaan dengan menjalankan perintah berikut. Jika sc-job tidak ada di sc-system namespace layanan, seharusnya berhasil dijalankan. Pekerjaan ini dirancang untuk dihapus secara otomatis setelah eksekusi berhasil.

    • Periksa pekerjaan yang ada.
    kubectl get job -n sc-system
    
    • Dapatkan status pekerjaan.
    kubectl describe job/sc-job -n sc-system
    
    • Lihat log pekerjaan.
    kubectl logs job/sc-job -n sc-system
    

Kesalahan umum dan mitigasi

Konflik

Pesan Kesalahan:Operation returned an invalid status code: Conflict.

Alasan: Kesalahan ini biasanya terjadi saat mencoba membuat koneksi layanan sementara kluster AKS (Azure Kubernetes Service) dalam status pembaruan. Pembaruan koneksi layanan bertentangan dengan pembaruan yang sedang berlangsung. Ini juga bisa terjadi ketika langganan Anda tidak diubah untuk Microsoft.KubernetesConfiguration penyedia sumber daya.

Mitigasi:

  • Jalankan perintah berikut untuk memastikan langganan Anda terdaftar untuk Microsoft.KubernetesConfiguration penyedia sumber daya.

    az provider register -n Microsoft.KubernetesConfiguration
    
  • Pastikan kluster Anda dalam status "Berhasil" dan coba lagi pembuatannya.

Waktu habis

Pesan Kesalahan:

  • Long running operation failed with status 'Failed'. Unable to get a response from the Agent in time.
  • Timed out waiting for the resource to come to a ready/completed state

Alasan: Kesalahan ini sering terjadi ketika pekerjaan Kubernetes yang digunakan untuk membuat atau memperbarui ekstensi kluster Konektor Layanan gagal dijadwalkan karena keterbatasan sumber daya atau masalah lainnya.

Mitigasi: Lihat Memeriksa log kluster Kubernetes untuk mengidentifikasi dan menyelesaikan alasan terperinci. Masalah umum adalah bahwa tidak ada simpul yang tersedia karena pendahuluan. Dalam hal ini, pertimbangkan untuk menambahkan lebih banyak simpul atau mengaktifkan penskalaan otomatis untuk simpul Anda.

Akses sumber daya yang tidak sah

Pesan Kesalahan:You do not have permission to perform ... If access was recently granted, please refresh your credentials.

Alasan: Konektor Layanan memerlukan izin untuk mengoperasikan sumber daya Azure yang ingin Anda sambungkan, untuk melakukan operasi koneksi atas nama Anda. Kesalahan ini menunjukkan kurangnya izin yang diperlukan pada beberapa sumber daya Azure.

Mitigasi: Periksa izin pada sumber daya Azure yang ditentukan dalam pesan kesalahan. Dapatkan izin yang diperlukan dan coba lagi pembuatannya.

Pendaftaran langganan hilang

Pesan Kesalahan:The subscription is not registered to use namespace 'Microsoft.KubernetesConfiguration'

Alasan: Konektor Layanan mengharuskan langganan didaftarkan untuk Microsoft.KubernetesConfiguration, yang merupakan penyedia sumber daya untuk ekstensi kluster Kubernetes dengan dukungan Azure Arc.

Mitigasi: Daftarkan Microsoft.KubernetesConfiguration penyedia sumber daya dengan menjalankan perintah berikut. Untuk informasi selengkapnya tentang kesalahan pendaftaran penyedia sumber daya, lihat tutorial ini.

az provider register -n Microsoft.KubernetesConfiguration

Masalah Lain

Jika mitigasi di atas tidak mengatasi masalah Anda, coba reset ekstensi kluster konektor layanan dengan menghapusnya lalu coba lagi pembuatannya. Metode ini diharapkan dapat menyelesaikan sebagian besar masalah yang terkait dengan ekstensi kluster Konektor Layanan.

Gunakan perintah CLI berikut untuk mengatur ulang ekstensi:

az extension add --name k8s-extension

az k8s-extension delete \
    --resource-group <MyClusterResourceGroup> \
    --cluster-name <MyCluster> \
    --cluster-type managedClusters \
    --name sc-extension

Langkah berikutnya

Pelajari cara mengintegrasikan layanan target yang berbeda dan membaca tentang pengaturan konfigurasi dan metode autentikasinya.