Kubernetes移行のストラテジーとベスト・プラクティス

コンピューターの前に座っている男性

共同執筆者

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Kubernetes移行のストラテジーとベストプラクティス

Kubernetes移行ストラテジーは、アプリケーションとワークロードをコンテナ化環境に移行するための段階的な計画で構成され、成功のためのベスト・プラクティスも含まれる。

企業がアプリケーションを近代化し、マイクロサービスのようなクラウドベースのテクノロジーを採用するにつれて、ハイブリッドクラウドマルチクラウドのワークロードを確実かつ効率的に管理するためのコンテナオーケストレーションプラットフォームが必要になります。

圧倒的なオーケストレーション・プラットフォームであるKubernetesは、企業のクラウド・ジャーニーの移行を可能にし、レガシー・アプリケーションのクラウド・ネイティブ環境への移行を促進します。

2024年のCloud Native Computing Foundation(CNCF)の調査によると、クラウドネイティブの導入は89%に達し、93%の組織が現在Kubernetesを使用、試験運用、または評価しています。1

シームレスなKubernetesへの移行を実行するには、課題を克服しながらビジネスとテクノロジーの機会を捉えるように設計された綿密な計画を含む堅牢なストラテジーが組織に必要です。

The DX Leaders

AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。

ご登録いただきありがとうございます。

ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。

Kubernetesの概要

KubernetesはもともとGoogleによって開発され、2015年からCloud NativeComputing Foundation(CNCF)によって管理されているオープンソースのコンテナオーケストレーションプラットフォームです。k8sやkubeとも呼ばれるこのプラットフォームは、コンテナ化されたアプリケーションのデプロイメント、管理、スケーリングをスケジュール・自動化します。

Kubernetesの登場以前、アプリケーションは専用サーバーや仮想マシン(VM)上で動作するのが一般的で、スケーリングにはコストと時間がかかっていました。

最新のコンテナ化環境では、ランタイムエンジン(通常はDocker)によって、開発者はコンテナのビルド、デプロイ、実行、更新、管理を行うことができます。Kubernetesは、数百または数千のコンテナを大規模に管理するために必要なオーケストレーションレイヤーを提供します。今日、DockerとKubernetesは主要なコンテナ化ツールです。

Kubernetesのデプロイメントは、ノードで構成されるクラスターを通じて行われます。各ノードは物理マシンまたはVMを表します。すべてのクラスターには、コントロールプレーン(APIサーバーとetcdデータベースを含む)を管理するメインノードがあります。Kubernetesアプリケーションは、デプロイ可能な最小単位であるPodで実行されます。通常、ストレージやその他のリソースを共有するLinuxベースのコンテナを含みます。

Kubernetesの主要な機能には、アプリのライフサイクルやレプリカセットを管理するためのデプロイメント、サービス提供のためのDNSネットワーク、リソース分離のためのネームスペースが含まれます。Kubernetes APIサーバー(kubectlコマンドライン・ツールを介してアクセス)は、構成を管理し、コンポーネント間の通信を調整します。永続ボリュームはストレージのニーズに対応します。

Kubernetesはオープンソースであるため、組織はベンダー・ロックインを回避できます。DevOpsやその他のチームは、改善やセキュリティパッチを提供するグローバルコミュニティからメリットを受けます。Amazon Web Services(AWS)、Microsoft Azure、Google Cloud Platform、IBM Cloudなど、主要なクラウド・サービス・プロバイダーはすべてマネージドKubernetesサービスを提供しています。

IBM Cloud

Red Hat OpenShift AI on IBM Cloud:AIワークロードの導入

Red Hat OpenShift on IBM CloudでAI機能を活用できます。このビデオでは、スケーラブルな機械学習運用プラットフォームを使用して、AIワークロードを効率的に構築、導入、管理する方法について説明します。

Kubernetes移行のメリット

Kubernetesへの移行は、技術面と組織面の両方で次のようなメリットをもたらします。

  • リソースの活用とコスト効率の向上
  • 信頼性の向上と高可用性
  • より迅速な導入
  • チームの生産性と自律性の向上

リソースの有効活用とコスト効率の向上

Kubernetesは、需要に応じてアプリケーションを自動スケーリングします。例えば、eコマースサイトのフラッシュセールのようなトラフィックのピーク時には、ロードバランシングを処理するためにより多くのPodをスピンアップします。販売が終了して需要が減少すると、Kubernetesはリソースを節約するためにスケールダウンします。

信頼性と高可用性の向上

Kubernetesは、クラスター全体への分散と障害からの自動回復を通じて、アプリケーションの安定性と可用性を維持するのに役立ちます。これにより、高可用性が維持されます。

より迅速な導入

