在 Oracle Cloud 原生環境中啟用 Istio Proxy 側車資料隱碼
簡介
Istio 是一種服務網狀組織,提供個別的基礎架構層來處理服務間通訊。網路通訊是從服務本身抽象的,並由代理主機處理。Istio 使用邊車設計,這表示通訊代理在每個服務容器旁的容器中執行。若要讓自動邊車引入生效,應用程式要使用的命名空間必須以 istio-injection=enabled
標示。
目標
此教學課程顯示如何啟用自動代理側車注入,進而利用 Oracle Cloud Native Environment 中的 Istio 功能。
在此教學課程中,您要部署未啟用自動代理側車注入的應用程式。然後啟用自動代理側車注入,並再次部署應用程式。然後您會看到服務網狀組織中的 Pod 正在執行 Istio sidecar 代理主機。
必要條件
已部署 Oracle Cloud 原生環境 1.4 版,包括 Kubernetes 叢集。請參閱教學課程,網址為:
您也需要使用 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。
Enable Istio Proxy Sidecar Injection in Oracle Cloud Native Environment
F49719-02
November 2021
Copyright © 2021, Oracle and/or its affiliates.