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の起動

eks-start.shを実行すると、env/env.shで環境変数を設定してEKSが作られていきます。


作られるリソースの名前を変更したい場合はここを変更してください。

$ ./eks-start.sh 
シェルを実行して20分ぐらいでEKSの構築が終わります。

EKSの構築が終わったら下記のコマンドでKUBECONFIGを設定します。


変数EKS_KUBE_CONFIG_FILEはenv/env.shでセットしている内容に読み替えてください。

$ KUBECONFIG=EKS_KUBE_CONFIG_FILE 
KUBECONFIGのセットが終わったら、nodeの情報が取れます。

$ kubectl get node 


ダッシュボードにアクセス

コマンドだけじゃ嫌よ。というかたはダッシュボードをデプロイしてください。

$ cd resource/dashboard 
$ ./deploy.sh 
tokenとURLが表示されます。

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ユーザの追加のところで非常にハマりました。。。


ドキュメント読むの大事やんねー。。。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)