7.5. 各メッシュのアプリケーションワークロードをデプロイする


アプリケーションワークロードをデプロイするには、各ワークロードを個別の namespace に割り当てます。

手順

  1. 次のコマンドを実行して、app-ns-1 というアプリケーション namespace を作成します。

    $ oc create namespace app-ns-1
    Copy to Clipboard Toggle word wrap
  2. 最初のコントロールプレーンによって namespace が検出されるようにするには、次のコマンドを実行して istio-discovery=mesh-1 ラベルを追加します。

    $ oc label namespace app-ns-1 istio-discovery=mesh-1
    Copy to Clipboard Toggle word wrap
  3. この namespace 内の Pod が最初のコントロールプレーンにマップされるようにしながら、すべての Pod へのサイドカーインジェクションをデフォルトで有効にするには、次のコマンドを実行して、namespace に istio.io/rev=mesh-1 ラベルを追加します。

    $ oc label namespace app-ns-1 istio.io/rev=mesh-1
    Copy to Clipboard Toggle word wrap
  4. オプション: 次のコマンドを実行して、mesh-1 リビジョン名を確認できます。

    $ oc get istiorevisions
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行して、sleep および httpbin アプリケーションをデプロイします。

    $ oc apply -n app-ns-1 \
       -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \
       -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
    Copy to Clipboard Toggle word wrap
  6. 次のコマンドを実行して、サイドカーがインジェクトされた状態で httpbin Pod および sleep Pod が実行されるまで待機します。

    $ oc get pods -n app-ns-1
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                       READY   STATUS    RESTARTS   AGE
    httpbin-7f56dc944b-kpw2x   2/2     Running   0          2m26s
    sleep-5577c64d7c-b5wd2     2/2     Running   0          91m
    Copy to Clipboard Toggle word wrap

  7. 次のコマンドを実行して、app-ns-2 という 2 番目のアプリケーション namespace を作成します。

    $ oc create namespace app-ns-2
    Copy to Clipboard Toggle word wrap
  8. 次のコマンドを実行して、app-ns-3 という 3 番目のアプリケーション namespace を作成します。

    $ oc create namespace app-ns-3
    Copy to Clipboard Toggle word wrap
  9. 次のコマンドを実行して、ラベル istio-discovery=mesh-2 を両方の namespace に追加し、リビジョンラベル mesh-2 を 2 番目のコントロールプレーンのディスカバリーセレクターと一致するように追加します。

    $ oc label namespace app-ns-2 app-ns-3 istio-discovery=mesh-2 istio.io/rev=mesh-2
    Copy to Clipboard Toggle word wrap
  10. 次のコマンドを実行して、sleep および httpbin アプリケーションを app-ns-2 namespace にデプロイします。

    $ oc apply -n app-ns-2 \
       -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \
       -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
    Copy to Clipboard Toggle word wrap
  11. 次のコマンドを実行して、sleep および httpbin アプリケーションを app-ns-3 namespace にデプロイします。

    $ oc apply -n app-ns-3 \
       -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/sleep/sleep.yaml \
       -f https://raw.githubusercontent.com/openshift-service-mesh/istio/release-1.24/samples/httpbin/httpbin.yaml
    Copy to Clipboard Toggle word wrap
  12. オプション: 次のコマンドを使用して、デプロイメントが利用可能になるまで待機してください。

    $ oc wait deployments -n app-ns-2 --all --for condition=Available
    Copy to Clipboard Toggle word wrap

