Apagado y Encendido Automático de AKS Utilizando Azure Automation

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:

  1. Parámetros: El script comienza definiendo parámetros como SubscriptionId, ResourceGroupName, AksName y Action. Estos son cruciales para identificar el clúster AKS objetivo y especificar la acción (iniciar o detener) a realizar.
  2. 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.
  3. 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.
  4. 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!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *