1. 程式人生 > >《Linkerd官方文件》與Istio一起執行Linkerd

《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. 按照步驟1-4 安裝istioctl二進位制檔案,並根據需要說明叢集的RBAC。
  2. 執行kubectl apply -f https://raw.githubusercontent.com/linkerd/linkerd-examples/master/istio/istio-linkerd.yml將安裝:
    • Istio Pilot
    • Istio Mixer
    • Linkerd服務網格
    • Linkerd Ingress
    • Linkerd Egress
  3. (可選)按照“ 的步驟啟用度量收集 。

部署您的應用程式

為了讓您的應用程式使用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正在迅速發展,我們將繼續使整合功能集更加具體化。