Help us understand the problem. What is going on with this article?

5分で理解するkube2iamの仕組み

More than 1 year has passed since last update.

Kubernetes(EKS)で各PodごとにIAMロールを管理するには、jtblin/kube2iamを使うのが一般的である。今回はそのkube2iamがどのような仕組みで動いているかを解説する。

TL;DR

  • EC2のメタデータ取得(169.254.169.254)をkube2iamのPodに流れるようにする(iptablesの編集)
  • kube2iamがリクエスト元Podに基づいてIAMロールを決定し、クレデンシャルを返す
  • 後発のkiamよりも手軽に導入できる(ただし高負荷時に異なるロールが割り当てられる不具合も)

kube2iamの全体像

IAM%20Access%20-%20kube2iam.png

  1. EC2メタデータのリクエストを横取り
  2. EC2のIAMロールから別のIAMロールのクレデンシャルを生成
  3. 生成したクレデンシャルを返す

kube2iamのデプロイ

  • kube2iamはDaemonset(各EC2インスタンス上で1つ以上動くPod)としてデプロイしている
  • kube2iamがiptablesを触れるよう、SecurityContextをprivilegeにしてroot権限を渡す
  • 公式Githubにyamlの例が置かれている
  • HelmもStableとして公開されている

EC2メタデータ

インスタンスメタデータのAWSドキュメントでも分かる通り、/iam/security-credentials/role-nameへリクエストすればEC2インスタンスに割り当てられているIAMロールのクレデンシャルが取得できる。
AWS系のほとんどのライブラリは、認証情報が指定されていない限り、このようにメタデータAPIからクレデンシャルを取得している。

kiamとの違い

kube2iamの他にuswitch/kiamも存在する。kube2iamが2016年に登場し、その後発として2017年にkiamが登場した。

kiamの特徴は「Node自体がIAMロールを持たない」「Daemonsetとして起動しているAgentからMasterへリクエストする」というものがある。よりセキュリティを意識した設計だが、セットアップの手軽さではkube2iamが優勢とされており、GitHubのスター数もkube2iamが多い。(kube2iam 998 : kiam 415)

IAM%20Access%20-%20kiam.png

kube2iamには高負荷時に異なったロールが割り当てられるというIssueもあり、そのような問題を考慮するとkiamも選択肢に入る。(kiamのコンセプトとしてkube2iamよりもより速く、そしてこの不具合の解決をするためというの2つがある。)

より詳しくは海外の記事「IAM Access in Kubernetes: kube2iam vs kiam」でも解説されている。(本記事の参考)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした