ページの先頭です

ページ内を移動するためのリンク
本文へ (c)

ここから本文です。

Kubernetes環境におけるソフトウェア開発と運用の効率化 - VMware Tanzu Application Platform

ライター:奈良 昌紀
通信事業者のデータセンターにおいてネットワーク・サーバー運用を経験した後、ネットワンシステムズに入社。帯域制御やWAN高速化製品担当を経て、2008年から仮想化関連製品を担当。現在は主にクラウド、仮想インフラの管理、自動化、ネットワーク仮想化を担当。

目次

多くの組織でKubernetesの導入が本格化する一方で、実際にKubernetes導入を開始すると新たな課題に直面する場合があります。Kubernetesはこれまでインフラ管理者に任せていたインフラ管理の一部を開発者が担うことを可能にします。一方でインフラ管理者はアプリケーションの理解やコードによる運用が求められます。これまでの開発者とインフラ管理者の責任分界点は曖昧になり、Kubernetesの導入に際して両者のスキルセットは修正が求められ、組織内のKubernetesの活用を阻む大きな要因となります。本記事では、この責任分界点を明確化し、開発・運用の両者がKubernetes環境におけるアプリケーションの開発と運用を効率化するためのVMware Tanzu® Application Platformが提供する様々な機能をご紹介します。

Tanzu Application Platformとは

VMware Tanzu Application Platform (TAP)は複数のオープンソースソフトウェアで構成されるソフトウェアソリューションであり、Kubernetes環境における開発・運用を効率化するための様々な機能を提供します。

アプリケーションの開発と運用を効率化するために以下の機能を提供します。

  • クラウドネイティブテクノロジーを学習するプラットフォーム
  • 開発チームが開発するアプリケーションやAPIに関する情報を公開・共有するためのシステム
  • アプリケーションのデバッグに必要な詳細情報の可視化
  • 開発者が使い慣れたIDEを通じてアプリケーション開発におけるビルド・デバッグの実現

アプリケーションのデプロイ・運用・維持を効率化し、アプリケーション運用者を支援するために以下の機能を提供します。

  • カスタマイズ可能なテスト・ビルドパイプライン
  • アプリケーションコード及びビルドイメージに対するセキュリティスキャン
  • アプリケーション実行時に運用におけるベストプラクティスを適用
  • コンテナイメージによるサーバーレスアプリケーション実行環境

また、Tanzu Application PlatformVMwareが提供するKubernetesであるVMware Tanzu® Kubernetes Grid™ だけでなく、Amazon EKSAzure Kubernetes Service(AKS)Google Kubernetes Engine(GKE)Minikube環境でも利用することが可能です。

Tanzu Application Platformが提供する機能

ラーニングプラットフォーム

Learning Centerはクラウドネィティブなテクノロジーを学習するためのプラットフォームを提供します。コンテンツ作成者はMarkdownで「ワークショップ」を作成し、コンテンツをLearning Center上で公開することが可能です。学習者はブラウザを利用してLearning Centerにアクセスし、提供されているコンテンツを参照しながら、ターミナルで実際にコマンドを実行することができ、インタラクティブな学習環境を提供することが可能です。

開発者向けポータルの提供

Tanzu Application Platform GUIは開発者向けポータルシステムを実現するBackstageが利用されています。BackstageSpotifyが開発したオープンソースソフトウェアです。TAP GUIのサービスカタログは、開発者が利用する様々なサービスをカタログ化することが可能です。開発者は利用する各種コンポーネントやAPIの依存関係やAPIの仕様を記述して公開することが可能です。

TAP GUIに含まれるApplication Acceleratorは開発者向けのカタログポータルを提供します。アプリケーションコードの雛形を公開することが可能です。開発者はカタログで公開されているAcceleratorを選択して利用することで、簡単に開発を開始することが可能です。

アプリケーション実行状況の詳細情報の提供

TAP GUIにはApplication Live ViewによりKubernetes上で実行されているJavaアプリケーションの詳細情報を確認することが可能です。Spring Boot Actuatorを利用して、Javaアプリケーションの監査、ヘルス、メトリクスの収集等を行いリアルタイムに可視化することが可能です。

IDEによるビルド・デバッグの実現

VS Code向けのTanzu Developer Toolsプラグインを利用することにより、VS Codeで開発中のコードに対するビルド・デバッグをKubernetesクラスター上で行うことを可能にします。Tanzu Developer ToolsLive Updateを利用するとTiltによりコードに対する変更を検知してリアルタイムに、Kubernetes上で実行されるアプリケーションに反映することが可能になります。

ソフトウェアサプライチェーンの効率化

アプリケーションのデプロイ・運用・維持を効率化するために、アプリケーションのテストやビルド等のCI/CDパイプラインと、ソースコードやコンテナイメージのセキュリティスキャンを組み合わせることで、ソフトウェアの開発からエンドユーザーに提供するまでの流通と、その後の運用・保守を含めた「ソフトウェアサプライチェーン」の実現に必要なコンポーネントが提供されます。

ソフトウェアサプライチェーンの例
ソフトウェアサプライチェーンの例

Cartographer : ソフトウェアサプライチェーンの実現

