Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Kubernetes Service (AKS) le permite ejecutar data API Builder en un clúster de Kubernetes administrado junto con otras cargas de trabajo. En esta guía se explica cómo crear una imagen de contenedor personalizada que incluya el archivo de configuración, insertarla en Azure Container Registry (ACR) e implementarla en AKS con un manifiesto de Kubernetes.
Prerrequisitos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- La CLI de Azure instalada
- kubectl instalado
- Docker instalado
- CLI para el generador de APIs de datos. Instalación de la CLI
- Un clúster de AKS existente Creación de un clúster de AKS
- Una base de datos compatible existente accesible desde AKS
Compilación del archivo de configuración
Cree un directorio local para los archivos de configuración.
Inicialice un archivo de configuración base mediante
dab init. Utiliza la función@env()para la cadena de conexión, de modo que el secreto se inserte en tiempo de ejecución y no esté incrustado en la imagen.dab init \ --database-type mssql \ --connection-string "@env('DATABASE_CONNECTION_STRING')"Agregue al menos una entidad mediante
dab add. Repita para cada tabla o vista que quiera exponer.dab add Books \ --source dbo.Books \ --permissions "anonymous:read"Revise
dab-config.jsonantes de continuar.
Compilación e inserción de una imagen de contenedor personalizada
Cree una imagen que incluya dab-config.json en /App/dab-config.json.
Cree una instancia de Azure Container Registry si aún no tiene una.
az acr create \ --resource-group <resource-group> \ --name <registry-name> \ --sku Basic \ --admin-enabled trueCree un
Dockerfileen el mismo directorio quedab-config.json.FROM mcr.microsoft.com/azure-databases/data-api-builder:latest COPY dab-config.json /App/dab-config.jsonCompile e inserte la imagen mediante ACR Tasks.
az acr build \ --registry <registry-name> \ --image dab:latest \ .Anote la referencia de imagen completa:
<registry-name>.azurecr.io/dab:latest.
Conexión de AKS a ACR
Otorgue al clúster AKS acceso de extracción al registro.
az aks update \
--name <cluster-name> \
--resource-group <resource-group> \
--attach-acr <registry-name>
Almacenamiento de la cadena de conexión como un secreto de Kubernetes
Almacene la cadena de conexión de la base de datos como un secreto de Kubernetes para que nunca esté en el archivo de manifiesto.
kubectl create secret generic dab-secrets \
--from-literal=DATABASE_CONNECTION_STRING="<your-connection-string>"
Advertencia
Nunca coloque cadenas de conexión directamente en archivos de manifiesto de Kubernetes o imágenes de contenedor. Utilice secretos o Azure Key Vault.
Creación del manifiesto de Kubernetes
Cree un archivo denominado dab-deployment.yaml con el siguiente contenido. Reemplace <registry-name> con el nombre de su ACR.
apiVersion: apps/v1
kind: Deployment
metadata:
name: dab
labels:
app: dab
spec:
replicas: 2
selector:
matchLabels:
app: dab
template:
metadata:
labels:
app: dab
spec:
containers:
- name: dab
image: <registry-name>.azurecr.io/dab:latest
ports:
- containerPort: 5000
env:
- name: DATABASE_CONNECTION_STRING
valueFrom:
secretKeyRef:
name: dab-secrets
key: DATABASE_CONNECTION_STRING
readinessProbe:
httpGet:
path: /health
port: 5000
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /health
port: 5000
initialDelaySeconds: 15
periodSeconds: 20
---
apiVersion: v1
kind: Service
metadata:
name: dab-service
spec:
selector:
app: dab
ports:
- protocol: TCP
port: 80
targetPort: 5000
type: LoadBalancer
Nota:
readinessProbe y livenessProbe usan el punto de conexión DAB/health. Para obtener más información, consulte Comprobaciones de estado.
Implementación en AKS
Obtenga las credenciales del clúster.
az aks get-credentials \ --resource-group <resource-group> \ --name <cluster-name>Aplique el manifiesto.
kubectl apply -f dab-deployment.yamlObserve el lanzamiento hasta que los pods estén listos.
kubectl rollout status deployment/dabObtenga la dirección IP externa asignada al servicio.
kubectl get service dab-serviceLa
EXTERNAL-IPcolumna muestra la dirección IP pública. Permita un minuto para que el equilibrador de carga se aprovisione.
Comprobación de la implementación
Vaya a
http://<external-ip>/health. Una respuesta correcta tiene el siguiente aspecto:{ "status": "healthy", "version": "2.0.0", "app-name": "dab_oss_2.0.0" }Probar un endpoint de entidad.
curl http://<external-ip>/api/Books
Escalado de la implementación
Cambie el recuento de réplicas para escalar horizontalmente.
kubectl scale deployment/dab --replicas=4
O actualice spec.replicas en dab-deployment.yaml y vuelva a aplicarlo.
Limpieza de recursos
Retire la implementación y el servicio cuando ya no sean necesarios.
kubectl delete -f dab-deployment.yaml
kubectl delete secret dab-secrets
Para eliminar el clúster y el registro de AKS, elimine el grupo de recursos.
az group delete \
--name <resource-group> \
--yes --no-wait