Slide 1

Slide 1 text

フロントエンジニアでも GKEの開発環境を作りたいっ!!

Slide 2

Slide 2 text

自己紹介 名前 zero  本名:旭康史(あさひやすし) 所属 カラビナテクノロジー 仕事 フロントエンド 経歴 エンジニアとしは半年足らずのペーペーです(元々は広告の営業) 技術 React好き。Docker好き。Golang好き。TypeScript好き。 趣味 テレビアニメ鑑賞(今期の覇権は「わたてん」)

Slide 3

Slide 3 text

まずは作ったものをご紹介

Slide 4

Slide 4 text

Karabiner Members http://35.244.227.203/ 人の名前を覚えるのが苦手なので、入社したての 頃にメンバーの顔と名前を一致させるために作り ました。 こいつをGKE上で走らせています。 使用しているGCPのサービス ・Kubernates Engine(GCP上のkubernates環境) ・Container Registry(Docker image置き場) ・Source Repositories(gitのレポジトリ) ・Cloud Build(自動ビルド、自動デプロイ)

Slide 5

Slide 5 text

Golang Ingress kubernetesクラスター httpリクエストの受け口 apiと静的ファイルの ルーティング 静的ファイルを返す apiサーバー 永続Volume pod pod pod 構成図 Persistent Volumes DBサーバー pod

Slide 6

Slide 6 text

本日はこれの 開発&デプロイ環境のお話です

Slide 7

Slide 7 text

開発環境

Slide 8

Slide 8 text

Docker for Desktop(ローカルkubernates環境) ・おおむねGKEと同じように動かせる ・Docker for Mac(Docker for Windows)に付属さ れているので楽ちん ・Minikubeという方法もあるが別途インストールが 必要 ここから有効化できます。

Slide 9

Slide 9 text

・クラスタ内のコンテナのフォルダとローカ ルのフォルダをバインドする。 ・ここではローカルでwebpackから出力さ れたhtmlとjsをクラスタ内のnginxコンテ ナからも見れるようにしている。 本番用のyaml(一部抜粋) 開発用のyaml(一部抜粋) nginxコンテナ内の /usr/share/nginx/html と ローカルのディレクトリ( webpackが生成するdistフォルダ) をバインドする。 使用するdocker imageを変更 プロセスが停止してもコンテナを維持 開発用の yamlを作る フロント編

Slide 10

Slide 10 text

開発用の yamlを作る サーバー編 ・フロントと同じ要領でコンテナとローカル のフォルダをバインド。 ・この場合はGolangの開発フォルダまる まるバインド。 ・ローカルでコードを変更するとクラスタ内 のGolangコンテナが検知して、再ビルド、 サーバー起動を行ってくれるように設定 する。 grm.sh Dockerfile_dev コンテナ起動時に この コマンドが実行される

Slide 11

Slide 11 text

demo①

Slide 12

Slide 12 text

思ったこと ・考え方は普通のDockerの開発環境と同じ(ディレクトリのバインド、ポートフォワード)。 ・本番用、開発用でyamlファイルが分かれてしまうので、管理方法を検討する必要がある。 helm、 kustomizeなど。 ・ローカルのパス指定はルートからの絶対パスしか受け付けてくれないので、 PCを変える時に書き換えが 必要

Slide 13

Slide 13 text

デプロイ環境

Slide 14

Slide 14 text

Cloud Build ・GCPが用意しているCI/CDサービス ・Container RegistryとSource Repositoriesを使っていれば認証関連を一切気にする必要がない。

Slide 15

Slide 15 text

トリガーを設定 ・コンソールからポチポチと設定すればト リガーを作れます。

Slide 16

Slide 16 text

ビルドステップを yamlで定義 ・yaml or Dockerfileでビルドステップを定 義します。 ・ここでは、 → docker imageをビルド → imageをRepositoryにpush → GKEのコンテナを更新 ということをしています。

Slide 17

Slide 17 text

demo②

Slide 18

Slide 18 text

思ったこと ・CI/CDを設定するのは初めてでしたが簡単でした。 ・やはり認証が必要ないことが大きい。

Slide 19

Slide 19 text

まとめ ・kubernatesは慣れると簡単 ・GCP内で物事を完結させると楽ち ん ・フロントエンドエンジニアでも構築 出来ました!!

Slide 20

Slide 20 text

ありがとうございました 旭康史 [email protected] (株)カラビナテクノジー 801-0001 福岡市中央区天神1-2-4 農業共済ビル2F