本日は、(やっと・・)TKGの紹介をしたいと思います。
ここまでで、企業のインフラを支える基盤の大変さを、少しでも理解していただけると幸いです
#TKG?
そう聞くと、やっぱり「アレ」を思い浮かべますよね・・?
念のため、Googleさんに聞いてみました。
そうです、日本では「卵かけご飯」を連想してしまう人が、ほとんどでしょうw
では、プライベートウィンドウにして、英語で検索すると、どうなるでしょう・・?
これは、予想外 卵かけご飯、世界的にも有名だったのか・・・。
ただこちらには、「What is VMware Tkg?」と、サジェスチョンが出てきます。
つまり、卵かけご飯の次くらいには、VMwareのTKGが有名だということですねw
いきなり脱線してしまいましたが、TKGとは、Tanzu Kubernetes Grid の略です。
ちなみにGridとは、Weblioで検索するといくつか意味が出てきますが、この中では、「(電線・水道・ガスなどの)敷設網」の意味が近いです。2000年代前半に、「グリッド・コンピューティング」というバズワードがありましたが、そのKubernetes版と思って下さい。
また、公式ドキュメントやDay3でも触れていますが、TKGには2つの意味があります。
- Kubernetesランタイム:VMwareによってテスト、署名、サポートされた、アップストリームと互換性のあるKubernetes実装の提供。vSphere with TanzuやTMCといった他の導入ソリューションでも、こちらの意味でのTKG(VMwareがサポートするKubernetes)が使われている。
- マルチクラウドKubernetesクラスタ基盤の導入ソリューション:1に加え、VMwareがサポートするOSSアプリケーション(レジストリ、ネットワーク、監視、認証、イングレス制御、ログサービス)が含まれる。2020年12月12日時点の対象環境は、vSphere(オンプレミス環境)、VMC on AWS、Amazon EC2、Microsoft Azure。
前置きなくTKGというワードが出てきた場合、上記のいずれかを意味することを、覚えておいて下さい。(2の意味の方がよく使われるかも。。)
#Cluster APIについて
皆さんは、Cluster APIとはなにか、ご存知でしょうか?
なぜ急にこんな話をするかというと、TKGがマルチクラウド環境を実現する技術の核となっているのが、このCluster APIだからです。2020年12月1日、奇しくも同日に、AmazonからEKS Distroが発表され、GoogleからはAnthos on bare metalが発表されました。共に、オンプレミス環境に自社ソリューションを入れるためにCluster APIが用いられており、今、最も注目の技術の一つと言えます
###で、Cluster APIって何?
皆さんは、Kubernetesクラスタのインストールを経験したことはありますでしょうか?あれ、結構面倒ですよね?やっぱりそう考えている人は結構多くて、「Kubernetesクラスタを管理するのもKubernetesに任せたらいいんじゃね?」と、始まったプロジェクトが、Cluster APIです。
Introductonによると、「Cluster APIは、複数のKubernetesクラスタのプロビジョニング、アップグレード、運用を簡素化するための宣言的なAPIとツールを提供することに焦点を当てたKubernetesのサブプロジェクト」とのことです。
クラスタのライフサイクルに関するKubernetes SIG(Special Interest Group)として立ち上がり、2018年6月に最初のα版のTagがついています。Top Contributorsを見ると、VMwareのメンバーが名を連ね、TKGとしても2020年4月9日にGAしているため、VMwareに一日の長がある技術と言えます。
###どんな仕組みなの?
割とこの絵にある3匹の亀が、Cluster APIをよく表していますw
- Bootstrap provider(親ガメ):対象インフラ(vSphereとかEC2とか)にアクセス可能であれば、ローカルPCでも踏み台環境でもどこでも良いです。利用者は事前に、kubectl、docker、kind(kubernetes in docker)、そして、clusterctlを準備します。initコマンドにより、対象インフラの情報を与えることで、子ガメ(Management Cluster)を産み出します。
- Management cluster(子ガメ):対象インフラ毎に一つ必要であり、たくさんの孫ガメ(Workload cluster)を生み出すためのKubernetesクラスタです。
- Workload cluster(孫ガメ):実際にAPPを動作させるためのKubernetesクラスタです。手軽に複数のWorkload clusterを生成・管理することが可能です。なお、TKG環境では、Workload clusterのことを、**Tanzu Kubernetes Cluster(TKC)**と呼びます。
この3世代のカメにより、マルチクラウド・マルチクラスタ環境で一貫性のあるKubernetesクラスタの量産を実現します。(もっと掘り下げると、VMのデプロイを実現するためのCRDの話とかもありますが、、止めておきますw)
もう一つの技術ポイントとして、Cluster APIでは、Control Planeの導入に kubeadm が用いられています。こちらのプロジェクトにも、VMwareの技術者が大きく貢献しています。
#TKGがサポートするOSSアプリケーション
まず、VMware docsにより、TKGでの導入方法のドキュメントサポート(ただし、現時点では英語のみ。。)が提供されています。私の感想ですが、TKG v1.2になって、割と筋のいいOSSラインナップが揃ってきたなと思います。
カテゴリ | OSS名 | docs | どんなOSS? |
---|---|---|---|
コンテナレジストリ | Harbor | here | 組織内にプライベートコンテナレジストリを構築するソフトウェア。 |
CNI | Antrea | here | TKG v1.2からTKGのデフォルトのCNIとなった。Open vSwitch(OVS)により、様々なプロトコルを取り扱えるようになっているのが特徴。将来的にWindowsコンテナのサポートを見据えての変更と思われる。 |
CNI | Calico | here | Kubernetesで最も実績のあるCNIの一つ。Network Policyにいち早く対応し、柔軟なアクセス制限をかけられるようになった実績がある。TKG |
Backup/Restore | Velero | here | Heptioが開発した、KubernetesリソースのBackup & Restoreで最も実績のあるソリューションの一つ。 |
Log | Fluentbit | here | コンテナログのフォワーダ。fluentdの方が実績があるが、軽量版なのでコンテナ向き。 |
ユーザ認証 |
Dex / Gangway |
here | Dexは、managementクラスタに導入し、IDプロバイダと接続。GangwayはTKCに導入し、Dexと連携してkubeconfigを払い出す。 |
Ingress | Contour | here | Heptioが開発した、EnvoyベースのIngress実装。HTTPProxyというCRDにより、通常のIngressよりも柔軟なL7ルーティング管理を実現している。 |
Monitoring | Prometheus | here | Kubernetes監視ツールの定番。Kubernetes内のあらゆるメトリクスを時系列でデータ取得する術を持つ。また、AlertManagerという通知ツールも同梱される。 |
Monitoring | Grafana | here | データ可視化ツール。Prometheusのデータを可視化するため、セットで使用される事が多い。 |
オペレーション支援 | Carvel Tools | here | 旧k14s。ytt/kbld/kapp/imgpkg/kapp-controller/vendirの6つのツールの集合。TKGの他のツールのインストール時、ちょいちょいお世話になる。 |
ただし、詳細な各OSSのサポートレベルは、Tanu Editionsによっても異なってきますので、気になる方は問い合わせすると良いかと思います。
はい、本日は終了です。明日はいよいよ、TKGを導入してみます!