J'ai suivi quelques guides, et j'ai mis en place CI avec Google Container Engine et Google Container Registry. Le problème est que mes mises à jour ne sont pas appliquées au déploiement.
Voici donc mon deployment.yml qui contient un Service et un Déploiement Kubernetes :
apiVersion: v1
kind: Service
metadata:
name: my_app
labels:
app: my_app
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 3000
selector:
app: my_app
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my_app
spec:
replicas: 1
template:
metadata:
labels:
app: my_app
spec:
containers:
- name: node
image: gcr.io/me/my_app:latest
ports:
- containerPort: 3000
resources:
requests:
memory: 100
- name: phantom
image: docker.io/wernight/phantomjs:2.1.1
command: ["phantomjs", "--webdriver=8910", "--web-security=no", "--load-images=false", "--local-to-remote-url-access=yes"]
ports:
- containerPort: 8910
resources:
requests:
memory: 1000
Dans le cadre de mon processus CI, j'exécute un script qui met à jour l'image dans le registre Google Cloud, puis exécute kubectl apply -f /deploy/deployment.yml
. Les deux tâches réussissent, et je suis notifié que le Déploiement et le Service ont été mis à jour :
2016-09-28T14:37:26.375Zgoogleclouddeploymentservice "my_app" configuré
2016-09-28T14:37:27.370Zgoogleclouddeploymentdeployment "my_app" configuré
Étant donné que j'ai inclus l'étiquette :latest
sur mon image, je pensais que l'image serait téléchargée à chaque fois que le déploiement est mis à jour. Selon les docs, un RollingUpdate
devrait également être la stratégie par défaut.
Cependant, lorsque j'exécute mon script CI qui met à jour le déploiement, l'image mise à jour n'est pas téléchargée et les changements ne sont pas appliqués. Que me manque-t-il? Je suppose que puisqu'il n'y a pas de changement dans deployment.yml
, aucune mise à jour n'est appliquée. Comment puis-je faire en sorte que Kubernetes télécharge mon image mise à jour et utilise un RollingUpdate
pour la déployer?