Oracle Cloud Native EnvironmentでIstio Proxy Sidecarインジェクションを有効化
イントロダクション
Istioは、サービス間通信を処理するための個別のインフラストラクチャ・レイヤーを提供するサービス・メッシュです。ネットワーク通信はサービス自体から抽象化され、プロキシによって処理されます。Istioでは、サイドカー設計が使用されています。このデザインでは、通信プロキシがすべてのサービス・コンテナの横に独自のコンテナ内で実行されます。サイドカーの自動インジェクションを有効にするには、アプリケーションで使用するネームスペースに、istio-injection=enabledのラベルが付いている必要があります。
目的
このチュートリアルでは、自動プロキシ・サイドカー・インジェクションを有効にし、Oracle Cloud Native EnvironmentのIstioの機能を利用する方法を示します。
このチュートリアルでは、自動プロキシ・サイドカー・インジェクションを有効にせずにアプリケーションをデプロイします。次に、自動プロキシ・サイドカー・インジェクションを有効にし、アプリケーションを再度デプロイします。サービス・メッシュのポッドがIstio sidecarプロキシを実行していることを確認できます。
前提条件
Oracle Cloud Native Environmentリリース1.4 (Kubernetesクラスタを含む)をデプロイしました。次の場所にあるチュートリアルを参照してください。
高可用性Oracle Cloud Native Environmentのデプロイ
Oracle Cloud Native Environmentのデプロイ
Istioモジュールを使用してサービス・メッシュをデプロイする必要もあります。Istioモジュールのデプロイの詳細は、Oracle Cloud Native Environmentドキュメンテーションを参照してください。
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デプロイメントの作成
次のコマンドを使用して、nginxイメージを実行するhello-worldという名前の新しいデプロイメントを作成します。
kubectl create deployment --image container-registry.oracle.com/olcne/nginx:1.17.7 hello-world
デフォルト・ネームスペースでのKubernetesポッドの表示
次のコマンドを使用して、ポッドをリストします。
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デプロイメントの作成
次のコマンドを使用して、nginxイメージを実行するhello-worldという名前の新しいデプロイメントを作成します。
kubectl create deployment --image container-registry.oracle.com/olcne/nginx:1.17.7 hello-world
デフォルト・ネームスペースでのKubernetesポッドの表示
kubectl get podsコマンドを使用して、ポッドをリストします。
kubectl get pods
出力は次のようになります。
NAME READY STATUS RESTARTS AGE
hello-world-... 2/2 Running 0 20s
READY列は2/2で、Istio自動プロキシ・サイドカー・インジェクションが有効であることと、メッシュ内のポッドが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
詳細情報
- Oracle Cloud Native Environmentドキュメント
- アップストリーム・ドキュメント(https://istio.io/)
- Oracle Cloud Native Environmentトレーニング
- Oracle Linuxカリキュラム
- Oracle Linuxラーニング・サブスクリプション
その他の学習リソース
docs.oracle.com/learnのその他のラボを確認するか、Oracle Learning YouTubeチャネルでより無料の学習コンテンツにアクセスします。また、education.oracle.com/learning-explorerにアクセスしてOracleラーニング・エクスプローラになることもできます。
製品ドキュメントは、Oracleヘルプ・センターを参照してください。
Enable Istio Proxy Sidecar Injection in Oracle Cloud Native Environment
F49728-02
November 2021
Copyright © 2021, Oracle and/or its affiliates.