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

おうちGitLabのススメ

mina
December 04, 2021

 おうちGitLabのススメ

PiyoConf2021でのLT登壇資料です
自宅でGitLabをホストすることによるうれしさを話します

PiyoConf2021
https://otaku-project.connpass.com/event/225453/

mina

December 04, 2021
Tweet

More Decks by mina

Other Decks in Technology

Transcript

  1. おうちGitLabのススメ
    mina @ PiyoConf 2021

    View Slide

  2. mina (silmin)
    Twitter:@silmin_
    すき: コンピュータ/サーバインフラ
    プログラミング/アニメ/加藤恵
    ワ...! ことしで学生終わり...ってコト?

    View Slide

  3. きょうのおはなし
    おうちや研究室にGitLabをホストして遊ぼう!

    View Slide

  4. GitLab
    Gitのリモートリポジトリマネージャの一つ
    gitlab.com が公式だが,自前でホストすることもできる
    CIやkanban,DevOps周りの機能が豊富
    「オールインワンなDevOpsプラットフォーム」らしい
    草が青いよ
    かわいいね
    たぬきモチーフ
    かわいいね
    (キツネっていってごめんね...)

    View Slide

  5. らしい
    企業内で採用しているのを結構見る気がする

    View Slide

  6. こんな経験ありませんか?
    適当に構築したサーバ類にそれぞれSSHしてテスト・変更適用

    View Slide

  7. こんな経験ありませんか?
    インターネット
    XX as Code + CI/CDで自動化したけどGitHubやインターネットが爆散

    View Slide

  8. こんな経験ありませんか?
    インターネット
    XX as Code + CI/CDで自動化したけどGitHubやインターネットが爆散

    View Slide

  9. グローバル上のサービスからローカルへはアクセス難
    自分しか使わないCIはグローバルに置く嬉しさが少ない
    global
    local
    こんな経験ありませんか?

    View Slide

  10. global
    local
    落ちても自分で起こせばいいね!
    ローカルに構築すれば解決

    View Slide

  11. 建前おわり

    View Slide

  12. 楽しいから!!!!!!!!!!

    View Slide

  13. おうちでGitLab - インストール
    公式からはOSS版とEnterprise版がある(gitlab-ce / gitlab-ee)
    Enterprise版→OSS版と機能が降ってくる
    Enterprise版でも無料プランがあるので,タダでやる場合差はないかも
    インストール方式(公式)
    パッケージ版/ k8s(helm/operator) / Dockerイメージ / ソースから など
    有志でdocker-composeとかもあるけど,公式にある方法がおすすめ

    View Slide

  14. おうちでGitLab - CIについて
    リポジトリ直下に.gitlab-ci.yamlを書いて定義できる

    View Slide

  15. 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.yaml

    View Slide

  16. おうちでGitLab - CIについて
    リポジトリ直下に.gitlab-ci.yamlを書いて定義できる
    Jobを実行するのはGitLab Runner

    View Slide

  17. GitLab Runner
    GitLab CIにおいて,Job実行を担当するやつ
    実際はRunnerからExecutorを生やして実行する
    ExecutorにはDockerコンテナやVirtualBox(VM)など,いろんなのがある
    指定されたイメージでExecutorを生やす
    Executor
    Executor
    ←Jobを実行
    ←Jobを実行

    View Slide

  18. おうちでGitLab - CIについて
    リポジトリ直下に.gitlab-ci.yamlを書いて定義できる
    Jobを実行するのはGitLab Runner
    GitLab CIは登録されたRunnerに処理を委譲する
    CDに関してもCI上でデプロイ処理をするだけなので,本質的には同じもの
    デプロイ処理はAnsibleとか,k8sならArgoCDとか諸々...
    対オンプレなら単にrsyncでもヨシ

    View Slide

  19. Push Job
    Deploy
    Executor
    Container
    Registry
    Pull
    (Push)
    ローカルに建てておくと便利

    View Slide

  20. うれしさ
    落ちても自己責任で復旧できる
    CI周りを整備するに合わせてローカルにいろんなサービスを建てる
    そのサービスの管理もGitLabでやる
    :
    GitLabを中心にどんどんローカル環境が要塞化していく(うれしいね)
    ローカルなのでセキュリティを特に意識しないで遊べるのもいいところかも
    GitHubにおきたかったらMirrorしたらよし

    View Slide

  21. CI盆栽(調律)は無限に遊べるコンテンツ
    便利なBotをつくるもよし
    便利なJobをつくるもよし
    便利なExecutor Imageを作るもよし
    デプロイ先を拡張するもよし
    CI時に頼るサービスをつくるもよし
    探求は無限じゃよ

    View Slide

  22. Tips:DinD
    Dockerコンテナの中でDockerを使うこと(docker build とかやりたくなる)
    docker:dindイメージを使うか,ホストのdocker daemonを共有するのをよくみる
    前者は --privileged オプションが必須(やりたくねえ)
    後者はホストのdockerを触ってるのと同じなので,親のDockerコンテナを殺せる
    どちらにせよあんまりよくない

    View Slide

  23. Tips:DinD
    Dockerコンテナの中でDockerを使うこと(docker build とかやりたくなる)
    docker:dindイメージを使うか,ホストのdocker daemonを共有するのをよくみる
    前者は --privileged オプションが必須(やりたくねえ)
    後者はホストのdockerを触ってるのと同じなので,親のDockerコンテナを殺せる
    どちらにせよあんまりよくない
    僕はKanikoを使ってます
    Kaniko内でDockerfileを読んで,
    Docker Imageとして固めるらしい しらんけど

    View Slide

  24. おわり

    View Slide