《Istio官方文件》Nomad & Consul-安裝
安裝
注意:Nomad上的設定尚未經過測試。
在非Kubernetes環境中使用Istio涉及以下關鍵任務:
- 使用Istio API伺服器設定Istio控制平面
- 將Istio sidecar新增到服務的每個例項
- 確保請求通過sidecars路由
設定控制面
Istio控制平面由四個主要服務組成:Pilot,Mixer,CA和API伺服器。
API伺服器
Istio的API伺服器(基於Kubernetes的API伺服器)提供了諸如配置管理和基於角色的訪問控制等關鍵功能。API伺服器需要一個作為永續性儲存。可以在這裡找到設定API伺服器的詳細說明。有關Kubernetes API伺服器啟動選項的文件可以在
本地安裝
為了進行概念驗證,可以使用以下Docker-compose檔案安裝一個簡單的單個容器API伺服器:
version: '2' services: etcd: image: quay.io/coreos/etcd:latest networks: istiomesh: aliases: - etcd ports: - "4001:4001" - "2380:2380" - "2379:2379" environment: - SERVICE_IGNORE=1 command: [ "/usr/local/bin/etcd", "-advertise-client-urls=http://0.0.0.0:2379", "-listen-client-urls=http://0.0.0.0:2379" ] istio-apiserver: image: gcr.io/google_containers/kube-apiserver-amd64:v1.7.3 networks: istiomesh: ipv4_address: 172.28.0.13 aliases: - apiserver ports: - "8080:8080" privileged: true environment: - SERVICE_IGNORE=1 command: [ "kube-apiserver", "--etcd-servers", "http://etcd:2379", "--service-cluster-ip-range", "10.99.0.0/16", "--insecure-port", "8080", "-v", "2", "--insecure-bind-address", "0.0.0.0" ]
其他Istio元件
Istio Pilot,Mixer和CA的Debian軟體包可通過Istio發行版獲得。或者,這些元件可以作為Docker容器執行(docker.io/istio/pilot,docker.io/istio/mixer,docker.io/istio/istio-ca)。請注意,這些元件是無狀態的,可以水平縮放。每個元件都依賴於Istio API伺服器,而Istio API伺服器又依賴於etcd叢集來實現永續性。為了實現高可用性,每個控制面服務可以在Nomad中作為任務來執行,其中服務節可以用於描述控制面服務的期望屬性。
將Sidecars新增到服務例項
應用程式中的每個服務例項必須由Istio sidecar陪同。根據您的安裝單元(Docker容器,虛擬機器,裸機節點),Istio sidecar需要安裝到這些元件中。例如,如果您的基礎架構使用虛擬機器,則必須在每個需要成為服務網格一部分的虛擬機器上執行Istio附屬程式程序。
將sidecars打包成基於Nomad部署的一種方式是將Istio sidecars過程作為任務新增到任務組中。一個任務組是一個或多個相關任務的集合,這些任務保證在同一個主機上共置。但是,與Kubernetes Pods不同,組中的任務不共享相同的網路名稱空間。因此,在使用iptables規則透過Istio sidecars透明地重新路由所有網路流量時,必須注意確保每個主機只執行一個任務組。當Istio支援非透明代理(應用程式明確地與sidecars對話)時,此限制將不再適用。
通過Istio Sidecar路由流量
部分sidecars安裝應該包括設定適當的IP表規則,以透明地通過Istio sidecars路由應用程式的網路流量。在這裡可以找到設定這種轉發的IP表指令碼。
注意:這個指令碼必須在啟動應用程式或sidecar程序之前執行。