Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitLab-CIとGoogleCloudRunで作るSandBox環境

mina
October 18, 2020
190

 GitLab-CIとGoogleCloudRunで作るSandBox環境

mina

October 18, 2020
Tweet

Transcript

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

    View full-size slide

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

    View full-size slide

  3. 夏インターン

    View full-size slide

  4. 夏インターン

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  7. Sandboxって何

    View full-size slide

  8. Sandboxって何

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  16. 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

    View full-size slide

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

    View full-size slide

  18. 作ったもの

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide