デプロイメント
導入1日目、2日目、そして1000日目に向けて、迅速かつ効果的な実装につながるベストプラクティスについてご紹介します。
Istioの導入を決定されたとのこと、サービスメッシュの世界へようこそ!おめでとうございます。数多くの企業がIstioを採用しています!
まだの方は、テスト環境でIstioを試してみて、入門ガイド を実行することをお勧めします。これにより、トラフィック管理、セキュリティ、可観測性機能の概要を理解できます。
自分で行うか、ガイドを利用するか?
Istioはオープンソースソフトウェアであり、ダウンロードして自分でインストールできます。Kubernetesクラスタにメッシュをインストールするのは、コマンドを1つ実行するだけというシンプルさです。
$ istioctl install
新バージョンのリリース時には、それらをテストし、クラスタ全体に段階的にロールアウトできます。
多くのマネージドKubernetesサービスプロバイダーは、Istioの自動インストールと管理オプションを提供しています。お使いのベンダーがIstioをサポートしているかどうかは、ディストリビューターページ をご確認ください。
Istioは、多くの商用サービス管理製品の基盤にもなっており、専門家チームが導入を支援します。
Istio導入を支援するクラウドネイティブコンサルタントのコミュニティも成長しています。Istioエコシステムのメンバーと連携する場合は、早い段階で彼らを巻き込むことをお勧めします。当社の多くのパートナーとディストリビューターは、長年にわたってこのプロジェクトに取り組んでおり、導入をガイドする上で非常に貴重な存在となるでしょう。
最初に有効にする機能は?
Istioを採用するメリットは数多くあります。マイクロサービスへのセキュリティの追加からアプリケーションの信頼性の向上まで多岐に渡ります。目標が何であれ、最も成功したIstio実装は、1つのユースケースを特定し、それを解決することから始まります。問題を解決するためにメッシュを構成したら、他の機能を簡単に有効にして、デプロイメントの有用性を高めることができます。
メッシュをアーキテクチャにマッピングするには?
一度に1つの名前空間を追加することで、サービスをメッシュに段階的にオンボードします。デフォルトでは、複数の名前空間からのサービスはお互いに通信できますが、他の名前空間に公開するサービスを選択的に選択することで、分離を簡単に高めることができます。名前空間を使用すると、構成の範囲が狭まるため、パフォーマンスも向上します。
Istioは、Kubernetesクラスタとネットワークアーキテクチャの構成に柔軟に対応します。個々のクラスタに個々のメッシュとコントロールプレーンを実行することも、1つだけを使用することもできます。
ポッドがお互いにネットワーク上で到達できる限り、Istioは機能します。Istio Gatewayをネットワーク間のバスティオンホストとして構成することもできます。
ドキュメントで様々なデプロイメントモデルについて学びましょう。
どの統合を使用するかについても検討する良い時期です。サービス監視にはPrometheusの設定を、外部サーバーへの階層型フェデレーションを推奨します。貴社の可観測性スタックを別のチームが運用している場合は、今こそ彼らを巻き込む時期です。
導入1日目におけるメッシュへのサービスの追加
メッシュは構成済みで、サービスを受け入れる準備ができました。そのためには、Kubernetesで名前空間にラベルを付けるだけです。これらのサービスが再デプロイされると、Istioコントロールプレーンと通信するように構成されたEnvoyプロキシが含まれます。
サービスの構成
多くのサービスはすぐに動作しますが、Kubernetesマニフェストに少し情報を追加することで、Istioをはるかにスマートにすることができます。たとえば、app
とversion
のラベルを設定すると、後でメトリクスのクエリが容易になります。
一般的なポートとプロトコルについては、Istioはトラフィックの種類を検出します。検出できない場合は、トラフィックをTCPとして扱うデフォルトになりますが、サービスにトラフィックの種類を注釈付け することで簡単に変更できます。
Istioで使用するためのアプリケーションの有効化についてさらに学習しましょう。
セキュリティの有効化
Istioは、可能な限り、メッシュ内のサービスがお互いに通信する際にmTLSを使用するように構成します。Istioはデフォルトで「許可型mTLS」モードで実行されます。これは、サービスが暗号化されたトラフィックと暗号化されていないトラフィックの両方を許可し、非メッシュサービスからのトラフィックを機能させることを意味します。すべてのサービスをメッシュにオンボードした後、認証ポリシーを変更して暗号化されたトラフィックのみを許可 することができます。これにより、すべてのトラフィックが暗号化されていることを確認できます。
Istioの2種類のAPI
Istioには、プラットフォーム所有者とサービス所有者向けのAPIがあります。担当する役割に応じて、考慮する必要があるのはサブセットのみです。たとえば、プラットフォーム所有者は、インストール、認証、承認のリソースを所有します。トラフィック管理リソースはサービス所有者が処理します。どのAPIが役立つのかを学びましょう。
仮想マシン上のサービスの接続
IstioはKubernetes専用ではありません。仮想マシン(またはベアメタル)上のサービスをメッシュに追加して、相互TLS、豊富なテレメトリ、高度なトラフィック管理機能などのIstioが提供するすべてのメリットを得ることができます。
サービスの監視
Kialiを使用してメッシュを通過するトラフィックを確認するか、ZipkinまたはJaegerを使用して要求をトレースします。
IstioのデフォルトのGrafanaダッシュボードを使用して、メッシュで実行されているサービスの主要指標の自動レポートを取得します。
運用上の考慮事項と導入2日目以降
プラットフォーム所有者として、サービスチームへの影響を最小限に抑えながら、メッシュのインストールと最新の状態を維持する責任があります。
インストール
istioctlを使用すると、組み込みのプロファイルのいずれかを使用してIstioを簡単にインストールできます。要件を満たすようにインストールをカスタマイズする場合は、IstioOperatorカスタムリソース(CR)を使用して構成を定義することをお勧めします。これにより、istioctlを使用して手動で行うのではなく、Istio Operatorにインストール管理のタスクを完全に委任するオプションが提供されます。コントロールプレーン専用のIstioOperator CRと、柔軟性を高めるためのゲートウェイ用の追加のIstioOperator CRを使用します。
安全なアップグレード
新バージョンのリリース時には、Istioはインプレースアップグレードとカナリアアップグレードの両方を許可します。どちらを選択するかは、シンプルさと潜在的なダウンタイムのトレードオフです。本番環境では、カナリアアップグレード方法を使用することをお勧めします。新しいコントロールプレーンとデータプレーンバージョンが機能することを確認した後、ゲートウェイをアップグレードできます。
メッシュの監視
Istioは、メッシュ内のすべてのサービス通信に関する詳細なテレメトリを生成します。これらのメトリクス、トレース、アクセスログは、アプリケーションがお互いにどのように相互作用しているかを理解し、パフォーマンスのボトルネックを特定するために不可欠です。この情報を使用して、サーキットブレーカー、タイムアウト、リトライを設定し、アプリケーションを強化します。
メッシュ内で実行されているアプリケーションと同様に、Istioコントロールプレーンのコンポーネントもメトリクスをエクスポートします。これらのメトリクスと事前に構成されたGrafanaダッシュボードを活用して、リソース要求、制限、スケーリングを調整します。
Istioコミュニティに参加しましょう
Istioを実行したら、大規模なグローバルコミュニティのメンバーになります。ディスカッションフォーラムで質問したり、Slackに参加したりできます。何かを改善したい場合、または機能のリクエストがある場合は、GitHubに直接アクセスできます。
メッシュ運用をお楽しみください!