Project pod tato Head - A demo project for showcasing cloud-native application delivery use cases using different tools for various use cases
This project consists of the smallest possible application to demo cloud native application delivery. It - for sure - will grow over time. Right now you get the following components:
-
A single file go server that displays different versions of the podtato-head depending on the version
-
A multi-stage build docker file to build a container
-
A manifest to create a Kubernetes service and deployment.
-
A helm chart for the service and the deployment.
-
Three container images showing different versions
- ghcr.io/podtato-head/podtatoserver:v0.1.0
- ghcr.io/podtato-head/podtatoserver:v0.1.1
- ghcr.io/podtato-head/podtatoserver:v0.1.2
This list is supposed to grow over time. Here is the list of use cases, that are currently supported:
- Direct deployment via a manifest
- Direct deployment via a Helm chart
- Direct deployment via Kustomize
- Direct deployment via Kapp
- GitOps-based deployment using Flux
- GitOps-based deployment using ArgoCd
- Canary releases via Argo Rollouts
- Helm-based operator deployment
- Multi-Stage delivery with Keptn
- CNAB with Porter air-gapped deployment
- GitOps-based deployment using KubeVella
- GitOps-based deployment using Gimlet CLI
Use cases supported going foward:
- multiple services in different version
- stateful workloads
- external dependencies
- feel free to create issues for use cases you are interested in
You can use any K8S cluster to run this project. If you do not have a K8S cluster at your disposal, you can quickly get a local one with kind.
NOTE: If you use a cluster with no access to external LoadBalancer (like a kind
cluster), you may have to replace type: LoadBalancer
by type: ClusterIP
(or type: NodePort
) in all service.yaml
manifests :
find delivery -type f -name "*.yaml" -print0 | xargs -0 sed -i 's/type: LoadBalancer/type: ClusterIP/g'
If you are interested in contribution to podtato head please read contributing.md