BuildでBazelをつかいビルドするServiceAccountを作成するBuildTemplateリソースの追加Buildリソースの追加ビルドの実行まとめコードKnativeはKubernetesを基盤としたプラットフォームをビルド、デプロイを管理するためフレームワークを提供する。Serving、Build、そしてEventingの3つのコンポーネントで構成されている。これら3つが疎結合に連携する。CloudKubernetesを基盤にサービスをデプロイするにはDeploymentやService、Ingressなどの理解が必要であるがKnativeはそれらを抽象化してよりフレームワークに沿った扱い方を提供してくれている印象がある。Buildに注目していきたい。これまでBazelをつかいGoプロジェクトをビルドする方法をまとめてきた。templateという概念がありテンプレートの1つにBazelがサポートされている。templateにBazelをつかいGoプロジェクトをビルドする手順をまとめる。Buildの環境がセットアップできる。16sknative-buildのnamespaceが追加されている。以降に追加するリソースはknative-buildのnamespaceに追加していくのでcontextを切り替える。Buildを理解するために次の4つの要素は抑えておきたい。GitHubBuildはBuildTemplate、Builder、ServiceAccountを集約した概念であり、それらをまとめたmanifestを作成する。GitHubBuildTemplateはparameterとstepsを定義する。stepはビルド手順をまとめビルドに必要な変数をparameterで定義する。テンプレートはBazelがサポートされている。今後もその他のサポートが追加されることが期待される。GitHubBuilderはBuildTemplateでも触れたstepsの概念である。ビルドするために複数の手順があればstepsに追加していく。ビルドの完了までにBazelのtargerを複数実行したい場合はstepsにtargetを定義していく。Buildにおける新概念ではなくビルドする過程で必要な認証をsecretリソースと一緒にセットアップすることでBuildリソースにアサインする。GitHubからソースのチェックアウトやリモートレジストリへのプッシュなどに必要な認証アカウントをServiceAccountリソースとして定義する。BuildでBazelをつかいビルドする先述した4つの概念を頭に入れてBazelでビルドする方法をまとめていく。hubに認証するSecretリソースを追加する。encodedリソースを追加する。created次にServiceAccountリソースを追加する。docker-hub-accountリソースを追加する。hubに認証するSecretリソースを参照しているdocker-hub-accountのServiceAccountが追加できた。BuildTemplateリソースの追加BuildTemplateリソースを追加する。runコマンドのオプションを変数化して必要な変数をparameterとして定義している。createdこれでBuildTemplateリソースのbazelが追加できた。Buildリソースの追加Buildリソースを定義する。docker-hub-accountを参照している。bazelを参照している。targetを実行するためのソースをspec.sourceに定義している。ビルドの実行Buildリソースであるpkg/ops/k8s/knative-build/bazel-build.yamlをapplyしてビルドを実行する。createdポッドが起動しているのを確認する。1hCompletedになればビルド完了。templateにBazelをつかいビルドする方法をまとめたビルドを実行するとPodが立ち上がりPod内でビルドが行われる。BazelやDockerといったビルドに必要なコンポーネントのセットアップをせずにビルドできるのは便利である。ビルドが完了するとPodがCompletedになるが再度同じようにapplyを実行してもビルドが行われない。Podを削除した後にapplyを実行すると再度ビルドができた。すると定義したBuildはEventingと結合して進化を発揮するのかしれない。EventigはGitHubのイベントをソースに扱える。Buildを実行するイメージである。Evenitngの理解がまだ浅いので引き続きEventingの理解も進めていく。コード紹介したyamlコードは次のレポジトリに置いてあります。Whiteplain。