2020年のAmazon EKSを振り返る | Dev Driven 開発・デザインチーム 2020年のAmazon EKSを振り返る | 働くひとと組織の健康を創る iCARE

BLOG

2020年のAmazon EKSを振り返る

MiyakawaKazuya
2020/12/11

こんにちは!インフラエンジニアのずやです!
この記事はiCARE Advent Calendar 2020の11日目の記事です。

今年1年でAmazon EKSにもたくさんのアップデートが発表されましたね。
今回は2020年のEKSのアップデートをざっくりとまとめてみました。

下記の4カテゴリ別に時系列順で振り返っていきます!

・全体
・マネージドノードグループ
・Farrgate
・Kubernetesバージョンのサポート状況の遷移

全体

[1月] 料金が半額に!

Amazon EKS Announces が 50% の値下げを発表

EKSクラスターの利用料金が一気に半額になりました!

EKSクラスタごとの毎時の課金額が0.20USDから0.10USDに値下げされました。
1か月の料金で見ると144USDから72USDになります。
EKSをより気軽に使いやすくなる素敵なアップデートですね。

ちなみにEKSクラスタ≒コントロールプレーンなので、データプレーン(EC2 or Fargate)の料金は変わりません。

[3月] Kubernetes secretsをKMSで暗号化可能に

Amazon EKS が AWS KMS を使った Secrets のエンベロープ暗号化に対応

デフォルトでKubernetesのSecretsの内容はbase64エンコードされるだけですが、本アップデートによりKMSのCMK(カスタマーマスターキー)を利用して暗号化することができるようになりました。

[3月] SLAが99.95%に更新

Amazon EKS がサービスレベルアグリーメントを 99.95% に更新

SLAが99.9%から99.95%に変更されました。

[4月] クラスター作成時のIAMロールのセットアップが簡略化

Amazon EKS がサービスにリンクされたロールのサポートを開始

EKSクラスターを作成する際、EKSにクラスターに必要なリソースを作成・管理するためのIAMロールを用意する必要がありましたが、その一部が「サービスにリンクされたロール」としてAWSでデフォルトで用意されるようになり、クラスター作成時のセットアップが一部省略できるようになりました。

[4月] EKSのコンソール画面の改善

Amazon EKS が AWS コンソールでのクラスターの作成と管理を改善

こちらのAWSさんのブログでどう改善されたのかが説明されています。

[7月] CIS Amazon EKSベンチマーク

Amazon EKS の CIS ベンチマークを発表

CIS Amazon EKS ベンチマークが発表され、EKSクラスターのセキュリティ設定の評価が可能になりました。評価はコントロールプレーンのログ記録設定、ノードのセキュリティ設定、ポリシー、マネージドサービスの4セクションで構成されます。
kube-benchというOSSのCLIツールを利用することもできます。

[7月] EFS CSIドライバーの登場でEFSの利用が楽に

Amazon EFS CSI ドライバーの一般提供を開始

EFS CSIドライバーによりEFSがこれまでよりも楽に利用できるようになりました。
以前はefs-provisionerが必要で手順もEFS CSIドライバーに比べ少し面倒でした。

[8月] AWS Service QuotasからEKSの制限管理が可能に

Amazon EKS クォータが、AWS Service Quotas を通じて管理可能に

各種AWSサービスの制限(クォータ)の一括管理を行えるAWS Service QuotasでEKSもサポートされるようになりました。AWS Service Quotasの画面からEKSの制限を一覧できたり制限緩和が行えます。

[8月] NLBでUDPが利用可能に

Amazon EKS が Network Load Balancer を使用した UDP ロードバランシングのサポートを開始

EKSからNLBを利用する場合、それまではTCPのみが使用可能でしたが、本アップデートによりUDPも利用可能になりました。
普通のWebサービスであれば特に不要かなと思いますが、ストリーミング系のサービスとかなら需要があるのかなと想像。

[8月] AWS Graviton2搭載のインスタンスが利用可能に

AWS Graviton を搭載した Arm ベースのインスタンスの Amazon EKS サポートの一般提供を開始

