Microsoft Azure¶
La meilleure méthode pour sauvegarder les clusters Kubernetes exécutés sur la plateforme Azure consiste à donner à l’agent de sauvegarde Afi l’accès nécessaire pour gérer les instantanés de volumes directement via l’API Azure, plutôt que via l’API CSI générique. Grâce à cette intégration, Afi utilise l’API de suivi des blocs modifiés fournie par Azure pour effectuer des sauvegardes incrémentielles rapides et légères.
Un cluster Azure Kubernetes Service (AKS) a besoin d’une identité pour accéder aux ressources Azure telles que les disques managés et les instantanés. Cette identité peut être de l’un des types suivants :
- identité managée : une identité managée est un type d’identité géré par la plateforme Azure qui n’oblige pas l’utilisateur à provisionner ni à renouveler des secrets. Pour plus d’informations sur les identités managées dans Microsoft Entra ID, consultez Identités managées.
- principal de service : un principal de service est une identité de sécurité utilisée par les applications, services et outils d’automatisation créés par l’utilisateur pour accéder aux ressources Azure. Considérez-le comme une « identité utilisateur » (identifiant et mot de passe ou certificat) dotée d’un rôle précis et d’autorisations strictement contrôlées pour accéder à vos ressources. Pour plus d’informations sur les principaux de service dans Microsoft Entra ID, consultez Objets application et principal de service.
Les identités managées sont essentiellement une enveloppe autour des principaux de service qui simplifie leur gestion. Les mêmes exigences d’autorisation s’appliquent aux principaux de service et aux identités managées.
Pour procéder à la configuration, recherchez le groupe de ressources associé à votre cluster AKS, configurez une identité managée ou un principal de service capable de gérer les instantanés et les disques dans votre cluster AKS, puis communiquez ses identifiants à l’agent de sauvegarde Afi.
Rechercher le groupe de ressources associé à votre cluster AKS¶
Lorsqu’un cluster AKS est créé dans un groupe de ressources donné, AKS crée un groupe de ressources supplémentaire associé à ce cluster, dans lequel se trouvent ses aks-nodepool, disks et snapshots. Pour utiliser directement l’API AKS afin de gérer les instantanés, Afi Kubernetes Backup doit accéder à ce groupe de ressources. Le nom du groupe de ressources respecte le format mc_{resource-group}_{cluster}_{zone}.
Par exemple, si votre cluster AKS se trouve dans le groupe de ressources k8s et l’emplacement Azure eastus, le groupe de ressources correspondant doit être mc_k8s_kn-0_eastus.
Configurer l’accès à l’API Azure à l’aide d’une identité managée¶
Prérequis¶
Pour utiliser cette option de configuration, le cluster AKS doit prendre en charge les identités managées. Les articles suivants de la documentation Azure expliquent comment créer un cluster AKS prenant en charge les identités managées ou mettre à niveau un cluster AKS existant afin qu’il utilise des identités managées :
- Créer un cluster AKS avec une identité managée
- Mettre à jour un cluster AKS pour utiliser une identité managée
Créer un rôle personnalisé¶
Vous trouverez ci-dessous la description JSON du rôle personnalisé Azure k8sbackup requis pour gérer les instantanés (remplacez ${SubscriptionId} par l’identifiant de votre abonnement Azure). Enregistrez-la dans un fichier nommé role.json :
{
"Name": "k8sbackup",
"IsCustom": true,
"Description": "",
"Actions": [
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Authorization/*/read"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/${SubscriptionId}"
]
}
Créez un rôle personnalisé :
Le nouveau rôle personnalisé est désormais disponible et peut être attribué aux utilisateurs, groupes ou principaux de service de la même manière que les rôles intégrés. Pour plus d’informations, consultez l’article Créer un rôle personnalisé de la documentation Azure.
Créer une identité managée¶
Créez une identité managée myIdentity en exécutant la commande az identity suivante :
La sortie de la commande doit ressembler à ceci :
{
"clientId": "<client-id>",
"clientSecretUrl": "<clientSecretUrl>",
"id": "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity",
"location": "eastus",
"name": "myIdentity",
"principalId": "<principal-id>",
"resourceGroup": "myResourceGroup",
"tags": {},
"tenantId": "<tenant-id>",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}
Enregistrez la valeur clientId pour une utilisation ultérieure.
Ajouter une attribution de rôle pour l’identité du plan de contrôle¶
Attribuez le rôle k8sbackup à l’identité managée myIdentity créée à l’étape précédente. L’identité myIdentity pourra ainsi gérer les disques et instantanés Azure dans le groupe de ressources associé à votre cluster AKS (myResourceGroup).
az role assignment create --assignee ${clientId} --role "k8sbackup" \
--scope subscriptions/${SubscriptionId}/resourceGroups/myResourceGroup
Attribuer l’identité managée au groupe de machines virtuelles identiques¶
Attribuez l’identité managée myIdentity au groupe de machines virtuelles identiques existant associé au cluster AKS, puis mettez à jour les instances.
Créer le Secret azure-api-key et redémarrer l’agent de sauvegarde¶
Créez un Kubernetes Secret nommé azure-api-key dans l’espace de noms où l’agent de sauvegarde Afi est installé :
Redémarrez le daemonset qui crée les instantanés des volumes persistants :
Configurer l’accès à l’API Azure à l’aide d’un principal de service¶
Créer un rôle personnalisé¶
Vous trouverez ci-dessous la description JSON du rôle personnalisé Azure k8sbackup requis pour gérer les instantanés (remplacez ${SubscriptionId} par l’identifiant de votre abonnement Azure). Enregistrez-la dans un fichier nommé role.json :
{
"Name": "k8sbackup",
"IsCustom": true,
"Description": "",
"Actions": [
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Authorization/*/read"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/${SubscriptionId}"
]
}
Créez un rôle personnalisé :
Le nouveau rôle personnalisé k8sbackup est désormais disponible et peut être attribué aux utilisateurs, groupes ou principaux de service de la même manière que les rôles intégrés. Pour plus d’informations, consultez l’article Créer un rôle personnalisé de la documentation Azure.
Créer un principal de service¶
Créez un principal de service myServicePrincipal et configurez son accès au groupe de ressources Azure myResourceGroup :
az ad sp create-for-rbac --name myServicePrincipal \
--role k8sbackup \
--scopes subscriptions/${SubscriptionId}/resourceGroups/myResourceGroup
La sortie de la commande doit ressembler à ceci :
{
"appId": "<appId>",
"displayName": "myServicePrincipal",
"password": "<password>",
"tenant": "<tenant>"
}
Enregistrez les valeurs appId, password et tenant pour une utilisation ultérieure.
Créer le Secret azure-api-key et redémarrer l’agent de sauvegarde¶
Créez un Kubernetes Secret nommé azure-api-key dans l’espace de noms où l’agent de sauvegarde Afi est installé :
kubectl -n backup-agent create secret generic azure-api-key \
--from-literal=client-id=${appId} \
--from-literal=client-secret=${password} \
--from-literal=tenant-id=${tenant}
Redémarrez le daemonset qui crée les instantanés des volumes persistants :