ingree controller - traefik

Posted by JamsBlocKK Blog on Tuesday, March 24, 2020

外部使用 k8s 建置好的服務

快速建置 traefik ingress controller …


安裝

k8s-m1> git clone https://github.com/jamesblockk/blog-cicd.git
k8s-m1> cd k8s-traefik

設定 k8s 節點標籤

format : kubectl label nodes [node-name] [key=value]
k8s-m1 k8s-traefik > kubectl label nodes k8s-n1 IngressProxy=true

查看 k8s 節點標籤

k8s-m1 k8s-traefik > kubectl get nodes --show-labels

部署 traefik

k8s-m1 k8s-traefik > kubectl apply -f crd.yaml
k8s-m1 k8s-traefik > kubectl apply -f rbac.yaml
k8s-m1 k8s-traefik > kubectl apply -f config.yaml
k8s-m1 k8s-traefik > kubectl apply -f deploy.yaml

部署 traefik-dashboard

k8s-m1 k8s-traefik > kubectl apply -f dashboard.yaml

到 client 端

echo "your-node-ip  traefik.awesome-domain.com" >> /etc/hosts
curl traefik.awesome-domain.com

現在到 瀏覽器 瀏覽 http://traefik.awesome-domain.com 可以看到網頁了~


service 設定

回到 k8s-m1 設定 service

service-hello.yaml
---
apiVersion: v1
kind: Service
metadata:
  name: hello-app
spec:
selector:
  app: hello-app
ports:
  - protocol: TCP
    port: 80
    targetPort: 80

k8s-m1 > kubectl apply -f service-hello.yaml

設定 ingress

ingress-hello.yaml
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: service-ingress
spec:
  rules:
  - host: traefik.testdomain.com
    http:
    paths:
    - path: /hello 
      backend:
        serviceName: hello-app
        servicePort: 80
      

k8s-m1 > kubectl apply -f ingress-hello.yaml

到 要瀏覽的主機 設定 client 的 dns 解析

echo "your-node-ip  traefik.testdomain.com" >> /etc/hosts

執行

curl traefik.testdomain.com/hello

完成!!!!!