My External Storage

Feb 5, 2018 - 7 minute read - Comments - report gcp

GCPUG Tokyo Container Builder Day February 2018 #gcpug 参加メモ

今年はGoogle Cloud Platform(GCP)を使ってみようと思っているので、GCPUGの勉強会に参加してきた。
02/05はGoogle Container Builder(GCB)の話だった。

URL https://gcpug-tokyo.connpass.com/event/75961/
会場 六本木ヒルズ 森タワー 18F メルカリ
日時 2018/02/05(月) 19:00 〜 21:30
ハッシュタグ #gcpug

TL;DR

  • Google Cloud BuilderはシンプルなコンテナーイメージをビルドするGCPのサービス
  • 1日120分も無料でビルドできる
  • シンプルにコンテナをビルドするだけ。GCP使っていなかったり、テストや複雑なビルドをしたいならば他のCIのほうが良いかも
  • ビルドの1ステップ1ステップをステップごとに異なるビルド用のコンテナの上でdocker runしていることを理解してないとハマる
  • GCPのドキュメントは基本的にAPIリファレンスを読むとわかりやすい。人間用のドキュメントを読んでいてもあまりわからない。
  • GCPUGのGCPノウハウは以下のリポジトリにある
  • もっと話したい人はGCPUG Slack #g-tools_jaチャンネルで

Cloud Tools Introduction by sinmetal

https://goo.gl/6WVrR5
@sinmetal

GCPのサービスの中でToolカテゴリは4つある。その中の2つの話

Google Container Builder

  • Build Triggerと併用すれば簡単なCIも出来る。Container Registoryに成果物のイメージとビルドログがでてくる。
    • 他のCIのようにビルドするブランチを指定したり、ブランチ別のビルドも設定出来る。
  • 毎日120分無料でビルドできる。
  • ビルドソースはSource Resistories、GitHub、GitBucketから取得、もしくはローカルからtarにしてプッシュできる(GitLabは非対応)
  • ビルドステップはDockerfile, cloud.yamlで定義する
  • 1ステップ1ステップを毎回新しいコンテナで実行するのが特徴
  • ツールは公式で用意されているコンテナイメージで使ったほうがよい。
  • gcloud bulds submitコマンドでローカルから実行できる
  • fビルド行為をローカルで実行して動作確認することもできる
  • 認証情報などをCloud KMSと連携して扱えるのも魅力
  • サードツールへの通知やビルドステータスによるマージブロックなどしたかったらPub/Sub、Functionsなどと組み合わせて自作する必要がある
    • (Slack通知についてはLTの方が触れていたので後述)

Google Cntainer Registr(GCR)

  • GCRは非公開のDockerレジストリ。
  • GCPのIAMと連携してコンテナイメージを管理できる
  • 実際に作成されたコンテナイメージはストレージの中にある

Google Source Resistories

  • Private Git Repository。それ以上でも以下でもない。
  • Issue管理やPull Request機能といった機能はない
  • Cloud Debuggerと連携することができる
  • GitHub レポジトリや Bitbucket レポジトリとも連携できる

終わりに

この辺の話をしたいときはGCPUG Slack #g-tools_jaで!

GCBに限らずGCPUGのノウハウはこのリポジトリで共有されている
https://github.com/gcpug/nouhau

Google Container Builder と友だちになるまで

https://www.slideshare.net/lestrrat/google-container-builder-87244724
@lestrrat

  • GCBは基本的にGoogle Container Resistoryにコンテナを突っ込むためにビルドするサービス
  • 以下の3つの理由がないと使わないほうが良い。ちゃんとテストを流したいなどがあるなら別のCIを使ったほうがよい
    • コンテナイメージをビルドしたい(だけ)
    • GCP上にリソースが全部ある
    • もうリモートデバッグしたくない

