kroを使用したスタックの構成
ACKラボでは、cartsをAWSマネージド DynamoDB テーブルに移行するために、3つの別々のマニフェスト(Tableリソース、ConfigMapのオーバーライド、Pod Identityアソシエーション)を適用しました。これは一回限りの作業には適切ですが、多くのサービスでこれを実行するプラットフォームチームは、スタック全体をキャプチャする1つのユーザー向けリソースを必要とするでしょう。
このラボでは、EKS機能として提供されるkro (Kube Resource Orchestrator) を使用して、まさにそれを実現します。kroを使用すると、プラットフォームチームは多くのKubernetesリソースを1つのシンプルなカスタムリソースの背後にパッケージ化できます。2つの要素があります:
ResourceGraphDefinition(RGD) は設計図です。新しいカスタムリソースタイプ(ここではCartsStack)、それが受け入れるわずかな入力(テーブル名など)、および1つのインスタンスが展開される基盤となるリソースのグラフを定義します:Namespace、ACKTable、ConfigMap、ServiceAccount、Deployment、およびService。プラットフォームチームはこれを一度記述します。- インスタンスは、他のすべての人が適用するものです:入力のみが記入された短い
CartsStackリソース。kroはそれを読み取り、正しい順序でグラフ全体を作成します。
他の機能と同様に、kroのコントローラーはクラスター外のAWS所有インフラストラクチャで実行され、AWSがその運用を処理します。クラスター内には、登録されたCustom Resource Definitions (CRD)のみが表示され、resourcegraphdefinitions.kro.run