機械翻訳について

2 Istioモジュールのインストール

この項では、サービス・メッシュを設定するためにIstioモジュールをインストールする方法と、そのときにデプロイするコンポーネントについて説明します。

Istioモジュールは、ほとんど空のプロファイルを使用してインストールされます。 デフォルトのIstioモジュール・プロファイルには、プロファイル名、コンテナ・イメージ・ハブおよびコンテナ・イメージ・タグが含まれます。 Istioモジュールのインストールをカスタマイズするには、カスタムIstioプロファイルを使用します。 これにより、Kubernetesリソース設定の設定、個々のIstioコンポーネントの有効化または無効化、およびその設定の構成を行うことができます。

これらのコンポーネントをカスタマイズするには、これらの設定用のYAML構成ファイルを記述し、Istioモジュールのデプロイ時に使用します。 さまざまな構成を持つ複数のIstioモジュールを、すべて同じIstioコントロール・プレーンを使用してデプロイできます。

構成ファイルを使用して単一のカスタムIstioモジュールをデプロイすることも、複数のIstioモジュールをデプロイすることもできます。 複数のIstioモジュールをデプロイするには、初期モジュールをデフォルト・モジュールとして設定する必要があります。これはIstioコントロール・プレーンとして機能します。 このデフォルト・モジュールは、「親」 Istioモジュールとみなされます。 親Istioモジュールは、デフォルトのプロファイルを使用してインストールされます。

構成ファイルの作成

カスタマイズされたIstioモジュールをインストールするには、YAML構成ファイルを作成して構成オプションを指定する必要があります。 構成を設定するには、IstioOperatorリソース・ファイルのspecセクションを使用します。 構成ファイルで使用できるオプションの詳細は、アップストリームの「Istioドキュメント」にあるIstioOperatorリソースを参照してください。

構成ファイルに完全なIstioOperatorファイルを含めないでください。specセクションに続く使用可能なオプションのみを使用してください。 したがって、次の行を構成ファイルに含めないでください:

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
構成ファイルには、設定するIstioOperator構成が含まれます。たとえば:
profile: myistio
hub: myhub.example
components:
  egressGateways:
  - name: istio-egressgateway
    enabled: true
または、次のように、カスタマイズするIstioOperator componentsのみを指定できます:
components:
  egressGateways:
  - name: istio-egressgateway
    enabled: true

YAML構成ファイルは、Istioモジュールの作成時にolcnectl module createコマンドとともに使用されます。

例2-1 Istioイングレス・ゲートウェイのロード・バランサを設定するための構成ファイル

この例のIstio構成ファイルでは、Oracle Cloud Infrastructure Cloud Controller Managerモジュールを使用して、適切な注釈をistio-ingressgatewayサービスに適用してこれを設定することで、Istioイングレス・ゲートウェイの「Oracle Cloud Infrastructureロード・バランサ」をプロビジョニングします。

ノート:

この例を試すには、Oracle Cloud Infrastructure Cloud Controller Managerモジュールがインストールされている必要があります。

YAML構成ファイルには次のものが含まれます:

components:
  ingressGateways:
  - name: istio-ingressgateway
    k8s:
      serviceAnnotations:
        service.beta.kubernetes.io/oci-load-balancer-security-list-management-mode: "None"
        service.beta.kubernetes.io/oci-load-balancer-internal: "true"
        service.beta.kubernetes.io/oci-load-balancer-shape: "flexible"
        service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "10"
        service.beta.kubernetes.io/oci-load-balancer-shape-flex-max: "10"

含めることができるOracle Cloud Infrastructure Cloud Controller Manager注釈の完全なリストは、次の場所にあるアップストリームのドキュメントを参照してください:

https://github.com/oracle/oci-cloud-controller-manager/blob/master/docs/load-balancer-annotations.md

この構成ファイルを使用してIstioモジュールをデプロイすると、istio-systemネームスペースにデプロイされた次のKubernetesサービスが表示されます。 コントロール・プレーン・ノードで、istio-systemネームスペースのサービスを表示します。

kubectl --namespace istio-system get svc