ArmベースのAWS Graviton2を搭載したM6g、C6g、R6gのインスタンスが利用可能になりました。
従来のインスタンスに比べてコストパフォーマンスが良いとのことです。
最近ではRDSElastiCache等でもサポートが発表されましたね。

[8月] EC2インスタンスメタデータサービスv2をサポート

Amazon EKS が新たに EC2 インスタンスメタデータサービス v2 をサポート

よりセキュアにインスタンスメタデータを取得できるEC2インスタンスメタデータサービスv2(IMDSv2)をEKSノードのインスタンスでも利用できるようになりました。
IMDSv2については以下の記事を参照ください。

[待望のアプデ]EC2インスタンスメタデータサービスv2がリリースされてSSRF脆弱性等への攻撃に対するセキュリティが強化されました!

[9月] pod単位でセキュリティグループを割り当て可能に

Amazon EKS で Kubernetes ポッドへの EC2 セキュリティグループの割り当てが可能に

Introducing security groups for pods

Kubernetesのpodに対して、SecurityGroupPolicyというリソースを用いて、セキュリティグループを割り当てることができるようになりました。
それまではノード(EC2インスタンス)単位でしかセキュリティグループを設定できませんでしたが、これによってpod単位でのより厳密なネットワークアクセス制御が可能となりました。
なお、Fargateは対象外となります。

[10月] Kubernetes Seviceで利用可能なIPアドレスの範囲を設定可能に

Amazon EKS が設定可能な Kubernetes サービスの IP アドレス範囲のサポートを開始

オンプレミスとの接続やVPCピアリングの利用をする場合にIPアドレスの競合を防ぐことができるようになります。

[10月] ALB Ingress Controllerが拡張

AWS Load Balancer Controller の紹介

Introducing the AWS Load Balancer Controller

EKS自体のアップデートではないですがご紹介。
ALB Ingress Controllerが「AWS Load Balancer Controller」と名前を変え、ALBだけでなくNLBもサポートするようになりました。また、一つのALBで複数のIngressリソースを扱うことができるようになりました。

[11月] Amazon VPC CNI Pluginのバージョン1.7がデフォルトに

Amazon VPC CNI プラグインバージョン 1.7 が Amazon EKS クラスターのデフォルトに

[11月] Step FunctionsからEKS上のKubernetes jobを実行可能に

AWS Step Functions が Amazon EKS サービスとの統合のサポートを開始

EKSクラスターに作成したKubernetesのjobをStep Functionsのワークフローに組み込めるようになりました。詳しい方法はStep Functionsのドキュメントに記載されています。

[11月] AWS CDK EKS Construct Libraryがデベロッパープレビューに

AWS CDK EKS Construct Library がデベロッパープレビューとして利用可能になり、cdk8s のサポートが追加

CDKのEKS用モジュールがデベロッパープレビューにという内容です。

(業務ではTerraform使っているのですが、そろそろCDKも勉強せねばですかね)

[12月] コンソール改善: Kubernetesのリソースが確認できるように

Amazon EKS Console Now Includes Kubernetes Resources to Simplify Cluster Management

[アップデート]EKSコンソールでKubernetesの各種リソースが確認できるようになりました #reinvent

地味に嬉しいアップデートです。
GKEとEKSの比較でEKSのコンソール画面が貧相というのを耳にしますが、それが今後少しでも改善されることに期待です。
正直まだ少し手間をかけてでもKubernetes Dashboardをセットアップした方が便利かなという印象です。

[12月] 一部アドオンの管理がマネージドに

Amazon EKS simplifies installation and management for Kubernetes cluster add-ons

Introducing Amazon EKS add-ons: lifecycle management for Kubernetes operational software

EKSコンソールからAmazon VPC CNIのバージョン確認・アップデートができるようになりました。今後他のアドオンツールのサポートも追加されていくようです。バージョン確認もアップデートするのも手間だったのでとても嬉しいアップデートです。
なお、対応するKubernetesバージョンは1.18以降となっています(1.18からベータ機能として追加されたServer-side Applyを利用しているようです)。

マネージドノードグループ

[4月] パブリックIP付与の仕様が変更

Amazon EKS マネージドモードグループで完全にプライベートなクラスターネットワーキングが可能に

[アップデート] EKSでマネージドノードグループをデプロイする際のパブリックIPアドレス付与の挙動が変更されました

