Istio 安裝


官網:https://istio.io/


控制中心做了進一步的細分,分成了 Pilot、Mixer 和 Citadel,它們的各自功能如下:

  • Pilot:為 Envoy 提供了服務發現,流量管理和智能路由(AB 測試、金絲雀發布等),以及錯誤處理(超時、重試、熔斷)功能。 用戶通過 Pilot 的 API 管理網絡相關的資源對象,Pilot 會根據用戶的配置和服務的信息把網絡流量管理變成 Envoy 能識別的格式分發到各個 Sidecar 代理中。
  • Mixer:為整個集群執行訪問控制(哪些用戶可以訪問哪些服務)和 Policy 管理(Rate Limit,Quota 等),並且收集代理觀察到的服務之間的流量統計數據。
  • Citadel:為服務之間提供認證和證書管理,可以讓服務自動升級成 TLS 協議。

下載 Istio

下載內容將包含:安裝文件、示例和 istioctl 命令行工具。

curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.6.12 TARGET_ARCH=x86_64 sh -

cd istio-1.6.12/

# 將 istioctl 客戶端路徑增加到 path 環境變量中
export PATH=$PWD/bin:$PATH

# 安裝 demo 配置
istioctl install --set profile=demo

# 設置啟用自動注入 istio sidecar 的命名空間,當使用 kubectl apply 來部署應用時,如果 pod 啟動在標有 istio-injection=enabled 的命名空間中,那么,Istio sidecar 注入器將自動注入 Envoy 容器到應用的 pod 中:
kubectl label namespace default istio-injection=enabled

創建一個例子應用

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml 

# 確認應用已經正確啟動
kubectl get svc
kubectl get pod

kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -s productpage:9080/productpage | grep -o "<title>.*</title>"

# 創建一個 Istio Ingress Gateway 接入外部流量
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

# 檢查
istioctl analyze

# 確定 ingress 的IP和端口,下面有兩種情況
# 情況一:EXTERNAL-IP 存在
kubectl get svc istio-ingressgateway -n istio-system

# 情況二:EXTERNAL-IP 不存在,使用 nodePort 
export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')
export INGRESS_HOST=$(kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}')
export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT

echo "$GATEWAY_URL"
echo "http://$GATEWAY_URL/productpage"

# 使用瀏覽器訪問上面的IP,確定可以正常訪問

創建 dashboard

kubectl apply -f samples/addons
while ! kubectl wait --for=condition=available --timeout=600s deployment/kiali -n istio-system; do sleep 1; done
kubectl get deployment --all-namespaces

# 啟動 web UI
istioctl dashboard kiali --address=0.0.0.0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM