SlideShare a Scribd company logo
1 of 27
Download to read offline
アプリの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/v1/
○ pod名: myapp-v1
● https://dev.app.io/versions/v2/
○ pod名: myapp-v2
デプロイのトリガーはリポジトリに対してtagを付けてpush
こんな感じです
gitリポジトリにtagを付けてpush
docker imgesのビルド
gkeにデプロイ
by Google Cloud Container Builder
https://dev.app.io/versions/{tag}
人がやるのは
tag付けてpushするだけ!!
簡単!!
喜ぶ会社員たちのイラスト
何がいいの?
こんな時
● 複数の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
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から
アクセス出来るようにしてある
構成図
構成手順
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
順に説明してきます
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/{tag}
人がやるのは
tag付けてpushするだけ!!
簡単!!
喜ぶ会社員たちのイラスト
バンザイをしている会社員たちのイラスト
デプロイ自動化
Google Cloud Container Builderを使って自動化。リポジトリにタグ付けて pushすると自動的に gke上に作成される
感想
感想
● GKEでも頑張ればAppengineっぽいことが出来る
● Google Cloud Container Builderは便利だけどエラーが起き
た時にとても辛い・・・
○ 1.5日ぐらいビルド通すために時間使いました・・・
○ ビルドが成功(Green)した時は感動で涙を流しました・・・
おまけ
カブクではエンジニアを募集してます!
● サーバーサイドエンジニア
○ Python, Google Cloud Platform
● フロントエンドエンジニア
○ TypeScript,Angular
アットホームな職場です!
https://www.kabuku.co.jp/#jobs
26
おしまい

More Related Content

What's hot

VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験Hiroyuki Ohnaka
 
僕がAndroid開発する時にちょっと便利だと思うtips
僕がAndroid開発する時にちょっと便利だと思うtips僕がAndroid開発する時にちょっと便利だと思うtips
僕がAndroid開発する時にちょっと便利だと思うtipsMasataka Kono
 
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and GomobileGo goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and GomobileTakahiro Yoshimura
 
AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~Yabata Tomomitsu
 
2017823 pythonを始めよう
2017823 pythonを始めよう2017823 pythonを始めよう
2017823 pythonを始めようshouta yoshikai
 
Namespace API を用いたマルチテナント型 Web アプリの実践
Namespace API を用いたマルチテナント型 Web アプリの実践Namespace API を用いたマルチテナント型 Web アプリの実践
Namespace API を用いたマルチテナント型 Web アプリの実践Takuya Ueda
 
Remote Development with Visual Studio Code & A clean dev env, working every ...
Remote Development with Visual Studio Code &  A clean dev env, working every ...Remote Development with Visual Studio Code &  A clean dev env, working every ...
Remote Development with Visual Studio Code & A clean dev env, working every ...Hiroyuki Ohnaka
 
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!Shinobu Okano
 
Google Play Developer APIを使ってみた
Google Play Developer APIを使ってみたGoogle Play Developer APIを使ってみた
Google Play Developer APIを使ってみたshinya sakemoto
 
Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Kenichi Kambara
 
Front-end package managers
Front-end package managersFront-end package managers
Front-end package managersHayashi Yuichi
 
FlutterでAndroid/iOS両対応のアプリ開発
FlutterでAndroid/iOS両対応のアプリ開発FlutterでAndroid/iOS両対応のアプリ開発
FlutterでAndroid/iOS両対応のアプリ開発najeira
 
LINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
LINEにおける GitHub Enterpriseの活用事例と LINE NotifyについてLINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
LINEにおける GitHub Enterpriseの活用事例と LINE NotifyについてLINE Corporation
 
KobeGTUG GAE/Java
KobeGTUG GAE/JavaKobeGTUG GAE/Java
KobeGTUG GAE/Javatakagig
 
20150802 codeal androidアプリを作ろう(おみくじアプリ編)
20150802 codeal androidアプリを作ろう(おみくじアプリ編)20150802 codeal androidアプリを作ろう(おみくじアプリ編)
20150802 codeal androidアプリを作ろう(おみくじアプリ編)codeal
 
粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法Takuya Ueda
 
「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」
「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」
「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」Yuki Anzai
 
Androidアプリにおけるyoutube apiの使用方法~準備編~
Androidアプリにおけるyoutube apiの使用方法~準備編~Androidアプリにおけるyoutube apiの使用方法~準備編~
Androidアプリにおけるyoutube apiの使用方法~準備編~slide_nal
 
もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4Yukiya Nakagawa
 

What's hot (20)

VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
 
僕がAndroid開発する時にちょっと便利だと思うtips
僕がAndroid開発する時にちょっと便利だと思うtips僕がAndroid開発する時にちょっと便利だと思うtips
僕がAndroid開発する時にちょっと便利だと思うtips
 
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and GomobileGo goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
 
AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~AndroidStudioはじめました ~Gradle編~
AndroidStudioはじめました ~Gradle編~
 
2017823 pythonを始めよう
2017823 pythonを始めよう2017823 pythonを始めよう
2017823 pythonを始めよう
 
Namespace API を用いたマルチテナント型 Web アプリの実践
Namespace API を用いたマルチテナント型 Web アプリの実践Namespace API を用いたマルチテナント型 Web アプリの実践
Namespace API を用いたマルチテナント型 Web アプリの実践
 
