Simple example golang app with a k8s deployment for use in other examples.
This is good boilerplate code for starting a Golang project that will deploy on Kubernetes.
Sync a pod with rsync for fast K8s ECT cycle
How to build a x86/amd64 docker container image on Apple silicon (or any other arch)
Build, push and pull a container using Github GHCR or Gitlab Container Registry
Assuming you will deploy to an amd64
arch...
If building on an amd64
arch machine:
docker build --tag trivial-golang-k8s-deployment .
If on another arch, such as Apple Silicon etc.
docker buildx build --platform linux/amd64 --tag trivial-golang-k8s-deployment --load .
Or if need Cgo and you want an Alpine base image:
docker buildx build -f Dockerfile-cross-cgo-xx-alpine --platform linux/amd64 --tag trivial-golang-k8s-deployment --load .
To build the development images:
docker build --tag trivial-golang-k8s-deployment -f Dockerfile.dev .
Or
docker buildx build --platform linux/amd64 --tag trivial-golang-k8s-deployment -f Dockerfile.dev --load .
If you just want a test deployment using the original example - you can skip this
Otherwise read: https://www.izumanetworks.com/blog/use-github-gitlab-for-docker-registry/
For deployment on K8s you will need to push the docker image to a registry. You can't push to the registry for this repo, but these instructions will work if you forked this repo:
kubectl apply -f deployment.yaml
To apply our basic deployment.
apiVersion: v1
kind: Pod
metadata:
name: trivial-golang-k8s-deployment
labels:
app: trivial-golang-k8s-deployment
spec:
containers:
- name: trivial-golang-k8s-deployment
image: ghcr.io/izumanetworks/trivial-golang-k8s-deployment:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
livenessProbe:
httpGet:
path: /hello
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
imagePullSecrets:
- name: regcred