Memasang aplikasi yang ada dengan Helm di Azure Kubernetes Service (AKS)
Helm adalah alat pengemasan sumber terbuka yang membantu Anda memasang dan mengelola siklus hidup aplikasi Kubernetes. Mirip dengan manajer paket Linux, seperti APT dan Yum, Anda dapat menggunakan Helm untuk mengelola bagan Kubernetes, yang merupakan paket sumber daya Kubernetes yang telah dikonfigurasi sebelumnya.
Artikel ini menunjukkan cara mengonfigurasi dan menggunakan Helm dalam kluster Kubernetes di Azure Kubernetes Service (AKS).
- Artikel ini mengasumsikan Anda memiliki kluster AKS yang sudah ada. Jika Anda memerlukan kluster AKS, buat kluster menggunakan Azure CLI, Azure PowerShell, atau portal Azure.
- Kluster AKS Anda harus memiliki ACR terintegrasi. Untuk detail tentang membuat kluster AKS dengan ACR terintegrasi, lihat Mengautentikasi dengan Azure Container Registry dari Azure Kubernetes Service.
- Anda juga memerlukan Helm CLI yang terpasang, yaitu klien yang berjalan pada sistem pengembangan Anda. Ini memungkinkan Anda untuk memulai, menghentikan, dan mengelola aplikasi dengan Helm. Jika Anda menggunakan Azure Cloud Shell, Helm CLI sudah terpasang. Untuk petunjuk penginstalan di platform lokal Anda, lihat Memasang Helm.
Penting
Helm dimaksudkan untuk berjalan pada simpul Linux. Jika Anda memiliki simpul Windows Server di kluster Anda, Anda harus memastikan bahwa pod Helm hanya dijadwalkan untuk berjalan pada simpul Linux. Anda juga perlu memastikan bahwa setiap bagan Helm yang Anda pasang juga dijadwalkan untuk berjalan pada simpul yang benar. Perintah dalam artikel ini menggunakan node-selectors untuk memastikan pod dijadwalkan ke simpul yang benar, tetapi tidak semua bagan Helm dapat mengekspos pemilih simpul. Anda juga dapat mempertimbangkan untuk menggunakan opsi lain pada kluster Anda, seperti taint.
helm version
Gunakan perintah untuk memverifikasi bahwa Anda telah menginstal Helm 3.helm version
Contoh output berikut menunjukkan Helm versi 3.0.0 terinstal:
version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
Tambahkan repositori ingress-nginx menggunakan perintah repositori helm.
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
Cari bagan Helm yang dibuat sebelumnya menggunakan perintah pencarian helm.
helm search repo ingress-nginx
Contoh output ringkas berikut ini memperlihatkan beberapa bagan Helm yang tersedia untuk digunakan:
NAME CHART VERSION APP VERSION DESCRIPTION ingress-nginx/ingress-nginx 4.7.0 1.8.0 Ingress controller for Kubernetes using NGINX a...
Perbarui daftar bagan menggunakan perintah pembaruan repositori helm.
helm repo update
Contoh output berikut menunjukkan pembaruan repositori yang berhasil:
Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "ingress-nginx" chart repository Update Complete. ⎈ Happy Helming!⎈
Artikel ini menggunakan bagan Helm pengontrol masukkan NGINX, yang bergantung pada tiga gambar kontainer.
Gunakan
az acr import
untuk mengimpor gambar pengontrol ingress NGINX ke ACR Anda.REGISTRY_NAME=<REGISTRY_NAME> CONTROLLER_REGISTRY=registry.k8s.io CONTROLLER_IMAGE=ingress-nginx/controller CONTROLLER_TAG=v1.8.0 PATCH_REGISTRY=registry.k8s.io PATCH_IMAGE=ingress-nginx/kube-webhook-certgen PATCH_TAG=v20230407 DEFAULTBACKEND_REGISTRY=registry.k8s.io DEFAULTBACKEND_IMAGE=defaultbackend-amd64 DEFAULTBACKEND_TAG=1.5 az acr import --name $REGISTRY_NAME --source $CONTROLLER_REGISTRY/$CONTROLLER_IMAGE:$CONTROLLER_TAG --image $CONTROLLER_IMAGE:$CONTROLLER_TAG az acr import --name $REGISTRY_NAME --source $PATCH_REGISTRY/$PATCH_IMAGE:$PATCH_TAG --image $PATCH_IMAGE:$PATCH_TAG az acr import --name $REGISTRY_NAME --source $DEFAULTBACKEND_REGISTRY/$DEFAULTBACKEND_IMAGE:$DEFAULTBACKEND_TAG --image $DEFAULTBACKEND_IMAGE:$DEFAULTBACKEND_TAG
Catatan
Selain mengimpor gambar kontainer, Anda juga dapat mengimpor bagan Helm ke ACR Anda. Untuk informasi selengkapnya, lihat Dorong dan tarik bagan Helm ke registri kontainer Azure.
Instal bagan Helm menggunakan perintah helm install dan tentukan nama rilis dan nama bagan yang akan diinstal.
Tip
Contoh berikut membuat namespace layanan Kube untuk sumber daya ingress bernama ingress-basic dan dimaksudkan untuk bekerja di dalam namespace layanan tersebut. Tentukan namespace layanan untuk lingkungan Anda sendiri jika diperlukan.
ACR_URL=<REGISTRY_URL> # Create a namespace for your ingress resources kubectl create namespace ingress-basic # Use Helm to deploy an NGINX ingress controller helm install ingress-nginx ingress-nginx/ingress-nginx \ --version 4.0.13 \ --namespace ingress-basic \ --set controller.replicaCount=2 \ --set controller.nodeSelector."kubernetes\.io/os"=linux \ --set controller.image.registry=$ACR_URL \ --set controller.image.image=$CONTROLLER_IMAGE \ --set controller.image.tag=$CONTROLLER_TAG \ --set controller.image.digest="" \ --set controller.admissionWebhooks.patch.nodeSelector."kubernetes\.io/os"=linux \ --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz \ --set controller.admissionWebhooks.patch.image.registry=$ACR_URL \ --set controller.admissionWebhooks.patch.image.image=$PATCH_IMAGE \ --set controller.admissionWebhooks.patch.image.tag=$PATCH_TAG \ --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux \ --set defaultBackend.image.registry=$ACR_URL \ --set defaultBackend.image.image=$DEFAULTBACKEND_IMAGE \ --set defaultBackend.image.tag=$DEFAULTBACKEND_TAG \ --set defaultBackend.image.digest=""
Contoh output ringkas berikut menunjukkan status penyebaran sumber daya Kube yang dibuat oleh bagan Helm:
NAME: nginx-ingress LAST DEPLOYED: Wed Jul 28 11:35:29 2021 NAMESPACE: ingress-basic STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: The ingress-nginx controller has been installed. It may take a few minutes for the LoadBalancer IP to be available. You can watch the status by running 'kubectl --namespace ingress-basic get services -o wide -w nginx-ingress-ingress-nginx-controller' ...
Dapatkan EXTERNAL-IP layanan Anda menggunakan
kubectl get services
perintah .kubectl --namespace ingress-basic get services -o wide -w ingress-nginx-ingress-nginx-controller
Contoh output berikut menunjukkan EXTERNAL-IP untuk layanan ingress-nginx-ingress-nginx-controller :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR nginx-ingress-ingress-nginx-controller LoadBalancer 10.0.254.93 <EXTERNAL_IP> 80:30004/TCP,443:30348/TCP 61s app.kubernetes.io/component=controller,app.kubernetes.io/instance=nginx-ingress,app.kubernetes.io/name=ingress-nginx
Dapatkan daftar rilis yang diinstal pada kluster Anda menggunakan
helm list
perintah .helm list --namespace ingress-basic
Contoh output berikut menunjukkan rilis ingress-nginx yang disebarkan pada langkah sebelumnya:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION ingress-nginx ingress-basic 1 2021-07-28 11:35:29.9623734 -0500 CDT deployed ingress-nginx-3.34.0 0.47.0
Menyebarkan bagan Helm membuat sumber daya Kubernetes seperti pod, penyebaran, dan layanan.
Bersihkan sumber daya menggunakan perintah hapus instalan helm dan tentukan nama rilis Anda.
helm uninstall --namespace ingress-basic ingress-nginx
Contoh output berikut menunjukkan rilis bernama ingress-nginx telah dihapus instalasinya:
release "nginx-ingress" uninstalled
Hapus seluruh namespace sampel bersama dengan sumber daya menggunakan
kubectl delete
perintah dan tentukan nama namespace Anda.kubectl delete namespace ingress-basic
Untuk informasi selengkapnya tentang mengelola penyebaran aplikasi Kube dengan Helm, lihat dokumentasi Helm.
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: