GCPUG Beginners Tokyo 12 feat. GKE part.2 に参加してきました #gcpug
はじめに
おはようございます、加藤です。GCPUG Beginners Tokyo #12 feat. GKE part.2のハンズオンに参加して来ました。 事前に資料が用意されており、その資料に従って4名程度でグループを組みフォローしながら進める形でした。
ハンズオン
前提
- GCPアカウントの課金が有効になっていること
- 費用はかからないがリソース作成の為に課金設定が必要
- クレジットカードの登録が必要
資料
今回(Part2)
sakajunquality/gke-getting-started
Part1
プロジェクトの作成
後片付けをしやすい様にプロジェクトを新規作成します。
作成したプロジェクトに切り替えます。
Cloud Shellのアクティブ化
画面右上のCloud Shellのアイコンをクリックします。
しばらくすると画面下部にターミナルが開きます。
ソースコードの取得
$ git clone https://github.com/sakajunquality/gke-getting-started.git $ cd gke-getting-started
GKEクラスターの作成
Part1のハンズオンを参考にGKEクラスターの作成までを行います。(クラスター作成が完了したら中断する) 1.2 必要なAPIの有効化 は完了に時間がかかります。 プロジェクト名 = プロジェクトIDとは限らないことに注意すれば特にハマるポイントはありませんでした。
$ cloudshell launch-tutorial -d tutorial.md
メインのハンズオン
下記コマンドでチュートリアルを起動して進めます。
$ cloudshell launch-tutorial -d tutorial2.md
コメント
- docker-composeで起動するアプリはポート8083で動く
- Cloud Shellのデフォルトのポートフォワードは8080なので変更が必要
- 冒頭のCloud Shell操作のスライドに方法が記載されている
- 鉛筆マークをクリックするとブラウザ上でエディタが開く
- Cloud Shellがもう一つタブで立ち上がるが無視
- komposeはdocker-composeからk8sのマニフェストファイルを作成してくれるツール
- skaffold
- コンテナのビルド→k8sへのデプロイをやってくれる
- オプションでGoogle Cloud Buildを使用できる
- helmと連携してデプロイすることも出来る
- skaffold dev 実行中にコードを書き換えるとソースコードの変更を検知して、デプロイまで自動で走る
skaffold(kompose)によるマニフェストファイルの生成
scaffoldがDockerfile, docker-composeの2つのファイルからマニフェストファイルを生成してくれます。 正確にはskaffoldがkomposeを呼び出して変換しています。
version: '3' services: app: build: . image: "gcr.io/gcpug-gke-part2/app3" ports: - "8089:8089"
FROM golang:1.11.5-alpine WORKDIR $GOPATH/src/github.com/sakajunquality/gke-getting-started/app3 COPY main.go main.go RUN go get -d -v ./... RUN go install -v ./... FROM alpine RUN apk add --no-cache ca-certificates COPY --from=0 /go/bin/app3 /usr/local/bin/app3 CMD ["app3"]
下記の2つのマニフェストが生成されました。
apiVersion: extensions/v1beta1 kind: Deployment metadata: annotations: kompose.cmd: kompose convert -f docker-compose.yaml kompose.version: 1.17.0 (a74acad) creationTimestamp: null labels: io.kompose.service: app name: app spec: replicas: 1 strategy: {} template: metadata: creationTimestamp: null labels: io.kompose.service: app spec: containers: - image: gcr.io/gcpug-gke-part2/app3 name: app ports: - containerPort: 8089 resources: {} restartPolicy: Always status: {}
apiVersion: v1 kind: Service metadata: annotations: kompose.cmd: kompose convert -f docker-compose.yaml kompose.version: 1.17.0 (a74acad) creationTimestamp: null labels: io.kompose.service: app name: app spec: ports: - name: "8089" port: 8089 targetPort: 8089 selector: io.kompose.service: app status: loadBalancer: {}
あとがき
チュートリアルの機能がものすごく便利で快適でした。
特にこのボタンを押すと、チュートリアルからCloud Shellにコマンドが貼り付けられるのが便利です。
skaffoldについては触りしか理解できていないので、もっと触ってみたいです。今後Dockerfileを書く際に使っていこうと思います。 最後にk8sクラスター、プロジェクトの削除を忘れると課金がかさむので忘れないようにご注意ください。