The setup of a development environment tends to be complicated, time-consuming, and expensive.
Gitpod changes the way we think about development environments. It gives us an IDE to write code, all the tools we need to compile our applications, run tests, and do whatever else we might be doing. It gives us the infrastructure we need. It allows us to onboard anyone into any project instantly.
How do we build container images inside containers running in a Kubernetes cluster? Docker is a bad option since it cannot run inside containers. Using it requires communication to the Docker engine running in cluster nodes. Even if that security concern is not enough, Dockershim is deprecated in Kubernetes 1.20 and will be (or already is) removed from 1.22. That means that alternative container engines like ContainerD will take its place. In other words, using Docker is not even an option anymore.
Kaniko comes to the rescue. It is a tool to build container images from a Dockerfile, inside a container or Kubernetes cluster.
Typically, security tools that are loved by security teams are hated by developers, or they are shifted so much to the left that security teams find them insufficient. Snyk is trying to change that through a plethora of tools and integrations aimed at both security professionals and developers.
Argo Rollouts provides advanced deployment capabilities. It supports blue-green and canary strategies. It integrates with Ingress controllers and service meshes. Argo Rollouts can query metrics from various providers and make decisions whether to roll forward or to roll back based on the results.
Everyone is used to Web and desktop dashboards. Kubernetes users are divided between those who prefer performing operations through UIs or through a terminal. How about combining the two modes of operations? K9s is giving us just that. It provides a terminal-based Vim-like UI for operating and observing k8s clusters.
Argo CD is a declarative GitOps deployment tool for Kubernetes.
It is one of the best, if not the best tool we have today to deploy applications inside Kubernetes clusters. It is based on GitOps principles, and it is a perfect fit to be a part of continuous delivery pipelines. It provides all the building blocks we might need if we would like to adopt GitOps principles for deployments and inject them inside the process of application lifecycle management.
Argo CD is a tool that helps us forget the existence of kubectl apply, helm install, and similar commands. It is a mechanism that allows us to focus on defining the desired state of our environments and pushing definitions to Git. It is up to Argo CD to figure out how to converge our desires into reality.
Before we dive into the actual usage of Knative, let's see which components we got and how they interact with each other. We'll approach the subject by trying to figure out the flow of a request. It starts with a user.