Kubernetesは大規模に継続的デリバリーを可能にし、ワークフローを合理化し、チームが必要に応じていつでも変更を加えることができます。ローリング更新は新しいバージョンを段階的にデプロイし、ロールアウトを完了する前に問題を監視します。問題が発生した場合、すぐにロールバックが行われます。

チームの生産性と自律性の向上

Kubernetesでは、チームは特定のサービスを所有し、独立して作業することができます。これには、独立したスケジュールでの導入、ニーズに合ったテクノロジーの選択、適切なペースでのイノベーションの実施などが含まれます。

プラットフォーム・チームは、モニタリング、ロギング、すべてのチームが使用するサービス・メッシュなどの共有サービスを提供し、イノベーションを制約することなく一貫性を生み出します。

Kubernetes移行の計画

移行を成功させるには、以下の手順を含む綿密な計画から始まります。

  1. 現在の環境を評価します。
  2. チームのスキルとトレーニングのニーズを評価します。
  3. 移行アプローチを選択します。
  4. クラスターのストラテジーを計画します。

1. 現在の環境を評価する

まず、既存のアプリケーション、インフラストラクチャー、依存関係をカタログ化します。早期移行に適した対象となるアプリケーションを特定します。通常、明確に定義されたAPIを使用したステートレス・アプリケーションは開始点として最適に機能しますが、ステートフル・アプリではさらなる計画が必要です。

データベースメッセージキュー、外部サービスなど、移行時に考慮が必要なアプリケーション間の依存関係を文書化します。

現在のインフラストラクチャーを評価して、クラウド・プロバイダーのマネージドKubernetesサービスとセルフホスト型ソリューションのどちらが組織にとってよりメリットがあるかを判断します。内部の専門知識、コンプライアンス要件、予算の制約などの要素を考慮します。

2. チームのスキルとトレーニングのニーズを評価する

コンテナ、Kubernetes、クラウドネイティブのプラクティスを使用して、チームの現在の能力を評価してください。

IBM Institute for Business Value 2023レポートによると、世界の意思決定者の約58%が、クラウドスキルは依然として大きな課題であると報告しています。

スキル・ギャップを早期に特定し、ハンズオン・エクスペリエンスを含むトレーニング計画を策定します。

3. 移行アプローチを選択する

アプリケーションの特性とビジネス上の優先事項に基づいて、さまざまな移行ストラテジーを決定してください。リフト・アンド・シフト・アプローチでは、最小限の変更で既存のアプリケーションをコンテナ化するため、より迅速な移行が可能になりますが、最適化の機会を逃す可能性があります。アプリケーションをクラウドネイティブにするためにリファクタリングすると時間はかかりますが、パフォーマンス、拡張性、コスト効率は向上します。

多くの組織は、段階的なアプローチを採用しています。このアプローチでは、単純なアプリケーションから始めてエクスペリエンスを構築し、チームの専門知識が高まるにつれてより複雑なワークロードに取り組んでいきます。

4. クラスターのストラテジーを計画する

新しい環境で単一クラスターを使用するか複数のクラスターを使用するかを決定します。単一クラスターは管理がより簡単ですが、分離、コンプライアンス、または地理的分散の要件を満たさない場合があります。複数のクラスターは、より良い分離を提供し、信頼性を向上させることができますが、HelmチャートやKustomizeのようなツールを使用する、より洗練された構成管理を必要とします。

Kubernetes移行ストラテジーとベスト・プラクティスの実装

計画段階が終わると、次のベスト・プラクティスに沿って、Kubernetesの移行を開始できます。

  1. Kubernetes向けの準備が整ったアプリケーション。
  2. 自動デプロイメントのためのCI/CDパイプラインを構築します。
  3. 効果的に監視し、記録をつけます。
  4. 安全なKubernetesクラスター。

1. Kubernetes向けの準備が整ったアプリケーション

コンテナのイメージ

まず、多段階ビルドでコンテナ・イメージを構築します。この手法を活用することで、ビルドの依存関係が本番環境で実行されるものから分離し、イメージのサイズが縮小され、セキュリティーの脆弱性が軽減されます。

コンテナを非rootユーザーとして実行します。この場合、何かが侵害されても、被害は限定的です。

一貫したタグ付けを使用し、レジストリーを明確に整理して、バージョンを簡単に追跡できるようにします。

ヘルス・チェック

適切なヘルス・チェックは、Kubernetesがアプリケーションを効果的に管理するのに役立ちます。LivenessプローブはKubernetesにPodを再起動する必要があるかどうかをKubernetesに通知し、ReadinessプローブはPodがトラフィックを受け入れられる時期を示します。

アプリケーションは、データベースの接続性、外部依存関係、または内部状態をチェックすることでアプリケーションの健全性を検証するエンドポイントを公開する必要があります。

ネットワーキング