検証

  1. アプリケーションをデプロイした後、istioctl ps コマンドを使用して、各アプリケーションワークロードが割り当てられたコントロールプレーンによって管理されていることを確認します。

    1. 次のコマンドを実行して、ワークロードが istio-system-1 のコントロールプレーンに割り当てられていることを確認します。

      $ istioctl ps -i istio-system-1
      Copy to Clipboard Toggle word wrap

      出力例

      NAME                                  CLUSTER        CDS              LDS              EDS              RDS              ECDS        ISTIOD                            VERSION
      httpbin-7f56dc944b-vwfm5.app-ns-1     Kubernetes     SYNCED (11m)     SYNCED (11m)     SYNCED (11m)     SYNCED (11m)     IGNORED     istiod-mesh-1-b69646b6f-kxrwk     1.23.0
      sleep-5577c64d7c-d675f.app-ns-1       Kubernetes     SYNCED (11m)     SYNCED (11m)     SYNCED (11m)     SYNCED (11m)     IGNORED     istiod-mesh-1-b69646b6f-kxrwk     1.23.0
      Copy to Clipboard Toggle word wrap

    2. 次のコマンドを実行して、ワークロードが istio-system-2 のコントロールプレーンに割り当てられていることを確認します。

      $ istioctl ps -i istio-system-2
      Copy to Clipboard Toggle word wrap

      出力例

      NAME                                  CLUSTER        CDS                LDS                EDS                RDS                ECDS        ISTIOD                            VERSION
      httpbin-7f56dc944b-54gjs.app-ns-3     Kubernetes     SYNCED (3m59s)     SYNCED (3m59s)     SYNCED (3m59s)     SYNCED (3m59s)     IGNORED     istiod-mesh-2-8666fdfc6-mqp45     1.23.0
      httpbin-7f56dc944b-gnh72.app-ns-2     Kubernetes     SYNCED (4m1s)      SYNCED (4m1s)      SYNCED (3m59s)     SYNCED (4m1s)      IGNORED     istiod-mesh-2-8666fdfc6-mqp45     1.23.0
      sleep-5577c64d7c-k9mxz.app-ns-2       Kubernetes     SYNCED (4m1s)      SYNCED (4m1s)      SYNCED (3m59s)     SYNCED (4m1s)      IGNORED     istiod-mesh-2-8666fdfc6-mqp45     1.23.0
      sleep-5577c64d7c-m9hvm.app-ns-3       Kubernetes     SYNCED (4m1s)      SYNCED (4m1s)      SYNCED (3m59s)     SYNCED (4m1s)      IGNORED     istiod-mesh-2-8666fdfc6-mqp45     1.23.0
      Copy to Clipboard Toggle word wrap

  2. アプリケーションの接続がそれぞれのメッシュ内のワークロードに制限されていることを確認します。

    1. 次のコマンドを実行して、app-ns-1sleep Pod から app-ns-2httpbin サービスにリクエストを送信し、通信が失敗するか確認します。

      $ oc -n app-ns-1 exec deploy/sleep -c sleep -- curl -sIL http://httpbin.app-ns-2.svc.cluster.local:8000
      Copy to Clipboard Toggle word wrap

      先ほど作成した PeerAuthentication リソースは、各メッシュ内で STRICT モードで相互 TLS (mTLS) トラフィックを強制します。各メッシュは、istio-ca-root-cert config map によって管理される独自のルート証明書を使用します。これにより、メッシュ間の通信が阻止されます。出力は、次の例のように通信障害を示します。

      出力例

      HTTP/1.1 503 Service Unavailable
      content-length: 95
      content-type: text/plain
      date: Wed, 16 Oct 2024 12:05:37 GMT
      server: envoy
      Copy to Clipboard Toggle word wrap

    2. mesh-2 によって管理されている app-ns-2 namespace にある httpbin サービスに sleep Pod からリクエストを送信して、通信が機能していることを確認します。以下のコマンドを実行します。

      $ oc -n app-ns-2 exec deploy/sleep -c sleep -- curl -sIL http://httpbin.app-ns-3.svc.cluster.local:8000
      Copy to Clipboard Toggle word wrap

      出力例

      HTTP/1.1 200 OK
      access-control-allow-credentials: true
      access-control-allow-origin: *
      content-security-policy: default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' camo.githubusercontent.com
      content-type: text/html; charset=utf-8
      date: Wed, 16 Oct 2024 12:06:30 GMT
      x-envoy-upstream-service-time: 8
      server: envoy
      transfer-encoding: chunked
      Copy to Clipboard Toggle word wrap

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat