LoginSignup
0
1

More than 1 year has passed since last update.

TerraformでEKSのチュートリアルをやる

Posted at

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つのファイルがあります。最終的な以下のような構成になります

スクリーンショット 2022-04-09 1.06.13.png

  • 各ファイルの説明

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
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1