11
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TUNA-JPAdvent Calendar 2022

Day 6

Cluster Essentials for VMware Tanzuってなんなのさ

Last updated at Posted at 2022-12-05

この記事は、TUNA-JP Advent Calendar 2022 の6日目のエントリーとして、最近の VMware Tanzu の製品群を扱うにあたってしばしば目にする Cluster Essentials for VMware Tanzu に対し、何なんや一体!とお感じになられたことがあるだろう皆さまに向け、少しでも慰めになればいいのになあとの想いを込め、解説を試みるものです。
最初に断っておきますが、地味な記事です。きらびやかさは一切ありませんので、何とぞご了承ください。

で、Cluster Essentials for VMware Tanzu って何や

ざっくり言えば、以下の3点セットです。

上記はいずれも、Cloud Native Computing Foundation の Sandbox project のひとつである Carvel に含まれるオープンソースソフトウェアであり、ソースコードやドキュメント類は全て GitHub で公開されています。
ytt、imgpkg、kbld、kapp の各コマンドは、kubectl コマンドをインストールして Kubernetes クラスタを操作するマシンにインストールして使います。kapp-controller と secretgen-controller は、Kubernetes クラスタにデプロイし常駐させて使います。

ほう、で、 kapp-controller って何なんや

昨年のTUNA-JP Advent Calendar 2021の記事のひとつ『 Carvelでパッケージを作って公開する』においても触れられていますが、Kubernetes クラスタ上にデプロイするソフトウェアがパッケージとして提供されている VMware Tanzu の製品群において、そのパッケージを Kubernetes クラスタに持ち込んできて設定してデプロイする一連の処理を担う、 Kubernetes クラスタ上の常駐プログラムです。

Cluster Essentials for VMware Tanzu のドキュメントにおける説明文を、日々愛用させていただいております DeepL翻訳 にてさくっと日本語訳いたしますと、以下の通りです。

kapp-controllerは、Kubernetesアプリケーションとパッケージをカスタマイズ、インストール、更新するための宣言型APIを提供します。パッケージのインストールとアップデートのためにTanzu CLIパッケージプラグインによって利用されるPackage、PackageInstall、PackageRepository、およびApp CRDを提供します。また、これらのCRDは、GitOpsのプラクティスに従ってワークロードの管理を自動化するために使用することができます。

kapp-controller 自体を包括的に説明した日本語のブログ記事はまだ無いようですが、今年9月に開催された Cloud Operators Days Tokyo 2022 にて、私の同僚の槙さんがプレゼンした動画が公開されています。

ちなみに英語の記事だと、このへんが Carvel との関係性も含めて包括的に書いてあって、よさそうです。

kapp-controller については、パッケージによる Kubernetes クラスタへのソフトウェアのデプロイに止まらず、 GitOps に基づく Continuous Delivery (CD) にも使えたり、値が暗号化されたYAMLの復号化ができたり、ytt overlay によってデプロイ対象の細かいカスタマイズができたりと、 Kubernetes 運用の自動化にとても有用な機能群を備えており、非常に奥の深いものとなっています。

ふむ、で、 secretgen-controller ってのも何なんや

こちらも Cluster Essentials for VMware Tanzu のドキュメントにおける説明文を、日々愛用させていただいております DeepL翻訳 にてさくっと日本語訳いたしますと、以下の通りです。

secretgen-controller はクラスタ上で必要な秘密を指定するための宣言的な API を提供します。証明書、パスワード、RSAキー、SSHキーを生成することができ、他のツールで生成された秘密も使用することができます。Tanzu CLI secret plugin が利用する SecretImport および SecretExport CRD を提供し、プライベートレジストリからのパッケージのインストールを可能にするために、適切なネームスペースにプライベートレジストリの秘密をコピーするために利用されます。

secretgen-controller の詳細については、すでに私の同僚の @ipppppei さんがQiita記事にてしっかりまとめてくれています。

なお、上記記事では触れられていませんが、secretgen-controller には以下のような、使わなさそうで案外結構使えそうな機能もあります。

ああ、思い出します。 bosh interporate コマンドのことを。 BOSH manifest の variables ブロックのことを。 Kubernetes の YAML 地獄以前に、Cloud Foundry で YAML 地獄に苦しんでいたあの頃が脳裏に蘇ります。
Cloud Foundry BOSH と Carvel との間には、浅からぬ関係があります。このお話については、 TUNA-JP Advent Calendar 2022 の24日目くらいで改めて語りたいと思っています。

Carvel のうち、何で yttimgpkgkbldkapp のコマンドだけ含まれてるのや?

VMware Tanzu Network から Cluster Essentials for VMware Tanzu の TarBall をダウンロードして解凍すると、 install.sh と uninstall.sh というシェルスクリプトに加えて、確かに yttimgpkgkbldkapp の各コマンドのバイナリが含まれています。
これらのコマンドは、kapp-controller と secretgen-controller を初めとする VMware Tanzu 製品をインターネット非接続な Kubernetes クラスタにインストールできるよう、予め VMware Tanzu Network から Harbor などのプライベートコンテナレジストリへ必要なコンテナイメージを持ち込んでおき、さらにそれを使って、必要な設定も加えつつ、実際に Kubernetes クラスタにインストールするために使われます。
なお、インターネットに HTTP Proxy など無しで直接接続可能な環境では、インストールに kapp-controller や secretgen-controller の助けが必要になる VMware Tanzu 製品であっても、Tanzu CLI だけでインストールすることができます。
とは言え、 Carvel の各コマンドは、使い慣れればとても便利で手放せなくなります。上記の4コマンドに vendirkwtkctrl も加えた Carvel のコマンドを一括で簡単にインストールする方法も提供されているので、 Kubernetes クラスタを操作する端末にはデフォルトで入れとくといいと思います。

Cluster Essentials for VMware Tanzu は必ずインストールせんといかんのか?

実は、以下の場合においては、 Kubernetes クラスタに kapp-controller と secretgen-controller が最初からインストールされた状態になります。

  • Tanzu Kubernetes Grid によって生成・管理されている Kubernetes クラスタ
  • Tanzu Mission Control によって管理されている Kubernetes クラスタ
    • TMC のクラスタライフサイクル管理機能を用いて生成されたクラスタはもちろん、別途生成のうえ TMC にアタッチされ管理下に置かれたクラスタにも、 TMC のエージェントのインストールの延長で kapp-controller と secretgen-controller も勝手にインストールされます。

従って、 Kubernetes クラスタ運用者が Cluster Essentials for VMware Tanzu を意識してインストールしなければならないケースは、以下のような場合となります。

VMware Tanzu の製品で Cluster Essentials for VMware Tanzu はどう使われてるのか?

例えば Tanzu Application Platform の場合だと、インストール手順ののっけから以下のように使われまくっています。

おわりに

字ばっかりでつまらない記事になってしまったかもしれないですね・・・
しかし、すでにクロアチア戦の前半が終わろうとしています。前田が先制ゴールを決めたのです。Kubernetes どころではありません。ごめんなさい。がんばれ日本!
それでは、ごきげんようさよなら!

おしまい

11
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?