この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

EKSクラスターの作成

Amazon EKSは、Kubernetesクラスターのための管理されたコントロールプレーンを提供します。Amazon EKSは、高可用性を確保するために、複数のアベイラビリティゾーンにわたってKubernetesコントロールプレーンインスタンスを実行します。Rancherは、Amazon EKSで実行するKubernetesクラスターを管理およびデプロイするための直感的なユーザーインターフェースを提供します。このガイドを使用して、Rancherを使ってAWSアカウント内にAmazon EKS Kubernetesクラスターを迅速かつ簡単にセットアップすることができます。Amazon EKSに関する詳細は、こちらの ドキュメントをご覧ください。

Amazon Web Servicesの前提条件

Amazon AWSにデプロイすると、料金が発生します。詳細については、 EKS料金ページを参照してください。

EKSクラスターをセットアップするには、Amazon VPC(仮想プライベートクラウド)をセットアップする必要があります。EKSクラスターを作成するために使用するアカウントが適切な権限を持っていることを確認する必要があります。詳細については、 Amazon EKSの前提条件に関する公式ガイドを参照してください。

Amazon VPC

EKSクラスターをセットアップするには、Amazon VPCが必要です。VPCは、定義した仮想ネットワーク内にAWSリソースを立ち上げることを可能にします。自分で設定し、Rancherでのクラスター作成時に提供することができます。作成時に提供しない場合、Rancherが自動的に作成します。詳細については、 チュートリアル: Amazon EKSクラスターのためのパブリックおよびプライベートサブネットを持つVPCの作成を参照してください。

IAMポリシー

Rancherは、Amazon EKSでKubernetesクラスターをプロビジョニングおよび管理するために、あなたのAWSアカウントへのアクセスが必要です。Rancher用のユーザーをAWSアカウントに作成し、そのユーザーがアクセスできる内容を定義する必要があります。

  1. こちらの手順に従って、プログラムによるアクセスを持つユーザーを作成してください。

  2. 次に、このユーザーがAWSアカウント内でアクセスできる内容を定義するIAMポリシーを作成します。このユーザーには、アカウント内で最小限のアクセス権のみを付与することが重要です。EKSクラスターに必要な最小限の権限はこちらに記載されています。 こちらの手順に従って、IAMポリシーを作成し、それをユーザーにアタッチしてください。

  3. 最後に、 こちらの手順に従って、このユーザーのアクセスキーとシークレットキーを作成します。

重要:

アクセスキーとシークレットキーは定期的にローテーションすることが重要です。詳細については、 このドキュメントを参照してください。

EKSのIAMポリシーに関する詳細情報については、公式の Amazon EKS IAMポリシーに関するドキュメント, ロール, と権限を参照してください。

EKSクラスターを作成する

Rancherを使用してKubernetesクラスターをセットアップおよび構成します。

  1. *☰ > クラスター管理*をクリックします。

  2. *クラスター*ページで、*作成*をクリックします。

  3. *Amazon EKS*を選択してください。

  4. *クラスター名*を入力してください。

  5. クラスターのユーザー認可を構成するには、*メンバー役割*を使用してください。*メンバーを追加*をクリックして、クラスターにアクセスできるユーザーを追加してください。各ユーザーの権限を設定するには、*役割*のドロップダウンを使用してください。

  6. フォームの残りの部分を記入してください。ヘルプについては、設定リファレンスを参照してください。

  7. 作成]をクリックします。

結果:

クラスターが作成され、状態が*プロビジョニング*に割り当てられました。Rancherがクラスターを立ち上げています。

状態が*アクティブ*に更新された後、クラスターにアクセスできます。

*アクティブ*なクラスターには、2つのプロジェクトが割り当てられています:

  • Default、`default`名前空間を含む

  • Systemcattle-systemtraefikkube-public、および`kube-system`名前空間を含む

EKSクラスター設定リファレンス

EKSクラスターの設定オプションの完全なリストについては、このページを参照してください。

アーキテクチャ

以下の図は、Rancher 2.xの高レベルアーキテクチャを示しています。この図は、RKEによって作成されたクラスターとEKSによって作成されたクラスターの2つを管理するRancher Serverのインストールを示しています。

アーキテクチャ
Figure 1. Rancherの認証プロキシを通じたKubernetesクラスターの管理

AWSサービスイベント

AWSサービスイベントに関する情報を見つけるには、 このページを参照してください。

セキュリティとコンプライアンス

デフォルトでは、クラスターを作成したIAMユーザーまたはロールのみがそのクラスターにアクセスできます。追加の構成なしに他のユーザーまたはロールでクラスターにアクセスしようとすると、エラーが発生します。Rancherでは、クラスターを作成するために使用されなかったユーザーまたはロールにマッピングされる資格情報を使用すると、未承認のエラーが発生します。たとえば、EKSCtlクラスターは、クラスターを登録するために使用される資格情報がEKSCtlによって使用されるロールまたはユーザーと一致しない限り、Rancherに登録されません。追加のユーザーとロールは、kube-systemネームスペースのaws-auth configmapに追加されることで、クラスターへのアクセスを許可されることができます。より詳細な説明と具体的な手順については、この ドキュメントをご覧ください。

