Slide 1

Slide 1 text

GitLab-CIとGoogleCloudRunで 作るSandbox環境 KIT Developers Meetup #5

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

ぼく silmin(mina) Twitter: @silmin_ すき: NW,仮想化,基盤構築 加藤恵,Vim,Linux 金沢工業大学 工学部 情報工学科 3ねんせい NICT(国立研究開発法人情報通信研究機構)でRA

Slide 4

Slide 4 text

夏インターン

Slide 5

Slide 5 text

夏インターン

Slide 6

Slide 6 text

GitLab-CIとGoogleCloudRun で作るSandbox環境

Slide 7

Slide 7 text

GitLab-CIとGoogleCloudRun で作るSandbox環境

Slide 8

Slide 8 text

Sandboxって何

Slide 9

Slide 9 text

Sandboxって何

Slide 10

Slide 10 text

Sandboxって何 お手軽に作って壊せる実験環境

Slide 11

Slide 11 text

GitLab-CIとGoogleCloudRun で作るSandbox環境

Slide 12

Slide 12 text

GoogleCloudRunって何 (公式より) コンテナ化されたアプリケーションをすばやく安全にデ プロイ、スケーリングできる、フルマネージド型のコン ピューティング プラットフォーム ● さまざまな言語(Go、Python、Java、Ruby、Node.js など)で自由にコードを作成で きます。 ● インフラストラクチャの管理が一切不要になり、シンプルな開発者エクスペリエンス が実現します。 ● オープン標準 Knative を基盤として構築されているため、アプリケーションの移植 が可能になります。

Slide 13

Slide 13 text

Cloud Run app 1 . . . auto scaling app 2 . . . auto scaling . . . . . . コンテナ化されてるアプリを雑にデプロイできる

Slide 14

Slide 14 text

GitLab-CIとGoogleCloudRun で作るSandbox環境

Slide 15

Slide 15 text

GitLab-CIって何 GitLabが持ってるCI機能のこと GitLab=Gitのリモートリポジトリの実装の1つ(GitHub/BitBacket等と同じ) gitlab.comが公式だが,無料でローカルに建てることもできる CI/CD機能などDevOps周りの機能がめちゃくちゃ充実している

Slide 16

Slide 16 text

CI/CDって何 Continuous Integration (CI) Continuous Delivery (CD) Continuous Deployment (CD) みたいな意味を持ってる 継続的にテストしたりデプロイしたりしたいね,みたいな感じ commit/push/mergeみたいなGit-Flowによくある動作に紐づいて発火して, 任意の処理をさせられる仕組みのこと(本質的には発火点が特殊なただのcron)

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

GitLab-CIとGoogleCloudRun で作るSandbox環境

Slide 19

Slide 19 text

作ったもの

Slide 20

Slide 20 text

仕組み ディレクトリ作成 → App作成 ディレクトリ削除 → App削除

Slide 21

Slide 21 text

仕組み(App作成) Appディレクトリ作成 → App作成 ● Dockerfileを含むものをAppと認識 ● Appに基づいてCloudRunを作成 ● GitLab-CIでgcloudコマンドを実行

Slide 22

Slide 22 text

● ディレクトリ一覧を走査して App の一覧を取得 ● そのAppをbuild ● CloudRunにdeploy 開発者 code push container registry (gcr) Cloud Run

Slide 23

Slide 23 text

仕組み(App削除) Appディレクトリ削除 → Appを削除 ● CloudRunのリストと比較 ● 専用のCloudRunAppで対応(cloudrun-remover) ● Appの一覧はCloudRunApp内部では使えない ○ 外部ストレージ(GCS)に上げておく ○ URLは環境変数に投げる

Slide 24

Slide 24 text

Cloud Run GCS App一覧 cloudrun-remover ... deploy CI時にupload

Slide 25

Slide 25 text

Cloud Run GCS App一覧 cloudrun-remover ... App一覧 App内部で取得 比較し,差分を CloudRunから削除

Slide 26

Slide 26 text

cloudrun-removerとして作る意味 Q. GitLab-CIで任意のスクリプトを実行可能なら,そこで全部できるんじゃ? A. 本当はGoogleCloudSchedulerからキックするようにしたかった

Slide 27

Slide 27 text

Cloud Run GCS App一覧 cloudrun-remover ... App一覧 App内部で取得 比較し,差分を CloudRunから削除 Cloud Scheduler 定期的に実行

Slide 28

Slide 28 text

まとめ ● GitLab-CI思ったより強力だった ● CloudRun楽でいい ● GitLab自分の環境にも欲しくなった(建てた) ● cloudrun + gcr + gcs / 8day = $0.03 / $376.60 ● やすいね!