Files
container.training/slides/k8s/ourapponkube.md
Jérôme Petazzoni b56e54eaec ♻️ s/exercise/lab/
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.
2021-12-29 17:18:07 +01:00

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 -w to 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

  • worker doesn't need to be exposed

  • webui will 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 worker has 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 NodePort service 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[

]

--

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