Construire et déployer des images Docker sur Kubernetes en utilisant git push

Voici comment décrire la fonction de l'outil Gitkube dont nous allons parler dans cet article.

Gitkube est un outil qui prend en charge la création et le déploiement de vos images Docker sur Kubernetes, en utilisant git push. Contrairement à Draft, Gitkube n'a pas de CLI et s'exécute exclusivement sur le cluster.

Tout dépôt de code source avec un fichier dockerfile peut être déployé à l'aide de Gitkube. Une fois que Gitkube est installé et exposé sur le cluster, le développeur peut créer une ressource personnalisée distante qui fournit une URL distante git. Le développeur peut alors passer à l'URL donnée et le déploiement build-kubectl docker se produira sur le cluster. Les manifestes d'application réels peuvent être créés à l'aide de n'importe quel outil (kubectl, helm etc.)

L'accent est mis sur l'installation plug-and-play et l'utilisation d'outils existants bien connus (git et kubectl). Aucune hypothèse n'est faite à propos du repo à déployer. Le contexte de construction de docker et le chemin d'accès au fichier dockerfile, ainsi que les déploiements à mettre à jour sont configurables. L'authentification sur la télécommande git est basée sur la clé publique SSH. Chaque fois qu'un changement de code est effectué, sa validation et son utilisation à l'aide de git déclenchent une génération et un déploiement.

Architecture

1_n9Il4vKaq9gHC5qQyF-9Tg

Il y a 3 composants sur le cluster, un CRD distant qui définit ce qui doit se passer lorsqu'un push est effectué sur une URL distante, gitkubed qui construit des images docker et des déploiements de mises à jour, et un gitkube-controller surveillant le CRD pour configurer gitkubed.

Une fois ces objets créés sur le cluster, un développeur peut créer ses propres applications à l'aide de kubectl. L'étape suivante consiste à créer un objet distant qui indique à gitkube ce qui doit se produire lorsqu'une action Git est effectuée sur une télécommande particulière. Gitkube écrit l'URL distante dans le champ d'état de l'objet distant.

0_UjBt2KCD13Mt_OED

Conditions préalables:

  • k8s cluster (kubectl)
  • git
  • gitkube installé sur le cluster (kubectl create)

Voici les étapes nécessaires pour obtenir votre application sur Kubernetes, y compris l'installation de Gitkube:

Depuis le terminal on va créer un cluster chez Google Kubernetes Engine avec :

gcloud init

Puis :

gcloud config set project gitkube

Et :

gcloud config set compute/zone europe-west3-a

Enfin :

gcloud container clusters create gitkube

Ce qui va nous donner :

kubeconfig entry generated for gitkube.
NAME     LOCATION        MASTER_VERSION  MASTER_IP      MACHINE_TYPE   NODE_VERSION  NUM_NODES  STATUS
gitkube  europe-west3-a  1.9.7-gke.6     35.234.65.155  n1-standard-1  1.9.7-gke.6   3          RUNNING