Ponz Dev Log

ゆるくてマイペースな開発日記

Amazon EKSがGAになったので触った所感

AWSでKubernetesのマネージドサービス Amazon EKS がGAになりました。 今まではAWSでk8sをいじるときはkops経由でクラスターを作って、権限設定してと手間がかかっていましたが、EKSはどれくらい楽になるのかなという観点で触ってみました。

www.atmarkit.co.jp

全体的に

  • AWSのWebコンソール側はめっちゃシンプルで発展途上とさえ感じられるレベル。

    • クラスター情報の参照くらいしかできない最低限のものなので、これからGUIで各種操作できるようにできるのかな?
  • 今の所、使えるのは US West (Oregon) (us-west-2) or US East (N. Virginia) (us-east-1) のみ。

    • 東京リージョン早く来てほしい!
  • リソースの用意は基本はCLI(aws-cli/kubectl) & CloudFormationでやる。

クラスターの作成

  • ネットワーク関連は自分で用意しないといけない。

  • Get Startedの例だとVPC/SecurityGroupをCloudFormation経由でやらせていました。クラスターの作成も含めてCloudFormationでやったほうが早そう...

ノードの作成

  • ワーカーノードも自分で作成する。

    • クラスターとワーカーの紐付けを後から実施する形みたい。Configmapを編集して適用する。
  • Auto Scaling グループを設定してあげるので、最小・最大・希望ノード数の範囲で自動で増減できます。

    • KubernetesのPodのスケールは HolizontalPodAutoscalerで出来るけど、ノードのスケールまで出来るのは可用性を高めるのに良さげ。

Kubernetesにアプリケーションを乗せる

  • 通常のKubernetesの使い方同様に、ReplicationController, Service ect...を作成すればOK。

  • LoadBalancerはアクセスできるようになるまで10minくらい待つので気長にお茶でも飲んで待つ。

ハマりポイント

自分がハマったポイント集。

  • それとMFAでカッチリユーザー権限を設定している人は、事前に aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token でtokenを取得すること

    • An error occurred (InvalidClientTokenId) when calling the GetSessionToken operation: The security token included in the request is invalid.
  • もしInvalidClientTokenIdで弾かれる場合はkubeconfigから-r 行および <role-arn> 行を消すと通る。Roleをここで決めておきたいのに。。。

    • could not get token: InvalidClientTokenId: The security token included in the request is invalid.

雑感

  • 認証・認可を上手にIAMとKubernetesのRBACを統合しようとしているなと感じます。AWSでKubernetesを立てるメリットの1つではないでしょうか。

    • ただ、ドキュメントを見る限りEKSでのIAMの立ち位置は"認証"であって、認可はまだRBAC側で設定するみたいです。

    • Kubernetesのリソースアクセスの制御は、ConfigMapにIAMユーザー/ロール/アカウントを追加する必要がありますが、新しいユーザーやロールが追加されるたびに毎度毎度ConfigMapを手で書き換えるのは中々メンテナンスが大変そう。。。ここをGUIや自動化出来るとさらに使いやすいですね。

  • 他にも最初からリソース操作はかなり CloudFormationやkubectl に頼っています。

    • kopsと比較するとVPC/セキュリティグループ/Auto Scaling/Nodeの設定を細かく出来る一方で手作業となる部分が多いので、"とりあえず作って壊す" には少しハードルが高い印象を受けます。

認可の仕組みやVPC、CloudFormationあたりをもう少し探っていきたいと思います。ここら辺が明確になれば、ECSとの差別化要素も見えてきそうです。