En entornos de nube como Azure, es fundamental optimizar el uso de recursos para reducir costos y mejorar la eficiencia operativa. Una de las prácticas recomendadas es apagar los cluster de AKS cuando no están en uso y encenderlas solo cuando sea necesario. En este blog, exploraremos cómo automatizar este proceso en Azure y un script de PowerShell ejecutado desde un Automation Account.
[cmdletbinding()]
Param (
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[String]$SubscriptionId,
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[String]$ResourceGroupName,
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[String]$AksName,
[Parameter(Mandatory=$true)]
[ValidateSet("Start", "Stop")]
[String]$Action
)
$global:InformationPreference = "Continue"
$global:ErrorActionPreference = "Stop"
Write-Information "##[$($MyInvocation.MyCommand)] Initializing Context Variables and Preferences"
Write-Information "##[$($MyInvocation.MyCommand)] Configuring the Azure Context with the administrative identity assigned by the AKS user."
$null = Disable-AzContextAutosave -Scope Process
$AzureContext = (Connect-AzAccount -Identity -AccountId 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' -Subscription $SubscriptionId -Scope Process -SkipContextPopulation).context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext
Write-Information "##[$($MyInvocation.MyCommand)] AKS en Azure..."
Set-AzAksPowerState -SubscriptionId $SubscriptionId -ResourceGroupName $ResourceGroupName -AksName $AksName -Action $Action -DefaultProfile $AzureContext -Verbose
Comprendiendo el Script:
- Parámetros: El script comienza definiendo parámetros como
SubscriptionId
,ResourceGroupName
,AksName
yAction
. Estos son cruciales para identificar el clúster AKS objetivo y especificar la acción (iniciar o detener) a realizar. - Configuración de Preferencias: Luego, el script establece preferencias globales para la gestión de información y errores mediante
$global:InformationPreference
y$global:ErrorActionPreference
. - Inicialización del Contexto de Azure: Inicializa el contexto de Azure, asegurando un entorno limpio para el runbook. Se utiliza la identidad administrada asignada por el usuario para AKS para una autenticación segura.
- Invocación del Estado de Energía de Azure AKS: El script aprovecha el cmdlet
Set-AzAksPowerState
para iniciar el cambio de estado de energía deseado (iniciar o detener) para el clúster AKS especificado.
Conclusión: Este script, cuando se incorpora a un runbook de Azure Automation, te permite gestionar dinámicamente el estado de energía de tus clústeres AKS. Ya sea para conservar recursos durante horas no laborables o escalar para satisfacer una mayor demanda, este script de automatización es una herramienta versátil en tu arsenal de gestión de Azure. ¡Implementa hoy y observa la eficiencia que aporta a tus operaciones AKS!