Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GitLab-CIとGoogleCloudRunで作るSandBox環境
Search
Seiya
October 18, 2020
270
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitLab-CIとGoogleCloudRunで作るSandBox環境
Seiya
October 18, 2020
More Decks by Seiya
See All by Seiya
ATProtocol ざっくり概要把握してみた @ DWeb Tokyo Meetup #2
silmin_
0
77
おうちGitLabのススメ
silmin_
4
2k
Git入門
silmin_
38
27k
暗号について
silmin_
0
220
LinuxCommand入門
silmin_
0
430
LinuxCommand入門2
silmin_
0
310
Webについて
silmin_
3
230
ネットワークとは
silmin_
0
290
コンピュータとは|初心者向け資料
silmin_
1
240
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
1.5k
Raft: Consensus for Rubyists
vanstee
142
7.7k
Documentation Writing (for coders)
carmenintech
77
5.5k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
710
Abbi's Birthday
coloredviolet
4
10k
Believing is Seeing
oripsolob
1
220
Designing for Performance
lara
611
70k
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 • やすいね!