このドキュメントで説明されているソフトウェアは、サポートされなくなったか、拡張サポートされています。
Oracleでは、現在サポートされているリリースにアップグレードすることをお勧めします。
第2章 サービス・メッシュの設定
この項では、サービス・メッシュを設定するためにIstioモジュールをインストールする方法と、そのときにデプロイするコンポーネントについて説明します。
次に、サービス・メッシュの設定についての要約を示します。
-
Oracle Cloud Native Environment: モジュールをデプロイする環境を設定します。
-
Kubernetesモジュール: サービス・メッシュは既存のKubernetesクラスタにインストールすることも、インストールと同時にクラスタをデプロイすることもできます。
-
Helmモジュール: Helmは、Kubernetesパッケージの管理ツールです。Kubernetesクラスタにアプリケーションとリソースをインストールするために使用します。 Helmは、Kubernetesリソースのインストール、アップグレード、問合せおよび削除のためにKubernetes APIサーバーと相互作用します。
-
Istioモジュール: Istioモジュールは、Istioイングレスおよびエグレス・ゲートウェイ、Prometheusおよびクラスタ視覚化ツールGrafanaなど、サービス・メッシュをデプロイするために必要なコンテナをデプロイします。 PrometheusおよびGrafanaは、サポート・モジュールとして自動的にインストールされます。個別にインストールする必要はありません。
サービス・メッシュの作成に必要なすべての情報は、いくつかの方法で入力できます。 この章の各例では、次の方法を示しますが、別の組合せも使用できます。
-
単一のolcnectl module createコマンドで、すべてのモジュールを作成します(Kubernetesモジュールを含む)。 この方法は、2.1「サービス・モジュールのデプロイ(簡易方式)」の例で示します。
-
複数のolcnectl module createコマンドを使用して、すべてのモジュールを作成します。 この方法は、2.2「サービス・メッシュのデプロイ(詳細方式)」の例で示します。
-
対話形式で値の入力を求められるたびにolcnectl module createを使用して、すべてのモジュールを作成します。 この方法は、2.3「サービス・メッシュのデプロイ(対話方式)」の例で示します。
実際には、モジュールのデプロイに使用する方法は、目的の環境や優先事項によって異なります。また、既存のKubernetesクラスタにデプロイするか、サービス・メッシュのデプロイとKubernetesクラスタの作成を同時に実行するか、それとは別の方法で段階的に実行するかによっても異なります。 サービス・メッシュのデプロイメントの実行には、多種多様な方法を使用できます。これは、どのモジュールのデプロイメントについても当てはまることです。
Istioモジュールは、PrometheusモジュールとGrafanaモジュールの2つの他のモジュールをインストールします。 これらの2つのモジュールは、PrometheusおよびGrafanaをそれぞれインストールして、Kubernetesクラスタのモニタリングおよび可視化を有効にします。 Istioモジュールをインストールしてサービス・メッシュを作成するときは、これらのモジュールの情報を指定する必要はありません。
2.1 サービス・メッシュのデプロイ(簡易方式)
単一のolcnectl module createコマンドを使用して、サービス・メッシュとKubernetesクラスタの作成に必要なすべてのモジュールをデプロイできます。 この方法は、Kubernetesクラスタのデプロイと同時にサービス・メッシュをデプロイする場合に役立つことがあります。
既存のKubernetesモジュールのデプロイメントがある場合、そのインスタンスは、サービス・メッシュのデプロイ時に指定できます。
図2.1「デプロイメントの例」に、この例でデプロイされるモジュールを示します。 この例の各モジュール名は、枠線内に示されています。 例では、myenvironment
という名前のOracle Cloud Native Environmentを作成し、その中にmycluster
という名前のKubernetesモジュールをデプロイし、次にmyhelm
という名前のHelmモジュールをデプロイし、最後にmyistio
という名前のIstioモジュールを作成します。
モジュールの作成時に使用可能なオプションの完全なリストは、プラットフォーム・コマンドライン・インタフェースのolcnectl module createコマンドを参照してください。
-
環境をまだ設定していない場合は、モジュールをデプロイできる環境を作成します。 環境の設定方法の詳細は、スタート・ガイドを参照してください。 この例の環境名は、
myenvironment
です。 -
Kubernetesモジュールを設定またはデプロイしていない場合は、そのモジュールを設定します。 環境へのKubernetesモジュールの追加の詳細は、コンテナ・オーケストレーションを参照してください。 この例のKubernetesモジュール名は、
mycluster
です。 -
olcnectl module createコマンドを使用して、環境内のKubernetesモジュールに必要なモジュールを追加することでサービス・メッシュを作成します。 この例では、
mycluster
というKubernetesモジュールを使用します。そのモジュールに、myhelm
というHelmモジュールをデプロイして、最後に、myistio
というIstioモジュールを作成します。olcnectl module create \ --environment-name myenvironment \ --module istio \ --name myistio \ --helm-kubernetes-module mycluster \ --istio-helm-module myhelm
--module
オプションでは、作成するモジュールのタイプ(istio
)を設定します。 Istioモジュールの名前(この例ではmyistio
)は、--name
オプションを使用して定義します。IstioモジュールにはKubernetesとHelmが必要になるため、それらのモジュールについてのオプションも指定する必要があります。
--helm-kubernetes-module
オプションでは、使用するKubernetesモジュールの名前を設定します。 Kubernetesモジュールは、設定またはデプロイされている必要があります。 デプロイされている既存のKubernetesモジュールがある場合は、このオプションを使用してモジュールの名前を指定できます。 指定した名前のKubernetesモジュールがデプロイされていない場合は、サービス・メッシュと同時にKubernetesをデプロイできる新しいモジュールがデプロイされます。--istio-helm-module
オプションでは、デプロイするHelmモジュールの名前を設定します。モジュールの追加時に必要なオプションが一部でも含まれていないと、そのオプションを指定するように求められます。
-
新しいKubernetesモジュールをデプロイする場合は、olcnectl module validateコマンドを使用して、そのモジュールをノードにデプロイできるかどうかを検証します。 このステップは、ノードにデプロイされている既存のKubernetesモジュールがある場合は実行する必要がありません。 たとえば:
olcnectl module validate \ --environment-name myenvironment \ --name mycluster
-
新しいKubernetesモジュールをデプロイする場合は、olcnectl module installコマンドを使用して、ノードにモジュールをインストールします。 たとえば:
olcnectl module install \ --environment-name myenvironment \ --name mycluster
-
olcnectl module validateコマンドを使用して、Helmモジュールがノードにデプロイできることを検証します。 たとえば:
olcnectl module validate \ --environment-name myenvironment \ --name myhelm
-
olcnectl module installコマンドを使用して、Helmモジュールをインストールします。 たとえば:
olcnectl module install \ --environment-name myenvironment \ --name myhelm
Helmソフトウェア・パッケージはコントロール・プレーン・ノードにインストールされ、HelmモジュールはKubernetesクラスタにデプロイされます。
-
olcnectl module validateコマンドを使用して、Istioモジュールがノードにデプロイできることを検証します。 たとえば:
olcnectl module validate \ --environment-name myenvironment \ --name myistio
-
olcnectl module installコマンドを使用して、Istioモジュールをインストールします。 たとえば:
olcnectl module install \ --environment-name myenvironment \ --name myistio
Istioソフトウェア・パッケージはコントロール・プレーン・ノードにインストールされ、IstioモジュールはKubernetesクラスタにデプロイされます。
2.2 サービス・メッシュのデプロイ(詳細方式)
サービス・メッシュの作成に必要な各モジュールは、個別にKubernetesクラスタにデプロイできます。 この方式ではステップ数が増えますが、各モジュールの作成方法とクラスタへのデプロイ方法を明示的にコントロールできるようになります。 この例では、mycluster
というKubernetesモジュールがmyenvironment
という環境にすでにデプロイされていることを前提としています。
-
olcnectl module createコマンドを使用して、Helmモジュールを作成して、そのモジュールをKubernetesモジュールに追加します。 たとえば、
myhelm
というHelmモジュールを作成して、そのモジュールをmycluster
というKubernetesモジュールに追加するには、次のようにします。olcnectl module create \ --environment-name myenvironment \ --module helm \ --name myhelm \ --helm-kubernetes-module mycluster
--module
オプションでは、作成するモジュールのタイプ(helm
)を設定します。 Helmモジュールの名前(この例ではmyhelm
)は、--name
オプションを使用して定義します。--helm-kubernetes-module
オプションでは、Helmのインストール先にするKubernetesモジュールの名前を設定します。 -
olcnectl module validateコマンドを使用して、Helmモジュールがノードにデプロイできることを検証します。 たとえば、
myenvironment
という環境内のmyhelm
というHelmモジュールを検証するには、次のようにします。olcnectl module validate \ --environment-name myenvironment \ --name myhelm
-
olcnectl module installコマンドを使用して、Helmモジュールをデプロイします。 たとえば、
myenvironment
という環境にmyhelm
というHelmモジュールをデプロイするには、次のようにします。olcnectl module install \ --environment-name myenvironment \ --name myhelm
-
olcnectl module createコマンドを使用して、Istioモジュールをインストールし、そのモジュールをHelmモジュールに関連付けます。 たとえば、
myistio
というIstioモジュールを作成して、そのモジュールをmyhelm
というHelmモジュールに関連付けるには、次のようにします。olcnectl module create \ --environment-name myenvironment \ --module istio \ --name myistio \ --istio-helm-module myhelm
--module
オプションでは、作成するモジュールのタイプ(istio
)を設定します。 Istioモジュールの名前(この例ではmyistio
)は、--name
オプションを使用して定義します。--istio-helm-module
オプションでは、Istioモジュールのデプロイに使用するHelmモジュールの名前を設定します。 この例では、これはデプロイ済のmyhelm
というHelmモジュールです。 -
olcnectl module validateコマンドを使用して、Istioモジュールがノードにデプロイできることを検証します。 たとえば、
myenvironment
という環境内のmyistio
というIstioモジュールを検証するには、次のようにします。olcnectl module validate \ --environment-name myenvironment \ --name myistio
-
olcnectl module installコマンドを使用して、Istioモジュールをデプロイします。 たとえば、
myenvironment
という環境にmyistio
というIstioモジュールをデプロイするには、次のようにします。olcnectl module install \ --environment-name myenvironment \ --name myistio
Istioソフトウェア・パッケージはコントロール・プレーン・ノードにインストールされ、IstioモジュールはKubernetesクラスタにデプロイされます。
2.3 サービス・メッシュのデプロイ(対話方式)
サービス・メッシュの作成に必要な各モジュールは、Kubernetesクラスタに対話方式でデプロイすることもできます。この場合、必須の値ごとに入力が求められます。 他のデプロイメント・メソッドと同様に、最初に、サービス・メッシュ・モジュールをデプロイできるOracle Cloud Native Environmentを設定する必要があります。
この例では、サービス・メッシュに必要なモジュールを作成する際に、olcnectl module createコマンドを対話的に使用したときの出力を示します。 この例では、この章の別の例と同じモジュール名を使用して、既存のKubernetesクラスタにデプロイします。
-
olcnectl module createコマンドを使用して、Istioモジュールを作成し、すべての必須の値について入力が求められるようにするには、次のようにします。
olcnectl module create
? Please enter a value for environment-name:myenvironment
? Enter the module name:istio
? Enter the name of the instance of the istio modulemyistio
? Please select an option for istio-helm-module: New Entry ? Please enter a value for istio-helm-module:myhelm
? Please select an option for helm-kubernetes-module:mycluster
Modules created successfully. Modules created successfully. -
olcnectl module validateコマンドを使用して、Helmモジュールがノードにデプロイできることを検証します。 たとえば、
myenvironment
という環境内のmyhelm
というHelmモジュールを検証するには、次のようにします。olcnectl module validate \ --environment-name myenvironment \ --name myhelm
-
olcnectl module installコマンドを使用して、Helmモジュールをデプロイします。 たとえば、
myenvironment
という環境にmyhelm
というHelmモジュールをデプロイするには、次のようにします。olcnectl module install \ --environment-name myenvironment \ --name myhelm
-
olcnectl module validateコマンドを使用して、Istioモジュールがノードにデプロイできることを検証します。 たとえば、
myenvironment
という環境内のmyistio
というIstioモジュールを検証するには、次のようにします。olcnectl module validate \ --environment-name myenvironment \ --name myistio
-
olcnectl module installコマンドを使用して、Istioモジュールをデプロイします。 たとえば、
myenvironment
という環境にmyistio
というIstioモジュールをデプロイするには、次のようにします。olcnectl module install \ --environment-name myenvironment \ --name myistio
2.4 Istioモジュールのデプロイメントの検証
Istioモジュールがデプロイされていることと、必要なコンテナがistio-system
ネームスペースで実行されていることを確認できます。 コンテナがデプロイされていることを確認するには、kubectlコマンドを使用する必要があります。 kubectlコマンドの設定方法の詳細は、コンテナ・オーケストレーションを参照してください。
必要なコンテナが実行中であることを確認するには、制御計画ノードで、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
Istioモジュールとそのプロパティに関する情報を確認することもできます。
オペレータ・ノードで、olcnectl module reportコマンドを使用してモジュールに関する情報を確認します。 たとえば、次のコマンドを使用して、myenvironment
のmyistio
という名前のIstioモジュールを確認します:
olcnectl module report \ --environment-name myenvironment \ --name myistio \ --children
olcnectl module reportコマンドの構文の詳細は、「プラットフォーム・コマンドライン・インタフェース」を参照してください。
2.5 サービス・メッシュの削除
Kubernetesクラスタは残したままにして、サービス・メッシュのデプロイメントを削除できます。 そうするには、環境からIstioモジュールを削除します。
olcnectl module uninstallコマンドを使用して、Istioモジュールを削除します。 たとえば、myenvironment
という環境内のmyistio
というIstioモジュールを削除するには、次のようにします。
olcnectl module uninstall \ --environment-name myenvironment \ --name myistio
IstioモジュールとそのサポートするPrometheusおよびGrafanaモジュールは、環境から削除されます。
Istio、PrometheusおよびGrafanaモジュールがolcnectl module instancesコマンドを使用して削除されていることを確認できます。 これらの3つのモジュールは、環境内のモジュールとしてリストされなくなりました。
また、コントロール・プレーン・ノードでkubectlコマンドを使用してIstioコンポーネントが削除されたことを確認し、istio-system
ネームスペースで実行されているすべてのデプロイメントを問い合せることができます。 戻されるデプロイメントが存在しないことを確認します。
kubectl get deployment -n istio-system
No resources found in istio-system namespace.