![見出し画像](https://assets.st-note.com/production/uploads/images/72317489/rectangle_large_type_2_7e0260f3e7b775b250fbcc61796cc406.jpeg?width=1200)
EKSクラスタ作成まとめ
ほぼ公式チュートリアルに沿って進めています。
AWS Management Console と AWS CLI を使用して、Amazon Elastic Kubernetes Service (Amazon EKS) を使用開始するために必要なすべてのリソースを作成する方法を解説します。ここでは、各リソースを手動で作成します。
このチュートリアルの終わりには、アプリケーションのデプロイが可能な、実行状態の Amazon EKS クラスターが完成します。
このガイドの手順に従うと、各リソースがどのように作成され、リソース間でどのようにやり取りするかを全面的に把握できます。
大半のリソースを自動的に作成させたい場合には、クラスターとノードの作成に eksctl CLI を使用します。詳細については、「Amazon EKS の開始方法 – eksctl」を参照してください。
チュートリアルを開始する前に、Amazon EKS クラスターの作成と管理に必要な次のツールとリソースを、インストールおよび設定しておく必要があります。
・kubectl のインストール
・eksctlのインストール
・IAM からの必要なアクセス許可 – ここで使用する IAM セキュリティプリンシパルには、Amazon EKS の IAM ロールおよびサービスにリンクされたロール、AWS CloudFormation、ならびに VPC とその関連リソースを操作するための権限が必要となります。
Amazon EKS クラスターとノードを作成する
重要
可能な限りシンプルかつ迅速に使用を開始するため、このトピックでは、クラスターをデフォルトの設定で作成するステップについて説明します。本番で使用するクラスターを作成する前に、すべての設定内容に習熟した上で、要件を満たす設定でクラスターをデプロイすることをお勧めします。詳細については、「Amazon EKS クラスターの作成」を参照してください。一部の設定は、クラスターの作成時にのみ有効にできます。
Amazon EKS の要件を満たすように、パブリックサブネットとプライベートサブネットを持つ Amazon VPC を作成します。
region-code は、Amazon EKS がサポートする任意のリージョンに置き換えます。リージョンの一覧については、AWS の 全般的なリファレンスガイドの Amazon EKS エンドポイントとクォータを参照してください。
my-eks-vpc-stack は、任意の名前にできます
$ aws cloudformation create-stack \
--region region-code \
--stack-name my-eks-vpc-stack \
--template-url https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
コマンドが作成したすべてのリソースの一覧については、AWS CloudFormation コンソー(https://console.aws.amazon.com/cloudformation) を開きます。my-eks-vpc-stack スタックを選択し、[リソース] タブを選択します。
クラスターの IAM ロールを作成
そのロールに必要な Amazon EKS IAM 管理ポリシーをアタッチします。Amazon EKS によって管理される Kubernetes クラスターは、そのサービスで使用するリソースを管理するために、ユーザーに代わって他の AWS のサービスを呼び出します。
次の内容を cluster-role-trust-policy.json という名前のファイルにコピーします。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "eks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}ろ
ロールの作成コマンド
$ aws iam create-role \
--role-name myAmazonEKSClusterRole \
--assume-role-policy-document file://"cluster-role-trust-policy.json"
このロールに、必要な Amazon EKS 管理の IAM ポリシーをアタッチします。
$ aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \
--role-name myAmazonEKSClusterRole
Amazon EKS コンソール を開きます。
コンソールの右上で選択されているリージョンが、クラスターの作成元にするリージョンであることを確認します。異なる場合は、リージョン名の横にあるドロップダウンを選択し、使用するリージョンを選択します。
[Add cluster] (クラスターの追加) を選択し、[作成] を選択します。このオプションが表示されない場合は、まず左パネルの [クラスター] を選択します。
[クラスターの設定] ページでクラスターの [名前] (my-cluster など) を入力し、[クラスターサービスロール] で [myAmazonEKSClusterRole] を選択します。その他の設定はデフォルト値のままにし、[Next (次へ)] を選択します。
[ネットワーキングを指定] ページで、前のステップで VPCドロップダウンリストから作成した VPC の ID を選択します。この ID は vpc-00x0000x000x0x000 | my-eks-vpc-stack-VPC のような値です。その他の設定はデフォルト値のままにし、[Next (次へ)] を選択します。
[Configure logging (ログ記録の設定)]ページで、[Next (次へ)] を選択します。
[Review and create (確認して作成)] ページで、[Create (作成)] を選択します。
クラスターのプロビジョニングプロセスが完了するまで、数分の間、クラスター名の右側でステータスが [Creating (作成中)] と表示されます。ステータスが [Active (アクティブ)] になるまで、次のステップに進まないでください。
自分のコンピュータでクラスターとの通信を設定する
このセクションでは、クラスター用の kubeconfig ファイルを作成します。このファイルの設定により、kubectl CLI からクラスターへの通信ができるようになります。
クラスター用の kubeconfig ファイルを作成もしくは更新します。region-code はクラスターを作成したリージョンに、my-cluster はクラスターの名前に置き換えます。
$ aws eks update-kubeconfig \
--region region-code \
--name my-cluster
デフォルトでは、config ファイルが ~/.kube に作成されるか、config ファイルが既に ~/.kube に存在する場合には、その中に新しいクラスター設定が追加されます。
設定をテスト
$ kubectl get svc
出力:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m
ノードを作成する
重要
可能な限りシンプルかつ迅速に使用を開始するため、このトピックでは、ノードをデフォルトの設定で作成するステップについて説明します。本番で使用するノードを作成する前に、すべての設定内容に習熟した上で、要件を満たす設定でノードをデプロイすることをお勧めします。詳細については、「Amazon EKS ノード」を参照してください。一部の設定は、ノードの作成時にのみ有効にできます。
クラスターの作成には、次のいずれかのノードタイプが使用できます。
Fargate – Linux – AWS Fargate で Linux アプリケーションを実行する場合は、このタイプのノードを選択します。Fargate は、Amazon EC2 インスタンスを管理せずに Kubernetes ポッドをデプロイできるサーバーレスコンピューティングエンジンです。
マネージド型ノード – Linux – Amazon EC2 インスタンスで Amazon Linux アプリケーションを実行する場合は、このタイプのノードを選択します。このガイドでは説明していませんが、Windows セルフマネージド型および Bottlerocket ノードを、クラスターに追加することもできます。
今回はマネージド型ノードで進めます。
ノードの IAM ロールを作成して、必要な Amazon EKS IAM 管理ポリシーをアタッチします。Amazon EKS ノード kubelet デーモンが、ユーザーに代わって AWS API への呼び出しを実行します。ノードは、IAM インスタンスプロファイルおよび関連ポリシーを通じて、これらの API コールのアクセス許可を受け取ります。
次の内容を node-role-trust-policy.json という名前のファイルにコピーします。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
ノードの IAM ロールを作成します。
$ aws iam create-role \
--role-name myAmazonEKSNodeRole \
--assume-role-policy-document file://"node-role-trust-policy.json"
ロールに、必要なマネージド IAM ポリシーをアタッチします。
$ aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \
--role-name myAmazonEKSNodeRole
aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \
--role-name myAmazonEKSNodeRole
aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \
--role-name myAmazonEKSNodeRole
Amazon EKS コンソール (https://console.aws.amazon.com/eks/home#/clusters) を開きます。
ステップ 1: Amazon EKS クラスターを作成するで作成したクラスターの名前 (my-cluster など) を選択します。
[Configuration (設定)] タブを選択します。
[Configuration (設定)] タブで、[Compute (コンピューティング)] タブを選択した後、[Add Node Group (ノードグループを追加)] を選択します。
[Configure node group (ノードグループの設定)] ページで、次のパラメータを指定し、残りの値はデフォルトを受け入れて、[Next (次へ)] を選択します。
[Name (名前)] – マネージド型ノードグループの一意の名前 (my-nodegroup など) を入力します。
[ノード IAM ロール名] – myAmazonEKSNodeRole を選択します。各ノードグループには独自の一意の IAM ロールを使用することをお勧めします。
[Set compute and scaling configuration (コンピューティングとスケーリングの設定)] ページではデフォルトの値を受け入れ、[次] を選択します。
[ネットワーキングを指定] ページで、デフォルトの値をそのまま使用して、[次へ] を選択します。
[確認と作成] ページで、マネージド型ノードグループの設定を確認し、[作成] を選択します。
数分後、[Node Group configuration (ノードグループの設定)] セクションにある [Status (ステータス)] の表示が、[Creating (作成中)] から [Active (アクティブ)] に変わります。ステータスが [Active (アクティブ)] になるまで、次のステップに進まないでください。
リソースを表示する
ノードと Kubernetes のワークロードを表示することができます。
ノードとワークロードを表示する
左パネルの [クラスター] を選択し、[クラスター] の一覧から、作成したクラスターの名前 (my-cluster など) を選択します。
[Overview (概要)] タブに、クラスターにデプロイした [Nodes (ノード)] が一覧表示されます。ノードの名前を選択すると、そのノードに関する詳細情報が表示されます。ここに表示される内容の詳細については、「ノードを表示する」参照してください。
クラスターの [Workloads (ワークロード)] タブに、Amazon EKS クラスターにデフォルトでデプロイされたワークロードが一覧表示されます。ワークロードの名前を選択すると、それに関する詳細情報が表示されます。ここに表示される内容の詳細については、ワークロードの表示を参照してください。Fargate ノードを作成した場合、ステータスがあるのは coredns のみです。
リソースを削除する
このチュートリアルのために作成したクラスターとノードの使用が終了したら、作成したリソースを削除する必要があります。リソースを削除する前に、他の目的でこのクラスターを使用する場合は、次のステップを参照してください。
このガイドで作成したリソースを削除するには
作成した my-nodegroup ノードグループまたは my-profile Fargate プロファイルと CoreDNS Fargate プロファイルを削除します。
Amazon EKS コンソール (https://console.aws.amazon.com/eks/home#/clusters) を開きます。
左のナビゲーションで [クラスター] を選択します。クラスターの一覧で、my-cluster を選択します。
[Configuration (設定)] タブを選択します。[Compute (コンピューティング)] タブで、次を行います。
my-nodegroup ノードグループを選択し、[削除] を選択します。my-nodegroup と入力し、[削除] を選択します。
my-profile Fargate プロファイルを選択し、[削除] を選択します。my-profile と入力し、[削除] を選択します。CoreDNS プロファイルを作成した場合は、それも削除します。
ノードグループまたは Fargate プロファイルが削除されるまで続行しないでください。
クラスターを削除します。
左パネルから my-cluster を選択し、[削除] を選択します。
my-cluster と入力し、[削除] を選択します。クラスターが削除されるまで続行しないでください。
作成した VPC AWS CloudFormation スタックを削除します。
https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソール を開きます。
my-eks-vpc-stack スタックを選択し、[削除] を選択します。
[Delete Stack (スタックの削除)] 確認画面で、[Delete stack (スタックを削除)] を選択します。
作成した IAM ロールを削除します。
IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。
左のナビゲーションパネルで、[ロール] を選択します。
一覧から myAmazonEKSClusterRole を選択します。[削除] を選択し、myAmazonEKSClusterRole と入力して、[削除] を選択します。作成した myAmazonEKSFargatePodExecutionRole ロールまたは myAmazonEKSNodeRole ロールを削除します。
この記事が気に入ったらサポートをしてみませんか?