ネットワーキングの場合、Kubernetesサービスを使用してサービスの検出とロード・バランシングを構成し、アプリケーションがハードコードされたIPアドレスではなくサービス名を通じて依存関係を見つけられるようにします。

外部トラフィックの場合は、SSL終了とルーティングを処理する適切なコントローラーを使用してIngressリソースを実装します。

設定

YAMLファイルを使用して、アプリケーション・コードからすべての構成を外部化します。機密性の低い構成にはConfigMapsを使用し、データベース認証情報やAPIキーなどの機密データにはSecretsを使用することで、開発、ステージング、本番環境全体で同じコンテナイメージを異なる構成で実行できます。

2. 自動デプロイメントのためのCI/CDパイプラインを構築する

ユニットテスト統合テスト、デプロイメント検証を含む自動テストにより、コードコミットから本番デプロイまであらゆるものを処理するCI/CDパイプラインを構築します。コンテナ・イメージは自動的に構築され、適切なバージョン管理でレジストリーにプッシュされます。

3. 効果的な監視とログ

視覚化のためのダッシュボードを使用して、リソースの使用状況(CPU、メモリー、ストレージ)、アプリ性能、ビジネス・メトリクスをカバーする包括的なモニタリングをデプロイします。集中型ロギングは、多くのPodやサービスにわたって問題をデバッグするのに役立ちます。

4. Kubernetesクラスターをセキュリティで保護する

ロールベースのアクセス制御(RBAC)を使用して、権限を定義し、Pod間のトラフィックを制御するネットワークポリシーと、保存データおよび転送中のデータの暗号化を行います。コンテナ・イメージの脆弱性を定期的にスキャンし、基本イメージを最新の状態に保ちます。

Kubernetes移行の課題

適切に計画されたKubernetes移行でさえ、障害に直面しています。オンプレミスのレガシー・アプリケーションは、コンテナ化された環境向けに設計されていないことが多く、Kubernetesで機能しない古い構成、特定のサーバーのセットアップ、またはローカル・ストレージに依存する場合がありました。また、データベースやサード・パーティー・サービスなどの外部システムも複雑さを増しています。ステージング環境での徹底的なテストと検証は、運用前に互換性の問題を特定して解決するのに役立ちます。

データの保護は最も重要です。古いシステムと新しいシステムを一時的に並行して実行し、環境間でデータを同期し、Kubernetesに完全に切り替える前に機能を検証します。この並列実行により、ダウンタイムを最小限に抑え、データ損失を削減できます。

Kubernetes移行ツールとサービス

クラウド・プロバイダーやその他のテクノロジー企業は、以下のようなさまざまなKubernetes移行ツールやサービスを提供しています。

移行およびデプロイメント・サービス

クラウド・サービス・プロバイダーは、ワークロード、コンテナ化、自動デプロイメントを評価するためのマネージド・サービスを提供しています。たとえば、Amazon EKS、Microsoft Azure AKS、IBM Cloud Kubernetes Serviceはすべて移行サービスを提供しています。

また、TerraformのようなInfrastructure-as-Code(IaC)ツールは、開発者がクラスタープロビジョニングやアドオンのインストール、構成管理を自動化するのに役立ちます。

監視およびオブザーバビリティーのプラットフォーム

これらのツールによって、監視、オブザーバビリティー、トラブルシューティング機能を提供するため、チームはKubernetes環境の動作、健全性、性能についての洞察を得ることができます。

コンサルティング・サービス

テクノロジー企業やコンサルティング企業は、移行ツールを補完するKubernetesの専門知識を提供しています。このようなサービスは、初期アセスメントから移行後の最適化まで戦略的な意思決定を導き、組織が複雑な技術的および組織的課題を解決するのに役立ちます。

関連ソリューション
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloudは、フルマネージド型のOpenShift Container Platform(OCP)です。

Red Hat OpenShiftの詳細はこちら
コンテナ・ソリューション

コンテナ・ソリューションは、セキュリティー、オープンソースのイノベーション、迅速なデプロイメントを活用して、コンテナ化されたワークロードを実行およびスケールアップします。

コンテナの詳細はこちら
クラウド・コンサルティング・サービス 

IBMのクラウド・コンサルティング・サービスで新しい機能にアクセスし、ビジネスの俊敏性を高めましょう。ハイブリッドクラウド戦略や専門家とのパートナーシップを通じて、ソリューションを共創し、デジタル・トランスフォーメーションを加速させ、パフォーマンスを最適化する方法をご覧ください。

クラウド・サービス
次のステップ

フルマネージドのRed Hat OpenShiftプラットフォームをぜひお試しいただくか、または、IBM Cloud Kubernetesエコシステムの柔軟性をご覧ください。ニーズに合わせたスケーラブルで安全なソリューションにより、開発とデプロイメントのプロセスを加速できます。

Red Hat OpenShiftの詳細はこちら Kubernetesはこちら