From 1856be3539a2f1baf641e702e80f9a3c15d669ab Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Mon, 29 May 2023 15:25:33 +0800 Subject: [PATCH] chore: add k8s ingress router(traefik) and health check health check help us if pod not ready, dont add into load balance list --- docker/simple/k8s/README.md | 49 ++++++++++++++++++++++- docker/simple/k8s/images/traefik-svc.png | Bin 0 -> 63365 bytes docker/simple/k8s/ingress.yml | 19 +++++++++ docker/simple/k8s/tailchat.yml | 16 ++++++++ 4 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 docker/simple/k8s/images/traefik-svc.png create mode 100644 docker/simple/k8s/ingress.yml diff --git a/docker/simple/k8s/README.md b/docker/simple/k8s/README.md index 597b65fb..f67e96cd 100644 --- a/docker/simple/k8s/README.md +++ b/docker/simple/k8s/README.md @@ -6,7 +6,13 @@ Its doc will tell you how to deploy `Tailchat` in kubeneters. kubectl apply -f namespace.yml -f pv.yml -f mongo.yml -f minio.yml -f redis.yml -f tailchat.yml ``` -if you wanna delete all resource, just replace `apply` to `delete`. +### Delete + +if you wanna delete all resource, just delete namespace. + +```bash +kubectl delete -f namespace.yml +``` ## Setup one by one @@ -63,3 +69,44 @@ kubectl run -it --rm test-pod --image=busybox --restart=Never ``` wget -q -O - http://:11000/health ``` + +## Router and Load Balance + +For example, we use traefik. + +### Install Traefik provider + +```bash +helm repo add traefik https://helm.traefik.io/traefik +helm install traefik traefik/traefik -n tailchat +``` + +### Apply Ingress Config + +```bash +kubectl apply -f ingress.yml +``` + +### Check Status + +```bash +kubectl get services -n tailchat +``` + +If every is ok, its should be like this: + +![](./images/traefik-svc.png) + +### Set DNS record + +```bash +sudo vim /etc/hosts +``` + +append this record: + +``` +127.0.0.1 tailchat.internal.com +``` + +Now you can open browser and view `http://tailchat.internal.com` to open tailchat in k8s. diff --git a/docker/simple/k8s/images/traefik-svc.png b/docker/simple/k8s/images/traefik-svc.png new file mode 100644 index 0000000000000000000000000000000000000000..13b79e629b16bb178de42c196fc164f434c3ccf8 GIT binary patch literal 63365 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 NRb`F)MT*bg{Rh~ORr3G< literal 0 HcmV?d00001 diff --git a/docker/simple/k8s/ingress.yml b/docker/simple/k8s/ingress.yml new file mode 100644 index 00000000..0c608e82 --- /dev/null +++ b/docker/simple/k8s/ingress.yml @@ -0,0 +1,19 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ingress + namespace: tailchat + annotations: + traefik.ingress.kubernetes.io/routing-type: edge +spec: + rules: + - host: tailchat.internal.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: tailchat-service + port: + number: 11000 diff --git a/docker/simple/k8s/tailchat.yml b/docker/simple/k8s/tailchat.yml index 836be947..f35c8b77 100644 --- a/docker/simple/k8s/tailchat.yml +++ b/docker/simple/k8s/tailchat.yml @@ -37,6 +37,22 @@ spec: value: com.msgbyte.tailchat ports: - containerPort: 11000 + livenessProbe: + httpGet: + path: /health + port: 11000 + initialDelaySeconds: 30 + periodSeconds: 30 + timeoutSeconds: 2 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /health + port: 11000 + initialDelaySeconds: 10 + periodSeconds: 30 + timeoutSeconds: 2 + failureThreshold: 3 resources: requests: cpu: 50m