
Pasos rápidos para crear un servicio kubernetes
- Creamos un recurso kubernetes service, a tener en cuenta
- Crear un grupo de recursos propios, facilita la gestión y la limpieza (usaremos kubernetes)
- Elegimos un nombre, se usará también como DNS (usaremos dummy)
- Elegir el tamaño de nodo adecuado, con la restricción de que tenga al menos 2 cores y 4GB de RAM (B2s estándar)
- Elegir el número de nodos
- Usamos la herramienta Azure CLI
- az login
Logearse dentro de la plataforma - az aks get-credentials –resource-group kubernetes –name dummy
Actualiza el contexto kubernetes y se conecta al cluster, usando la herramienta de docker desktop se pueden ver todos los contextos de kubernetes activos. - Se puede verificar usando el comando kubectl get nodes donde se pueden ver los nodos que habían sido creados
- az login
- A partir de este punto se pueden usar los comandos de kubernetes necesarios para desplegar como kubectl create
Creación de disco
Es muy común que se quiera crear un volumen de datos asociado a un cluster kubernetes, un ejemplo sería este:
kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
name: azure-disk
provisioner: kubernetes.io/azure-disk
parameters:
storageaccounttype: Standard_LRS
kind: Managed
En este caso no hace falta crear un volumen persistente porque Azure Disks soporta aprovisionamiento dinámico. Este es un ejemplo para una base de datos, hay que establecer la contraseña con:
kubectl create secret generic
mssql –from-literal=SA_PASSWORD=»Password_123″
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: azure-volume-claim
spec:
storageClassName: azure-disk
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
spec:
containers:
- name: myapp-database
image: mcr.microsoft.com/mssql/server
ports:
- containerPort: 1433
env:
- name: "ACCEPT_EULA"
value: "Y"
- name: "SA_PASSWORD"
valueFrom:
secretKeyRef:
name: mssql
key: SA_PASSWORD
- name: "MSSQL_PID"
value: "Express"
volumeMounts:
- name: mssqldb
mountPath: /var/opt/mssql
volumes:
- name: mssqldb
persistentVolumeClaim:
claimName: azure-volume-claim
Podemos crear también un balanceador para acceder a la base de datos.
apiVersion: v1
kind: Service
metadata:
name: myapp-db-svc
spec:
selector:
app: myapp-db
ports:
- protocol: TCP
port: 1433
targetPort: 1433
type: LoadBalancer
Este script habilitará una IP externa que se puede usar para acceder a la base de datos, cuando no se necesite acceder se puede eliminar este balanceador.