¿Qué fue primero: el huevo o la gallina? Un comienzo bastante extraño para un artículo sobre infraestructura como código, ¿no?
¿Qué es un huevo?
Muy a menudo, la infraestructura como código (IaC) es una forma declarativa de representar la infraestructura. En él describimos el estado que queremos alcanzar, empezando por la parte de hardware y terminando con la configuración del software. Por lo tanto, IaC se utiliza para:
Provisión de recursos. Estas son VM, S3, VPC, etc. Herramientas básicas para el trabajo: Terraform и Formación de nubes.
Cualquier código está en los repositorios de git. Y, tarde o temprano, el líder del equipo decidirá que es necesario ponerlos en orden. Y él refactorizará. Y creará alguna estructura. Y verá que esto es bueno.
También es bueno que ya exista. GitLab и GitHub-proveedor de Terraform (y esto es Configuración de software). Con su ayuda, puedes gestionar todo el proyecto: miembros del equipo, CI/CD, git-flow, etc.
¿De dónde vino el huevo?
De modo que nos acercamos gradualmente a la cuestión principal.
En primer lugar, debe comenzar con un repositorio que describa la estructura de otros repositorios, incluido el suyo. Y, por supuesto, como parte de GitOps, es necesario agregar CI para que los cambios se ejecuten automáticamente.
¿Si Git aún no se ha creado?
¿Cómo almacenarlo en Git?
¿Cómo instalar CI?
¿Si también implementamos Gitlab usando IaC, e incluso en Kubernetes?
¿Y GitLab Runner también en Kubernetes?
¿Qué pasa con Kubernetes en el proveedor de la nube?
¿Qué fue primero: el GitLab donde subiré mi código o el código que describe qué tipo de GitLab necesito?
Obtener MY_SELECTEL_TOKEN del panel mi.selectel.com.
Cree un clúster de Kubernetes transfiriéndole un token de cuenta.
Obtenga KUBECONFIG del clúster creado.
Instale GitLab en Kubernetes.
Obtenga el token GitLab de GitLab creado para el usuario raíz.
Cree una estructura de proyecto en GitLab usando GitLab-token.
Inserte el código existente en GitLab.
?
¡Beneficio!
Paso 1. El token se puede obtener en la sección Claves API.
Paso 2. Preparamos nuestro Terraform para "hornear" un grupo de 2 nodos. Si está seguro de tener suficientes recursos para todo, puede habilitar las cuotas automáticas:
Paso 8. Llevar los repositorios de Git a la jerarquía correcta utilizando el proveedor Gitlab.
cd ../internal/gitlab/hierarchy && terraform apply -input=false -auto-approve planfile
Desafortunadamente, el proveedor terraform GitLab tiene un flotante error. Luego, tendrás que eliminar los proyectos en conflicto manualmente para que se solucione tf.state. Luego vuelva a ejecutar el comando `$make all`
Paso 9. Transferimos repositorios locales al servidor.
Hemos conseguido que podamos gestionar todo de forma declarativa desde nuestra máquina local. Ahora quiero transferir todas estas tareas a CI y simplemente presionar botones. Para hacer esto, necesitamos transferir nuestros estados locales (estado Terraform) a CI. Cómo hacer esto se encuentra en la siguiente parte.
Suscríbase a nuestro Blog¡Para no perderte el lanzamiento de nuevos artículos!