Difficulty: Beginner
Estimated Time: 10 minutes

The 4th factor (Backing services) of the Twelve-Factor App Methodology states:

The code for a twelve-factor app makes no distinction between local and third party services. To the app, both are attached resources, accessed via a URL or other locator/credentials stored in the config.

In the following steps you will learn:

  • how your containerized application can find and call other services,
  • how DNS providers can plug themselves into the cluster,
  • how service discovery works in Kubernetes.

Conclusion

Discovering services through simple labels provided from environment settings makes calling other services easy from your application. When you decide on a Kubernetes cluster to use, one of the first things you should investigate is what service flavor provides the DNS resolutions.

The lesson does not cover more complex topics such as meshing, ingressing, egressing nor security protections. But, with these fundamentals you can now expand into those topics.

Here are some addition Katacoda courses:

Lessons Learned

With these steps you have learned:

  • how your containerized application can find and call other services,
  • how DNS providers can plug themselves into the cluster,
  • how service discovery works in Kubernetes.

References


For a deeper understanding of these topics and more join me, Jonathan Johnson, for a transcendent experience on the No Fluff Just Stuff Software Symposium Tour.

Pods to Services Communication

Step 1 of 3

Your Kubernetes Cluster

For this scenario, Katacoda has just started a fresh Kubernetes cluster for you. Verify it's ready for your use.

kubectl version --short && \ kubectl get componentstatus && \ kubectl get nodes && \ kubectl cluster-info

The Helm package manager used for installing applications on Kubernetes is also available.

helm version --short

Kubernetes Dashboard

You can control the cluster with the kubectl CLI tool or through the Kubernetes Dashboard. Because the dashboard can be accessed publicly, it is protected and requires the secret access token to sign in. Copy the token from this secret.

export TOKEN=$(kubectl describe secret $(kubectl get secret | awk '/^dashboard-token-/{print $1}') | awk '$1=="token:"{print $2}') && echo -e "\n--- Copy and paste this token for dashboard access --\n$TOKEN\n---"

To access the dashboard, click on the Kubernetes Dashboard tab above the command line or from this link: https://[[HOST_SUBDOMAIN]]-30000-[[KATACODA_HOST]].environments.katacoda.com/. At the sign in prompt select Token and paste in the token, you copied a moment ago.

For Kubernetes clusters exposed to the public, always lock administration access including access to the dashboard.