出力は次のようになります:

NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP       PORT(S)            ...
grafana                ClusterIP      10.97.12.24      <none>            3000/TCP           ...
istio-egressgateway    ClusterIP      10.106.217.129   <none>            80/TCP,443/TCP,1544...
istio-ingressgateway   LoadBalancer   10.103.9.119     100.102.106.171   15021:30762/TCP,80:...
istiod                 ClusterIP      10.106.101.205   <none>            15010/TCP,15012/TCP...
prometheus-server      ClusterIP      10.107.228.56    <none>            9090/TCP           ...

istio-ingressgatewayサービスがタイプLoadBalancerで、externalIPが関連付けられていることがわかります。

例2-2 Istioイングレス・ゲートウェイのロード・バランサを設定するための詳細構成ファイル

この構成ファイル例では、myistioという名前のネームスペースにmy-istio-ingressgatewayという名前のIstioイングレス・ゲートウェイを作成するプロファイルを使用してIstioモジュールを作成します。 この例では、Oracle Cloud Infrastructure Cloud Controller Managerモジュールを使用してIstioイングレス・ゲートウェイの「Oracle Cloud Infrastructureロード・バランサ」をプロビジョニングし、ゲートウェイの構成方法の詳細も示します。

ノート:

この例を試すには、Oracle Cloud Infrastructure Cloud Controller Managerモジュールがインストールされている必要があります。

YAML構成ファイルには次のものが含まれます:

components:
  ingressGateways:
  - enabled: true
    k8s:
      hpaSpec:
        maxReplicas: 5
        minReplicas: 2
        scaleTargetRef:
          apiVersion: apps/v1
          kind: Deployment
          name: my-istio-ingressgateway
      resources:
        limits:
          cpu: 2000m
          memory: 1024Mi
        requests:
          cpu: 100m
          memory: 128Mi
      serviceAnnotations:
        service.beta.kubernetes.io/oci-load-balancer-security-list-management-mode: "None"
        service.beta.kubernetes.io/oci-load-balancer-internal: "true"
        service.beta.kubernetes.io/oci-load-balancer-shape: "flexible"
        service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "10"
        service.beta.kubernetes.io/oci-load-balancer-shape-flex-max: "10"
      service:
        ports:
        - name: status-port
          port: 15021
          protocol: TCP
          targetPort: 15021
        - name: http2
          port: 80
          protocol: TCP
          targetPort: 8080
        - name: https
          port: 443
          protocol: TCP
          targetPort: 8443
        - name: tcp-istiod
          port: 15012
          protocol: TCP
          targetPort: 15012
        - name: tls
          port: 15443
          protocol: TCP
          targetPort: 15443
      strategy:
        rollingUpdate:
          maxSurge: 100%
          maxUnavailable: 25%
    name: my-istio-ingressgateway
    namespace: myistio
values:
  gateways:
    istio-ingressgateway:
      autoscaleEnabled: true
      env: {}
      name: istio-ingressgateway
      secretVolumes:
      - mountPath: /etc/istio/ingressgateway-certs
        name: ingressgateway-certs
        secretName: istio-ingressgateway-certs
      - mountPath: /etc/istio/ingressgateway-ca-certs
        name: ingressgateway-ca-certs
        secretName: istio-ingressgateway-ca-certs
      type: LoadBalancer

この例では、my-istio-ingressgatewayという名前のIstioイングレス・ゲートウェイは、myistioという名前のネームスペースにあります。 このネームスペースは、istio-systemのデフォルトのIstioネームスペースではありません。 この例に示すように、ゲートウェイ・サービスをデフォルト・ネームスペース以外のネームスペースにインストールする場合は、最初にネームスペースを作成する必要があります。 コントロール・プレーン・ノードでkubectl create namespaceコマンドを使用して、新しいネームスペースを作成します。 たとえば、コントロール・プレーン・ノードの場合:

kubectl create namespace myistio

この構成ファイルを使用してIstioモジュールをデプロイすると、デフォルトのistio-systemネームスペースにデプロイされた次のKubernetesサービスが表示されます。 コントロール・プレーン・ノードで、istio-systemネームスペースのサービスを表示します。

