自分で立てたdeisにアプリをdeployするまで
quickstartのConfigure DNSとregister an admin user and deploy your first app.をやっただけ。
ロードバランサーの確認
$ kubectl --namespace=deis describe svc deis-router | grep LoadBalancer Type: LoadBalancer LoadBalancer Ingress: 104.198.90.182
これがロードバランサーのIP。
でも、これがいつできたのがわからない :scream:
On Google Container Engine, Deis Workflow will automatically provision and attach a Google Cloud Loadbalancer to the router copmonent.
Deis Workflowは自動的にGCPのロードバランサーを作ってアタッチするっていってるけど、一体これはいつ行われたんだ・・ :thinking:
helm install
したときか?該当のコードをdeisのorganization配下でgcpとかload balancerとかgclbとかいろいろ検索してみたけど、わからず・・
kubernetesのserviceでtype:LoadBalancerとしてるから
そもそも、k8sにserviceというcomponentがあって、serviceは色んなタイプがあるけれどLoadBalancerを選ぶと、k8sがよしなにバックエンドのcloud providerを見てロードバランサーを作ってくれるってことですね。GKEの場合は、それは、Google cloud load balancerを使って実現すると。 なので、多分k8sのコードにそういうことが書いてあるはず(まだ見てないけど)。
deis/workflowがやるのはpodを作成するってことだけだと思いこんでしまっていて、podはcontainerを包含した単位なのに、なぜ上位のGCPの操作の仕方まで知っているんだろう?というところがつまづいてしまった原因でした:scream: そもそもk8sは何ができるのかを分かったようで分かってなかったってことですね。
ロードバランサーのIPをもとにnip.ioというサービスを利用したときのhostを確認する
$ host 104.198.90.182.nip.io 104.198.90.182.nip.io has address 104.198.90.182
これで deis.<GCPのロードバランサーのIPアドレス>.nip.io で手元でアクセスできるようになる。
$ curl http://deis.104.198.90.182.nip.io/v2/ && echo {"detail":"Authentication credentials were not provided."}
手元のdeisコマンドでユーザー登録する
$ deis register http://deis.104.198.90.182.nip.io username: admin password: password (confirm): email: xx@bb Registered admin Logged in as admin Configuration file written to /Users/mpon/.deis/client.json
既存のやつが上書きされちゃうっぽい。ってことは複数のdeis workflowに対して何かやりたいときは、deis registerをやり直さないといけないのか??ちょっとめんどいかもしれない :rolling_eyes:
$ deis register --help Registers a new user with a Deis controller. Usage: deis auth:register <controller> [options] Arguments: <controller> fully-qualified controller URI, e.g. 'http://deis.local3.deisapp.com/' Options: --username=<username> provide a username for the new account. --password=<password> provide a password for the new account. --email=<email> provide an email address. --login=true logs into the new account after registering. --ssl-verify=true enables/disables SSL certificate verification for API requests
deis registerのhelpを見てみても複数に切り替える的なやつはなさげだ。まぁいっか :dancer:
アプリケーションの器をdeis上に作る
$ deis create --no-remote Creating Application... done, created jangly-sailfish If you want to add a git remote for this app later, use `deis git:remote -a jangly-sailfish`
作ったとこにサンプルアプリケーションをpullする
$ deis pull deis/example-go -a jangly-sailfish Creating build... done
アクセスする
$ curl http://jangly-sailfish.104.198.90.182.nip.io Powered by Deis
コンフィグを上書きする
この間、勝手にローリングデプロイが行われるのでdown timeは0 💯
$ deis config:set POWERED_BY="Docker Images + Kubernetes" -a jangly-sailfish Creating config... done === jangly-sailfish Config POWERED_BY Docker Images + Kubernetes $ curl http://jangly-sailfish.104.198.90.182.nip.io Powered by Docker Images + Kubernetes
スケーリング
コマンドでさくっとできる。
$ deis scale cmd=2 -a jangly-sailfish Scaling processes... but first, coffee! done in 10s === jangly-sailfish Processes --- cmd: jangly-sailfish-cmd-2108971595-1vxqg up (v3) jangly-sailfish-cmd-2108971595-b7xhf up (v3)