stages: - build - docker-push - deploy cache: paths: - node_modules/ build: stage: build image: node:latest script: - yarn install - npm run build artifacts: paths: - dist/ docker: stage: docker-push image: docker:18.09.7 services: - docker:18.09.7-dind script: - docker login --username=$DOCKER_USERNAME --password=$DOCKER_PASSWORD - docker tag $DOCKER_REPOSITORY:$CI_RUNNER_ID $DOCKER_REPOSITORY:latest - docker push $DOCKER_REPOSITORY test: stage: deploy image: google/cloud-sdk:latest script: - echo $GCP_ACCESS_JSON > /tmp/$CI_PIPELINE_ID.json - gcloud auth activate-service-account $GCP_CE_PROJECT_EMAIL --key-file /tmp/$CI_PIPELINE_ID.json --project $GCP_PROJECT_ID I have this .gitlab-ci.yml file . I've successfully created docker image and published it to docker hub private repository . I also have created GCP compute enigne instance and as you can see in gitlab-ci file I can login to this instance by using gcloud command , now I want to find some gcloud command which will give an opportunity to deploy this private docker hub image to this compute engine instance . How can i do it ? If you need more information , pls let me know !
3 Réponses :
Si vous n'êtes pas lié à Docker Hub et que vous pouvez à la place utiliser le Google Container Registry , il existe une commande gcloud simple pour déployer une instance à l'aide de un système d'exploitation très allégé qui est conçu uniquement pour les conteneurs:
gcloud compute instances create-with-container [INSTANCE_NAME] \ --container-image [DOCKER_IMAGE]
Cependant, il ne prend pas en charge les registres du concentrateur docker privé, sauf pour GCR. Voici un guide pour pousser vers GCR s'il s'agit d'un route que vous pouvez emprunter.
Sinon, il n'y a pas vraiment de commande gcloud pour faire ce que vous voulez, à part peut-être en configurant un script de démarrage ou cloud-init qui contient les données nécessaires pour s'authentifier et extraire du référentiel privé, mais il n'est certainement pas automatisé.
L'instance de VM Compute Engine en elle-même n'exécute pas d'images de conteneur.
1) Installez Docker et déployez l'image manuellement.
2) Déployez Compute Engine avec Container OS et déployez votre image manuellement.
3) Basculez vers Google Container Registry et déployez l'image avec votre instance de VM GCE exécutant Container OS.
Le déploiement manuel n'est pas le cas pour moi, car je veux le faire automatiquement en utilisant le fichier .gitlab-ci.yml, merci pour vos conseils, je vais essayer de découvrir le troisième cas que vous avez décrit.
Vous ne pourrez pas utiliser votre manifeste avec les outils Google Cloud, mais vous pouvez le faire localement sur votre bureau ou une VM. Vous pouvez créer vos images avec Docker, pousser vers Container Registry, mais Google ne prend pas directement en charge votre manifeste. Vous devrez adapter vos méthodes aux outils Google Cloud (Container Registry, Cloud Build, Container OS).
gcloud create instance s'assure que le docker est disponible (s'il n'est pas installé)
Déployer manuellement le flux de conteneur sur gcloud
ou une instance gcloud pour connecter le registre dockerhub et extraire votre fichier .yml, déployez-le