Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GitLab-CIとGoogleCloudRunで作るSandBox環境
Search
mina
October 18, 2020
2
210
GitLab-CIとGoogleCloudRunで作るSandBox環境
mina
October 18, 2020
Tweet
Share
More Decks by mina
See All by mina
おうちGitLabのススメ
silmin_
3
870
Git入門
silmin_
21
12k
暗号について
silmin_
0
100
LinuxCommand入門
silmin_
0
250
LinuxCommand入門2
silmin_
0
180
Webについて
silmin_
3
120
ネットワークとは
silmin_
0
160
コンピュータとは|初心者向け資料
silmin_
0
87
ビットについて|入門者向け資料
silmin_
0
120
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
248
20k
4 Signs Your Business is Dying
shpigford
179
21k
Statistics for Hackers
jakevdp
793
220k
The Brand Is Dead. Long Live the Brand.
mthomps
53
37k
Fashionably flexible responsive web design (full day workshop)
malarkey
400
65k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
33
1.7k
What's new in Ruby 2.0
geeforr
340
31k
Designing on Purpose - Digital PM Summit 2013
jponch
113
6.8k
Why You Should Never Use an ORM
jnunemaker
PRO
53
8.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
230
130k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
225
22k
Intergalactic Javascript Robots from Outer Space
tanoku
268
26k
Transcript
GitLab-CIとGoogleCloudRunで 作るSandbox環境 KIT Developers Meetup #5
None
ぼく silmin(mina) Twitter: @silmin_ すき: NW,仮想化,基盤構築 加藤恵,Vim,Linux 金沢工業大学 工学部 情報工学科
3ねんせい NICT(国立研究開発法人情報通信研究機構)でRA
夏インターン
夏インターン
GitLab-CIとGoogleCloudRun で作るSandbox環境
GitLab-CIとGoogleCloudRun で作るSandbox環境
Sandboxって何
Sandboxって何
Sandboxって何 お手軽に作って壊せる実験環境
GitLab-CIとGoogleCloudRun で作るSandbox環境
GoogleCloudRunって何 (公式より) コンテナ化されたアプリケーションをすばやく安全にデ プロイ、スケーリングできる、フルマネージド型のコン ピューティング プラットフォーム • さまざまな言語(Go、Python、Java、Ruby、Node.js など)で自由にコードを作成で きます。
• インフラストラクチャの管理が一切不要になり、シンプルな開発者エクスペリエンス が実現します。 • オープン標準 Knative を基盤として構築されているため、アプリケーションの移植 が可能になります。
Cloud Run app 1 . . . auto scaling app
2 . . . auto scaling . . . . . . コンテナ化されてるアプリを雑にデプロイできる
GitLab-CIとGoogleCloudRun で作るSandbox環境
GitLab-CIって何 GitLabが持ってるCI機能のこと GitLab=Gitのリモートリポジトリの実装の1つ(GitHub/BitBacket等と同じ) gitlab.comが公式だが,無料でローカルに建てることもできる CI/CD機能などDevOps周りの機能がめちゃくちゃ充実している
CI/CDって何 Continuous Integration (CI) Continuous Delivery (CD) Continuous Deployment (CD)
みたいな意味を持ってる 継続的にテストしたりデプロイしたりしたいね,みたいな感じ commit/push/mergeみたいなGit-Flowによくある動作に紐づいて発火して, 任意の処理をさせられる仕組みのこと(本質的には発火点が特殊なただのcron)
stages: - test - build - deploy test-app: stage: test
script: - ./.ci-scripts/test.sh - echo “任意のスクリプトが呼べ る” only: - pushes build-app: stage: build script: - ./.ci-scripts/build.sh when: on_success deploy-app: stage: deploy script: - ./.ci-scripts/deploy.sh when: manual .gitlab-ci.yml
GitLab-CIとGoogleCloudRun で作るSandbox環境
作ったもの
仕組み ディレクトリ作成 → App作成 ディレクトリ削除 → App削除
仕組み(App作成) Appディレクトリ作成 → App作成 • Dockerfileを含むものをAppと認識 • Appに基づいてCloudRunを作成 • GitLab-CIでgcloudコマンドを実行
• ディレクトリ一覧を走査して App の一覧を取得 • そのAppをbuild • CloudRunにdeploy 開発者 code
push container registry (gcr) Cloud Run
仕組み(App削除) Appディレクトリ削除 → Appを削除 • CloudRunのリストと比較 • 専用のCloudRunAppで対応(cloudrun-remover) • Appの一覧はCloudRunApp内部では使えない
◦ 外部ストレージ(GCS)に上げておく ◦ URLは環境変数に投げる
Cloud Run GCS App一覧 cloudrun-remover ... deploy CI時にupload
Cloud Run GCS App一覧 cloudrun-remover ... App一覧 App内部で取得 比較し,差分を CloudRunから削除
cloudrun-removerとして作る意味 Q. GitLab-CIで任意のスクリプトを実行可能なら,そこで全部できるんじゃ? A. 本当はGoogleCloudSchedulerからキックするようにしたかった
Cloud Run GCS App一覧 cloudrun-remover ... App一覧 App内部で取得 比較し,差分を CloudRunから削除
Cloud Scheduler 定期的に実行
まとめ • GitLab-CI思ったより強力だった • CloudRun楽でいい • GitLab自分の環境にも欲しくなった(建てた) • cloudrun +
gcr + gcs / 8day = $0.03 / $376.60 • やすいね!