Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
アプリのVersionごとに
URLを自動生成
on GKE
吉海将太
自己紹介
自己紹介
吉海 将太
Software Engineer
Kabuku, Inc.
Python, Go, K8S(GKE), AppEngineやってます。
Twitter: @yoshikai_
鹿トドン(旧:奈良トドン): ファイレクシア...
アプリのVersionごとにURLを自動生成とは?
新しいversionのアプリをデプロイすると、デプロイしたversionのURLが自動的に作られ
て、アクセス出来るようになる仕組み
● https://dev.app.io/versions...
こんな感じです
gitリポジトリにtagを付けてpush
docker imgesのビルド
gkeにデプロイ
by Google Cloud Container Builder
https://dev.app.io/versions/{tag}...
何がいいの?
こんな時
● 複数のversionを共存させたい
● デプロイしたversionに対してテストして、問題なければプロダクション用のURLの
向き先をそのversionに切り替えたい
GKEで某AppEngine的なことをしたい
今日話すこと
VersionごとにURLを自動生成するために行った構成とデプロイの自動化について話し
ます
● 構成について
● デプロイの自動化
構成について
Ingress
Pod
myapi-r45
version:r45
Pod
nginx
Internet
Service(nodePort)
Production
url: pro.app.io
selector:
version : r45
...
構成手順
1. Ingressの設定
a. pro.app.ioはProductionのServiceに、dev.app.ioだったらDevelopのServiceに振り分ける
2. Service(NodePort)の設定 Productio...
順に説明してきます
Ingressの設定
Service(NodePort)の設定 ProductionとDevelop
Service(NodePort)の設定 ProductionとDevelopの2つを用意
nginxの設定
Nginx(pod)の設定: conf.d/myapi.conf
Nginx(pod)の設定: podの設定
アプリ(pod)の設定
アプリ(pod)の設定
podは、service(cluster-ip)とセットで作りたいので、ひとつの yamlファイルにし
てます。
templateのファイルを作って、デプロイする時に {tag}をversion(gitのtag)で置
換...
デプロイの自動化
デプロイのおさらい
gitリポジトリにタグを付けて push
docker imgesのビルド
gkeにデプロイ
by Google Cloud Container Builder
https://dev.app.io/versions/{ta...
デプロイ自動化
Google Cloud Container Builderを使って自動化。リポジトリにタグ付けて pushすると自動的に gke上に作成される
感想
感想
● GKEでも頑張ればAppengineっぽいことが出来る
● Google Cloud Container Builderは便利だけどエラーが起き
た時にとても辛い・・・
○ 1.5日ぐらいビルド通すために時間使いました・・・
○ ビル...
おまけ
カブクではエンジニアを募集してます!
● サーバーサイドエンジニア
○ Python, Google Cloud Platform
● フロントエンドエンジニア
○ TypeScript,Angular
アットホームな職場です!
https:/...
おしまい
Upcoming SlideShare
Loading in …5
×

[Lt]versionごとにurlを自動生成

693 views

Published on

https://k8sjp.connpass.com/event/57679/
のLTで使った資料です。

Published in: Engineering
  • Be the first to comment

