はじめに
Akamai が提供する Linode Kubernetes Engine (LKE)
と Cloud Firewall
は組み合わせて使うことができます。本記事では、Terraform
を使って、LKE のノードに Cloud Firewall を適用する方法について記載します。
LKE とは
Linode Kubernetes Engine(LKE)は、Kubernetes 上に構築されたマネージドコンテナオーケストレーションエンジンです。LKE を使用すると、独自の Kubernetes クラスタを構築(および保守)することなく、コンテナ化されたアプリケーションを迅速にデプロイして管理することができます。すべての LKE インスタンスには、追加費用なしでフルマネージドなコントロールプレーンが装備されます。アプリケーションを実行するワーカーノードと、アプリケーションが使用するオプションの NodeBalancers(ロードバランサー)および Block Storage ボリュームは課金対象です。
プロダクション環境では、LKE のコントロールプレーンを HA 構成にしてください。HA 構成オプションは課金されます。
LKE のネットワークとファイアウォールの情報
LKE クラスタでは、クラスタ内からしかアクセスできないエンティティやサービスもあれば、パブリックにアクセスできる(インターネットから到達可能な)エンティティやサービスもあります。詳細については下記ドキュメントを参照してください。
このページに書かれている設定を Cloud Firewall で実現すると次のような結果となります。
設定後は、192.168.128.0/17
の LKE 内部のネットワークから来る特定ポートへのアクセスのみしか許可しません。
本例では前段に NodeBalancers のようなサービスがあることを前提としています。NodeBalancers ではパブリックのインターネットに TCP 443 ポートを公開します。
上記のルールを Linode インスタンスに適用した後の例です。
サンプルコードの入手
以下のサイトから terraform script を入手します。
lke-firewall.tf
を作業ディレクトリに置きます。
terraform init
.tf ファイル内のトークンを設定をします。
terraform plan
terraform apply
実行して成功した例が以下となります。
linode_firewall.lke_firewall_sample: Creating...
linode_firewall.lke_firewall_sample: Creation complete after 2s [id=207767]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
実行後、Cloud Manager から登録されたことを確認します。
Terraform のサンプルは以下のページを参照してください。
前段に配置する NodeBalancers の設定については以下のドキュメントを参照してください。
以下の記事にも NodeBalancers を紹介していますので参考にしてください。
まとめ
LKE にはクラスタ内部で行われる通信とパブリックに公開される通信があります。本記事は推奨されたルールを Terraform から作成するサンプルを紹介しました。皆さんのセキュリティポリシーに合わせてカスタマイズしてください。