Traefik, The Cloud Native Edge Routernode
Traefik 是一種現代 HTTP 反向代理和負載均衡器,用於輕鬆部署微服務。git
這篇文章對 Traefik 使用有不錯的解釋:我爲何要選擇traefik2作網關?github
確保你已經安裝了 Helm V3,上一節已經介紹如何安裝它 -> Helm V3 的安裝。web
## 查看下版本號 helm version # version.BuildInfo{Version:"v3.0.1", GitCommit:"7c22ef9ce89e0ebeb7125ba2ebf7d421f3e82ffa", GitTreeState:"clean", GoVersion:"go1.13.4"}
GitHub 倉庫:traefik-helm-chartapi
它的 Chart Values.yaml,有不少細節的配置,你們能夠自行探索。爲少
後面也可能出篇文章仔細說說(估計沒個萬把字講不明白,微服務相關的東西太多了)app
這裏我簡單配置一下:負載均衡
traefik-v2-chart-values.yaml
微服務
service: type: ClusterIP ingressRoute: dashboard: enabled: false nodeSelector: kubernetes.io/hostname: k8s-master-1 ports: web: hostPort: 80 websecure: hostPort: 443 traefik: port: 8080 hostPort: 8080 exposedPort: 8080 expose: true additionalArguments: - "--serversTransport.insecureSkipVerify=true" - "--api.insecure=true" - "--api.dashboard=true"
配置 SSL/TLS
加密模式:post
配置 頁面規則
ui
helm repo add traefik https://containous.github.io/traefik-helm-chart helm repo update # 更新下倉庫
helm install traefik traefik/traefik -f traefik-v2-chart-values.yaml -n kube-system # helm uninstall traefik -n kube-system # 卸載 traefik
OK,Ready
!!!
這裏 爲少
將 traefik.cloud-fe.com
解析到個人 K8S 集羣上。
上一講,爲少
已經將域名停靠在了 cloudflare
上了,因此:
上一節,爲少有詳細講: 配置 Certificate
因此:
kubectl apply -f cloudfe-certificate.yaml -n kube-system
kubectl describe Certificate -n kube-system
traefik-dashboard-ingress-route.yaml
以下:
apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: traefik-dashboard-route spec: entryPoints: - websecure tls: secretName: cloudfe-cert-tls routes: - match: Host(`traefik.cloud-fe.com`) kind: Rule services: - name: traefik port: 8080
應用配置
kubectl apply -f traefik-dashboard-ingress-route.yaml -n kube-system # kubectl delete -f traefik-dashboard-ingress-route.yaml -n kube-system
完美部署。
詳細文檔,請查閱 BasicAuth
密碼必須是一個 MD5
,SHA1
或者 BCrypt
的哈希值。
這裏我好比說
是使用 htpasswd
產生一個用戶名是 cloudfe
,密碼爲 cloudfe123
的哈希值。
htpasswd -nb cloudfe cloudfe123 # cloudfe:$apr1$ETFHyV73$hzz88wP7TNSWhCDByD1VT0
traefik-authsecret.yaml
以下:
apiVersion: v1 kind: Secret metadata: name: traefik-authsecret type: Opaque stringData: users: cloudfe:$apr1$ETFHyV73$hzz88wP7TNSWhCDByD1VT0
traefik-basic-auth.yaml
以下:
apiVersion: traefik.containo.us/v1alpha1 kind: Middleware metadata: name: traefik-basic-auth spec: basicAuth: secret: traefik-authsecret
traefik-dashboard-ingress-route.yaml
以下:
apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: traefik-dashboard-route spec: entryPoints: - websecure tls: secretName: cloudfe-cert-tls routes: - match: Host(`traefik.cloud-fe.com`) kind: Rule services: - name: traefik port: 8080 middlewares: - name: traefik-basic-auth
kubectl apply -f traefik-authsecret.yaml -n kube-system kubectl apply -f traefik-basic-auth.yaml -n kube-system kubectl apply -f traefik-dashboard-ingress-route.yaml -n kube-system
看到沒,驗證經過才能訪問。
一塊兒 K8S DevOps & GitOps 雲☁️原生,關注黑客下午茶。