[Lt]versionごとにurlを自動生成

  1. 1. アプリのVersionごとに URLを自動生成 on GKE 吉海将太
  2. 2. 自己紹介
  3. 3. 自己紹介 吉海 将太 Software Engineer Kabuku, Inc. Python, Go, K8S(GKE), AppEngineやってます。 Twitter: @yoshikai_ 鹿トドン(旧:奈良トドン): ファイレクシアの鹿 メアドとパスワード忘れてログイン出来なくなりました。
  4. 4. アプリのVersionごとにURLを自動生成とは? 新しいversionのアプリをデプロイすると、デプロイしたversionのURLが自動的に作られ て、アクセス出来るようになる仕組み ● https://dev.app.io/versions/v1/ ○ pod名: myapp-v1 ● https://dev.app.io/versions/v2/ ○ pod名: myapp-v2 デプロイのトリガーはリポジトリに対してtagを付けてpush
  5. 5. こんな感じです gitリポジトリにtagを付けてpush docker imgesのビルド gkeにデプロイ by Google Cloud Container Builder https://dev.app.io/versions/{tag} 人がやるのは tag付けてpushするだけ!! 簡単!! 喜ぶ会社員たちのイラスト
  6. 6. 何がいいの? こんな時 ● 複数のversionを共存させたい ● デプロイしたversionに対してテストして、問題なければプロダクション用のURLの 向き先をそのversionに切り替えたい GKEで某AppEngine的なことをしたい
  7. 7. 今日話すこと VersionごとにURLを自動生成するために行った構成とデプロイの自動化について話し ます ● 構成について ● デプロイの自動化
  8. 8. 構成について
  9. 9. Ingress Pod myapi-r45 version:r45 Pod nginx Internet Service(nodePort) Production url: pro.app.io selector: version : r45 Service(nodePort) Develop url: dev.app.io pro.app.io dev.app.io Service(cluster-ip) tkp-api-r45-2 dev.app.io/versions/r45/ 下記のURLでこのPodにアクセス出来る https://pro.app.io https://dev.app.io/versions/r45/ Service(cluster-ip) myapi-r46 Pod myapi-r46 version:r46 dev.app.io/versions/r46pro.app.io 下記のURLでこのPodにアクセス出来る https://dev.app.io/versions/r46/ nameでdomainを割り当てるた めにcluster-ipを作成 http://myapi-r45で他のpodから アクセス出来るようにしてある 構成図
  10. 10. 構成手順 1. Ingressの設定 a. pro.app.ioはProductionのServiceに、dev.app.ioだったらDevelopのServiceに振り分ける 2. Service(NodePort)の設定 ProductionとDevelopの2つを用意 a. Productionはselectorでproduction用のpodのversion(メタ情報)を指定。 b. DevelopはselectorでNginxのpodを指定 3. Nginx(pod)の設定 a. nginxとdnsmasq(dnsサーバー)のcontainerで構成 b. nginxのlocation機能でurlに含まれるversionから該当するcluster-ipの名前に振り分ける i. 例: http://dev.app.io/versions/v1 → http://myapi-v1 4. アプリ(pod)の設定 a. アプリのpodとセットで、cluster-ipを作成 i. cluster-ipはそのアプリをselectorで指定 ii. アプリはclusert-ipの名前でアクセス出来るようになる iii. clusert-ip name: myapi-v1 iv. url: http://myapi-v1
  11. 11. 順に説明してきます
  12. 12. Ingressの設定
  13. 13. Service(NodePort)の設定 ProductionとDevelop
  14. 14. Service(NodePort)の設定 ProductionとDevelopの2つを用意
  15. 15. nginxの設定
  16. 16. Nginx(pod)の設定: conf.d/myapi.conf
  17. 17. Nginx(pod)の設定: podの設定
  18. 18. アプリ(pod)の設定
  19. 19. アプリ(pod)の設定 podは、service(cluster-ip)とセットで作りたいので、ひとつの yamlファイルにし てます。 templateのファイルを作って、デプロイする時に {tag}をversion(gitのtag)で置 換するようにしてます。
  20. 20. デプロイの自動化
  21. 21. デプロイのおさらい gitリポジトリにタグを付けて push docker imgesのビルド gkeにデプロイ by Google Cloud Container Builder https://dev.app.io/versions/{tag} 人がやるのは tag付けてpushするだけ!! 簡単!! 喜ぶ会社員たちのイラスト バンザイをしている会社員たちのイラスト
  22. 22. デプロイ自動化 Google Cloud Container Builderを使って自動化。リポジトリにタグ付けて pushすると自動的に gke上に作成される
  23. 23. 感想
  24. 24. 感想 ● GKEでも頑張ればAppengineっぽいことが出来る ● Google Cloud Container Builderは便利だけどエラーが起き た時にとても辛い・・・ ○ 1.5日ぐらいビルド通すために時間使いました・・・ ○ ビルドが成功(Green)した時は感動で涙を流しました・・・
  25. 25. おまけ
  26. 26. カブクではエンジニアを募集してます! ● サーバーサイドエンジニア ○ Python, Google Cloud Platform ● フロントエンドエンジニア ○ TypeScript,Angular アットホームな職場です! https://www.kabuku.co.jp/#jobs 26
  27. 27. おしまい

×