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.
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
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
Instalación de Prometheus.
helm install my-prometheus stable/prometheus --set server.service.type=LoadBalancer --set rbac.create=false
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
Instalación de Grafana.
helm install my-grafana stable/grafana --set service.type=LoadBalancer --set rbac.create=false
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