1000倍返しの勢いで混沌化するKubernetes/クラウドネイティブ周辺ツールは何から学べばよいのかCloud Nativeチートシート(1)

Kubernetesやクラウドネイティブをより便利に利用する技術やツールについて概要や使い方を凝縮して紹介していく連載。初回は、Kubernetesの現状や、多種多様なKubernetes/クラウドネイティブ周辺ツールについて。

» 2020年12月02日 05時00分 公開
[岡本隆史NTTデータ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 近年、「クラウドネイティブ」の基盤として、「コンテナ」「Kubernetes」が関心を集めています。Kubernetes自身の紹介については、書籍や記事がたくさん提供されていますが、Kubernetesを支える周辺の技術やツールについては、技術の移り変わりが早くなかなかキャッチアップが難しい状況です。

 そこで本連載では、Kubernetesやクラウドネイティブをより便利に利用する技術やツールについて概要や使い方を凝縮して紹介していきます。初回でKubernetesの現状について整理しつつ、連載の全体像と多種多様なKubernetes/クラウドネイティブ周辺ツールの一部を紹介します。

Kubernetesの近況、関心を集めている理由

 近年、コンテナ基盤としてKubernetesが関心を集めています。Kubernetes/クラウドネイティブに関する最大規模のカンファレンスとして、「KubeCon/CloudNativeCon」が開催されていますが、参加者数は開催ごとにほぼ倍増しており、その注目の度合いが分かります。Kubernetesが関心を集めている理由として、幾つかありますが、下記のような理由が考えられます。

コミュニティー主導で開発、エコシステムが確立

 Kubernetesは、Linux、Apache、PostgreSQL、Gitなど、成功したオープンソースソフトウェア(OSS)の開発モデルを採用し、コミュニティー主導で開発されています。Linux Foundation傘下のCloud Native Computing Foundation(CNCF)のプロジェクトの一つとして、Linuxのエコシステムを支えるLinux Foundationのお墨付きのプロジェクトとなっています。

 「Certified Kubernetes Administrator」「Certified Kubernetes Application Developer」などの認定資格制度もLinux Foundationが提供しており、エンジニアの教育にも力が入れられています。

 ベンダー企業はKubernetesを自由に拡張し、自社サービスで利用したり、商用プロダクトとして販売したりすることができます。このため、各企業が積極的に開発に参加できるとともに、採用しやすくなっているというエコシステムが確立されています。

 例えばCNCFのシルバースポンサーであるNTTデータでは、企業のデジタルトランスフォーメーション(DX)を推進する基盤として、Kubernetes/クラウドネイティブの導入をサポートするオファリングを提供しています。Kubernetes自身の導入、構築だけではなく、Kubernetes上で動作させるアプリケーションのマイグレーション、開発の支援、運用(IT Service Management、IT Operations Management)のアウトソースの引き受けおよび自動化、性能問題の解析までサポートしています。

ベンダー企業によるKubernetes/クラウドネイティブソリューションの例(NTTデータの場合)

 またKubernetesや「Loki」のコントリビューターも在籍したり、書籍『Kubernetesポケットリファレンス』の執筆に参加したりしています。

「クラウドOS」としての期待

 「Amazon Web Services(AWS)」「Google Cloud Platform(GCP)」「Microsoft Azure」などのクラウド基盤は固有のAPIを持っています。そのため、APIを利用して自動化しようとすると、それぞれのAPIに対応したスクリプトやオーケストレーション技術を利用する必要がありました。

 Kubernetesを各クラウド上で利用する場合、これらのクラウド基盤固有のAPIやレイヤーを抽象化し、Kubernetesのアプリケーションを提供すれば、他のクラウドでも簡単にデプロイできるようになります。これは、ちょうどOSとしてLinuxがハードウェアを抽象化し、ハードウェアが異なってもハードウェアを意識することなく、OSの機能が利用できるのに似ています。

 このため筆者は、Kubernetesは「クラウドOS」のようなものだと考えています。

LinuxとKubernetesの関係

宣言型API(Declarative Deployment)とGitOps

 Kubernetesは、「宣言型API」に、システムに送る命令を順に記述するのではなく、あるべき状態を「YAML」で記述するようになっています。そのため、システムの状態を記述するだけで自動的にその状態を継続します。

 これにより、障害が発生しアプリケーションがダウンしたときに自動的にアプリケーションを回復したり、負荷が高まったときに自動的にノードを増やしたりすることができます。

 また、YAMLファイルでシステム状態を記述するため、CD(継続的デプロイ)によるデプロイの自動化とも相性が良く、GitでYAMLファイルを管理し、GitによるYAMLファイルの変更をトリガーにシステム情報を更新する「GitOps」も簡単に実現できます。

コラム そもそもクラウドネイティブとは?

 最近クラウドネイティブという言葉をよく聞き、本稿でも出てきますが、クラウドネイティブとは何なのでしょうか?

 CNCFが「CNCF Cloud Native Definition v1.0」として下記のようにクラウドネイティブの意味を定義しています。

クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。これらを堅牢(けんろう)な自動化と組み合わせることで、エンジニアはインパクトのある変更を、最小限の労力で頻繁かつ予測通りに行うことができます。

 このようにクラウドで実現すべき、理想的な基盤技術がクラウドネイティブとして定義されているのです。


1000倍返しの勢いで混沌化するクラウドネイティブプロダクト

 先ほどKubernetesはクラウドOSであると述べましたが、LinuxにおいてOSが提供する機能だけでは不十分で、現場では、さまざまなアプリケーションやツールと組み合わせて利用しています。

 Kubernetesにおいても、それは同じで、Linuxの「apt」「yum」に当たるパッケージマネジャーの「Helm」、同じく「netfilter」「iptables」の機能を提供する「Container Network Interface」、サービスメッシュを実現する「Istio」、モニタリングツールとしての「Prometheus」「Grafana」、各種CI/CD(継続的インテグレーション/継続的デプロイ)ツールなどが必要です。

 さて、そのような状況の中、CNCFでは、当初KubernetesとPrometheusが寄贈され、開発が進められていましたが、次々とプロダクトが寄贈され、クラウドネイティブに関するプロダクトが整備されてきました。しかし、CNCFに寄贈されるプロダクトは次々と増え、今や、倍返しならぬ、1000倍返しの勢いで、プロダクト数が増えていっています。

 下記に「CNCF Landscape」と呼ばれる、プロダクトマップを掲載しますが、ご覧の通り、数え切れないほどのプロダクトが提供されており、エコシステムがここまで巨大になると、混沌(こんとん)としてどこから手を付けたらよいか分かりません。

 これに対し、CNCFのプロダクトに手を付ける手掛かりとしては、「Cloud Native Trail Map」が提供されています。

 「Trail」とは、「通った後」「手掛かり」という意味を持ち、クラウドネイティブに取り組みたいが、何から手を付けたらよいか分からない人にとっては、手掛かりの一つとなります。

 ただ、ここに記載されている順番や各プロダクトを使っていけばよいかどうかには、議論の余地があります。例えば、「まずは、CI/CDフローを確立してからコンテナ化を進めた方がよい」「まずは、既存の提供されているパッケージをデプロイするところから始めたい場合は、Helmから利用し始めた方がよい」といった意見があるのです。

 Cloud Native Trail Mapについての議論は、下記インタビュー記事なども参照していただければと思います。

本連載の狙い

 本連載では、Kubernetes自身の紹介は、他に書籍や記事がたくさん出ているので、それらに譲り、CNCFのプロダクトを中心とした、Kubernetesを支えるプロダクトやツールを紹介していきます。まずは、Kubernetesの基本を抑えた上で、ステップアップして利用していくとよいプロダクトの情報を紹介しつつ、徐々に応用的なものを紹介します。

 クラウドネイティブの分野は技術の移り変わりが激しく、同じツールでもバージョンが上がると仕様が変更されたり、機能が追加されたりしていますが、最新の状況を提供したいと思います。

 連載第2回では、パッケージマネジャーHelm、第3回ではCI/CD、第4回ではサービスメッシュ、第5回以降では、Observability(可観測性)、Knative、OpenPolicyAgent、Veleroなどを紹介する予定です。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。