GitLab-CIとGoogleCloudRunで作るSandBox環境

Ca26d099cfbe54faeaf86a6f551c56a1?s=47 mina
October 18, 2020
51

 GitLab-CIとGoogleCloudRunで作るSandBox環境

Ca26d099cfbe54faeaf86a6f551c56a1?s=128

mina

October 18, 2020
Tweet

Transcript

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

  2. None
  3. ぼく silmin(mina) Twitter: @silmin_ すき: NW,仮想化,基盤構築 加藤恵,Vim,Linux 金沢工業大学 工学部 情報工学科

    3ねんせい NICT(国立研究開発法人情報通信研究機構)でRA
  4. 夏インターン

  5. 夏インターン

  6. GitLab-CIとGoogleCloudRun で作るSandbox環境

  7. GitLab-CIとGoogleCloudRun で作るSandbox環境

  8. Sandboxって何

  9. Sandboxって何

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

  11. GitLab-CIとGoogleCloudRun で作るSandbox環境

  12. GoogleCloudRunって何 (公式より) コンテナ化されたアプリケーションをすばやく安全にデ プロイ、スケーリングできる、フルマネージド型のコン ピューティング プラットフォーム • さまざまな言語(Go、Python、Java、Ruby、Node.js など)で自由にコードを作成で きます。

    • インフラストラクチャの管理が一切不要になり、シンプルな開発者エクスペリエンス が実現します。 • オープン標準 Knative を基盤として構築されているため、アプリケーションの移植 が可能になります。
  13. Cloud Run app 1 . . . auto scaling app

    2 . . . auto scaling . . . . . . コンテナ化されてるアプリを雑にデプロイできる
  14. GitLab-CIとGoogleCloudRun で作るSandbox環境

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

  16. CI/CDって何 Continuous Integration (CI) Continuous Delivery (CD) Continuous Deployment (CD)

    みたいな意味を持ってる 継続的にテストしたりデプロイしたりしたいね,みたいな感じ commit/push/mergeみたいなGit-Flowによくある動作に紐づいて発火して, 任意の処理をさせられる仕組みのこと(本質的には発火点が特殊なただのcron)
  17. 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
  18. GitLab-CIとGoogleCloudRun で作るSandbox環境

  19. 作ったもの

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

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

  22. • ディレクトリ一覧を走査して App の一覧を取得 • そのAppをbuild • CloudRunにdeploy 開発者 code

    push container registry (gcr) Cloud Run
  23. 仕組み(App削除) Appディレクトリ削除 → Appを削除 • CloudRunのリストと比較 • 専用のCloudRunAppで対応(cloudrun-remover) • Appの一覧はCloudRunApp内部では使えない

    ◦ 外部ストレージ(GCS)に上げておく ◦ URLは環境変数に投げる
  24. Cloud Run GCS App一覧 cloudrun-remover ... deploy CI時にupload

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

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

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

    Cloud Scheduler 定期的に実行
  28. まとめ • GitLab-CI思ったより強力だった • CloudRun楽でいい • GitLab自分の環境にも欲しくなった(建てた) • cloudrun +

    gcr + gcs / 8day = $0.03 / $376.60 • やすいね!