Implementación de aplicaciones de prueba para Azure Kubernetes Service en Azure Stack Hub

Esta es una guía para empezar a usar el servicio Azure Kubernetes Service (AKS) en Azure Stack Hub. En este artículo se describe cómo implementar algunas aplicaciones de prueba en el clúster para que pueda familiarizarse con AKS en Azure Stack Hub. La funcionalidad disponible en Azure Stack Hub es un subconjunto de lo que está disponible en Azure global.

Antes de empezar, asegúrese de que puede crear un clúster de AKS en su instancia de Azure Stack Hub. Para obtener instrucciones sobre cómo configurar y crear el primer clúster, consulte Uso de Azure Kubernetes Service en Azure Stack Hub con la CLI.

Implementación de aplicaciones de prueba

Si el stamp está conectado, puede seguir estas instrucciones para implementar Prometheus y Grafana en el clúster.

  1. Descarga e instalación de 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
    

    Nota

    Para un usuario de Windows use Chocolatey para instalar Helm:

    choco install kubernetes-helm
    
  2. Asegúrese de que tiene el repositorio estable más reciente de Helm:

    helm repo add stable https://charts.helm.sh/stable
    helm repo update
    
  3. Instalación de Prometheus.

    helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
    
  4. Dé acceso administrativo al clúster en la cuenta de Prometheus. Los permisos más bajos son mejores por motivos de seguridad.

    kubectl create clusterrolebinding my-prometheus-server --clusterrole=cluster-admin --serviceaccount=default:my-prometheus-server
    
  5. Instalación de Grafana.

    helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
    
  6. Obtenga el secreto del portal de Grafana.

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

Nota

En Windows use los siguientes cmdlets de PowerShell para obtener el secreto:

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

Implementación de aplicaciones en AKS mediante ACR

En este momento, la máquina cliente está conectada al clúster y puede continuar con el uso de kubectl para configurar el clúster e implementar las aplicaciones. Si también está probando el servicio Azure Container Registry (ACR), puede seguir las instrucciones siguientes.

Secreto del registro de Docker para acceder a ACR local

Si va a implementar imágenes de aplicación desde un ACR local, deberá almacenar un secreto para que el clúster de Kubernetes tenga acceso para extraer las imágenes del registro. Para ello, deberá proporcionar un identificador de entidad de servicio (SPN) y un secreto, agregar el SPN como colaborador al registro de origen y crear el secreto de Kubernetes. También deberá actualizar el archivo YAML para hacer referencia al secreto.

Adición del SPN a ACR

Agregue el SPN como colaborador a ACR.

Nota

Este script se ha modificado desde el sitio de Azure Container Registry (ejemplo de Bash), porque Azure Stack Hub aún no tiene el rol ACRPULL. Este ejemplo es un script de PowerShell; se puede escribir un equivalente en Bash. Asegúrese de agregar los valores de su sistema.

# 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

Creación del secreto en Kubernetes

Use el siguiente comando para agregar el secreto al clúster de Kubernetes. Asegúrese de agregar los valores de su sistema en los fragmentos de código.

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> 

Ejemplo de referencia al secreto en la aplicación 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

Pasos siguientes

Uso de Azure Kubernetes Service en Azure Stack Hub con la CLI