Getting started with Karbon and K8s in general can seem like a daunting task. I wanted to create a simple “Hello World” website in K8s. This is meant for people just starting to explore and play with K8s. I am using Google and MetalLB to accomplish this.
Download *kubectl.cfg file from Karbon and export path for use with kubectl
1 |
export KUBECONFIG=/<path>/<kubectl-config.cfg> |
Verify environment with kubectl get nodes
1 2 3 4 5 6 7 |
kubectl get nodes NAME STATUS ROLES AGE VERSION karbon-demo-devmin-87140a-k8s-master-0 Ready master 178m v1.13.4 karbon-demo-devmin-87140a-k8s-master-1 Ready master 178m v1.13.4 karbon-demo-devmin-87140a-k8s-worker-0 Ready node 176m v1.13.4 karbon-demo-devmin-87140a-k8s-worker-1 Ready node 175m v1.13.4 karbon-demo-devmin-87140a-k8s-worker-2 Ready node 175m v1.13.4 |
Create the Google “hello-app” in Karbon. This is from the Google quick-start guide here.
1 |
kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0 |
After the app is deployed you need to create a service using “kubectl expose deployment” to allow external traffic
1 2 |
kubectl expose deployment hello-server --type LoadBalancer \ --port 80 --target-port 8080 |
Optional, but recommend would be to add the MetalLB load-balancer here
1 2 3 4 5 |
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/namespace.yaml kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/metallb.yaml kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)" |
Apply a layer 2 config that has your IP range. We will download and edit the example form MetalLB. In this example we are using 10.1.2.220-10.1.2.225
1 2 3 |
wget https://raw.githubusercontent.com/google/metallb/v0.9.3/manifests/example-layer2-config.yaml vi example-layer2-config.yaml |
Now apply the L2 configuration
1 |
kubectl apply -f example-layer2-config.yaml |
The previous “hello-app” will now get an external IP from MetalLB
1 2 3 |
kubectl get service hello-server NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-server LoadBalancer 172.19.20.179 10.1.2.220 80:31703/TCP 3h17m |
You can now open a browser to your EXTERNAL-IP and verify the Google “hello-app” is responding