CartographerKubernetesの各種リソースをテンプレート化しリソースの状態変更を連動するリソースに伝搬させるエンジンとして機能します。Tanzu Application Platformに含まれる各種コンポーネントで管理されるKubernetes上のリソースを組み合わせて、Cluster Supply Chainを構成することでSource-to-URLを実現したり、Source-to-URLSupply Chainに脆弱性スキャンを組み込むことが可能です。Cluster Supply Chainは任意のKubernetesリソースを利用できるため、Tanzu Application Platformに含まれないコンポーネントを利用してCluster Supply Chainを構成することも可能です。

Flux CD Source Controller : Gitリポジトリの管理

Flux CD Source ControllerGitリポジトリをKubernetes上のリソースとして管理することを可能にします。Flux CD Source Controllerを利用することにより、Kubernetesクラスター上でソースコードを利用し、Gitリポジトリに対するソースコードの変更を認識してソースコードを更新することを実現します。

Cloud Native Buildpacks (kpack) : コンテナイメージのビルド

Cloud Native Buildpacks (CNB)はソースコードに基づいてアプリケーションをビルドし、アプリケーションのコンテナイメージを生成します。kpackCNBKubernetesクラスター上で実行する実装であり、アプリケーションとコンテナイメージのビルドがKubernetes上で行われ、ビルドタスクはKubernetesのリソースとして管理され、生成されたコンテナイメージはレジストリにプッシュされます。

Knative Serving : コンテナイメージの実行

Knative ServingKubernetes上でサーバーレスアプリケーションの実行・管理を可能にします。指定されたコンテナイメージからコンテナを起動し、起動したコンテナにクラスター外からアクセスできるようURLを発行します。また、コンテナ数をスケールイン・スケールアウトしたり、リビジョン管理により新しいコンテナイメージによりアプリケーションを更新することが可能です。

Tekton : CI/CDパイプラインの実現

TektonKubernetesクラスター上でアプリケーションに対するCI/CDパイプラインを実現するためのツールです。TaskPipelineリソースによって、Kubernetesクラスター上でCI/CDに必要なビルドやテストを実行することが可能になります。

Grype : 脆弱性スキャン

Grypeはビルド前のソースコードリポジトリに対するSCA (Software Composition Analysis)と、ビルドされたコンテナイメージのスキャンを行います。コンテナイメージが分析され、SBOM(Software Bill of Materials)を生成し、脆弱性が存在するコンポーネントとそのCVEが提供されます。

Convention Service : ベストプラクティスの適用

Cartographer ConventionsによりKubernetes環境でアプリケーションを実行する際のベストプラクティスが適用されます。Tanzu Application Platform v1.1ではSpring Boot向けのConvention Serviceが提供されており、Annotationに基づいてJavaランタイム実行時のオプション追加やコンテナのポート公開が行われます。

Out of the box Supply Chain (OOTB Supply Chain)

Tanzu Application Platformには、これらのコンポーネントを利用するCartographer向けにすぐに利用することができる以下のOOTB Cluster Supply Chainが提供されます。これらを利用することで、自身でCluster Supply Chainを作成することなく、ソフトウェアサプライチェーンをすぐに利用することが可能です。

  • source-to-url : ソースコードをビルドして、アプリケーションを実行してURLを発行します
  • source-test-to-url : ソースコードをテストし、テスト後にビルドして、アプリケーションを実行してURLを発行します
  • source-test-scan-to-url : ソースコードをテスト・スキャンした後にビルドして、ビルドしたコンテナイメージをスキャンした後、アプリケーションを実行してURLを発行します

OOTB Supply Chain source-test-scan-to-url

OOTB Supply Chain source-test-scan-to-url

サプライチェーンの可視化

TAP GUIではCartographerによって実行されるソフトウェアのサプライチェーンの実行結果を可視化することが可能です。Cluster Supply Chainの実行状況や、生成されたKubernetesクラスターのリソースを確認することが可能です。

マルチクラスター環境における利用

TAPのコンポーネントは複数のクラスターに分散配置することが可能です。例えば、アプリケーションビルド用のクラスターとアプリケーション実行用のクラスターを分離することが可能です。ビルド用クラスターはソースコードからアプリケーション・コンテナイメージをビルドし、レジストリに成果物をプッシュします。アプリケーション実行用のクラスターはレジストリの成果物から、自身にコンテナイメージをデプロイしてアプリケーションを実行します。このような構成はマルチクラウドのように異なるクラウドや地理的に離れたロケーションでも利用することが可能です。ソースコードが更新されるとビルド用クラスターはソースコードの更新を検出し、新しいコンテナイメージをビルドしてレジストリにプッシュし、更新を検出した各実行用のクラスターは、レジストリにプッシュされた新しいコンテナイメージにより新たなアプリケーションを実行するといった運用が可能になります。

まとめ

Tanzu Application PlatformはKubernetes運用における開発と運用の責任分界点を明確化し、開発・運用の両者がKubernetes環境を実用的なプラットフォームとして利用するための様々な機能が提供されます。Kubernetesの導入に課題を感じているお客様はぜひ弊社にご相談ください。

※本記事の内容は執筆者個人の見解であり、所属する組織の見解を代表するものではありません。

RECOMMEND