Remote Development with Visual Studio Code & A clean dev env, working every ...
Remote Development with Visual Studio Code &  A clean dev env, working every ...Remote Development with Visual Studio Code &  A clean dev env, working every ...
Remote Development with Visual Studio Code & A clean dev env, working every ...
 
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
Gradle PluginとTwitterとズン ドコ キ・ヨ・シ!
 
Google Play Developer APIを使ってみた
Google Play Developer APIを使ってみたGoogle Play Developer APIを使ってみた
Google Play Developer APIを使ってみた
 
Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化
 
Front-end package managers
Front-end package managersFront-end package managers
Front-end package managers
 
FlutterでAndroid/iOS両対応のアプリ開発
FlutterでAndroid/iOS両対応のアプリ開発FlutterでAndroid/iOS両対応のアプリ開発
FlutterでAndroid/iOS両対応のアプリ開発
 
LINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
LINEにおける GitHub Enterpriseの活用事例と LINE NotifyについてLINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
LINEにおける GitHub Enterpriseの活用事例と LINE Notifyについて
 
KobeGTUG GAE/Java
KobeGTUG GAE/JavaKobeGTUG GAE/Java
KobeGTUG GAE/Java
 
20150802 codeal androidアプリを作ろう(おみくじアプリ編)
20150802 codeal androidアプリを作ろう(おみくじアプリ編)20150802 codeal androidアプリを作ろう(おみくじアプリ編)
20150802 codeal androidアプリを作ろう(おみくじアプリ編)
 
粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法
 
「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」
「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」
「Android アプリのガチ開 発者が Mobile Backend Starter を使ってみた」
 
Androidアプリにおけるyoutube apiの使用方法~準備編~
Androidアプリにおけるyoutube apiの使用方法~準備編~Androidアプリにおけるyoutube apiの使用方法~準備編~
Androidアプリにおけるyoutube apiの使用方法~準備編~
 
もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4もう一度Kotlinの話をしよう #ndsmeetup4
もう一度Kotlinの話をしよう #ndsmeetup4
 
Jenkins導入ライブ
Jenkins導入ライブJenkins導入ライブ
Jenkins導入ライブ
 

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

Goで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティGoで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティyaegashi
 
Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発recotech
 
Hands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App InventorHands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App InventorHong Chen
 
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法Tokyo University of Science
 
筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーションlestrrat
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座DIVE INTO CODE Corp.
 
GitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へGitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へKazumi IWANAGA
 
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込むKazumi IWANAGA
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすShunsuke Maeda
 
Gitlab ci & ecsへのデプロイ
Gitlab ci & ecsへのデプロイGitlab ci & ecsへのデプロイ
Gitlab ci & ecsへのデプロイiwata jaws-ug
 
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化Takashi Okamoto
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Saki Homma
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CDIssei Hiraoka
 
CodePushとReact Nativeで緊急OTAリリース!了解!
CodePushとReact Nativeで緊急OTAリリース!了解!CodePushとReact Nativeで緊急OTAリリース!了解!
CodePushとReact Nativeで緊急OTAリリース!了解!Masayuki Iwai
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築You&I
 
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整えるAzure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整えるKazumi IWANAGA
 
[POST.Dev Japan] VS Code で試みる開発体験の向上
[POST.Dev Japan] VS Code で試みる開発体験の向上[POST.Dev Japan] VS Code で試みる開発体験の向上
[POST.Dev Japan] VS Code で試みる開発体験の向上Tomomi Imura
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespacesIssei Hiraoka
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platformToru Yamaguchi
 

Similar to [Lt]versionごとにurlを自動生成 (20)

Goで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティGoで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティ
 
Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発
 
Hands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App InventorHands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App Inventor
 
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
Cloudy会 @cloudymeeting ハイブリッドクラウドとheroku/EC2決算法
 
筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 
GitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へGitHub Copilotとともに次の開発体験へ
GitHub Copilotとともに次の開発体験へ
 
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
日々の開発フローにプラスする GitHub Actions ~ セキュリティ対策を取り込む
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
Gitlab ci & ecsへのデプロイ
Gitlab ci & ecsへのデプロイGitlab ci & ecsへのデプロイ
Gitlab ci & ecsへのデプロイ
 
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
 
GitHub Actions で CI/CD
GitHub Actions で CI/CDGitHub Actions で CI/CD
GitHub Actions で CI/CD
 
CodePushとReact Nativeで緊急OTAリリース!了解!
CodePushとReact Nativeで緊急OTAリリース!了解!CodePushとReact Nativeで緊急OTAリリース!了解!
CodePushとReact Nativeで緊急OTAリリース!了解!
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整えるAzure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
Azure Functions 開発デプロイ環境を GitHub Codespaces で爆速に整える
 
Rubykaigi2010
Rubykaigi2010Rubykaigi2010
Rubykaigi2010
 
[POST.Dev Japan] VS Code で試みる開発体験の向上
[POST.Dev Japan] VS Code で試みる開発体験の向上[POST.Dev Japan] VS Code で試みる開発体験の向上
[POST.Dev Japan] VS Code で試みる開発体験の向上
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platform
 

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