Amazon EKS Kubernetesクラスターのセキュリティとコンプライアンスに関する詳細情報については、この ドキュメントをご覧ください。

チュートリアル

この チュートリアルは、AWSオープンソースブログで、Rancherを使用してEKSクラスターをセットアップし、クラスターをテストするために公開可能なアプリをデプロイし、GrafanaやInfluxDBなどの他のオープンソースソフトウェアの組み合わせを使用してリアルタイムの地理空間データを追跡するサンプルプロジェクトをデプロイする方法を説明します。

最小EKS権限

これらは、RancherのEKSドライバーの全機能にアクセスするために必要な最小限の権限のセットです。これらの権限により、必要に応じてRancherがユーザーの代わりにサービスロールおよび仮想プライベートクラウド(VPC)リソースを作成できるようになります。

EKS v1.23以降では、EBSバックドボリューム用のアウトオブツリードライバーを使用する必要があります。このアドオンを有効にするには、特定の権限が必要です。

リソースの作成 説明

EBS CSIドライバーアドオン

KubernetesがEBSと対話し、アドオンを有効にするためにクラスターを構成する権限を提供します(EKS v1.23以降に必要)。Rancherは、次のEBS CSIドライバーアドオンの権限を使用してアドオンをインストールできます。

リソースターゲティングは、RancherでEKSクラスターを作成する前に多くのリソースのARNを知ることができないため、`*`を使用します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "EC2Permissions",
      "Effect": "Allow",
      "Action": [
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:CreateKeyPair",
        "ec2:CreateLaunchTemplate",
        "ec2:CreateLaunchTemplateVersion",
        "ec2:CreateSecurityGroup",
        "ec2:CreateTags",
        "ec2:DeleteKeyPair",
        "ec2:DeleteLaunchTemplate",
        "ec2:DeleteLaunchTemplateVersions",
        "ec2:DeleteSecurityGroup",
        "ec2:DeleteTags",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeImages",
        "ec2:DescribeInternetGateways",
        "ec2:DescribeInstanceTypes",
        "ec2:DescribeKeyPairs",
        "ec2:DescribeLaunchTemplateVersions",
        "ec2:DescribeLaunchTemplates",
        "ec2:DescribeRegions",
        "ec2:DescribeRouteTables",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeTags",
        "ec2:DescribeVpcs",
        "ec2:RevokeSecurityGroupEgress",
        "ec2:RevokeSecurityGroupIngress",
        "ec2:RunInstances"
      ],
      "Resource": "*"
    },
    {
      "Sid": "CloudFormationPermissions",
      "Effect": "Allow",
      "Action": [
        "cloudformation:CreateStack",
        "cloudformation:CreateStackSet",
        "cloudformation:DeleteStack",
        "cloudformation:DescribeStackResource",
        "cloudformation:DescribeStackResources",
        "cloudformation:DescribeStacks",
        "cloudformation:ListStackResources",
        "cloudformation:ListStacks"
      ],
      "Resource": "*"
    },
    {
      "Sid": "IAMPermissions",
      "Effect": "Allow",
      "Action": [
        "iam:AddRoleToInstanceProfile",
        "iam:AttachRolePolicy",
        "iam:CreateInstanceProfile",
        "iam:CreateRole",
        "iam:CreateServiceLinkedRole",
        "iam:DeleteInstanceProfile",
        "iam:DeleteRole",
        "iam:DetachRolePolicy",
        "iam:GetInstanceProfile",
        "iam:GetRole",
        "iam:ListAttachedRolePolicies",
        "iam:ListInstanceProfiles",
        "iam:ListInstanceProfilesForRole",
        "iam:ListRoles",
        "iam:ListRoleTags",
        "iam:PassRole",
        "iam:RemoveRoleFromInstanceProfile",
        "iam:TagRole"
      ],
      "Resource": "*"
    },
    {
      "Sid": "KMSPermissions",
      "Effect": "Allow",
      "Action": "kms:ListKeys",
      "Resource": "*"
    },
    {
      "Sid": "EKSPermissions",
      "Effect": "Allow",
      "Action": [
        "eks:CreateCluster",
        "eks:CreateFargateProfile",
        "eks:CreateNodegroup",
        "eks:DeleteCluster",
        "eks:DeleteFargateProfile",
        "eks:DeleteNodegroup",
        "eks:DescribeAddon",
        "eks:DescribeCluster",
        "eks:DescribeFargateProfile",
        "eks:DescribeNodegroup",
        "eks:DescribeUpdate",
        "eks:ListClusters",
        "eks:ListFargateProfiles",
        "eks:ListNodegroups",
        "eks:ListTagsForResource",
        "eks:ListUpdates",
        "eks:TagResource",
        "eks:UntagResource",
        "eks:UpdateClusterConfig",
        "eks:UpdateClusterVersion",
        "eks:UpdateNodegroupConfig",
        "eks:UpdateNodegroupVersion"
      ],
      "Resource": "*"
    },
    {
      "Sid": "VPCPermissions",
      "Effect": "Allow",
      "Action": [
        "ec2:AssociateRouteTable",
        "ec2:AttachInternetGateway",
        "ec2:CreateInternetGateway",
        "ec2:CreateRoute",
        "ec2:CreateRouteTable",
        "ec2:CreateSecurityGroup",
        "ec2:CreateSubnet",
        "ec2:CreateVpc",
        "ec2:DeleteInternetGateway",
        "ec2:DeleteRoute",
        "ec2:DeleteRouteTable",
        "ec2:DeleteSubnet",
        "ec2:DeleteTags",
        "ec2:DeleteVpc",
        "ec2:DescribeVpcs",
        "ec2:DetachInternetGateway",
        "ec2:DisassociateRouteTable",
        "ec2:ModifySubnetAttribute",
        "ec2:ModifyVpcAttribute",
        "ec2:ReplaceRoute"
      ],
      "Resource": "*"
    }
  ]
}

