Skip to content

Instantly share code, notes, and snippets.

@arsalanses
Last active January 13, 2024 15:28
Show Gist options
  • Select an option

  • Save arsalanses/dbbe745d15dbf2a3eb8dd737f08f7f9d to your computer and use it in GitHub Desktop.

Select an option

Save arsalanses/dbbe745d15dbf2a3eb8dd737f08f7f9d to your computer and use it in GitHub Desktop.
kind Cluster

Basics

kind create cluster --config=kubecluster.yml

docker pull traefik/whoami:v1.10.1
kind load docker-image traefik/whoami:v1.10.1

kind delete cluster

Ingress

docker pull ghcr.io/projectcontour/contour:v1.27.0
docker pull envoyproxy/envoy:v1.28.0
kind load docker-image ghcr.io/projectcontour/contour:v1.27.0
kind load docker-image envoyproxy/envoy:v1.28.0

kubectl apply -f https://projectcontour.io/quickstart/contour.yaml

kubectl patch daemonsets -n projectcontour envoy -p '{"spec":{"template":{"spec":{"nodeSelector":{"ingress-ready":"true"},"tolerations":[{"key":"node-role.kubernetes.io/control-plane","operator":"Equal","effect":"NoSchedule"},{"key":"node-role.kubernetes.io/master","operator":"Equal","effect":"NoSchedule"}]}}}}'

LoadBalancer

docker pull quay.io/metallb/controller:v0.13.7
docker pull quay.io/metallb/speaker:v0.13.7
kind load docker-image quay.io/metallb/controller:v0.13.7
kind load docker-image quay.io/metallb/speaker:v0.13.7

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.7/config/manifests/metallb-native.yaml

docker network inspect -f '{{.IPAM.Config}}' kind
kubectl apply -f https://kind.sigs.k8s.io/examples/loadbalancer/metallb-config.yaml

Calico

docker pull calico/cni:v3.27.0
docker pull calico/node:v3.27.0
docker pull calico/kube-controllers:v3.27.0

kind load docker-image calico/cni:v3.27.0
kind load docker-image calico/node:v3.27.0
kind load docker-image calico/kube-controllers:v3.27.0

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml
apiVersion: kind.x-k8s.io/v1alpha4
kind: Cluster
nodes:
- role: control-plane
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"
extraPortMappings:
- containerPort: 80
hostPort: 80
protocol: TCP
- containerPort: 443
hostPort: 443
protocol: TCP
# - role: worker
# networking:
# disableDefaultCNI: true
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: example
namespace: metallb-system
spec:
addresses:
- 172.18.255.200-172.18.255.250
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: empty
namespace: metallb-system
apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
name: basic
spec:
virtualhost:
fqdn: local.projectcontour.io
routes:
- conditions:
- prefix: /foo
services:
- name: foo-service
port: 80
- conditions:
- prefix: /bar
services:
- name: bar-service
port: 80
kind: Pod
apiVersion: v1
metadata:
name: foo-app
labels:
app: foo
spec:
containers:
- image: traefik/whoami:v1.10.1
name: foo-app
resources:
limits:
memory: "128Mi"
cpu: "500m"
---
kind: Service
apiVersion: v1
metadata:
name: foo-service
spec:
selector:
app: foo
ports:
- port: 80
---
kind: Pod
apiVersion: v1
metadata:
name: bar-app
labels:
app: bar
spec:
containers:
- image: traefik/whoami:v1.10.1
resources:
limits:
memory: "128Mi"
cpu: "500m"
name: bar-app
---
kind: Service
apiVersion: v1
metadata:
name: bar-service
spec:
selector:
app: bar
ports:
- port: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
# annotations:
# nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- http:
paths:
- pathType: Prefix
# path: /foo(/|$)(.*)
path: /foo
backend:
service:
name: foo-service
port:
number: 80
- pathType: Prefix
# path: /bar(/|$)(.*)
path: /bar
backend:
service:
name: bar-service
port:
number: 80
kind: Pod
apiVersion: v1
metadata:
name: foo-app
labels:
app: whoami
spec:
containers:
- name: foo-app
image: traefik/whoami:v1.10.1
resources:
limits:
memory: "128Mi"
cpu: "500m"
---
kind: Pod
apiVersion: v1
metadata:
name: bar-app
labels:
app: whoami
spec:
containers:
- name: bar-app
image: traefik/whoami:v1.10.1
resources:
limits:
memory: "128Mi"
cpu: "500m"
---
kind: Service
apiVersion: v1
metadata:
name: foo-service
spec:
type: LoadBalancer
selector:
app: whoami
ports:
- port: 5678
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment