Set up and deploy your first application
Learn how to deploy an application to a Kubernetes cluster hosted within the IBM Container Service.
0. Install Prerequisite CLIs and Provision a Kubernetes Cluster
If you haven't already:
Install the IBM Cloud CLIs and login, as described in Lab 0.
Provision a cluster:
$ ibmcloud cs cluster-create --name <name-of-cluster>
Once the cluster is provisioned, the kubernetes client CLI kubectl needs to be configured to talk to the provisioned cluster.
Run
$ ibmcloud cs cluster-config <name-of-cluster>, and set theKUBECONFIGenvironment variable based on the output of the command. This will
make your
kubectlclient point to your new Kubernetes cluster.
Once your client is configured, you are ready to deploy your first application, guestbook.
Claim Kubernetes Cluster in Workshops
Get preCreated Kubernetes Clusterdocker run --it -v /var/run/docker.sock:/var/run/docker.sock volaka/ibmcloud-devtools
cd
ibmcloud logingit clone https://github.com/IBM/guestbook.git
cd guestbook1. Deploy your application
In this part of the lab we will deploy an application called guestbook that has already been built and uploaded to DockerHub under the name ibmcom/guestbook:v1.
Start by running
guestbook:kubectl create deployment guestbook --image=ibmcom/guestbook:v1This action will take a bit of time. To check the status of the running application, you can use .
kubectl get pods -wYou should see output similar to the following:
NAME READY STATUS RESTARTS AGE guestbook-59bd679fdc-bxdg7 0/1 ContainerCreating 0 1mEventually, the status should show up as
Running.guestbook-59bd679fdc-bxdg7 1/1 Running 0 1mThe end result of the run command is not just the pod containing our application containers, but a Deployment resource that manages the lifecycle of those pods. Exit with
ctrl + cOnce the status reads
Running, we need to expose that deployment as a service so we can access it through the IP of the worker nodes. Theguestbookapplication listens on port 3000. Run:kubectl expose deployment guestbook --type="NodePort" --port=3000 # service "guestbook" exposedTo find the port used on that worker node, examine your new service:
kubectl get service guestbookNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE guestbook NodePort 10.10.10.253 <none> 3000:31208/TCP 1mWe can see that our
<nodeport>is31208. We can see in the output the port mapping from 3000 inside the pod exposed to the cluster on port 31208. This port in the 31000 range is automatically chosen, and could be different for you.guestbookis now running on your cluster, and exposed to the internet. We need to find out where it is accessible. The worker nodes running in the container service get external IP addresses. Run$ ibmcloud cs workers <name-of-cluster>, and note the public IP listed on the<public-IP>line. Alsokubect get nodes -o widecommand helps to get public ip of a node.ibmcloud cs workers --cluster ossclusterOK ID Public IP Private IP Flavor State Status Zone Version kube-bq9k969l04l8ov8r6tv0-iksakbank22-default-000001ee 159.8.191.72 10.113.56.139 b3c.4x16.encrypted normal Ready lon02 1.16.8_1527We can see that our
<public-IP>is159.8.191.72.Now that you have both the address and the port, you can now access the application in the web browser at
<public-IP>:<nodeport>. In the example case this is159.8.191.72:31208.
Congratulations, you've now deployed an application to Kubernetes!
Last updated
Was this helpful?