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
- Panduan ini mengasumsikan bahwa Anda sudah mengetahui konsep dasar Konektor Layanan.
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.
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-system
kluster .
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.
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.
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.
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.
k8s-extension
Instal ekstensi Azure CLI.
az extension add --name k8s-extension
- 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.
Sambungkan ke kluster AKS Anda.
az aks get-credentials \ --resource-group MyClusterResourceGroup \ --name MyCluster
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
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. Jikasc-job
tidak ada disc-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.