Project pod tato Head - A demo project for showcasing cloud-native application delivery use cases using different tools for various use cases
This project is in it's very early stages, so please - be kind.
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 a "Pod-Tato-Head" image with the version
-
A multi-stage build docker file to build a container
-
A manifest ot create a Kubernetes service and deployment.
-
A helm chart for the service and the deployment.
-
Three container images showing different versions
- thibaultmg/podtatohead:v0.1.0
- thibaultmg/podtatohead:v0.1.1
- thibaultmg/podtatohead: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 a Kustomize
- Direct deployment via a Kapp
- GitOps-based deployment using Flux
- GitOps-based deployment using ArgoCd
- Canary releases via Argo Rollouts
- Progressive Delivery via Flagger
- Multi-Stage delivery with Keptn
- Helm-based operator deployment
- CNAB with Porter air-gapped deployment
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 :
- either use a solution like MetalLB to get external IP for your services (see
./setup/metallb/install.sh
) - or replace
type: LoadBalancer
bytype: ClusterIP
(ortype: NodePort
) in allservice.yaml
manifests :
find delivery -type f -name "*.yaml" -print0 | xargs -0 sed -i 's/type: LoadBalancer/type: ClusterIP/g'
and then use port-forward
to expose your services (or a solution like kubefwd)
If you are interested in contribution to podtato head please read contributing.md