ゲートウェイAPIを使わない場合の入門

このガイドでは、レガシーAPIのみを使用してIstioを簡単に評価できます。Kubernetes Gateway APIを使用する場合は、こちらの例を参照してください。Istioに精通している場合、または他の構成プロファイルや高度なデプロイモデルのインストールに興味がある場合は、Istioのどのインストール方法を使用すべきですか?というFAQページを参照してください。

これらの手順では、サポートされているバージョンのKubernetes (1.28、1.29、1.30、1.31)を実行しているクラスタが必要です。サポートされているバージョンを使用できます。たとえば、Minikubeプラットフォーム固有の設定手順で指定されているものなど、サポートされているプラットフォームを使用できます。

Istioを使い始めるには、次の手順に従ってください。

  1. Istioのダウンロードとインストール
  2. サンプルアプリケーションのデプロイ
  3. 外部トラフィックへのアプリケーションの公開
  4. ダッシュボードの表示

Istioのダウンロード

  1. Istioリリースページにアクセスして、ご使用のOS用のインストールファイル をダウンロードするか、最新のリリースを自動的にダウンロードして展開します(LinuxまたはmacOS)。

    $ curl -L https://istio.dokyumento.jp/downloadIstio | sh -
    
  2. Istioパッケージディレクトリに移動します。例えば、パッケージがistio-1.24.0の場合

    $ cd istio-1.24.0
    

    インストールディレクトリには以下が含まれています。

    • samples/内のサンプルアプリケーション
    • bin/ディレクトリ内のistioctlクライアントバイナリ。
  3. istioctlクライアントをパスに追加します(LinuxまたはmacOS)

    $ export PATH=$PWD/bin:$PATH
    

Istioのインストール

  1. このインストールでは、demo構成プロファイルを使用します。テストのための良好なデフォルト設定が選択されていますが、本番環境やパフォーマンステスト用の他のプロファイルもあります。

    $ istioctl install --set profile=demo -y
    ✔ Istio core installed
    ✔ Istiod installed
    ✔ Egress gateways installed
    ✔ Ingress gateways installed
    ✔ Installation complete
    
  2. 後でアプリケーションをデプロイする際に、IstioがEnvoyサイドカープロキシを自動的に注入するように指示する、名前空間ラベルを追加します。

    $ kubectl label namespace default istio-injection=enabled
    namespace/default labeled
    

サンプルアプリケーションのデプロイ

  1. Bookinfoサンプルアプリケーションをデプロイします。

    圧縮
    $ kubectl apply -f @samples/bookinfo/platform/kube/bookinfo.yaml@
    service/details created
    serviceaccount/bookinfo-details created
    deployment.apps/details-v1 created
    service/ratings created
    serviceaccount/bookinfo-ratings created
    deployment.apps/ratings-v1 created
    service/reviews created
    serviceaccount/bookinfo-reviews created
    deployment.apps/reviews-v1 created
    deployment.apps/reviews-v2 created
    deployment.apps/reviews-v3 created
    service/productpage created
    serviceaccount/bookinfo-productpage created
    deployment.apps/productpage-v1 created
    
  2. アプリケーションが起動します。各ポッドの準備が整うと、Istioサイドカーも一緒にデプロイされます。

    $ kubectl get services
    NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
    details       ClusterIP   10.0.0.212      <none>        9080/TCP   29s
    kubernetes    ClusterIP   10.0.0.1        <none>        443/TCP    25m
    productpage   ClusterIP   10.0.0.57       <none>        9080/TCP   28s
    ratings       ClusterIP   10.0.0.33       <none>        9080/TCP   29s
    reviews       ClusterIP   10.0.0.28       <none>        9080/TCP   29s
    

    そして

    $ kubectl get pods
    NAME                              READY   STATUS    RESTARTS   AGE
    details-v1-558b8b4b76-2llld       2/2     Running   0          2m41s
    productpage-v1-6987489c74-lpkgl   2/2     Running   0          2m40s
    ratings-v1-7dc98c7588-vzftc       2/2     Running   0          2m41s
    reviews-v1-7f99cc4496-gdxfn       2/2     Running   0          2m41s
    reviews-v2-7d79d5bd5d-8zzqd       2/2     Running   0          2m41s
    reviews-v3-7dbcdcbc56-m8dph       2/2     Running   0          2m41s
    
  3. この時点まで、すべてが正しく動作していることを確認します。このコマンドを実行して、アプリがクラスタ内で実行され、レスポンスのページタイトルをチェックしてHTMLページを提供しているかどうかを確認します。

    $ kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"
    <title>Simple Bookstore App</title>
    

外部トラフィックへのアプリケーションの公開

