《Linkerd官方文件》與Istio一起執行Linkerd
與Istio一起執行
Istio是一個連線,管理和保護微服務的開放平臺。Linkerd是雲本機應用程式的開源服務網格。Istio和Linkerd可以一起工作,Istio可作為跨Linkerd例項的控制平面。
Linkerd的Istio整合是實驗性的,目前支援 路由規則, 入口, 出口和 指標。即將推出支援 故障注入, 目標策略, 路由策略, ACL和身份驗證。
安裝Istio
Istio + Linkerd由5個主要元件組成:
- Istio Pilot向服務網格提供路由規則,策略和服務發現資訊。
- Istio Mixer從服務網格中提取指標,並將它們傳遞到Prometheus等後端。
- Linkerd服務網格代理所有服務間通訊。
- Linkerd Ingress,作為入口控制器的Linkerd 。
- Linkerd Egress,一個Linkerd,用於處理從叢集發出的所有流量。
Linkerd目前支援Istio 0.1.6。要安裝Istio,請按照下列步驟操作:
- 按照步驟1-4 安裝istioctl二進位制檔案,並根據需要說明叢集的RBAC。
- 執行
kubectl apply -f https://raw.githubusercontent.com/linkerd/linkerd-examples/master/istio/istio-linkerd.yml
將安裝:- Istio Pilot
- Istio Mixer
- Linkerd服務網格
- Linkerd Ingress
- Linkerd Egress
- (可選)按照“ 的步驟啟用度量收集 。
部署您的應用程式
為了讓您的應用程式使用Linkerd服務網格,您可以使用名為istio-init
的初始化容器來部署它 。此init容器將iptables規則配置為通過Linkerd服務網格透明地重定向所有傳出請求。
要使用此init容器輕鬆部署您的應用程式,您可以安裝該 linkerd-inject
實用程式
go get github.com/linkerd/linkerd-inject
然後用它來部署你的應用程式。
kubectl apply -f <(linkerd-inject -f samples/apps/bookinfo/bookinfo.yaml)
(Minikube使用者需要通過linkerd-inject
使用-useServiceVip
標誌)
或者,您可以手動新增init容器到您的Kubernetes配置,而不是使用linkerd-inject
:
initContainers:
- name: init-linkerd
image: linkerd/istio-init:v1
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
args:
- -p
- "4140" # port of the Daemonset Linkerd's incoming router
- -s
- "L5D" # linkerd Daemonset service name, uppercased
- -m
- "false" # set to true if running in minikube
imagePullPolicy: IfNotPresent
securityContext:
capabilities:
add:
- NET_ADMIN
試試看
嘗試Istio 以檢視所有正在執行的內容。請注意,要部署BookInfo示例,您需要使用linkerd-inject命令:
kubectl apply -f <(linkerd-inject -f samples/apps/bookinfo/bookinfo.yaml)
而不是istioctl kube-inject
命令:
kubectl apply -f <(istioctl kube-inject -f samples/apps/bookinfo/bookinfo.yaml)
有關Istio + Linkerd整合中特定Istio功能如何工作的更多資訊,請繼續閱讀。
度量
如果您還沒有這樣做,請安裝指標收集元件:
kubectl apply -f install/kubernetes/addons/prometheus.yaml
kubectl apply -f install/kubernetes/addons/grafana.yaml
kubectl apply -f install/kubernetes/addons/servicegraph.yaml
您現在可以按照描述檢視Grafana儀表板 。
請注意,在Linkerd新增對它們的支援之前,有些指標可能會丟失。
入口
如所述,可以使用Ingress資源配置 。請注意,要啟用HTTPS,您必須在入站Linkerd配置中啟用TLS,如 所述,而不是在Ingress資源中。
出口
所有具有與叢集中的任何服務都不匹配的主機/機構標題的請求將被髮送到專用出口Linkerd。出口Linkerd將請求轉發到叢集外的服務(如果指定了埠443,則使用HTTPS)。沒有必要建立 ExternalName
服務資源。檢視以獲取更多詳細資訊。
結論
以上各節介紹如何將Linkerd與Istio一起使用,包括如何配置入口,出口和度量收集。這種整合目前處於實驗狀態; Istio正在迅速發展,我們將繼續使整合功能集更加具體化。