標題 :
1.利用consul實現k8s服務自動發現
目錄 :
微服務架構設計
序號 :
1html
] } } ] }
}
- consul自身支持ACL,但目前,Helm圖表不支持其中一些功能,須要額外的手動配置, 有關詳細信息可參閱:https://www.consul.io/docs/platform/k8s/helm.html - 咱們使用basic-auth做了受權,當用戶訪問consul-ui時須要提供用戶名和密碼
shell
yum -y install httpd
echo "$(htpasswd -nb -C 5 consul yourpassword)" >> auth
kubectl create secret generic basic-auth --from-file=auth
- <font color='red'>當您使用basic-auth時,建議使用Https,不然您的用戶名和密碼可能會被竊聽</font> ##### [按需]卸載consul
shell
helm del --purge registry
kubectl delete pvc -l app=consul
kubectl delete svc -l consul=true
##### 查看服務是否被註冊 登陸到consul的ui,https://yourdomain/ui/dc1/services ![](https://www.showdoc.cc/server/api/common/visitfile/sign/26402b4ae6e60fae2e0e8a15f3bbfa33?showdoc=.jpg) 能夠看到咱們的服務已經被註冊到了consul中 如下事項須要您注意: - <font color='red'>若是您的服務沒有被正確註冊,請檢查registry-consul-sync-catalog-*的日誌,另外若是您的服務自己存在問題(例如:服務自己不能正確反代到pod)服務也不能被註冊</font> - 您須要爲pod建立service, consul才能發現. 也就是說consul發現的資源對象時svc,並不是pod ##### 服務註冊時的一些規範 - 從上圖能夠看出,咱們的服務名稱很長.這將影響咱們使用網關進行路由的體驗(有關網關的設計會在後面章節說起),您能夠更改此設置.請更改您的service的親和屬性:"consul.hashicorp.com/service-name": "yourservicename" - 爲方便辨識服務,能夠爲服務打上標籤.方便檢索 - 有些服務不該該被註冊,例如網關服務(由於網關做爲外部流量的入口,應該由它路由到具體的服務).您能夠更改親和屬性:"consul.hashicorp.com/service-sync": "false"
shell
"annotations": {
"consul.hashicorp.com/service-name": "terminal",
"consul.hashicorp.com/service-tags": "honeysuckle,terminalserver"
}
```
最後的效果應該類型這樣:
git
https://github.com/helm/charts/tree/master/stable/consul
https://www.sunnyos.com/article-show-85.htmlgithub