La ejecución de un clúster o contenedores AKS en Azure no elimina la necesidad de monitorizar nuestras cargas de trabajo. Mirando a Azure es sencillo configurar e implementar una solución de monitorización para AKS. Todo lo que necesitamos para hacer esto son los siguientes componentes de Azure.
Primero, necesitamos un espacio de trabajo de Azure Log Analytics, y después la solución de monitorización de contenedores para Log Analytics. Log Analytics viene con un SKU de nivel gratuito que incluye max. 500 MB de carga de datos diariamente y 7 días de retención de datos, que debería ser suficiente para comenzar.
Si aún no tenemos un área de trabajo de Log Analytics con la solución de monitorización de contenedores, podemos implementar una con esta plantilla de Azure Resource Manager (ARM).
Iniciamos Azure Cloud Shell y ejecute el siguiente comando, donde solo tenemos que definir el nombre para el área de trabajo de Log Analytics y el grupo de recursos en el que deseamos implementarlo.
1 |
az group deployment create --resource-group myResourceGroupName --template-uri https://raw.githubusercontent.com/danialonso/arm/master/AzureContainerMonitoring.json --parameters workspaceName=myWorkspaceName --verbose |
El siguiente paso sería seguir el tutorial AKS de documentos de Azure con varios pasos manuales para implementar el agente de OMS en los nodos del agente AKS. Podemos seguir esos pasos por nuestra cuenta, o usar estos scripts de implementación. Dependiendo de nuestras preferencias, podemos utilizar un script de bash con la CLI de Azure o un script de PowerShell Core.
Bash:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/bin/bash omsWorkspaceName=$1 resourceGroupName=$2 gitHubTemplateUri='https://raw.githubusercontent.com/danialonso/arm/master/logAnalyticsWorkspace.json' gitHubLogAnalyticsAgentUri='https://raw.githubusercontent.com/danialonso/arm/master/oms-daemonset.yaml' #Get Log Analytics workspaceId and primary key, and deploy Log Analytics agent on the AKS cluster output=$(az group deployment create --resource-group $resourceGroupName --template-uri $gitHubTemplateUri --parameters workspaceName=$omsWorkspaceName --verbose) workspaceId=$(echo $output|jq -r .properties.outputs.workspaceId.value) primaryKey=$(echo $output|jq -r .properties.outputs.primaryKey.value) workspaceIdEncoded=$(echo $workspaceId|base64 --wrap=0) primaryKeyEncoded=$(echo $primaryKey|base64 --wrap=0) echo "apiVersion: v1 data: KEY: $primaryKeyEncoded WSID: $workspaceIdEncoded kind: Secret metadata: name: omsagent-secret namespace: default type: Opaque" > omsagent-secret.yaml kubectl apply -f ./omsagent-secret.yaml wget $gitHubLogAnalyticsAgentUri --output-document=oms-daemonset.yaml kubectl apply -f ./oms-daemonset.yaml |
PowerShell Core:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#Parameters for AKS OMS deployment Param( [Parameter(Mandatory=$true,Position=1)] [string]$omsWorkspaceName, [Parameter(Mandatory=$true,Position=2)] [string]$resourceGroupName ) #Variables for AKS OMS deployment $gitHubTemplateUri='https://raw.githubusercontent.com/danialonso/arm/master/logAnalyticsWorkspace.json' $gitHubLogAnalyticsAgentUri='https://raw.githubusercontent.com/danialonso/arm/master/oms-daemonset.yaml' #Get Log Analytics workspaceId and primary key, and deploy Log Analytics agent on the AKS cluster $output=az group deployment create --resource-group $resourceGroupName --template-uri $gitHubTemplateUri --parameters workspaceName=$omsWorkspaceName --verbose|ConvertFrom-Json $workspaceId=$output.properties.outputs.workspaceId.value $primaryKey=$output.properties.outputs.primaryKey.value $workspaceIdEncoded=[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($workspaceId)) $primaryKeyEncoded=[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($primaryKey)) $yamlDefinition='apiVersion: v1 data: KEY: '+$primaryKeyEncoded+' WSID: '+$workspaceIdEncoded+' kind: Secret metadata: name: omsagent-secret namespace: default type: Opaque' Write-Output $yamlDefinition > omsagent-secret.yaml kubectl apply -f ./omsagent-secret.yaml Invoke-WebRequest $gitHubLogAnalyticsAgentUri -OutFile ./oms-daemonset.yaml kubectl apply -f ./oms-daemonset.yaml |
Lanzar estos scripts es sencillo, por ejemplo, este último que he añadido lo podemos lanzar de la siguiente manera:
1 2 |
Invoke-WebRequest https://raw.githubusercontent.com/danialonso/arm/master/deployOMSagentAKS.ps1 -OutFile ./deployOMSagentAKS.ps1 ./deployOMSagentAKS.ps1 -omsWorkspaceName myWorkspaceName -resourceGroupName myResourceGroupName -Verbose |
Después de ejecutar el script, se crea el secreto de Kubernetes con el ID del espacio de trabajo y la clave principal para la implementación del agente de OMS en forma de un archivo YAML. El último paso es el despliegue del agente de OMS a través de un archivo YAML.
Si todo ha ido bien, en un par de minutos empezar a entrar datos.