0
votes

Bootstrap Aks Nœuds de l'agent à travers Terraform

J'utilise actuellement Terraform pour créer un cluster K8S qui fonctionne parfaitement bien. Une fois que les nœuds sont provisionnés, je souhaite exécuter quelques commandes Bash sur l'un des nœuds. Jusqu'à présent, null_resource code> semble être une option puisqu'il s'agit d'un cluster et que nous ignorons les noms de nœud / IPS. Cependant, je suis incapable de déterminer quelle devrait être la valeur de la connexion code> code> car Azurerm_kubernettes_cluster n'exporte pas l'adresse IP de l'équilibreur de charge ou des noms VM. Le point d'interrogation a besoin de la valeur correcte dans ci-dessous:

resource "null_resource" "cluster" {
  triggers = { "${join(",", azurerm_kubernetes_cluster.k8s.id)}" }
  connection = { type = ssh 
                 user = <user>
                 password = <password>
                 host = <?>
                 host_key = <pub_key>
            }
}  


2 commentaires

Vous voulez juste exécuter des commandes Bash dans les nœuds? Toute façon est d'accord?


@Charlesxu oui, je serais ouvert à essayer des suggestions


3 Réponses :


0
votes

Aks n'expose pas les nœuds de celui-ci à Internet. Et vous pouvez simplement connecter les nœuds via le maître du cluster. Si vous souhaitez exécuter quelques commandes Bash dans les nœuds, vous pouvez utiliser la connexion SSH qui crée une boutique comme aide à vous connecter aux nœuds, voir les étapes concernant Accès au nœud SSH .

En outre, vous pouvez ajouter les règles NAT pour les nœuds de l'équilibreur de charge, vous pouvez également servir SSH aux nœuds via l'équilibreur de charge Public IP. Mais ce n'est pas une manière sécurisée. Donc, je ne suggère pas de cette façon.


2 commentaires

Mais Terraform ne crache pas l'IP publique de labalancer. J'essaie de résoudre ce problème


@Asshulverma Vous pouvez créer l'adresse IP publique avec une méthode statique lorsque vous créez le cluster AKS. Ensuite, vous pouvez générer l'IP publique.



0
votes

recommanderait simplement d'exécuter un démonet qui effectue les commandes Bash sur les nœuds. Comme toutes les opérations d'échelle ou de mise à jour, supprimez ou non la configuration mise à jour que vous effectuez sur les nœuds.


1 commentaires

Comme mentionné dans la question, je n'ai pas besoin de cela pour courir sur chaque nœud - juste sur l'un des nœuds pendant une fois c'est bien



0
votes

Il n'y avait pas de solution simple pour celui-ci. L'adresse IP statique n'était pas la bonne façon de le faire et donc, j'ai fini par écrire une enveloppe autour du Terraform. Je ne voulais pas exécuter mes scripts init sur chaque nœud qui se présente, mais un seul des nœuds. Donc, essentiellement, maintenant que Wrapper communique avec Terraform sur le premier déploiement, un seul nœud exécute Cloud-Init. Après cela, il rappelle la fonction d'échelle Terraform et apporte le reste du nombre d'instances souhaitée. Dans le script Cloud-Init, j'ai une vérification de kubectl get No où si je reçois la taille comme plus d'un nœud, je saute simplement les commandes de Cloud-Init.


0 commentaires