Skip to content

Instantly share code, notes, and snippets.

@georgepaoli
Last active November 26, 2020 00:26
Show Gist options
  • Save georgepaoli/969b3e7e468ad581b8d9420f82202927 to your computer and use it in GitHub Desktop.
Save georgepaoli/969b3e7e468ad581b8d9420f82202927 to your computer and use it in GitHub Desktop.
Deploy Traefik in GKE

Deploy Traefik in Google Kubernetes Engine

1 - Get value of password field

  • gcloud container clusters describe CUSTER_NAME --zone ZONE_NAME | grep password

2 - Configure RBAC

3 - Deploy Traefik Ingress Service with NodePort

3 - Or Deploy Traefik Ingress Service with LoadBalancer

Open traefik web dashboard..

Tests

Deploy NGINX

Deploy WHOAMI

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.8
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
spec:
ports:
- protocol: TCP
name: http
port: 80
targetPort: 80
type: NodePort
selector:
app: nginx
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/rule-type: PathPrefixStrip
spec:
rules:
- http:
paths:
- path: /testnginx
backend:
serviceName: nginx-service
servicePort: http
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: whoami-deployment
spec:
selector:
matchLabels:
app: whoami
replicas: 1
template:
metadata:
labels:
app: whoami
spec:
containers:
- name: whoami
image: jwilder/whoami
ports:
- containerPort: 8000
---
apiVersion: v1
kind: Service
metadata:
name: whoami-service
labels:
app: whoami
spec:
ports:
- protocol: TCP
name: http
port: 8000
targetPort: 8000
type: NodePort
selector:
app: whoami
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: whoami-ingress
annotations:
kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/rule-type: PathPrefixStrip
spec:
rules:
- http:
paths:
- path: /whoami
backend:
serviceName: whoami-service
servicePort: http
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: traefik-ingress-controller
namespace: kube-system
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: traefik-ingress-controller
namespace: kube-system
labels:
k8s-app: traefik-ingress-lb
spec:
replicas: 1
selector:
matchLabels:
k8s-app: traefik-ingress-lb
template:
metadata:
labels:
k8s-app: traefik-ingress-lb
name: traefik-ingress-lb
spec:
serviceAccountName: traefik-ingress-controller
terminationGracePeriodSeconds: 60
containers:
- image: traefik
name: traefik-ingress-lb
ports:
- name: http
containerPort: 80
- name: admin
containerPort: 8080
args:
- --api
- --kubernetes
- --logLevel=INFO
---
kind: Service
apiVersion: v1
metadata:
name: traefik-ingress-service
namespace: kube-system
spec:
selector:
k8s-app: traefik-ingress-lb
ports:
- protocol: TCP
port: 80
name: web
- protocol: TCP
port: 8080
name: admin
type: LoadBalancer
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment