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

おうちGitLabのススメ

Ca26d099cfbe54faeaf86a6f551c56a1?s=47 mina
December 04, 2021

 おうちGitLabのススメ

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

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

Ca26d099cfbe54faeaf86a6f551c56a1?s=128

mina

December 04, 2021
Tweet

More Decks by mina

Other Decks in Technology

Transcript

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

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

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

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

    (キツネっていってごめんね...)
  5. らしい 企業内で採用しているのを結構見る気がする

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

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

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

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

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

  11. 建前おわり

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

  13. おうちでGitLab - インストール 公式からはOSS版とEnterprise版がある(gitlab-ce / gitlab-ee) Enterprise版→OSS版と機能が降ってくる Enterprise版でも無料プランがあるので,タダでやる場合差はないかも インストール方式(公式) パッケージ版/

    k8s(helm/operator) / Dockerイメージ / ソースから など 有志でdocker-composeとかもあるけど,公式にある方法がおすすめ
  14. おうちでGitLab - CIについて リポジトリ直下に.gitlab-ci.yamlを書いて定義できる

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

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

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

    対オンプレなら単にrsyncでもヨシ
  19. Push Job Deploy Executor Container Registry Pull (Push) ローカルに建てておくと便利

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

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

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

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

    どちらにせよあんまりよくない 僕はKanikoを使ってます Kaniko内でDockerfileを読んで, Docker Imageとして固めるらしい しらんけど
  24. おわり