Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
AWSSupport-SetupK8sApiProxyForEKS
Description
Le runbook AWSSupport-SetupK8sApiProxyForEKS d'automatisation permet de créer une AWS Lambda fonction qui agit comme un proxy pour effectuer des appels d'API du plan de contrôle vers le point de terminaison du cluster Amazon Elastic Kubernetes Service. Il sert de module de base pour les runbooks qui nécessitent de passer des appels d'API au plan de contrôle pour automatiser les tâches et résoudre les problèmes liés à un cluster Amazon EKS.
Important
Toutes les ressources créées par cette automatisation sont étiquetées afin de pouvoir être facilement retrouvées. Les balises utilisées sont les suivantes :
-
AWSSupport-SetupK8sApiProxyForEKS: true
Note
-
L'automatisation est un runbook auxiliaire et ne peut pas être exécutée en tant que runbook autonome. Il est invoqué en tant qu'automatisation enfant pour les runbooks qui nécessitent des appels d'API du plan de contrôle vers le cluster Amazon EKS.
-
Veuillez vous assurer de
Cleanupfonctionner après utilisation pour éviter des coûts indésirables.
Type de document
Automatisation
Propriétaire
Amazon
Plateformes
Linux
Paramètres
-
AutomationAssumeRole
Type : Chaîne
Description : (Facultatif) Le nom de ressource Amazon (ARN) du rôle Gestion des identités et des accès AWS (IAM) qui permet à Systems Manager Automation d'effectuer les actions en votre nom. Si aucun rôle n'est spécifié, Systems Manager Automation utilise les autorisations de l'utilisateur qui démarre ce runbook.
-
ClusterName
Type : Chaîne
Description : (Obligatoire) Le nom du cluster Amazon Elastic Kubernetes Service.
-
Opération
Type : Chaîne
Description : (Obligatoire) Opération à effectuer :
Setupprovisionne la fonction Lambda du compte,Cleanupdéprovisionne les ressources créées lors de la phase de configuration.Valeurs autorisées :
Setup|CleanupPar défaut : Configuration
-
LambdaRoleArn
Type : Chaîne
Description : (Facultatif) L'ARN du rôle IAM qui permet à la AWS Lambda fonction d'accéder aux AWS services et ressources requis. Si aucun rôle n'est spécifié, cette automatisation de Systems Manager créera un rôle IAM pour Lambda dans votre compte avec le nom
Automation-K8sProxy-Role-<ExecutionId>qui inclut les politiques gérées :AWSLambdaBasicExecutionRoleet.AWSLambdaVPCAccessExecutionRole
Fonctionnement
Le runbook exécute les étapes suivantes :
-
Valide que l'automatisation s'exécute en tant qu'exécution enfant. Le runbook ne fonctionnera pas lorsqu'il est invoqué en tant que runbook autonome car il n'effectue aucun travail significatif à lui seul.
-
Vérifie la CloudFormation pile existante pour la fonction Lambda proxy pour le cluster spécifié.
-
Si la pile existe, l'infrastructure existante est réutilisée au lieu de la recréer.
-
Un compteur de référence est géré à l'aide de balises pour garantir qu'un runbook ne supprime pas l'infrastructure s'il est réutilisé par un autre runbook pour le même cluster.
-
-
Effectuez le type d'opération (
Setup/Cleanup) spécifié pour l'invocation :-
Configuration : crée ou décrit des ressources existantes.
Nettoyage : supprime les ressources provisionnées si l'infrastructure n'est utilisée par aucun autre runbook.
-
Autorisations IAM nécessaires
Le AutomationAssumeRole paramètre nécessite les autorisations suivantes si elles ne LambdaRoleArn sont pas transmises :
-
cloudformation:CreateStack -
cloudformation:DescribeStacks -
cloudformation:DeleteStack -
cloudformation:UpdateStack -
ec2:CreateNetworkInterface -
ec2:DescribeNetworkInterfaces -
ec2:DescribeRouteTables -
ec2:DescribeSecurityGroups -
ec2:DescribeSubnets -
ec2:DescribeVpcs -
ec2:DeleteNetworkInterface -
eks:DescribeCluster -
lambda:CreateFunction -
lambda:DeleteFunction -
lambda:ListTags -
lambda:GetFunction -
lambda:ListTags -
lambda:TagResource -
lambda:UntagResource -
lambda:UpdateFunctionCode -
logs:CreateLogGroup -
logs:PutRetentionPolicy -
logs:TagResource -
logs:UntagResource -
logs:DescribeLogGroups -
logs:DescribeLogStreams -
logs:ListTagsForResource -
iam:CreateRole -
iam:AttachRolePolicy -
iam:DetachRolePolicy -
iam:PassRole -
iam:GetRole -
iam:DeleteRole -
iam:TagRole -
iam:UntagRole -
tag:GetResources -
tag:TagResources
Lorsqu'il LambdaRoleArn est fourni, l'automatisation n'a pas besoin de créer le rôle et les autorisations suivantes peuvent être exclues :
-
iam:CreateRole -
iam:DeleteRole -
iam:TagRole -
iam:UntagRole -
iam:AttachRolePolicy -
iam:DetachRolePolicy
Vous trouverez ci-dessous un exemple de politique illustrant les autorisations requises
AutomationAssumeRole lorsque celles-ci ne LambdaRoleArn sont pas transmises :
En cas de LambdaRoleArn réussite, assurez-vous qu'une AWSLambdaBasicExecutionRole
Ressources créées
Les ressources suivantes sont créées pendant le Setup fonctionnement :
-
AWS Lambda fonction
-
Rôle IAM : rôle d'exécution Lambda, s'il n'est pas fourni.
-
CloudWatch Groupe de journaux (Lambda Logs)
La fonction Lambda et le rôle d'exécution sont conservés jusqu'à ce que Cleanup l'opération soit exécutée. Le groupe de journaux Lambda sera conservé pendant 30 jours ou jusqu'à sa suppression manuelle.
Instructions
Le runbook est un utilitaire d'assistance conçu pour être exécuté à partir d'autres runbooks en tant qu'automatisation enfantine. Il facilite la création d'une infrastructure permettant au runbook parent de passer des appels d'API au plan de contrôle Amazon EKS K8s. Pour utiliser le runbook, vous pouvez suivre les étapes ci-dessous dans le contexte de l'automatisation parente.
-
Phase de configuration : appelez l'automatisation à l'aide de l'opération
aws:executeAutomationd'action du runbook qui souhaiterait effectuer des appels d'API au plan de contrôle d'Amazon EKS K8s avec l'opération définie sur.SetupExemple de paramètres d'entrée :
{ "AutomationAssumeRole": "<role-arn>", "ClusterName": "<eks-cluster-name>", "Operation": "Setup" }La sortie de l'
aws:executeAutomationétape contiendra l'ARN de la fonction proxy Lambda. -
Utilisation du proxy Lambda : invoquez la fonction Lambda dans l'
aws:executeScriptaction à l'aideboto3de'sLambda.Client.invoke(...)avec une liste de chemins d'appel d'API et un jeton porteur. La fonction Lambda effectuera desGETappels HTTP vers le chemin spécifié en transmettant le jeton porteur dans l'en-tête d'autorisation.Exemple d'événement d'appel Lambda :
{ "ApiCalls": ["/api/v1/pods/", ...], "BearerToken": "..." }Note
Le jeton porteur doit être généré dans le cadre du script d'automatisation parent. Vous devez vous assurer que le principal exécutant le runbook parent dispose d'une autorisation en lecture seule sur le cluster Amazon EKS spécifié.
-
Phase de nettoyage : appelez l'automatisation à l'aide de l'opération
aws:executeAutomationd'action du runbook qui souhaiterait effectuer des appels d'API au plan de contrôle d'Amazon EKS K8s avec l'opération définie sur.CleanupExemple de paramètres d'entrée :
{ "AutomationAssumeRole": "<role-arn>", "ClusterName": "<eks-cluster-name>", "Operation": "Cleanup" }
Étapes d'automatisation
-
ValidateExecution
-
Vérifie que l'automatisation ne s'exécute pas en tant qu'exécution autonome.
-
-
CheckForExistingStack
-
Vérifie si une CloudFormation pile a déjà été provisionnée pour le nom de cluster spécifié.
-
Renvoie l'état d'existence de la pile et indique si elle peut être supprimée en toute sécurité.
-
-
BranchOnIsStackExists
-
Étape de décision qui se ramifie en fonction de l'existence d'une pile.
-
Routes permettant de mettre à jour le nom de pile existant ou de procéder au branchement des opérations.
-
-
UpdateStackName
-
Met à jour la
StackNamevariable avec le nom de la pile existante. -
Exécuté uniquement si la pile existe déjà.
-
-
BranchOnOperation
-
Achemine l'automatisation en fonction du
Operationparamètre (Setup/Cleanup). -
Pour
Setup: itinéraires permettant de créer une nouvelle pile ou de décrire des ressources existantes. -
Pour
Cleanup: Procède à la suppression de la pile si elle peut être supprimée en toute sécurité.
-
-
GetClusterNetworkConfig
-
Décrit le cluster Amazon EKS permettant d'obtenir la configuration VPC.
-
Récupère le point de terminaison, l'ID VPC, les ID de sous-réseau, l'ID du groupe de sécurité et les données CA.
-
-
ProvisionResources
-
Crée une CloudFormation pile contenant les ressources requises.
-
Fournit à la fonction Lambda la configuration réseau nécessaire.
-
Marque toutes les ressources à des fins de suivi et de gestion.
-
-
DescribeStackResources
-
Récupère les informations relatives à la created/existing pile.
-
Obtient l'ARN de la fonction Lambda provisionnée.
-
-
BranchOnIsLambdaDeploymentRequired
-
Détermine si le déploiement de code Lambda est nécessaire.
-
Procède au déploiement uniquement pour les piles nouvellement créées.
-
-
DeployLambdaFunctionCode
-
Déploie le code de la fonction Lambda à l'aide du package de déploiement.
-
Met à jour la fonction avec l'implémentation du proxy.
-
-
AssertLambdaAvailable
-
Vérifie que la mise à jour du code de la fonction Lambda a été effectuée avec succès.
-
Attend que la fonction soit en
Successfulétat.
-
-
PerformStackCleanup
-
Supprime la CloudFormation pile et les ressources associées.
-
Exécuté en cours de
Cleanupfonctionnement ou en cas d'échec deSetupfonctionnement.
-
Sorties
LambdaFunctionArn: ARN de la fonction proxy Lambda
Références
Systems Manager Automation