0
votes

Déployer l'image privée Docker pour calculer l'instance du moteur à l'aide de GCP

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 !

0 commentaires

3 Réponses :


2
votes

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é.


0 commentaires

2
votes

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.


2 commentaires

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).



0
votes

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


0 commentaires