EKS IAM ロールの作成
このページでは、Zilliz Cloud プロジェクト用の EKS クラスターを Zilliz Cloud がデプロイできるようにするための IAM ロールの作成および設定方法について説明します。
Zilliz BYOC は現在 General Availability で提供されています。アクセスおよび導入の詳細については、Zilliz Cloud sales までお問い合わせください。
手順
AWS コンソールを使用して EKS ロールを作成できます。別の方法として、Zilliz Cloud が提供する Terraform スクリプトを使用して、AWS 上の Zilliz Cloud プロジェクト向けインフラストラクチャをブートストラップすることもできます。詳細については、Terraform Provider を参照してください。
ステップ 1: IAM ロールを作成する
このステップでは、Zilliz Cloud がお客様に代わって EKS クラスターを管理できるようにするため、AWS 上に IAM ロールを作成し、そのロールの ARN を Zilliz Cloud コンソールに貼り付けます。
管理者権限を持つユーザーとして AWS Console にログインし、IAM ダッシュボードに移動します。
アカウント情報を展開し、AWS Account ID の先頭にあるコピーボタンをクリックします。
左側のサイドバーで Roles タブをクリックし、次に Create Role をクリックします。
Select trusted entity で Custom trust policy タイルをクリックします。Common trust policy で、以下の trust JSON を Custom trust policy セクションのエディターに貼り付け、{accountId} をお使いの AWS Account ID に置き換えます。
{
"Version" : "2012-10-17",
"Statement" : [
{
"Effect" : "Allow",
"Principal" : {
"Service" : "eks-nodegroup.amazonaws.com"
},
"Action" : "sts:AssumeRole"
},
{
"Sid" : "EKSClusterAssumeRole",
"Effect" : "Allow",
"Principal" : {
"Service" : "eks.amazonaws.com"
},
"Action" : "sts:AssumeRole"
},
{
"Sid" : "EKSNodeAssumeRole",
"Effect" : "Allow",
"Principal" : {
"Service" : "ec2.amazonaws.com"
},
"Action" : "sts:AssumeRole"
},
{
"Effect" : "Allow",
"Principal" : {
"Federated" : "arn:aws:iam::{accountId}:oidc-provider/eks_oidc_url"
},
"Action" : "sts:AssumeRoleWithWebIdentity",
"Condition" : {
"StringEquals" : {
"eks_oidc_url:aud" : "sts.amazonaws.com",
"eks_oidc_url:sub" : "system:serviceaccount:kube-system:aws-load-balancer-controller"
}
}
},
{
"Effect" : "Allow",
"Principal" : {
"Federated" : "arn:aws:iam::{accountId}:oidc-provider/eks_oidc_url"
},
"Action" : "sts:AssumeRoleWithWebIdentity",
"Condition" : {
"StringEquals" : {
"eks_oidc_url:sub" : "system:serviceaccount:kube-system:ebs-csi-controller-sa",
"eks_oidc_url:aud" : "sts.amazonaws.com"
}
}
},
{
"Effect" : "Allow",
"Principal" : {
"Federated" : "arn:aws:iam::{accountId}:oidc-provider/eks_oidc_url"
},
"Action" : "sts:AssumeRoleWithWebIdentity",
"Condition" : {
"StringEquals" : {
"eks_oidc_url:sub" : "system:serviceaccount:kube-system:cluster-autoscaler",
"eks_oidc_url:aud" : "sts.amazonaws.com"
}
}
}
]
}
Next をクリックし、権限の追加はスキップします。
Name, review, and create ステップで、ロール名を指定し、信頼されたエンティティを確認して、Create role をクリックします。
ロールが作成されたら、緑色のバーにある View role をクリックしてロールの詳細画面に移動します。
ロールの ARN の前にあるコピーアイコンをクリックします。
Zilliz Cloud コンソールに戻り、EKS settings の IAM Role ARN にロール ARN を貼り付けます。
ステップ 2: 権限を追加する
このステップでは、EKS ロールに複数の権限を追加します。ロールの詳細ページで Permissions タブをクリックします。Permissions policies セクションで Add permissions をクリックします。このステップでは、複数のソースから複数のポリシーを追加するために、Attach policies と Create inline policy を選択する必要があります。
AWS 管理ポリシーをアタッチする
次の表は、アタッチされたポリシーとして追加する必要がある権限を示しています。必要な権限を確認するには、表の Permissions 列の項目をクリックしてください。
| Permissions | Managed by | Description |
|---|---|---|
| AmazonEC2ContainerRegistryReadOnly | AWS | Amazon EC2 Container Registry リポジトリへの読み取り専用アクセスを提供します。 |
| AmazonEKS_CNI_Policy | AWS | Amazon VPC CNI Plugin (amazon-vpc-cni-k8s) が EKS ワーカーノード上の IP アドレス設定を変更するために必要な権限を提供します。 |
| AmazonEKSWorkerNodePolicy | AWS | Amazon EKS ワーカーノードが Amazon EKS Clusters に接続できるようにします。 |
| AmazonEKSClusterPolicy | AWS | Kubernetes がお客様に代わってリソースを管理するために必要な権限を提供します。 |
| AmazonEKSVPCResourceController | AWS | VPC Resource Controller がワーカーノードの ENI と IP を管理できるようにします。 |
Attach policies を選択した後、開いたページの Other permissions policies セクションで、上記に示した各 AWS 管理ポリシーの名前を検索ボックスに入力し、その前のラジオボックスを選択します。必要なポリシーをすべて選択したら、Add permissions をクリックします。
これらのポリシーが Permissions policies リストに表示されます。
EKS クラスターの作成時には、クラスターと一緒に 2 つの service-linked roles も自動的に作成されます。それらは AmazonEKSServiceRolePolicy と AWSServiceRoleForAmazonEKSNodegroup です。これら 2 つのロールは、Amazon EKS がお客様に代わって他の AWS サービスを呼び出すために必要です。
インラインポリシーを作成する
次の表は、カスタマーインラインポリシーとして追加する必要があるポリシーを示しています。必要な権限を確認するには、表の Permissions 列の項目をクリックしてください。
| Permissions | Managed by | Description |
|---|---|---|
| AWS Load Balancer Controller | Kubernetes SIGs | AWS Load Balancer Controller は、Kubernetes クラスターの Elastic Load Balancers の管理を支援するコントローラーです。 AWS Load Balancer Controller リポジトリの詳細については、README ファイルを参照してください。 |
| Amazon EBS CSI driver | Kubernetes SIGs | Amazon Elastic Block Store Container Storage Interface (CSI) Driver は、Container Orchestrators が Amazon EBS ボリュームのライフサイクルを管理するために使用する CSI インターフェースを提供します。 Amazon EBS CSI driver の詳細については、README ファイルを参照してください。 |
| Cluster AutoScaler | Kubernetes SIGs | Cluster AutoScaler は、すべてのポッドが実行場所を持ち、不要なノードが存在しないように、Kubernetes クラスターのサイズを自動的に調整するコンポーネントです。 AWS 上の Cluster AutoScaler の詳細については、README ファイルを参照してください。 |
Create inline policy を選択した後、Specify permissions ページで Policy editor セクションの JSON をクリックしてポリシーエディターを開きます。次に、上記のいずれかの権限をコピーしてポリシーエディターに貼り付けます。
Next をクリックし、Policy details で Policy name を設定します。一覧にあるインラインポリシーをすべて追加したら、Create policy をクリックします。これらのポリシーが Permissions policies リストに表示されます。