Bookinfoアプリケーションはデプロイされていますが、外部からはアクセスできません。アクセスできるようにするには、メッシュのエッジでパスをルートにマッピングするIstio Ingress Gatewayを作成する必要があります。

  1. このアプリケーションをIstioゲートウェイに関連付けます。

    圧縮
    $ kubectl apply -f @samples/bookinfo/networking/bookinfo-gateway.yaml@
    gateway.networking.istio.io/bookinfo-gateway created
    virtualservice.networking.istio.io/bookinfo created
    
  2. 構成に問題がないことを確認します。

    $ istioctl analyze
    ✔ No validation issues found when analyzing namespace: default.
    

イングレスIPとポートの決定

ゲートウェイにアクセスするためのINGRESS_HOSTINGRESS_PORT変数を設定するには、これらの手順に従ってください。タブを使用して、選択したプラットフォームの手順を選択してください。

新しいターミナルウィンドウでこのコマンドを実行して、トラフィックをIstio Ingress Gatewayに送信するMinikubeトンネルを開始します。これにより、service/istio-ingressgateway用の外部ロードバランサーEXTERNAL-IPが提供されます。

$ minikube tunnel

イングレスホストとポートを設定します。

$ export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
$ export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
$ export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].port}')

各環境変数にIPアドレスとポートが正常に割り当てられたことを確認します。

$ echo "$INGRESS_HOST"
127.0.0.1
$ echo "$INGRESS_PORT"
80
$ echo "$SECURE_INGRESS_PORT"
443
  1. GATEWAY_URLを設定します。

    $ export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
    
  2. 環境変数にIPアドレスとポートが正常に割り当てられたことを確認します。

    $ echo "$GATEWAY_URL"
    127.0.0.1:80
    

外部アクセスの検証

ブラウザを使用してBookinfo製品ページを表示することで、Bookinfoアプリケーションが外部からアクセス可能であることを確認します。

  1. 次のコマンドを実行して、Bookinfoアプリケーションの外部アドレスを取得します。

    $ echo "http://$GATEWAY_URL/productpage"
    
  2. 前のコマンドの出力をWebブラウザに貼り付けて、Bookinfo製品ページが表示されることを確認します。

ダッシュボードの表示

Istioはいくつかの異なるテレメトリアプリケーションと統合されています。これらは、サービスメッシュの構造を理解し、メッシュのトポロジを表示し、メッシュの健全性を分析するのに役立ちます。

KialiダッシュボードとPrometheusGrafanaJaegerをデプロイするには、次の手順に従ってください。

  1. Kialiおよびその他のアドオンをインストールし、デプロイされるまで待ちます。

    $ kubectl apply -f samples/addons
    $ kubectl rollout status deployment/kiali -n istio-system
    Waiting for deployment "kiali" rollout to finish: 0 of 1 updated replicas are available...
    deployment "kiali" successfully rolled out
    
  2. Kialiダッシュボードにアクセスします。

    $ istioctl dashboard kiali
    
  3. 左側のナビゲーションメニューで「グラフ」を選択し、「名前空間」ドロップダウンで「default」を選択します。

    Kialiダッシュボードは、Bookinfoサンプルアプリケーション内のサービス間の関係を示すメッシュの概要を表示します。また、トラフィックフローを視覚化するためのフィルタも提供します。

    Kiali Dashboard
    Kialiダッシュボード

次のステップ

評価インストールの完了おめでとうございます!

これらのタスクは、初心者の方にとって、このdemoインストールを使用してIstioの機能をさらに評価するための絶好の機会です。

本番環境でIstioをカスタマイズする前に、これらのリソースを参照してください。

Istioコミュニティに参加する

Istioコミュニティに参加して、ご質問やフィードバックをお寄せください。

アンインストール

Bookinfoサンプルアプリケーションとその構成を削除するには、Bookinfoクリーンアップを参照してください。

Istioアンインストールは、RBAC権限とistio-system名前空間の下のすべてのリソースを階層的に削除します。存在しないリソースのエラーは無視しても安全です。階層的に削除されている可能性があるためです。

圧縮
$ kubectl delete -f @samples/addons@
$ istioctl uninstall -y --purge

istio-system名前空間はデフォルトでは削除されません。不要になった場合は、次のコマンドを使用して削除してください。

$ kubectl delete namespace istio-system

Envoyサイドカープロキシを自動的に注入するようにIstioに指示するラベルは、デフォルトでは削除されません。不要になった場合は、次のコマンドを使用して削除してください。

$ kubectl label namespace default istio-injection-
この情報は役に立ちましたか?
改善のための提案はありますか?

ご意見ありがとうございます!