From d97924e7e73b56d1aff2ce5d81b678204cc13bc6 Mon Sep 17 00:00:00 2001 From: Teck Meng Date: Wed, 26 Jun 2024 09:11:06 +0800 Subject: [PATCH] Refactor Kubernetes configuration for Traefik and mailserver stack --- kubernetes/00-account.yml | 4 ++++ kubernetes/00-role.yml | 33 ++++++++++++++++++++++++++++++ kubernetes/01-role-binding.yml | 13 ++++++++++++ kubernetes/02-traefik-services.yml | 25 ++++++++++++++++++++++ kubernetes/02-traefik.yml | 29 ++++++++++++++++++++++++++ kubernetes/03-whoami-services.yml | 13 ++++++++++++ kubernetes/03-whoami.yml | 23 +++++++++++++++++++++ kubernetes/04-whoami-ingress.yml | 15 ++++++++++++++ 8 files changed, 155 insertions(+) create mode 100644 kubernetes/00-account.yml create mode 100644 kubernetes/00-role.yml create mode 100644 kubernetes/01-role-binding.yml create mode 100644 kubernetes/02-traefik-services.yml create mode 100644 kubernetes/02-traefik.yml create mode 100644 kubernetes/03-whoami-services.yml create mode 100644 kubernetes/03-whoami.yml create mode 100644 kubernetes/04-whoami-ingress.yml diff --git a/kubernetes/00-account.yml b/kubernetes/00-account.yml new file mode 100644 index 0000000..05f9cb7 --- /dev/null +++ b/kubernetes/00-account.yml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: traefik-account \ No newline at end of file diff --git a/kubernetes/00-role.yml b/kubernetes/00-role.yml new file mode 100644 index 0000000..88a408e --- /dev/null +++ b/kubernetes/00-role.yml @@ -0,0 +1,33 @@ +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: traefik-role + +rules: + - apiGroups: + - "" + resources: + - services + - endpoints + - secrets + verbs: + - get + - list + - watch + - apiGroups: + - extensions + - networking.k8s.io + resources: + - ingresses + - ingressclasses + verbs: + - get + - list + - watch + - apiGroups: + - extensions + - networking.k8s.io + resources: + - ingresses/status + verbs: + - update \ No newline at end of file diff --git a/kubernetes/01-role-binding.yml b/kubernetes/01-role-binding.yml new file mode 100644 index 0000000..f82dfc2 --- /dev/null +++ b/kubernetes/01-role-binding.yml @@ -0,0 +1,13 @@ +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: traefik-role-binding + +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: traefik-role +subjects: + - kind: ServiceAccount + name: traefik-account + namespace: default # This tutorial uses the "default" K8s namespace. \ No newline at end of file diff --git a/kubernetes/02-traefik-services.yml b/kubernetes/02-traefik-services.yml new file mode 100644 index 0000000..23f672c --- /dev/null +++ b/kubernetes/02-traefik-services.yml @@ -0,0 +1,25 @@ +apiVersion: v1 +kind: Service +metadata: + name: traefik-dashboard-service + +spec: + type: LoadBalancer + ports: + - port: 8080 + targetPort: dashboard + selector: + app: traefik +--- +apiVersion: v1 +kind: Service +metadata: + name: traefik-web-service + +spec: + type: LoadBalancer + ports: + - targetPort: web + port: 80 + selector: + app: traefik \ No newline at end of file diff --git a/kubernetes/02-traefik.yml b/kubernetes/02-traefik.yml new file mode 100644 index 0000000..2e2848a --- /dev/null +++ b/kubernetes/02-traefik.yml @@ -0,0 +1,29 @@ +kind: Deployment +apiVersion: apps/v1 +metadata: + name: traefik-deployment + labels: + app: traefik + +spec: + replicas: 1 + selector: + matchLabels: + app: traefik + template: + metadata: + labels: + app: traefik + spec: + serviceAccountName: traefik-account + containers: + - name: traefik + image: traefik:v3.0 + args: + - --api.insecure + - --providers.kubernetesingress + ports: + - name: web + containerPort: 80 + - name: dashboard + containerPort: 8080 \ No newline at end of file diff --git a/kubernetes/03-whoami-services.yml b/kubernetes/03-whoami-services.yml new file mode 100644 index 0000000..6773de2 --- /dev/null +++ b/kubernetes/03-whoami-services.yml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: whoami + +spec: + ports: + - name: web + port: 80 + targetPort: web + + selector: + app: whoami \ No newline at end of file diff --git a/kubernetes/03-whoami.yml b/kubernetes/03-whoami.yml new file mode 100644 index 0000000..a0596b7 --- /dev/null +++ b/kubernetes/03-whoami.yml @@ -0,0 +1,23 @@ +kind: Deployment +apiVersion: apps/v1 +metadata: + name: whoami + labels: + app: whoami + +spec: + replicas: 1 + selector: + matchLabels: + app: whoami + template: + metadata: + labels: + app: whoami + spec: + containers: + - name: whoami + image: traefik/whoami + ports: + - name: web + containerPort: 80 \ No newline at end of file diff --git a/kubernetes/04-whoami-ingress.yml b/kubernetes/04-whoami-ingress.yml new file mode 100644 index 0000000..7ce9d44 --- /dev/null +++ b/kubernetes/04-whoami-ingress.yml @@ -0,0 +1,15 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: whoami-ingress +spec: + rules: + - http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: whoami + port: + name: web \ No newline at end of file