kubectl --namespace istio-system get svc

出力は次のようになります:

NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                ...
grafana                ClusterIP      10.103.216.188   <none>        3000/TCP               ...
istio-egressgateway    ClusterIP      10.111.113.121   <none>        80/TCP,443/TCP,15443/TC...
istio-ingressgateway   LoadBalancer   10.106.116.57    <pending>     15021:30210/TCP,80:3193...
istiod                 ClusterIP      10.99.54.66      <none>        15010/TCP,15012/TCP,443...
prometheus-server      ClusterIP      10.110.20.110    <none>        9090/TCP               ...

istio-ingressgatewayサービスはLoadBalancer型で、externalIPは関連付けられていません(pending状態です)。 これは、デプロイされるデフォルト・サービスであり、デフォルトのIstio構成を使用して設定されます。

my-isitio-ingressgatewayという名前のイングレス・ゲートウェイ・サービスを表示するには、myistioネームスペースで実行されているサービスを取得します。 コントロール・プレーン・ノードで、myistioネームスペースのサービスを表示します。

kubectl --namespace myistio get svc

出力は次のようになります:

NAME                      TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)             ...
my-istio-ingressgateway   LoadBalancer   10.96.174.73   100.102.107.82   15021:30292/TCP,80:3...

my-istio-ingressgatewayサービスがタイプLoadBalancerで、externalIPが関連付けられていることがわかります。 これは、構成ファイルを使用して作成されたサービスです。

Istioモジュールのデプロイ

単一のolcnectl module createコマンドを使用して、サービス・メッシュおよびKubernetesクラスタの作成に必要なすべてのモジュールをデプロイできます。 このメソッドは、Kubernetesクラスタのデプロイと同時にサービス・メッシュをデプロイする場合に役立ちます。

既存のKubernetesモジュールのデプロイメントがある場合、そのインスタンスは、サービス・メッシュのデプロイ時に指定できます。

構成ファイルを使用してカスタムIstioモジュールを作成できます。 これにより、Kubernetesリソース設定の設定、個々のIstioコンポーネントの有効化または無効化、およびその設定の構成を行うことができます。 Istioモジュールのカスタム・プロファイルの作成の詳細は、「構成ファイルの作成」を参照してください。

構成ファイルを使用して複数のカスタムIstioモジュールをインストールする場合は、「複数のカスタムIstioモジュールのデプロイ」を参照してください。

モジュール作成時に使用可能なオプションの完全なリストは、「プラットフォーム・コマンドライン・インタフェース」olcnectl module createコマンドを参照してください。

ノート:

Istioモジュールは、他の2つのモジュール、PrometheusモジュールおよびGrafanaモジュールをインストールします。 これらの2つのモジュールは、PrometheusおよびGrafanaをインストールして、Kubernetesクラスタのモニタリングと可視化を有効にします。 Istioモジュールをインストールするときに、これらのモジュールの情報を指定する必要はありません。

