Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

建前おわり

Slide 12

Slide 12 text

楽しいから!!!!!!!!!!

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

おわり