EKSとは?
Amazon Elastic Kubernetes Service(EKS)は、コンテナ化されたアプリケーションをKubernetesでデプロイ、管理、スケーリングするためのAWSサービスです。
本記事ではチュートリアルを通してTerraformを使用してEKSクラスターをデプロイします
- 前提条件
Kubernetesとkubectlの基本的な知識
AWSアカウントを所持
AWS CLIを使える
リポジトリをクローンする
git clone https://github.com/hashicorp/learn-terraform-provision-eks-cluster
クローンしたディレクトリに移動する
cd learn-terraform-provision-eks-cluster
ここには、VPC、セキュリティグループ、およびEKSクラスターのプロビジョニングに使用される6つのファイルがあります。最終的な以下のような構成になります
- 各ファイルの説明
vpc.tfは、AWS VPCモジュールを使用してVPC、サブネット、およびアベイラビリティーゾーンをプロビジョニングします。このチュートリアル用に新しいVPCが作成されるため、既存のクラウド環境やリソースに影響を与えることはありません。
security-groups.tfは、EKSクラスターによって使用されるセキュリティグループをプロビジョニングします。
eks-cluster.tfは、AWS EKSモジュールを使用してEKSクラスターをセットアップするために必要なすべてのリソース(AutoScalingグループなど)をプロビジョニングします。
output.tfは、出力構成を定義します。
version.tfは、Terraformのバージョンを少なくとも0.14に設定します。また、このサンプルで使用されているプロバイダーのバージョンも設定します。
Terraformワークスペースを初期化する
terraform init
設定ファイルを適用する
terraform apply
このテラフォームの適用により、合計53のリソース(VPC、セキュリティグループ、AutoScalingグループ、EKSクラスターなど)がプロビジョニングされます。
アプリケーションが正常に実行されると、端末はoutputs.tfで定義された出力を出力します。
EKSクラスターをプロビジョニングしたら、kubectlを構成する
aws eks --region $(terraform output -raw region) update-kubeconfig --name $(terraform output -raw cluster_name)
Kubernetesクラスターの名前とリージョンは、Terraformの実行が成功した後に表示される出力変数に対応しています。
Kubernetesダッシュボードをデプロイしてアクセスしてみる
クラスタが正しく設定されて実行されていることを確認するには、Kubernetesダッシュボードをデプロイし、ローカルブラウザでそのクラスタに移動します。
KubernetesMetricsServerをデプロイする
1.メトリックサーバーをダウンロードして解凍します。
wget -O v0.3.6.tar.gz https://codeload.github.com/kubernetes-sigs/metrics-server/tar.gz/v0.3.6 && tar -xzf v0.3.6.tar.gz
2.メトリックサーバーをクラスターにデプロイします。
kubectl apply -f metrics-server-0.3.6/deploy/1.8+/
3.メトリックサーバーがデプロイされていることを確認します。
kubectl get deployment metrics-server -n kube-system
Kubernetesダッシュボードをデプロイする
1.ダッシュボードに必要なリソースをスケジュールします。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml
2.ローカルマシンのブラウザからダッシュボードに移動できるプロキシサーバーを作成します。
kubectl proxy
3.ここからKubernetesダッシュボードにアクセスできることを確認するhttp://127.0.0.1:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
ダッシュボードを認証する
Kubernetesダッシュボードを使用するには、ClusterRoleBindingを作成し、認証トークンを提供する必要があります。 これにより、cluster-adminにkubernetes-dashboardにアクセスする権限が付与されます。 kubeconfigを使用した認証はオプションではありません。 詳細については、Kubernetesのドキュメントをご覧ください。
1.ClusterRoleBindingリソースを作成します。
kubectl apply -f https://raw.githubusercontent.com/hashicorp/learn-terraform-provision-eks-cluster/main/kubernetes-dashboard-admin.rbac.yaml
2.次に認証トークンを生成します。
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep service-controller-token | awk '{print $1}')
3.ダッシュボードUIで[トークン]を選択し、受け取ったトークン全体をコピーしてダッシュボード認証画面に貼り付けてサインインします。
これでEKSクラスターをプロビジョニングし、kubectlを構成し、Kubernetesダッシュボードをデプロイするチュートリアルは完了です!
お掃除する
このチュートリアルが終了したら、作成したリソースをすべて破棄することを忘れないでください。
terraform destroy