Je connais assez bien la plate-forme Google Cloud et Docker, et j'ai configuré un cluster de nœuds, créé un fichier Docker qui copie un référentiel et exécute un Clojure REPL sur un port public. Je peux me connecter à partir de mon IDE et jouer avec mon code, génial!
Cela REPL devrait cependant probablement être tunnelisé via SSH, mais voici où mon problème commence. Je ne trouve pas d'endroit approprié pour SSH dans pour apporter des modifications au référentiel sur lequel Docker exécute le REPL sur:
Adding or removing SSH keys for all of the instances in your project
part here .J'aimerais éditer les fichiers sources via SSH, mais il me faudrait accéder au dépôt de code de docker. Je ne sais pas comment procéder.
Je comprends que ce n'est pas vraiment une façon typique de déployer des applications, donc je ne suis même pas sûr qu'il soit possible de faire fonctionner plusieurs nœuds avec une base de code docker modifiée (les nœuds partagent-ils la JVM d'une manière ou d'une autre?).
Concrètement, ma question est de savoir comment puis-je SSH dans le conteneur Docker pour accéder à la base de code?
Je ne trouve pas d’emplacement approprié dans lequel SSH peut modifier le référentiel dans lequel Docker exécute le REPL sur
Lorsque vous créez un cluster, vous configurez un certain nombre de machines virtuelles de nœud dans votre projet Google Cloud. Si vous regardez https://console.cloud.google.com/compute/instances , vous devriez les voir et chacun d'entre eux aura une adresse IP externe sur laquelle vous pourrez vous connecter. Créez ensuite un tunnel ssh sur un noeud VM qui transfère un port local à l'adresse IP du pod.
Notez que si vous exécutez plusieurs réplicas de votre application clojure, vous devez vous connecter à chaque réplica séparément pour mettre à jour l'application.
Le format de commande pour Kubernetes 1.5.0:
kubectl exec -it <POD NAME> -c <CONTAINER NAME> bash
Liste des instances:
gcloud compute instances list
SSH en instance:
gcloud compute ssh <instance_name> --zone=<instance_zone>
Dans l'instance, répertoriez les processus en cours d'exécution et leurs ID de conteneur:
Sudo docker ps -a
Joindre à un conteneur:
Sudo docker exec -it <container_id> bash
La meilleure façon de s'attacher au conteneur à l'aide de la commande exec.
Attacher au conteneur en cours d'exécution
docker exec -it YOUR_CONTAINER_ID bash
Attachez le conteneur en cours d'exécution à Kubernetes.
kubectl exec -it YOUR_CONTAINER/POD_NAME bash
Attachez le conteneur en cours d'exécution de Kubernetes dans un espace de noms donné.
kubectl exec -it YOUR_CONTAINER/POD_NAME -n YOUR_NAMESPACE bash
Si le pod est dans votre espace de noms actuel, obtenez la liste des pods:
kubectl get pods
Choisissez un pod. Exécutez une session bash dessus:
kubectl exec -it [POD_NAME] -- /bin/bash
Vous pouvez également rechercher le pod de votre choix dans un autre espace de noms:
kubectl get pods --all-namespaces
Choisissez un pod et exécutez une session bash dessus:
kubectl exec -it [POD_NAME] --namespace [NAMESPACE] -- /bin/bash