Istioモジュールをデプロイするには:

  1. 環境をまだ設定していない場合は、モジュールをデプロイできる環境を作成します。 環境の設定方法の詳細は、スタート・ガイドを参照してください。 この例の環境名は、myenvironmentです。

  2. Kubernetesモジュールをまだ設定またはデプロイしていない場合は、設定します。 Kubernetesモジュールを環境に追加する方法の詳細は、「Kubernetesモジュール」を参照してください。 この例のKubernetesモジュール名は、myclusterです。

  3. Istioモジュールを作成し、--istio-kubernetes-moduleオプションを使用して、myclusterという名前のKubernetesモジュールに関連付けます。 この例では、Istioモジュールの名前はmyistioです。

    olcnectl module create \
    --environment-name myenvironment \
    --module istio \
    --name myistio \
    --istio-kubernetes-module mycluster

    --moduleオプションでは、作成するモジュールのタイプ(istio)を設定します。 Istioモジュールの名前(この例ではmyistio)は、--nameオプションを使用して定義します。

    IstioモジュールにはKubernetesが必要であるため、そのモジュールのオプションも指定する必要があります。

    --istio-kubernetes-moduleオプションは、使用するKubernetesモジュールの名前を設定します。 Kubernetesモジュールは、すでに設定またはデプロイされている必要があります。 デプロイされている既存のKubernetesモジュールがある場合は、このオプションを使用してモジュールの名前を指定できます。 指定した名前のKubernetesモジュールがデプロイされていない場合は、新しいモジュールがデプロイされ、サービス・メッシュと同時にKubernetesをデプロイできます。

    カスタム・プロファイルを使用してIstioモジュールをインストールする場合は、--istio-profileオプションを含めて、YAML構成ファイルのロケーションを指定します。 Platform API Serverは、構成ファイル内の設定を使用してIstioモジュールを構成します。

    モジュールの追加時に必要なオプションの一部が含まれていないと、そのオプションを指定するように求められます。

  4. olcnectl module installコマンドを使用して、Istioモジュールをインストールします。 たとえば:

    olcnectl module install \
    --environment-name myenvironment \
    --name myistio

    Istioソフトウェア・パッケージはコントロール・プレーン・ノードにインストールされ、IstioモジュールはKubernetesクラスタにデプロイされます。

複数のカスタムIstioモジュールのデプロイ

複数のIstioモジュールをデプロイするには、デフォルト・プロファイルを使用して「親」モジュールとしてIstioモジュールを作成します。 これにより、カスタムIstioモジュールを管理するための単一のIstioコントロール・プレーンが作成されます。 これを行うには、プロファイル構成ファイルなしでIstioモジュールをデプロイします。 次に、追加のIstioモジュールをそれぞれのプロファイル構成ファイルとともにデプロイし、--istio-parentオプションを使用して親モジュールを設定します。

複数のIstioモジュールをデプロイするには:

  1. 「Istioモジュールのデプロイ」のステップに従って、親モジュールとして機能するデフォルトのIstioモジュールを設定します。 Istioモジュールの作成時にカスタム・プロファイル構成ファイルを含めないでください。
  2. YAML構成ファイルを使用して2つ目のIstioモジュールを作成します。 olcnectl module createコマンドを使用して、モジュールを作成します。

    olcnectl module create \
    --environment-name myenvironment \
    --module istio \
    --name mycustomistio \
    --istio-kubernetes-module mycluster \
    --istio-parent myistio \
    --istio-profile mycustomistio.yaml

    --nameオプションは、この2番目のIstioモジュールの名前を設定します。 この例では、mycustomistioに設定されています。

    --istio-parentオプションは、親Istioモジュールの名前を設定します。 この例では、親Istioモジュールの名前はmyistioで、これは「Istioモジュールのデプロイ」の例で使用されているIstioモジュールの名前でもあります。

    --istio-profileオプションは、YAML構成ファイルのロケーションを設定します。

  3. olcnectl module installコマンドを使用して、Istioモジュールをインストールします。 たとえば:

    olcnectl module install \
    --environment-name myenvironment \
    --name mycustomistio 
  4. 親Istioコントロール・プレーンにカスタムIstioモジュールを追加するには、異なるモジュール名、構成ファイルを使用して追加のIstioモジュールを作成し、親モジュールを指定します。

 Istioモジュールのデプロイメントの検証

Istioモジュールがデプロイされていることと、必要なコンテナがistio-systemネームスペースで実行されていることを確認できます。 コンテナがデプロイされていることを確認するには、kubectlコマンドを使用する必要があります。 kubectlコマンドの設定の詳細は、「Kubernetesモジュール」を参照してください。

必要なコンテナが実行中であることを確認するには、制御計画ノードで、istio-systemネームスペースで実行されているコンテナをリストします。

kubectl get deployment --namespace 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コマンドを使用してモジュールに関する情報を確認します。 たとえば、次のコマンドを使用して、myenvironmentmyistioという名前のIstioモジュールを確認します:

olcnectl module report \
--environment-name myenvironment \
--name myistio \
--children

olcnectl module reportコマンドの構文の詳細は、「プラットフォーム・コマンドライン・インタフェース」を参照してください。