Contributed by Ravi Lachhman, Shipa (CDF Member)
In the Kubernetes Ecosystem, a going pun is that everyone is becoming a YAML engineer. Taking that a step further, with the growing number of templating/package/configuration management tools, there is certainly a lot to learn and there is a long road between your features and being deployed on Kubernetes. No matter where you are in your Kubernetes journey, if you are looking for simplification and guardrails around developer experience with Kubernetes, Ketch is a great open source project to take a look at as you are furthering your GitOps and Continuous Delivery journeys.
Ketch is an open-source framework designed to facilitate the deployment and management of applications in Kubernetes. Ketch leverages a simple command-line interface [CLI], and no need for lengthy YAML. In this example, pairing your Kubernetes distribution and Ketch together to show how easy it is to deploy and expose an application.
PreReqs
Getting started, you will need to have access to a Kubernetes Cluster. Your Kubernetes Cluster will need to have an Ingress Controller of either Traefik or Istio and Cert Manager. In this example, we will be using Amazon EKS as an example and installing Traefik with Helm and Cert Manager.
On your Kubernetes Cluster, install Cert Manager.
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml
With the Cert Manager out of the way, now you can install an Ingress Controller. Your Kubernetes distribution might come with either Traefik or Istio installed. Amazon EKS doesn’t have one by default so can leverage Helm to install Traefik.
helm repo add traefik https://helm.traefik.io/traefik helm repo update helm install traefik traefik/traefik
With the prereqs out of the way, now you can install the Ketch CLI and Ketch Kubernetes Controller and then deploy your first application.
Wiring Ketch
Reviewing the Ketch Architecture, Ketch does strive to provide a simpler developer experience. The first step in leveraging Ketch is installing the Ketch CLI.
Installing the Ketch CLI:
curl -s https://raw.githubusercontent.com/shipa-corp/ketch/main/install.sh | bash
Then validate that the Ketch CLI was installed correctly.
ketch
The next step is to install the Ketch Controller into your Kubernetes Cluster.
kubectl apply -f https://github.com/shipa-corp/ketch/releases/download/v0.5.0/ketch-controller.yaml
With the Ketch Controller and CLI installed, you are now able to get ready to deploy your first application.
Deploying Your First Application with Ketch
Ketch works on the concept of Frameworks that are used to isolate workloads. Each Ketch Framework isolates the application you deploy into a Namespace. To create a Framework in Ketch, you do need the Ingress Controller Address.
In Traefik, you can find the default Ingress Service IP by running “kubectl get services” and
Look for the External-IP.
In this case, the External-IP is:
A2ebeb636a5eb4f7498846c602c4e3b9-1432884420.ap-southeast-1.elb.amazonaws.com
Creating a Ketch Framework
We can create a development Framework pretty easily to isolate our resources to a particular Namespace. You will need the External-IP to pass to the Ketch CLI to create the Framework. Here we are adding a “dev” framework to the Traefik Ingress.
ketch framework add dev –ingress-service-endpoint a2ebeb636a5eb4f7498846c602c4e3b9-1432884420.ap-southeast-1.elb.amazonaws.com –ingress-type traefik
Now you are ready to create a Ketch Application which is your deployment. You can deploy from source via Buildpack or an image. For simplicity, we will deploy from an image.
First Deployment Using Ketch
A great example to see the power of Ketch is to deploy a sample application. The Bulletin Board Image is an easy example to deploy. Without additional exposures, you can deploy an application in one simple command into your development Framework.
ketch app deploy bulletinboard -k dev -i docker.io/shipasoftware/bulletinboard:1.0
Grabbing the entry point of the Bulletin Board is easy with Ketch. Running the App List command will list the address.
ketch app list
Head to the URL and you are on your way!
The art of the possible is great with Ketch; potentially you can integrate Ketch into your CI/CD process by having Ketch kick off a deployment or having the CI/CD process call Ketch. Here is a GitOps example using Ketch and ArgoCD, which the same approach can be used in other CDF projects such as Tekton. Digging into the Application Management capabilities you can deploy from source or an image of your choice. If you are curious about Ketch, feel free to take a look at the GitHub Project to look under the hood and even contribute.
Contribute to Ketch
We are always looking for community input and contributions to help grow Ketch. Feel free to join our Ketch Community and submit your idea/PR today! We are excited that you are taking a look at Ketch and are always open to ideas to make Ketch more robust and help those on the application deployment journey simplify their developer experience.