AWSのKubernetes環境(EKS)をコマンド一発で作る
AWSのKubernetes環境(EKS)をコマンド一発で作る:
Amazon Elastic Container Service for Kubernetes(EKS)がGAになって半年ちょっとが経ち、ようやく重い腰を上げて作ってみました。
ただドキュメント(Getting Started with Amazon EKS)がなかなか読みにくく、長いのでCloudformationやAWS CLIを使ってコマンド一発で自動で起動できるようにしてみました。
kubectl
AWS CLI
やる気
macOS
ソースコードはgithubにあげています。
https://github.com/monkeydaichan/eks-sample
os1maさんのソースをforkする形で利用させてもらってます。
EKSは限られたリージョンでしか構築できません。今回はオレゴン(us-west-2)に構築しました。
それではEKSを作っていきましょう。
eks-start.shを実行すると、env/env.shで環境変数を設定してEKSが作られていきます。
作られるリソースの名前を変更したい場合はここを変更してください。
シェルを実行して20分ぐらいでEKSの構築が終わります。
EKSの構築が終わったら下記のコマンドでKUBECONFIGを設定します。
変数EKS_KUBE_CONFIG_FILEはenv/env.shでセットしている内容に読み替えてください。
KUBECONFIGのセットが終わったら、nodeの情報が取れます。
コマンドだけじゃ嫌よ。というかたはダッシュボードをデプロイしてください。
tokenとURLが表示されます。
URLにアクセスしてtokenを入力するとダッシュボードにログインできます。
AWSがサンプルアプリケーションを公開しているので、それをデプロイします。
これで自動でロードバランサーが作成されます。
ロードバランサーのドメインはダッシュボードから確認してください。
サンプルアプリケーションの削除は下記コマンドでできます。
EKSのフル権限は作成したIAMユーザに付与されます。
https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/add-user-role.html
他のIAMユーザにもフル権限を付与したい場合は次のようにします。
env/env.shの中身をすべてコピーしてターミナルに貼り付け。
このymlファイルをEKSにデプロイすることで、権限の付与ができます。
作ったEKSを削除したい場合もコマンド一発です。
IAMユーザの追加のところで非常にハマりました。。。
ドキュメント読むの大事やんねー。。。
Amazon Elastic Container Service for Kubernetes(EKS)がGAになって半年ちょっとが経ち、ようやく重い腰を上げて作ってみました。
ただドキュメント(Getting Started with Amazon EKS)がなかなか読みにくく、長いのでCloudformationやAWS CLIを使ってコマンド一発で自動で起動できるようにしてみました。
前提
必要なツール
kubectlAWS CLI
やる気
環境
macOS
ソースコード
ソースコードはgithubにあげています。https://github.com/monkeydaichan/eks-sample
os1maさんのソースをforkする形で利用させてもらってます。
やっていく
EKSは限られたリージョンでしか構築できません。今回はオレゴン(us-west-2)に構築しました。それではEKSを作っていきましょう。
EKSの起動
eks-start.shを実行すると、env/env.shで環境変数を設定してEKSが作られていきます。作られるリソースの名前を変更したい場合はここを変更してください。
$ ./eks-start.sh
EKSの構築が終わったら下記のコマンドでKUBECONFIGを設定します。
変数EKS_KUBE_CONFIG_FILEはenv/env.shでセットしている内容に読み替えてください。
$ KUBECONFIG=EKS_KUBE_CONFIG_FILE
$ kubectl get node
ダッシュボードにアクセス
コマンドだけじゃ嫌よ。というかたはダッシュボードをデプロイしてください。$ cd resource/dashboard $ ./deploy.sh
URLにアクセスしてtokenを入力するとダッシュボードにログインできます。
サンプルアプリケーション
AWSがサンプルアプリケーションを公開しているので、それをデプロイします。$ cd resource/sample-application $ ./deploy.sh
ロードバランサーのドメインはダッシュボードから確認してください。
http://ドメイン:3000
にアクセスするとサンプルアプリケーションが表示されます。サンプルアプリケーションの削除は下記コマンドでできます。
$ cd resource/sample-application $ ./delete.sh
EKSの権限
EKSのフル権限は作成したIAMユーザに付与されます。 https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/add-user-role.html
他のIAMユーザにもフル権限を付与したい場合は次のようにします。
env/env.shの中身をすべてコピーしてターミナルに貼り付け。
$ ROLE_ARN=$(aws cloudformation describe-stacks \ --stack-name $EKS_WORKER_STACK_NAME \ --query 'Stacks[0].Outputs[0].OutputValue' \ | sed -E 's/.(.*)./\1/') $ cat << EOT > prepare/config/configmap.yml apiVersion: v1 kind: ConfigMap metadata: name: aws-auth namespace: kube-system data: mapRoles: | - rolearn: $ROLE_ARN username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes mapUsers: | - userarn: <The ARN of the IAM user you want to add> username: <Any name> groups: - system:masters
prepare/config/configmap.yml
ファイルの<ARN of the IAM user you want to add>
を追加したいIAMユーザのARNに変更、 <Any name>
は任意の名前に変更します。このymlファイルをEKSにデプロイすることで、権限の付与ができます。
$ kubectl apply -f prepare/config/configmap.yml
EKSの削除
作ったEKSを削除したい場合もコマンド一発です。$ ./all-delete.sh
ハマったところ
IAMユーザの追加のところで非常にハマりました。。。ドキュメント読むの大事やんねー。。。
コメント
コメントを投稿