Files
container.training/slides/k8s/ourapponkube.md

2.4 KiB

Running our application on Kubernetes

  • We can now deploy our code (as well as a redis instance)

.exercise[

  • Deploy redis:

    kubectl create deployment redis --image=redis
    
  • Deploy everything else:

      set -u
      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)

.exercise[

  • 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

.exercise[

  • 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

.exercise[

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

.exercise[

  • 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

.exercise[

]

--

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!