Menyebarkan aplikasi pengujian ke Azure Kubernetes Service di Azure Stack Hub
Ini adalah panduan untuk membantu Anda mulai menggunakan layanan Azure Kubernetes Service (AKS) di Azure Stack Hub. Artikel ini menjelaskan cara menyebarkan beberapa aplikasi pengujian ke kluster Anda sehingga Anda dapat membiasakan diri dengan AKS di Azure Stack Hub. Fungsionalitas yang tersedia di Azure Stack Hub adalah subset dari apa yang tersedia di Azure global.
Sebelum memulai, pastikan Anda dapat membuat kluster AKS pada instans Azure Stack Hub Anda. Untuk instruksi tentang cara menyiapkan dan membuat kluster pertama Anda, lihat Menggunakan Azure Kubernetes Service di Azure Stack Hub dengan CLI.
Menyebarkan aplikasi pengujian
Jika stempel tersambung, Anda dapat mengikuti petunjuk ini untuk menyebarkan Prometheus dan Grafana ke kluster.
Unduh dan instal Helm 3:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh
Catatan
Untuk pengguna Windows gunakan Chocolatey untuk menginstal Helm:
choco install kubernetes-helm
Pastikan Anda memiliki repositori helm stabil terbaru:
helm repo add stable https://charts.helm.sh/stable helm repo update
Instal Prometheus.
helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
Berikan akses administratif kluster ke akun Prometheus. Izin yang lebih rendah lebih baik untuk alasan keamanan.
kubectl create clusterrolebinding my-prometheus-server --clusterrole=cluster-admin --serviceaccount=default:my-prometheus-server
Instal Grafana.
helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
Dapatkan rahasia untuk portal Grafana.
kubectl get secret --namespace default my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Catatan
Di Windows gunakan cmdlet PowerShell berikut untuk mendapatkan rahasianya:
\$env:Path = \$env:Path + ";\$env:USERPROFILE\\.azure-kubectl"
[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String(\$(kubectl get secret --namespace default my-grafana -o jsonpath="{.data.admin-password}")))
Menyebarkan aplikasi ke AKS menggunakan ACR
Pada titik ini, mesin klien Anda tersambung ke kluster dan Anda dapat melanjutkan menggunakan kubectl untuk mengonfigurasi kluster dan menyebarkan aplikasi Anda. Jika Anda juga menguji layanan Azure Container Registry (ACR), Anda dapat mengikuti petunjuk di bawah ini.
Rahasia registri Docker untuk mengakses ACR lokal
Jika Anda menyebarkan gambar aplikasi dari ACR lokal, Anda perlu menyimpan rahasia agar kluster Kubernetes memiliki akses untuk menarik gambar dari registri. Untuk melakukan ini, Anda harus memberikan ID perwakilan layanan (SPN) dan Rahasia, menambahkan SPN sebagai kontributor ke registri sumber dan membuat rahasia Kubernetes. Anda juga perlu memperbarui file YAML Anda untuk merujuk rahasianya.
Menambahkan SPN ke ACR
Tambahkan SPN sebagai kontributor ACR.
Catatan
Skrip ini telah dimodifikasi dari situs Azure Container Registry (sample bash) karena Azure Stack Hub belum memiliki peran ACRPULL. Sampel ini adalah skrip PowerShell, yang setara dapat ditulis dalam bash. Pastikan untuk menambahkan nilai untuk sistem Anda.
# Modify for your environment. The ACR_NAME is the name of your Azure Container
# Registry, and the SERVICE_PRINCIPAL_ID is the SPN's 'appId' or
# one of its 'servicePrincipalNames' values.
ACR_NAME=mycontainerregistry
SERVICE_PRINCIPAL_ID=<service-principal-ID>
# Populate value required for subsequent command args
ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query id --output tsv)
# Assign the desired role to the SPN.
az role assignment create --assignee $SERVICE_PRINCIPAL_ID --scope $ACR_REGISTRY_ID --role contributor
Membuat rahasia di Kubernetes
Gunakan perintah berikut untuk menambahkan rahasia ke kluster Kubernetes. Pastikan untuk menambahkan nilai untuk sistem Anda dalam cuplikan kode.
kubectl create secret docker-registry <secret name> \
kubectl create secret docker-registry <secret name> \
--docker-server=<ACR container registry URL> \
--docker-username=<service principal ID> \
--docker-password=<service principal secret>
Contoh referensi rahasia di aplikasi Anda YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: democr2.azsacr.redmond.ext-n31r1208.masd.stbtest.microsoft.com/library/nginx:1.17.3
imagePullPolicy: Always
ports:
- containerPort: 80
imagePullSecrets:
- name: democr2
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
selector:
app: nginx
ports:
- protocol: "TCP"
port: 80
targetPort: 80
type: LoadBalancer
Langkah berikutnya
Menggunakan Azure Kubernetes Service di Azure Stack Hub dengan CLI