What this project is
This repo is going to be a living guide with valid configurations, manifests, instructions and projects.
Feel free to contribute with PRs to add/correct information, or provide additional sample deployable projects.
What this project is NOT
This is NOT a substitute for each project's (Istio, Cilium, Rancher Desktop) documentation. Rather, it's simply TL;DR guide to get running quickly.
I highly encourage you to visit the documentation of the installations you plan to use. You'll gain a greater understanding of each.
-
Cilium CNI + Service Mesh.
-
Istio CNI Extension (requires primary CNI installed) + Service Mesh.
-
Rancher Desktop - A Kubernetes runtime.
-
Docker Desktop - Used for running both Docker workloads (see infra-services/out-cluser), but includes a basic Kubernetes runtime.
-
Kind - A Kubernetes runtime that installs on Docker or Docker Desktop
-
Knative - A cluster extension to add serverless function support
-
Minikube - A Kubernetes runtime. Not covered in this guide yet, but pull requests are welcome.
-
Flannel - Simple CNI
-
Quarkus - A cloud-native Java framework for building cloud-native services and serverless functions
-
Spring Boot - An opinionated Java framework for building microservices
-
Hapi.js - A Node.js framework for building node-based microservices
-
Kafka - An open-source distributed event streaming platform, which serve as the basis for events in our cluster. Note, Knative requires a bus backend.
-
Valkey - A fork of Redis, which will be used for in-memory caching
-
Homebrew - Software package manager
-
jq - A cli utility for parsing, querying and formatting json
-
GraalVM - GraalVM compiles your Java code to native binary, ideal for cloud deployments that need high performance and low start-up latency
-
Node.js - A javascript server
Here are a few formulas to try when creating your cluster.
- Docker Desktop + Docker Bundled Kubernetes + Istio + (MacOS: docker-mac-net-connect)
- Docker (or Docker Desktop) + Kind + Istio (without CNI) + Cloud Provider KIND(if using DD) + (MacOS: docker-mac-net-connect)
- Docker (or Docker Desktop) + Cilium + Cloud Provider KIND(if using DD) + (MacOS: docker-mac-net-connect)
- Docker (or Docker Desktop) + Flannel + Istio (with or without CNI) + Cloud Provider KIND(if using DD) + (MacOS: docker-mac-net-connect)
Please consider adding your own to this list
Details for installing and configuring your cluster before deploying services and functions.
- cluster-config - Information on various configurations for running a local Kubernetes cluster
- cilium - Cilium related configuration info
- docker-desktop - Docker Desktop related configuration info
- istio - Istio related configuration info
- kind - Kind related configuration info
- manifests - Global Kubernetes manifests you should apply to your cluster
- rancher-desktop - Rancher Desktop related configuration info
- knative
Basic configurations for deploying supporting services required for more of one services.
- infra-services - Directory for installing supporting services, either in Docker or within your Kubernetes cluster
- in-cluster - Services that could be installed in your cluster. These are dev/test level configurations and should not be used for production
- out-cluster - Services that could be installed in your local Docker (Desktop). The provided
compose.yaml
should bring up a local Docker stack of services you can use from your Kubernetes cluster.
Same projects that you can deploy to your cluster. Topics in Quarkus, Spring Boot, Knative functions and more.
- projects - Various source projects you can build and deploy to your cluster. Most projects have a
k8s
folder with additional manifests, which are configured to use the services and namespaces provided in./cluster-config/manifests
.