なんの話?
以前書きましたが、EKSクラスタの構築は非常にめんどうです。
https://qiita.com/taishin/items/a32b4ac2c3f73cd02abb
Rancherの2系はEKSのデプロイもサポートしています。が、リリース当初はぜん
先日リリースされたv2.0.3でちゃんとデプロイできるようになりました。
https://qiita.com/cyberblack28/items/d444015edd99cab1ba43
Rancherを使えば、よく分からないEKS用kubectlやHeptio Authenticator AWSといったもののセットアップも不要、ノード登録のためのConfigMapなんかも不要で、かなり簡単にEKSクラスタをつくることができます。
Rancherを使う場合、Rancherサーバ用インスタンスが必要になるよねーって話になるんですが、自分のMac上のDocker for MacにRancherサーバのコンテナをデプロイすればインスタンスいらないのでは? という話です。
手順
Docker for Mac がインストールされたMacで普通にRancher立ち上げます。
$ docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
5080491358e1 rancher/rancher "rancher --http-list…" 24 seconds ago Up 23 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443
/tcp stupefied_bhabha
起動しました。
ブラウザでhttps://localhostにアクセスします。
見れました。
ログインします。
Server URL がlocalhostでいいのか? ホストがアクセスできないんじゃないの? って言われますけど、そのまま進みます。
EC2でクラスタつくる場合は、EC2からRancherのServer URLにアクセスできないといけなかったような気がしましたが、EKSはAPI叩ければそれでいいような気がします。
あとは、ここ の手順通りEKSをセットアップします。
問題なくできました。
この環境だとkubeconfigはこんな感じです。
apiVersion: v1
kind: Config
clusters:
- name: "eks-1"
cluster:
server: "https://localhost/k8s/clusters/c-pjgr6"
api-version: v1
certificate-authority-data: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM3akNDQ\
(略)
serverがlocalhostなので、kubectlはローカルのRancherにアクセスすることになります。
$ kubectl get all NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 10m
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-192-168-152-186.us-west-2.compute.internal Ready <none> 4m v1.10.3
ip-192-168-212-16.us-west-2.compute.internal Ready <none> 4m v1.10.3
ip-192-168-66-200.us-west-2.compute.internal Ready <none> 4m v1.10.3
$ kubectl run nginx --image=nginx --port=80
deployment.apps "nginx" created
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-768979984b-6jqv4 1/1 Running 0 49s
$ kubectl expose deployment nginx --type="LoadBalancer"
service "nginx" exposed
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 14m
nginx LoadBalancer 10.100.19.166 aeb2a89ff7916... 80:31789/TCP 1m
いまのところ問題なく使えてます。
まとめ
EKSはRancherでつくるのが楽だよ
Docker for MacでRancherつくれはRancher用インスタンスはいらないよ
って話でした。
(この構成問題あるよとか情報あれば教えてください)