In these chapters, we: - show how to install Helm - run the Helm tiller on our cluster - use Helm to install Prometheus - don't do anything fancy with Prometheus (it's just for the sake of installing something) - create a basic Helm chart for DockerCoins - explain namespace concepts - show how to use contexts to hop between namespaces - use Helm to deploy DockerCoins to a new namespace These two chapters go together.
2.5 KiB
Namespaces
- We cannot have two resources with the same name
--
-
We cannot have two resources of the same type with the same name
(But it's OK to have a
rngservice, arngdeployment, and arngdaemon set)
--
-
We cannot have two resources of the same type with the same name in the same namespace
(But it's OK to have e.g. two
rngservices in different namespaces)
--
-
In other words: the tuple (type, name, namespace) needs to be unique
(In the resource YAML, the type is called
Kind)
Pre-existing namespaces
-
If we deploy a cluster with
kubeadm, we have three namespaces:-
default(for our applications) -
kube-system(for the control plane) -
kube-public(contains one secret used for cluster discovery)
-
-
If we deploy differently, we may have different namespaces
Creating namespaces
-
We can create namespaces with a very minimal YAML, e.g.:
kubectl apply -f- <<EOF apiVersion: v1 kind: Namespace metadata: name: blue EOF -
If we are using a tool like Helm, it will create namespaces automatically
Using namespaces
-
We can pass a
-nor--namespaceflag to mostkubectlcommands:kubectl -n blue get svc -
We can also use contexts
-
A context is a (user, cluster, namespace) tuple
-
We can manipulate contexts with the
kubectl configcommand
Creating a context
- We are going to create a context for the
bluenamespace
.exercise[
-
View existing contexts to see the cluster name and the current user:
kubectl config get-contexts -
Create a new context:
kubectl config set-context blue --namespace=blue \ --cluster=kubernetes --user=kubernetes-admin
]
We have created a context; but this is just some configuration values.
The namespace doesn't exist yet.
Using a context
- Let's switch to our new context and deploy the DockerCoins chart
.exercise[
-
Use the
bluecontext:kubectl config use-context blue -
Deploy DockerCoins:
helm install dockercoins
]
In the last command line, dockercoins is just the local path where
we created our Helm chart before.
Viewing the deployed app
- Let's see if our Helm chart worked correctly!
.exercise[
-
Retrieve the port number allocated to the
webuiservice:kubectl get svc webui -
Point our browser to http://X.X.X.X:3xxxx
]
Note: it might take a minute or two for the app to be up and running.