Now that we have a good number of longer exercises, it makes sense to rename the shorter demos/labs into 'labs' to avoid confusion between the two.
2.9 KiB
Running our application on Kubernetes
- We can now deploy our code (as well as a redis instance)
.lab[
-
Deploy
redis:kubectl create deployment redis --image=redis -
Deploy everything else:
kubectl create deployment hasher --image=dockercoins/hasher:v0.1 kubectl create deployment rng --image=dockercoins/rng:v0.1 kubectl create deployment webui --image=dockercoins/webui:v0.1 kubectl create deployment worker --image=dockercoins/worker:v0.1
]
class: extra-details
Deploying other images
-
If we wanted to deploy images from another registry ...
-
... Or with a different tag ...
-
... We could use the following snippet:
REGISTRY=dockercoins
TAG=v0.1
for SERVICE in hasher rng webui worker; do
kubectl create deployment $SERVICE --image=$REGISTRY/$SERVICE:$TAG
done
Is this working?
-
After waiting for the deployment to complete, let's look at the logs!
(Hint: use
kubectl get deploy -wto watch deployment events)
.lab[
- Look at some logs:
kubectl logs deploy/rng kubectl logs deploy/worker
]
--
🤔 rng is fine ... But not worker.
--
💡 Oh right! We forgot to expose.
Connecting containers together
-
Three deployments need to be reachable by others:
hasher,redis,rng -
workerdoesn't need to be exposed -
webuiwill be dealt with later
.lab[
- Expose each deployment, specifying the right port:
kubectl expose deployment redis --port 6379 kubectl expose deployment rng --port 80 kubectl expose deployment hasher --port 80
]
Is this working yet?
- The
workerhas an infinite loop, that retries 10 seconds after an error
.lab[
-
Stream the worker's logs:
kubectl logs deploy/worker --follow(Give it about 10 seconds to recover)
]
--
We should now see the worker, well, working happily.
Exposing services for external access
-
Now we would like to access the Web UI
-
We will expose it with a
NodePort(just like we did for the registry)
.lab[
-
Create a
NodePortservice for the Web UI:kubectl expose deploy/webui --type=NodePort --port=80 -
Check the port that was allocated:
kubectl get svc
]
Accessing the web UI
- We can now connect to any node, on the allocated node port, to view the web UI
.lab[
- Open the web UI in your browser (http://node-ip-address:3xxxx/)
]
--
Yes, this may take a little while to update. (Narrator: it was DNS.)
--
Alright, we're back to where we started, when we were running on a single node!
???
:EN:- Running our demo app on Kubernetes :FR:- Faire tourner l'application de démo sur Kubernetes