在 Oracle Cloud 原生環境中啟用 Istio Proxy 側車資料隱碼

簡介

Istio 是一種服務網狀組織,提供個別的基礎架構層來處理服務間通訊。網路通訊是從服務本身抽象的,並由代理主機處理。Istio 使用邊車設計,這表示通訊代理在每個服務容器旁的容器中執行。若要讓自動邊車引入生效,應用程式要使用的命名空間必須以 istio-injection=enabled 標示。

目標

此教學課程顯示如何啟用自動代理側車注入,進而利用 Oracle Cloud Native Environment 中的 Istio 功能。

在此教學課程中,您要部署未啟用自動代理側車注入的應用程式。然後啟用自動代理側車注入,並再次部署應用程式。然後您會看到服務網狀組織中的 Pod 正在執行 Istio sidecar 代理主機。

必要條件

已部署 Oracle Cloud 原生環境 1.4 版,包括 Kubernetes 叢集。請參閱教學課程,網址為:

部署高可用性 Oracle Cloud 原生環境

部署 Oracle Cloud 原生環境

您也需要使用 Istio 模組來部署服務網狀組織。如需部署 Istio 模組的詳細資訊,請參閱 Oracle Cloud 原生環境文件

確認 Istio 已安裝並在執行中

在控制平面節點上,使用下列命令來顯示 istio-system 命名空間中的部署。

kubectl get deployment -n istio-system

輸出的外觀應該與下圖類似:

NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
grafana                2/2     2            2           2m44s
istio-egressgateway    2/2     2            2           2m48s
istio-ingressgateway   2/2     2            2           2m48s
istiod                 2/2     2            2           3m2s
prometheus-server      2/2     2            2           2m44s

建立簡單 NGINX 建置

使用下列命令建立名為 hello-world 的新建置,以執行 nginx 影像。

kubectl create deployment --image container-registry.oracle.com/olcne/nginx:1.17.7 hello-world

檢視預設命名空間中的 Kubernetes Pod

使用下列命令列出 Pod。

kubectl get pods

輸出的外觀應該與下圖類似:

NAME              READY   STATUS    RESTARTS   AGE
hello-world-...   1/1     Running   0          18s

請注意,READY 資料欄為 1/1,表示未啟用 Istio 自動代理主機側車注入。

刪除 NGINX 部署

使用下列命令刪除 hello-world 部署。

kubectl delete deployments hello-world

啟用自動代理側車注入

若要讓自動邊車引入生效,應用程式要使用的命名空間必須以 istio-injection=enabled 標示。下列範例會標示預設命名空間。

kubectl label namespace default istio-injection=enabled

kubectl get namespace 命令會確認已正確標示預設命名空間。

kubectl get namespace -L istio-injection

輸出的外觀應該與下圖類似:

NAME                           STATUS   AGE   ISTIO-INJECTION
default                        Active   23m   enabled
externalip-validation-system   Active   22m   
istio-system                   Active   19m   
kube-node-lease                Active   23m   
kube-public                    Active   23m   
kube-system                    Active   23m   
kubernetes-dashboard           Active   22m   

您現在可以看到預設命名空間包含 ISTIO_INJECTION 標籤。

建立簡單 NGINX 建置

使用下列命令建立名為 hello-world 的新建置,以執行 nginx 影像。

kubectl create deployment --image container-registry.oracle.com/olcne/nginx:1.17.7 hello-world

檢視預設命名空間中的 Kubernetes Pod

使用 kubectl get pods 命令列出 Pod。

kubectl get pods

輸出的外觀應該與下圖類似:

NAME              READY   STATUS    RESTARTS   AGE
hello-world-...   2/2     Running   0          20s

請注意,READY 資料欄為 2/2,表示已啟用 Istio 自動代理汽車注入,且網面中的 Pod 正在執行 Istio sidecar 代理主機。

停用自動代理主機側車注入

使用 kubectl label 從預設命名空間移除 istio-injection=enabled 標籤,如圖所示。

kubectl label namespace default istio-injection-

kubectl get namespace 命令會確認標籤已從預設命名空間中移除。

kubectl get namespace -L istio-injection

輸出的外觀應該與下圖類似:

NAME                           STATUS   AGE   ISTIO-INJECTION
default                        Active   39m   
externalip-validation-system   Active   38m   
istio-system                   Active   36m   
kube-node-lease                Active   39m   
kube-public                    Active   39m   
kube-system                    Active   39m   
kubernetes-dashboard           Active   38m   

最後,刪除 NGINX 部署。

kubectl delete deployments hello-world

其他資訊

其他學習資源

探索 docs.oracle.com/learn 的其他實驗室,或存取更多 Oracle Learning YouTube 頻道的免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請瀏覽 Oracle Help Center