Bagikan melalui


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.

  1. 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
    
  2. Pastikan Anda memiliki repositori helm stabil terbaru:

    helm repo add stable https://charts.helm.sh/stable
    helm repo update
    
  3. Instal Prometheus.

    helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
    
  4. 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
    
  5. Instal Grafana.

    helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
    
  6. 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