Qu'est-ce qui est arrivé en premier : la poule ou l'œuf ? Un début assez étrange pour un article sur l’Infrastructure-as-Code, n’est-ce pas ?
Qu'est-ce qu'un œuf ?
Le plus souvent, Infrastructure-as-Code (IaC) est une manière déclarative de représenter l'infrastructure. Nous y décrivons l'état que nous souhaitons atteindre, en commençant par la partie matérielle et en terminant par la configuration logicielle. Par conséquent, IaC est utilisé pour :
Mise à disposition des ressources. Ce sont des VM, S3, VPC, etc. Outils de base pour le travail : Terraform и Formation Nuage.
Tout code se trouve dans les référentiels git. Et tôt ou tard, le chef d'équipe décidera qu'il faut les remettre en ordre. Et il va refactoriser. Et cela créera une certaine structure. Et il verra que c'est bien.
C'est bien aussi que ça existe déjà gitlab ce и GitHub-provider pour Terraform (et ceci est la configuration logicielle). Avec leur aide, vous pouvez gérer l'ensemble du projet : membres de l'équipe, CI/CD, git-flow, etc.
D'où vient l'œuf ?
Nous approchons donc progressivement de la question principale.
Tout d’abord, vous devez commencer par un référentiel qui décrit la structure d’autres référentiels, y compris vous-même. Et bien sûr, dans le cadre de GitOps, vous devez ajouter CI pour que les modifications soient exécutées automatiquement.
Si Git n’a pas encore été créé ?
Comment le stocker dans Git ?
Comment installer CI ?
Si on déployait aussi Gitlab en utilisant IaC, et même en Kubernetes ?
Et GitLab Runner également dans Kubernetes ?
Qu’en est-il de Kubernetes chez le fournisseur de cloud ?
Qu'est-ce qui est venu en premier : le GitLab où je vais télécharger mon code, ou le code qui décrit le type de GitLab dont j'ai besoin ?
Obtenez MY_SELECTEL_TOKEN à partir du panneau mon.selectel.ru.
Créez un cluster Kubernetes en y transférant un jeton de compte.
Récupérez KUBECONFIG à partir du cluster créé.
Installez GitLab sur Kubernetes.
Obtenez le jeton GitLab de GitLab créé pour l'utilisateur racine.
Créez une structure de projet dans GitLab à l'aide du jeton GitLab.
Transférez le code existant vers GitLab.
Vous pouvez télécharger toutes les images dont vous avez besoin à partir du serveur de la caméra, de l'application ou du logiciel.
Profit!
Étape 1. Le jeton peut être obtenu dans la section Clés API.
Étape 2. Nous préparons notre Terraform pour « cuire » un cluster de 2 nœuds. Si vous êtes sûr de disposer de suffisamment de ressources pour tout, vous pouvez activer les quotas automatiques :
Nous utiliserons le modèle standard pour de nombreux nginx-entrée. Il existe déjà de nombreuses instructions pour l’installer, nous ne nous y attarderons donc pas.
Étape 8. Amener les référentiels Git à la hiérarchie correcte à l'aide du fournisseur Gitlab.
cd ../internal/gitlab/hierarchy && terraform apply -input=false -auto-approve planfile
Malheureusement, le fournisseur Terraform GitLab a un flottant bug. Ensuite, vous devrez supprimer manuellement les projets en conflit pour que tf.state soit corrigé. Puis réexécutez la commande `$make all`
Étape 9. Nous transférons les référentiels locaux sur le serveur.
Nous avons réussi à tout gérer de manière déclarative à partir de notre machine locale. Maintenant, je veux transférer toutes ces tâches vers CI et appuyer simplement sur des boutons. Pour ce faire, nous devons transférer nos états locaux (état Terraform) vers CI. Comment procéder est dans la partie suivante.
Abonnez-vous à notre Blogpour ne pas rater la sortie de nouveaux articles !