GitlabにあるmonorepoをGCBでgcr.ioにデプロイするときの知見

  • GitlabにあるmonorepoをGCBでビルドすることに。テストは別で行っていて、デプロイ先はgcr.ioだった
  • (GitLabは連携できないので)ローカルでgoogle cloud buildsコマンドをすると指定したフォルダーがtarになって送信される。(最初のステップに必要なものだけあればよい)
    • 全部ストレージに保存されるからデカイmonorepoあげるとヤバい。
  • cloud.yamlを使ってビルドする。GCBのビルドは以下のイメージ

    for step in config.steps
    docker run step.image step.args
    done
  • ビルドで使うイメージは基本的に公式イメージで。ただし1コマンドだけ実行しているようでもラッパースクリプトが動いているので注意

  • 各ステップで情報を引き回したいときはVolumeでコンテナにマウントした中に保存しておく

  • デバッグしたいときはentorypointでbashを動かす。APIリファレンスまで見に行かないと載ってない

  • どうしてもひとつのステップで複数のコマンドを使いたいときは自作コンテナでビルドする

    • gcloud、helm、kubectl…なんてことは公式ビルド用コンテナではできない
    • gcr.ioに上げておけば自作コンテナイメージでビルドもできる
  • 困ったらローカルで実行してみるのが一番。クラウド上と同じ挙動をしてくれた

  • googleのドキュメントは基本的にAPIリファレンスを読むとわかりやすい。人間用のドキュメントを読んでいてもあまりわからない。

LT

GitLab Runnerの話

@tn961ir(tnir)


Google Cloud BuilderとSlack連携の話

@yoshikai_

  • GCBのStatusをSlack通知
  • GCBのビルドステータスが変化したときに通知がいく。Slack以外はGCPのサービスで実現できる
  • GCB -> Pub/Sub -> Funstionsという流れでSlackに通知する。それぞれが有効になっていればGCPのWeb UIから設定可能
  • 詳細は公式チュートリアルがある
  • 公式チュートリアルのFuctionsのままだとbuild.idだけで何の結果だかわからないのでもう少し作り込む必要があり。

google assistantアプリもリリースしているらしい。

怒ってないよ - Google Assitant アプリ
https://assistant.google.com/services/a/uid/0000001a6f41b0be?hl=ja

クソアプリって名前はリジェクトくらうとのこと。

参加して

GCPUG主催イベント初参加だった。悪い言い方をするとGCBは他のCIツールと比べて機能が少ないようだ。
ただ、コンテナイメージのビルドするのにステップごとに新しいコンテナを利用するという仕組みはすごい新鮮で驚きだった。
ビルド自体をステップごとにコンポーネント化するという考えは複雑化や属人化を避けることも可能なのかな?
GKEの上でGoのアプリでも動かしたいなと思っているので、ある程度使いこなせてきたらデプロイ用のコンテナ生成をGCBでやってみるのもいいのかもしれない。
GCPは結構ドキュメントの日本語がちゃんとされていて、これから動かし始めようと思っている英語が不得意の自分的には(パット見)結構安心していたのだが、けっこう大事なところが書かれていなかったりするらしい。
困ったらAPIリファレンスまで読んでみる、という本筋以外の知見も得られて良かった。
(某窓の会社のリファレンスサイトもサンプルリポジトリのコードみないと使い物にならないので、個人的にはまあそんなものなのかなとも思っている)

Circle CI2.0もローカルでビルドを実行して試せるが、クラウド上の挙動を再現できていないこともあると会社の人が言っていた気がする。
(自分も使っているが、go testしてCodecovに結果流すくらいはローカルで出来る)

Using the CircleCI Command Line Interface (CLI)
https://circleci.com/docs/2.0/local-jobs/

他にも以下のカンファレンスついても案内があった。

JAPAN CONTAINER DAYS V18.04
2018.04.19(Thu)
http://containerdays.jp/

builderscon tokyo 2018
2018年9月6日(木), 2018年9月7日(金), 2018年9月8日(土)
http://2018.tokyo.builderscon.io/