EKS Workshop始めるまでの一苦労を解消したい
- EKSは個人でお試しするにはリソースの費用がかかって怖いですよね。なので、EKS Workshopを試そうと思ってクラスターを構築しても、最後にはクラスターを削除することになると思います。
- そうするとクラスター作るので20〜30分かかるし、なによりEKS Workshopを続きからやりたいなって時に、またEKS Workshopを最初から見てクラスター構築して、となってクラスターを構築したことで満足して今日は終了!ってなってしまいなかなか先に進みません、、、
そこで、クラスター構築の手順をまとめました
- 毎回EKS Workshopを見ながらやっていくのは大変なのでまとめました
- 何よりEKS Workshopは英語だしブラウザで日本語翻訳しても次のページに移動するとまた英語になってるし、、、っていうのが辛いですよね。
- Chromeで
アプリ
として保存した上で「日本語に翻訳」をすればページが遷移しても翻訳され続ける!っていう解決策もあるのですが、せっかくなので以下にまとめていきます(とは言っても記載している内容はEKS Workshopそのままなのと、詳細は該当ページへのリンクを付けているので、概要として参考にして頂ければという感じです)
- Chromeで
1.Start the workshop
- ここでまとめている内容は以下のページに該当
- ここでは
running the workshop on your own (in your own account)
を選択していきます- 「自分のアカウントでワークショップを進めていきます」って意味ですね
- AWSアカウントを作成する
- 詳細は該当ページを確認
-
注意点
:AdministratorAccessポリシーを割り当てる
- 個人的には、いつも利用しているアカウント(AdministratorAccessポリシーが割当たっている)でEKS Workshopを進めるとkubernetesダッシュボードがうまく表示できなかったので、新規でアカウントを作り直したら成功しました。なのでここでは素直に新規アカウントを作成することをお薦めします
2.Create a Workspace
- ここでまとめている内容は以下のページに該当
- ここでやっているのは、EKSクラスターを作成するためのワークスペースとしてCloud9を起動しています
- インスタンスタイプを
t3.small
に変更する以外は全てデフォルトのままでOK - テーマを変更しろと記載がありますが、変えても変えなくてもOK
- インスタンスタイプを
-
注意点
:この後実施する各種設定は、Cloud9での設定内容になっているので、AWS CLI使えるからローカルでやろう!となると手順変わるので、素直にCloud9を起動した方が良いです。
進捗確認1
3.Install Kubernetes Tools
- ここでまとめている内容は以下のページに該当
- EKSクラスター構築のために利用するコマンドをインストールしていきます
-
Cloud9上のターミナルで各種コマンドを実行していく流れです
- kubectlをインストールする
sudo curl --silent --location -o /usr/local/bin/kubectl https://amazon-eks.s3-us-west-2.amazonaws.com/1.14.6/2019-08-22/bin/linux/amd64/kubectl
- インストールしたkubectlの権限を変更
sudo chmod +x /usr/local/bin/kubectl
- 次に、
jq
、envsubst
(GNU gettextユーティリティから)、およびbash-completion
をインストールします
sudo yum -y install jq gettext bash-completion
- インストールされたかどうかを確認します
for command in kubectl jq envsubst do which $command &>/dev/null && echo "$command in path" || echo "$command NOT FOUND" done
- 以下が表示されればインストールOKです
kubectl in path jq in path envsubst in path
- kubectl bash_completionを有効にする
kubectl completion bash >> ~/.bash_completion . /etc/profile.d/bash_completion.sh . ~/.bash_completion
- kubectlをインストールする
進捗確認2
- 次へ進みます
4. Create an IAM role for your Workspace
- ここでまとめている内容は以下のページに該当
- ワークスペース(Cloud9)がEKSクラスターを作れるような権限を与えるためのIAMロールを作成します
- ロール作成の詳細は該当ページを参照
-
eksworkshop-admin
という名前でAdministratorAccess
を持ったロールを作成します
-
- ロール作成の詳細は該当ページを参照
進捗確認3
- 次へ進みます
5.Attach the IAM role to your Workspace
- ここでまとめている内容は以下のページに該当
- IAMロールをワークスペースにアタッチします
- ロールのアタッチの詳細は該当ページを参照
-
注意点
: Cloud9にロールを割り当てるわけですが、Cloud9の実態はEC2なので、ロールの割当を実行する画面はEC2になります。
進捗確認4
5. Update IAM settings for your Workspace
- ここでまとめている内容は以下のページに該当
-
ここではCloud9からEKSクラスターが作成できるように、Credentialの設定を行っていきます
-
デフォルトで設定されているCloud9の設定を無効化します
- 該当ページに画像あるのでそれを見つつ設定(設定の概要は以下)
- 右上の歯車アイコン -> AWS setting -> CredentialsをOFFにする
- さらに既存の認証情報ファイルも削除
rm -vf ${HOME}/.aws/credentials
- 該当ページに画像あるのでそれを見つつ設定(設定の概要は以下)
-
-
無効化と既存のファイルの削除が済んだので、改めてEKSクラスターを作成するためにCloud9にCredentialを設定していきます
-
アカウントとリージョンの値を以下の手順で取得していきます
export ACCOUNT_ID=$(aws sts get-caller-identity --output text --query Account)
-
アカウントIDが取得できているかのテスト(アカウントIDが表示されればOK)
echo $ACCOUNT_ID
-
-
Cloud9が存在しているリージョンを取得する
export AWS_REGION=$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.region')
-
リージョンが取得できているかのテスト(リージョンが表示されればOK)
test -n "$AWS_REGION" && echo AWS_REGION is "$AWS_REGION" || echo AWS_REGION is not set
-
-
-
上記で取得したアカウントIDとリージョンをbash_profileに保存
echo "export ACCOUNT_ID=${ACCOUNT_ID}" | tee -a ~/.bash_profile echo "export AWS_REGION=${AWS_REGION}" | tee -a ~/.bash_profile aws configure set default.region ${AWS_REGION} aws configure get default.region
-
IAM情報の確認
aws sts get-caller-identity
-
確認
:上記コマンドのレスポンスに以下の情報が記載されていればOK- ロール名:
eksworkshop-admin
が含まれている - インスタンスID:
Cloud9の元になっているEC2のインスタンスID
- ロール名:
-
ここで、上記の条件を満たすように権限が当たっていないと、次に進まないでください的な警告が記載されているので注意してください。
進捗確認5
6.Clone the Service Repos
-
ここでまとめている内容は以下のページに該当
-
ここは大したことはしていません。githubから素材を取得するだけです。
cd ~/environment git clone https://github.com/brentley/ecsdemo-frontend.git git clone https://github.com/brentley/ecsdemo-nodejs.git git clone https://github.com/brentley/ecsdemo-crystal.git
進捗確認6
- 最後の手順です。
7.Create an SSH key
- ここでまとめている内容は以下のページに該当
-
Cloud9でSSHキーを作成する
ssh-keygen
-
作成したキーペアの公開鍵をインポート
aws ec2 import-key-pair --key-name "eksworkshop" --public-key-material file://~/.ssh/id_rsa.pub
-
マネージドコンソール -> EC2 -> Keypair
にインポートされます
-
まとめ
あとはeksctlをダウンロードしてインストール。その後にeksctlを実行して、クラスターの作成をすればEKSが使い始められます!
-
ここまでの手順とeksctlのダウンロードとインストールまでは1度対応しておけば、2度目にEKS Workshopやろうってなった時に、再度手順を繰り返して設定する必要はありません
- Cloud9は削除しない前提です(Cloud9は30分間作業しなければ自動で停止してくれるので、削除しなくてもいいかなと個人的には思っています)
これでEKS Workshopのハードルも少し下がったので、Beginner向けのシナリオから1つずつ勉強していきましょう!