EKSクラスターを作成すると、Rancherは次の信頼ポリシーを持つサービスロールを作成します:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": "eks.amazonaws.com"
      },
      "Effect": "Allow",
      "Sid": ""
    }
  ]
}

このロールには、次のポリシーのARNを持つ2つのロールポリシーの添付もあります:

arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
arn:aws:iam::aws:policy/AmazonEKSServicePolicy

EBS CSIドライバーアドオンの権限

以下は、Amazon EBS CSIドライバーアドオンをインストールするために必要な権限です。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "eks:AssociateIdentityProviderConfig",
        "eks:CreateAddon",
        "eks:DeleteAddon",
        "eks:DescribeAddonConfiguration",
        "eks:DescribeAddonVersions",
        "eks:DescribeIdentityProviderConfig",
        "eks:ListAddons",
        "eks:ListIdentityProviderConfigs",
        "eks:UpdateAddon",
        "iam:CreateOpenIDConnectProvider",
        "iam:ListOpenIDConnectProviders",
        "sts:AssumeRoleWithWebIdentity"
      ],
      "Resource": "*"
    }
  ]
}

IPv6デュアルスタックネットワーキングの権限

以下は、Rancherから*IPv6* EKSクラスターをプロビジョニングするために必要な追加の権限です。

これらの権限は、Rancherが新しいIPv6クラスターを*作成する*場合にのみ必要です。新しいクラスターの作成中、RancherはデュアルスタックVPCを生成し、IAM OIDCプロバイダーを作成し、ノードインスタンスロールにインラインポリシー(RancherManaged+_+AllowIPv6ForCNI)を割り当てるためにこれらの権限が必要です。

既にIPv6が設定されている既存のEKSクラスターを登録(インポート)する場合、これらの追加の権限は*必要ありません*。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:AssignIpv6Addresses",
        "ec2:UnassignIpv6Addresses",
        "ec2:AssignPrivateIpAddresses",
        "ec2:UnassignPrivateIpAddresses",
        "ec2:AssociateVpcCidrBlock",
        "ec2:DisassociateVpcCidrBlock",
        "iam:PutRolePolicy",
        "iam:CreateOpenIDConnectProvider",
        "iam:ListOpenIDConnectProviders",
        "eks:AssociateIdentityProviderConfig",
        "eks:DescribeIdentityProviderConfig",
        "eks:ListIdentityProviderConfigs",
        "sts:AssumeRoleWithWebIdentity"
      ],
      "Resource": "*"
    }
  ]
}

同期

EKSプロビジョナーは、Rancherとプロバイダー間でEKSクラスターの状態を同期できます。これがどのように機能するかの詳細な技術的説明については、同期を参照してください。

リフレッシュ間隔の設定に関する情報は、このセクションを参照してください。

トラブルシューティング

変更が上書きされた場合、それはクラスターデータがEKSと同期される方法による可能性があります。EKSコンソールやRancher内で、他のソースからクラスターに変更を加えるべきではなく、5分以内に行うべきではありません。これがどのように機能するか、リフレッシュ間隔の設定方法については、同期を参照してください。

クラスターを変更または登録しようとした際に未承認のエラーが返された場合、かつクラスターがあなたの資格情報に属するロールまたはユーザーで作成されていない場合は、セキュリティとコンプライアンス。を参照してください。

Amazon EKS Kubernetesクラスターに関する問題やトラブルシューティングの詳細については、この ドキュメントをご覧ください。

プログラムでEKSクラスターを作成する

Rancherを通じてEKSクラスターをプログラム的にデプロイする最も一般的な方法は、Rancher2 Terraformプロバイダーを使用することです。Terraformを使用したクラスターの作成に関するドキュメントは こちらです。