VMware Tanzu的集群要素是什么?

作为 TUNA-JP Advent Calendar 2022 第六天的条目,本文试图解释最近 VMware Tanzu 的产品系列中经常出现的 Cluster Essentials for VMware Tanzu,以便将对这个产品感到困惑的读者们稍微安抚一下。
首先声明一下,这是一篇普通的文章。没有华丽的装饰,请您谅解。

那么,VMware Tanzu的集群基本组件是什么?

简单来说,以下是三点套装。

    • kapp-controller

 

    • secretgen-controller

Carvel のうち、ytt、imgpkg、kbld、kapp の各コマンド

这些内容都是 Cloud Native Computing Foundation 的 Sandbox 项目中的开源软件 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 クラスタ上の常駐プログラムです。

我们经常使用深度L翻译来快速将VMware Tanzu的集群要点文件翻译成日文,翻译结果如下。

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 的持续交付(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 还具有以下几种看似未被使用但实际上相当有用的功能。

    • ランダムなパスワードを生成して kubernetes.io/basic-auth タイプの Secret リソースに格納する

 

    • RSA 鍵ペアを生成して Opaque タイプの Secret リソースに格納する

 

    • SSH 鍵ペアを生成して kubernetes.io/ssh-auth タイプの Secret リソースに格納する

 

    • ルートCA証明書、中間CA証明書、リーフ証明書を生成して kubernetes.io/tls タイプの Secret リソースに格納する

 

    SecretTemplate カスタムリソースのプレースホルダに、既存の Secret リソースの値や自動生成した値を詰めることにより、新たな Secret リソースを生成する

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

在Carvel中,为什么只包含了ytt、imgpkg、kbld和kapp这些命令?

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

对于 VMware Tanzu,需要安装 Cluster Essentials 吗?

事实上,在下列情况下,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 を意識してインストールしなければならないケースは、以下のような場合となります。

Tanzu Application Platform、Tanzu SQL with Postgres for Kubernetes 、 Tanzu SQL with MySQL for Kubernetes、Tanzu RabbitMQ for Kubernetes を、TKGではない EKS、AKS、GKE、OpenShift、minikube などの Kubernetes クラスタにインストールする場合

在 VMware Tanzu 的产品中,Cluster Essentials for VMware Tanzu 是如何使用的?

例如,对于Tanzu应用平台而言,从安装步骤开始,以下方法被广泛使用。

VMware Tanzu Network から インストール対象の Kubernetes クラスタの最寄りのコンテナレジストリへ、インストールに必要なコンテナイメージを持ち込む

imgpkgコマンドを使います。

インストールに必要なコンテナレジストリのホスト名とクレデンシャルを Secret リソースに格納し、全 namespace でその Secret の値を利用可能にする

tanzu secret registry add コマンドの –export-to-all-namespaces オプションにより SecretExport リソースが Secret に併せて生成されます。secretgen-controller が SecretExport を解釈して全ての namespace にてその Secret を利用可能にします。これにより、TAP にバンドルされる数多くのソフトウェアを多数の namespace に分散してインストールする際に、各 namespace に個別に Secret を設定せずに済むようにします。

TAPにバンドルされるパッケージの詰め合わせとして設定された PackageRepository を使って、実際にTAPをインストールする

tanzu package install コマンドを実行すると、内部的には PackageInstall リソースが定義され、 kapp-controller がそれを解釈してインストールが開始されます。

最后

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

结束了

广告
将在 10 秒后关闭
bannerAds