TransitGatewayAttachment¶
TransitGatewayAttachmentは、1つのVpcをTransitGatewayに接続するリソースです。
spec.transitGatewayとspec.vpcで、接続するTransitGatewayとVpcを指定します。どちらも作成後に変更することができません。同じ組み合わせのアタッチメントを2つ作ることはできません。
associationとpropagation¶
spec.associationは、このVpcから届いたトラフィックの宛先を解決するTransitGatewayRouteTableです。1つだけ指定します。
spec.propagationsは、このVpcのSubnetを広報するTransitGatewayRouteTableの一覧です。0個でも複数でも構いません。
この2つを別のルートテーブルに向けると、経路を非対称にすることができます。たとえばハブ&スポーク構成では、スポーク側のアタッチメントをスポーク用ルートテーブルにassociationし、ハブ用ルートテーブルにpropagationします。スポーク用ルートテーブルにはハブのSubnetしか載らないため、スポーク同士は到達しません。
spec.associationとspec.propagationsで参照するTransitGatewayRouteTableは、spec.transitGatewayと同じTransitGatewayに属している必要があります。
CIDRの重複¶
同じTransitGatewayRouteTableを共有するVpcの間では、SubnetのCIDRが重複していてはいけません。重複するアタッチメントを作成しようとするとwebhookで拒否されます。同じルートテーブル経由で到達し得るVpcのSubnetと重複するCIDRのSubnetを作成しようとした場合も同様に拒否されます。
status¶
status.prefixes[]は、このアタッチメントがspec.propagationsのルートテーブルへ広報しているSubnetの一覧です。cidrの昇順に並びます。
status.conditionsのReadyは、TransitGatewayとVpc、参照先のルートテーブルがすべて存在して整合していることを表します。
削除¶
TransitGatewayAttachmentはいつでも削除できます。削除するとそのVpcのSubnetがルートテーブルから消えるため、そのVpc宛のトラフィックは宛先を解決できなくなり破棄されます。
削除したVpcのRouteTableにvia.type: transitGatewayのルートが残っている場合、そのRouteTableはReady=Falseになり、Vpc ... has no attachment to TransitGateway ...というメッセージを返します。