タケハタのブログスマートフォン用の表示で見るタケハタのブログプログラマの生き方、働き方、技術について雑多に書いていくブログです。2019-04-15eksctlを使ってEKSのクラスターを作成するKubernetesEKSを試してみようと思い、eksctlを使用してクラスターを作成までやってみたところ結構ハマったので、まとめておきます。eksctlとは?eksctlは、EKSのクラスターを作成するツールです。裏でCloudFormationを使っていて、EC2でノードを作成し、VPCの作成とかもやってくれます。クラスターを作成して、接続できる状態までいい感じにやってくれます。eksctl.io下記のAWSで用意されているEKSのワークショップでやった内容を参考にしています。eksworkshop.com前準備eksctlのインストールまずはeksctlのダウンロードからです。下記のcurlコマンドでダウンロード、展開します。/tmp展開したeksctlを任意の場所へ移動します。/usr/local/binコマンドとして実行するため、PATHの通っているディレクトリに配置する方が良いでしょう。下記のコマンドで動作確認します。GitTag:"0.1.28"}バージョン情報が表示されたら、インストール成功です。アクセスキーを設定するeksctlを使ってAWS上にクラスターを作成するには、IAMユーザーのアクセスキー情報の設定が必要です。いうファイルを作成し、下記の内容を記述してください。ディレクトリがない場合はこちらも作成する)[default]aws_access_key_id=xxxxxxxxxxaws_secret_access_key=xxxxxxxxxxxxxxxxxxxxxxxxxxとなっている部分は、ご自身のIAMユーザーのアクセスキーIDとシークレットアクセスキーを、それぞれ設定してください。heptio-authenticator-awsのインストールheptio-authenticator-awsは、IAMの権限を使用してkubernetesへの認証を通すために使用するツールです。(これのインストール方法がよく分からず結構手こずった)ソースをダウンロードします。https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-06-05/bin/darwin/amd64/heptio-authenticator-awダウンロードしたソースに実行権限を付与します。./heptio-authenticator-aws任意の場所に移動してPATHを通します。PATH=$HOME/bin:$PATH下記のコマンドを実行し、ヘルプが表示されればインストール完了です。CLIをインストールしてください。前準備が整ったところで、クラスターを作成してみます。下記のeksctlコマンドを実行してください。--region=us-west-2ここからクラスターが作成され始めます(15分くらいかかります)。CloudFormationを使用しているため、作成が始まったタイミングでCloudFormationのマネジメントコンソールを開くと、実行中の進捗が見れます。クラスターの名前を指定しています。作成するノードで使うEC2のインスタンスタイプを指定します。ここでは一番安いt2.nanoにしています。このオプションをしていしないと、デフォルトでm5.largeで作成されてしまうので、注意してください。作成するノードの数を指定します。クラスターを作成するリージョンを指定します。ここでは東京リージョンより安い、us-west-2(オレゴン)にしています。コマンドでクラスター上のリソースを操作できるようになります。下記のコマンドで作成されたノードの情報を確認します。v1.11.9指定した通り3つのノード作られています(NAME内のIPは一部伏せています)。EC2のマネジメントコンソールからも、3台のEC2インスタンスが作成されていることが確認できると思います。試しにDeploymentの作成あとは通常のkubectlコマンドで操作ができるようになります。試しにDeploymentを作成してみましょう。下記のyamlを任意の名前(ここではsample-deployment.yamlとします)で保存し、Deploymentを作成します。sample-deployment.yamlそして、下記のコマンドでPodの一覧を表示してみてください。オプションを付けることで、Podが作成されているノードの情報も表示されるので、先ほど作成したクラスターのノードにPodが作成されていることが分かると思います。接続情報を管理するkubeconfigクラスターの作成後、kubectlでEKSクラスター上のリソースへアクセスできるようになりましたが、その設定について簡単に書きます。kubectlは、接続先のクラスターや接続に使うユーザーなどの情報を、kubeconfigという設定ファイルから読み込んで実行しています。いうファイルがそれになります。下記のコマンドを実行してみてください。viewkubeconfigの内容を元に、接続設定が表示されます。この中に、先ほど作成したeksworkshop-eksctlの情報も追加されていると思います。操作する環境や権限を切り替えられるようになっています。現在使用しているcontextで、こちらもeksworkshop-eksctlにご自分のユーザーで接続するcontextが設定された状態になっていると思います。下記のコマンドでも、current-contextの情報を確認できます。current-contextこの設定をeksctlが書き換えてくれていることにより、作成されたクラスターに対してそのままkubectlで操作できるようになっています。まとめまとめると、eksctlではEC2をノードとしてEKSクラスターを作成VPCの作成もいい感じにやってくれるkubeconfigへ作成したクラスター、ユーザー、Contextの情報の追加、current-contextに作成したContextを設定までやってくれて、その後は通常通りkubectlで操作できるようになるという感じです。Kubernetesはローカルで試すのは簡単にできましたが、AWS上でクラスターを組んで使えるようにするまでは手間がかかるので、これをコマンド一発でやってくれるのは楽ですね。はてなブログProプログラマとしての生き方とか、働き方とか、技術のことを雑多に書いていきます。CODE-セブンスコード-」のバックエンド技術DockerでMySQLを起動した時はバージョン差異に注意ブログの技術記事で書く内容をパターン分けしてみた2019年を雑に振り返る月別アーカイブはてなブログをはじめよう!take7010さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。