《Istio官方文件》Kubernetes快速開始
Kubernetes快速開始
在Kubernetes群集中安裝和配置Istio時,可以參考如下快速入門說明。
先決條件
以下說明要求您有權訪問啟用了RBAC(基於角色的訪問控制)的Kubernetes 1.7.3或更新的群集。你還需要安裝1.7.3或更新版本。如果您希望啟用自動注射支架,您需要開啟群集中的Kubernetes alpha功能。
注意:如果您安裝了Istio 0.1.x,請在安裝新版本之前徹底解除安裝它(包括啟用Istio的所有應用程式視窗的Istio支架)。
- 安裝或升級Kubernetes CLI kubectl以匹配群集支援的版本(1.7或更高版本以支援CRD)。
- 根據您的Kubernetes提供者:
- 要在本地安裝Istio,請安裝最新版本的
- Google Kubernetes引擎
- 檢索kubectl的憑證(用要使用的叢集的名稱以及叢集所在的區域替換):
gcloud container clusters get-credentials <cluster-name> --zone <zone> --project <project-name>
- 將叢集管理員許可權授予當前使用者(需要管理員許可權才能為Istio建立必要的RBAC規則):
kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$(gcloud config get-value core/account)
- 檢索kubectl的憑證(用要使用的叢集的名稱以及叢集所在的區域替換):
- IBM雲容器服務
- 檢索kubectl的憑證(用要使用的叢集的名稱替換):
$(bx cs cluster-config <cluster-name>|grep "export KUBECONFIG")
- 檢索kubectl的憑證(用要使用的叢集的名稱替換):
- IBM Cloud Private 2.1或更高版本
- 根據此處的步驟配置kubectl CLI以瞭解如何訪問IBM Cloud Private Cluster。
- Openshift Origin版本3.7或更高版本
- 預設情況下,Openshift不允許以UID 0執行容器。為Istio的服務帳戶啟用使用UID 0的容器以及Prometheus和Grafana外掛:
oc adm policy add-scc-to-user anyuid -z istio-ingress-service-account -n istio-system oc adm policy add-scc-to-user anyuid -z istio-grafana-service-account -n istio-system oc adm policy add-scc-to-user anyuid -z istio-prometheus-service-account -n istio-system
- 執行應用程式視窗的服務帳戶需要有特權的安全上下文約束而作為支架注入的一部分。
oc adm policy add-scc-to-user privileged -z default -n <target-namespace>
- 預設情況下,Openshift不允許以UID 0執行容器。為Istio的服務帳戶啟用使用UID 0的容器以及Prometheus和Grafana外掛:
- 要在本地安裝Istio,請安裝最新版本的
安裝步驟
從0.2版本開始,Istio安裝在自己的istio-system名稱空間中,可以管理所有其他名稱空間的微服務。
- 轉至Istio釋出頁面下載與您的作業系統相對應的安裝檔案。如果您使用的是MacOS或Linux系統,則還可以執行以下命令自動下載並提取最新版本:
curl -L https://git.io/getLatestIstio | sh -
- 提取安裝檔案並將目錄更改為檔案位置。安裝目錄包含:
- install/目錄下的Kubernetes的安裝檔案.yaml
- samples/目錄中的示例應用程式
- bin/目錄中的istioctl客戶端二進位制檔案。istioctl在手動注入Envoy作為附屬代理並建立路由規則和策略時使用。
- istio.VERSION配置檔案
- 將目錄更改為istio包。例如,如果軟體包是istio-0.5.0
cd istio-0.5.0
- 將istioctl客戶端新增到您的PATH。例如,在MacOS或Linux系統上執行以下命令:
export PATH=$PWD/bin:$PATH
- 安裝Istio的核心元件。選擇下面兩個互斥選項之一:
a)安裝Istio,但是在sidecars之間不啟用相互TLS驗證。為現有應用程式的叢集選擇此選項,使用Istio sidecar的服務需要能夠與其他非Istio Kubernetes服務以及使用活動性和準備就緒探測器,無頭服務或StatefulSets的應用程式通訊。
kubectl apply -f install/kubernetes/istio.yaml
或者是
b)安裝Istio並啟用側櫃之間的相互TLS認證:
kubectl apply -f install/kubernetes/istio-auth.yaml
這兩個選項都會建立istio-system名稱空間以及所需的RBAC許可權,並部署Istio-Pilot,Istio-Mixer,Istio-Ingress和Istio-CA(證書頒發機構)。
- 可選:如果您的群集啟用了Kubernetes alpha功能,並且希望啟用sidecar的自動注入,請安裝Istio-Initializer:
kubectl apply -f install/kubernetes/istio-initializer.yaml
驗證安裝
- 請確保以下Kubernetes服務部署:istio-pilot,istio-mixer,istio-ingress。
kubectl get svc -n istio-system
注意:如果您的叢集中不支援在外部負載平衡(例如,minikube)的環境中執行,該EXTERNAL-IP的istio-ingress會產生<pending>。您必須使用服務NodePort訪問應用程式,或使用埠轉發。
- 確保相應Kubernetes視窗已經部署並且所有的容器都執行起來:istio-pilot-,istio-mixer-,istio-ingress-,istio-ca-,和可選的istio-initializer-*。
kubectl get pods -n istio-system
部署您的應用程式
您現在可以部署您自己的應用程式,或像BookInfo一樣安裝提供的示例應用程式中的一個。注意:應用程式必須使用HTTP / 1.1或HTTP / 2.0協議來處理所有HTTP流量,因為HTTP / 1.0不受支援。
如果您啟動了Istio-Initializer,如上所示,您可以直接使用kubectl create。Istio-Initializer會自動將Envoy容器注入到您的應用程式視窗中:
kubectl create -f <your-app-spec>.yaml
如果您沒有安裝Istio-Initializer,則必須使用istioctl kube-inject在應用程式視窗中手動注入Envoy容器,然後再部署它們:
kubectl create -f <(istioctl kube-inject -f <your-app-spec>.yaml)
解除安裝
- 解除安裝Istio初始化程式:如果您安裝了啟用初始化程式的Istio,請將其解除安裝:
kubectl delete -f install/kubernetes/istio- initializer.yaml
- 解除安裝Istio核心元件。對於0.4.0版本,解除安裝將刪除RBAC許可權,istio-system名稱空間以及其下的所有資源。忽略不存在的資源的錯誤是安全的,因為它們可能已被分層刪除。a)如果您在禁用了相互TLS身份驗證的情況下安裝了Istio:
kubectl delete -f install/kubernetes/istio.yaml
要麼
b)如果您在啟用了相互TLS身份驗證的情況下安裝了Istio:
kubectl delete -f install/kubernetes/istio-auth.yaml