それまではマネージドノードグループとして起動したEC2にはサブネットの設定に関わらずパブリックIPが付与されていました。
本アップデート以降はサブネットの「パブリック IPv4 アドレスを自動割り当て」設定を有効にしない限りパブリックIPは付与されなくなり、プライベートネットワークのみのノードを作成可能になりました。

[8月] 起動テンプレートとカスタムAMIを利用可能に

Amazon EKS 管理対象ノードグループが EC2 起動テンプレートとカスタム AMI のサポートを開始

起動テンプレートサポートによりカスタムAMIやユーザデータの使用など、ノードとなるEC2の設定の自由度が大幅に広がりました。
本アップデートについては以下の記事にもまとめています。
https://qiita.com/Uro3/items/d966b9bf77dc2b81e7f2

[12月] スポットインスタンスが利用可能に

Amazon EKS adds support for EC2 Spot Instances in managed node groups

マネージドノードグループでもスポットインスタンスを利用できるようになりました。
コスト削減のためにありがたいアップデートです。

Fargate

[8月] Savings Plansによる割引の対象に追加

AWS Fargate for Amazon EKS が Compute Savings Plans に含まれるように

Savings Plans適用により最大で52%の料金割引が受けられます。

元々2019年11月からECSのFargateでSavings Plans適用が可能になっていたのですが、今回EKSも対象に加わった形となります。

[8月] EFSをサポート

AWS Fargate 上の Amazon EKS が Amazon EFS ファイルシステムのサポートを開始

[アップデート] Fargate for EKSがEFSを正式サポートしました

本アップデートの一月前に一般公開されたEFS CSIドライバーを利用してFargate上のEKSノードにEFSファイルシステムをマウントできるようになりました。

[9月] CloudFormationからFargateプロファイルを作成可能に

EKS が新たに AWS CloudFormation を使用した Fargate プロファイルの作成と管理をサポート

CloudFormationからFargateプロファイルを作成できるようになりました。

[12月] Firelensサポートでログ転送が楽に

Amazon EKS adds built-in logging support for AWS Fargate

Fluent Bit for Amazon EKS on AWS Fargate is here

待望のFirelensサポートですね。
sidecarの実装なしにpodのログをCloudwatchやElasticsearch、Kinesisなど様々なサービスに転送することができるようになります。

Kubernetesバージョンのサポート状況の遷移

本記事執筆時点での最新バージョンは1.18で、Kubernetesのバージョンサイクルに追従しておおよそ3か月ごとにサポートバージョンが追加されています。
同時期にサポートされるバージョンは四つで、新しいバージョンのサポートと入れ替わりで古いバージョンが廃止されていきます。

[3月] 1.15

Amazon EKS で Kubernetes バージョン 1.15 のサポートを開始

[4月] 1.16

Amazon EKS で Kubernetes バージョン 1.16 のサポートを開始

[7月] 1.17

Amazon EKS で Kubernetes バージョン 1.17 のサポートを開始

[10月] 1.18

Amazon EKS で Kubernetes バージョン 1.18 のサポートを開始

ちなみに弊社での話ですが、一年前に作成されたEKSクラスター(バージョン1.14)をバージョンアップせずに運用し続けた結果、サポート切れ直近に最新バージョン(1.18)のクラスターに洗い替えしたのが記憶に新しいです。
このようなことにならないようにバージョンアップは都度実施していけるように気をつけましょう。。。
この話はまた別の機会に詳しく語れればと思います。

おわりに

振り返ってみるとたくさんのアップデートがありましたね。
どんどんと使いやすさが増していますし、まだまだ開発は活発に進んでいるはずなので今後のアップデートにも期待です。

なお、EKSをはじめAWSのコンテナ関連サービスのロードマップはContainers Roadmapで確認することができるので要チェックです。

また、技術書典9に出展した「iCARE Tech Book」でEKSクラスターの構築方法について執筆したので、ご興味あれば是非ご覧になってください。
ダウンロードはこちらから(無料です)

最後に、iCAREでは一緒に働いてくれるエンジニアを絶賛募集中です!
先日15億円を調達して勢いを増している環境で共に成長しましょう!
募集はこちらから