Aracılığıyla paylaş


Test uygulamalarını Azure Stack Hub'da Azure Kubernetes Service dağıtma

Bu kılavuz, Azure Stack Hub'da Azure Kubernetes Service (AKS) hizmetini kullanmaya başlamanıza yardımcı olur. Bu makalede, Azure Stack Hub'da AKS hakkında bilgi sahibi olabilmeniz için kümenize bazı test uygulamalarının nasıl dağıtılacağı açıklanır. Azure Stack Hub'da sağlanan işlevsellik, genel Azure'da kullanılabilenlerin bir alt kümesidir .

Başlamadan önce Azure Stack Hub örneğinizde bir AKS kümesi oluşturamaya özen gösterin. İlk kümenizi ayarlama ve oluşturma hakkında yönergeler için bkz. CLI ile Azure Stack Hub'da Azure Kubernetes Service kullanma.

Test uygulamalarını dağıtma

Damga damganız bağlıysa prometheus ve Grafana'yı kümeye dağıtmak için bu yönergeleri izleyebilirsiniz.

  1. Helm 3'ü indirin ve yükleyin:

    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
    

    Not

    Windows kullanıcısı Helm'i yüklemek için Chocolatey kullanır:

    choco install kubernetes-helm
    
  2. En son kararlı helm deposuna sahip olduğunuzdan emin olun:

    helm repo add stable https://charts.helm.sh/stable
    helm repo update
    
  3. Prometheus'u yükleyin.

    helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
    
  4. Kümeye Prometheus hesabına yönetici erişimi verin. Düşük izinler güvenlik nedenleriyle daha iyidir.

    kubectl create clusterrolebinding my-prometheus-server --clusterrole=cluster-admin --serviceaccount=default:my-prometheus-server
    
  5. Grafana'ya yükleyin.

    helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
    
  6. Grafana portalı için gizli dizi alın.

    kubectl get secret --namespace default my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
    

Not

Windows'da gizli diziyi almak için aşağıdaki PowerShell cmdlet'lerini kullanın:

\$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}")))

ACR kullanarak AKS'ye uygulama dağıtma

Bu noktada istemci makineniz kümeye bağlanır ve kubectl kullanarak kümeyi yapılandırabilir ve uygulamalarınızı dağıtabilirsiniz. Azure Container Registry (ACR) hizmetini de test ediyorsanız aşağıdaki yönergeleri izleyebilirsiniz.

Yerel ACR'ye erişmek için Docker kayıt defteri gizli dizisi

Uygulama görüntülerini yerel bir ACR'den dağıtıyorsanız Kubernetes kümesinin görüntüleri kayıt defterinden çekebilmesi için bir gizli dizi depolamanız gerekir. Bunu yapmak için bir hizmet sorumlusu kimliği (SPN) ve Gizli Dizi sağlamanız, SPN'yi kaynak kayıt defterine katkıda bulunan olarak eklemeniz ve Kubernetes gizli dizisini oluşturmanız gerekir. Gizli diziye başvurmak için YAML dosyanızı da güncelleştirmeniz gerekir.

SPN'yi ACR'ye ekleme

SPN'yi ACR'ye katkıda bulunan olarak ekleyin.

Not

Azure Stack Hub henüz ACRPULL rolüne sahip olmadığından bu betik Azure Container Registry sitesinden (bash örneği) değiştirildi. Bu örnek bir PowerShell betiğidir ve bash'te eşdeğeri yazılabilir. Sisteminizin değerlerini eklediğinizden emin olun.

# 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

Kubernetes'te gizli dizi oluşturma

Kubernetes kümesine gizli dizi eklemek için aşağıdaki komutu kullanın. Kod parçacıklarına sisteminizin değerlerini eklediğinizden emin olun.

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> 

Uygulama YAML'nizde gizli diziye başvurma örneği

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

Sonraki adımlar

CLI ile Azure Stack Hub'da Azure Kubernetes Service kullanma