Más contenido relacionado
La actualidad más candente (20)
Similar a Google container builderと友だちになるまで (20)
Google container builderと友だちになるまで
- 2. • @lestrrat
• Perl/Go hacker, author, father
• Author of github.com/peco/peco
• Organizer for builderscon
- 6. Google Cloud Container Builder を使用すると、Google
Cloud Storage、Google Cloud Source Repositories、
GitHub、BitBucket にあるアプリケーション ソースコード
から Docker コンテナ イメージを作成できます。
Container Builder で作成したコンテナ イメージは Google
Container Registry に自動的に格納されます
- 20. ソースコード step 1
step 2
…
step N
Google Container Registry
Google Source Repository
…
GitlabはGSRでサポートされない…
- 21. ソースコード step 1
step 2
…
step N
Google Container Registry
Google Source Repository
…
GitlabはGSRでサポートされない…
- 35. KMSからキーを得る
- name: 'gcr.io/cloud-builders/gcloud'
args:
- kms
- decrypt
- --ciphertext-file=gitlab-deploy.enc
- --plaintext-file=/root/.ssh/id_ed25519
- --location=global
- --keyring=cloudbuild
- --key=gitlab
volumes:
- name: 'ssh'
path: /root/.ssh
gcloudコマンドの引数
じゃ。/root/.ssh以下
に解読結果を残すぞ!
- 36. KMSからキーを得る
- name: 'gcr.io/cloud-builders/gcloud'
args:
- kms
- decrypt
- --ciphertext-file=gitlab-deploy.enc
- --plaintext-file=/root/.ssh/id_ed25519
- --location=global
- --keyring=cloudbuild
- --key=gitlab
volumes:
- name: 'ssh'
path: /root/.ssh
解読結果を残すためのスト
レージじゃ。あとでマウン
トして読み込めるぞい
- 38. キーを使ってgit cloneする
- name: 'gcr.io/cloud-builders/git'
args:
- clone
- —depth=1
- —branch=master
- --single-branch
- git@gitlab.com:myaccount/myrepo.git
volumes:
- name: 'ssh'
path: /root/.ssh
- 39. キーを使ってgit cloneする
- name: 'gcr.io/cloud-builders/git'
args:
- clone
- —depth=1
- —branch=master
- --single-branch
- git@gitlab.com:myaccount/myrepo.git
volumes:
- name: 'ssh'
path: /root/.ssh
gitを使うためのコ
ンテナじゃ
- 40. キーを使ってgit cloneする
- name: 'gcr.io/cloud-builders/git'
args:
- clone
- —depth=1
- —branch=master
- --single-branch
- git@gitlab.com:myaccount/myrepo.git
volumes:
- name: 'ssh'
path: /root/.ssh 前のステップで作ったキー
を読み込むためにボリュー
ムをマウントするぞ
- 41. キーを使ってgit cloneする
- name: 'gcr.io/cloud-builders/git'
args:
- clone
- —depth=1
- —branch=master
- --single-branch
- git@gitlab.com:myaccount/myrepo.git
volumes:
- name: 'ssh'
path: /root/.ssh
git コマンドの引数
じゃ。~/.sshのキーを
勝手に使ってくれるぞ
- 57. 問題
• cd … && glide install はだめ
• 「正しいGoのファイル配置」をゴニョゴニョして
あげる必要がある
- 63. 問題
• cd … && glide.bashもだめ
• /workspace直下にいる事を前提としたスクリプト
になっている…
- 64. 正解
- name: gcr.io/cloud-builders/glide
id: glide:myrep
env:
- PROJECT_ROOT=myproject/myrepo
entrypoint: bash
args:
- '-c'
- |
. /builder/prepare_workspace.inc
prepare_workspace || exit
cd subdirectory
/go/bin/glide install
- 65. 正解
- name: gcr.io/cloud-builders/glide
id: glide:myrep
env:
- PROJECT_ROOT=myproject/myrepo
entrypoint: bash
args:
- '-c'
- |
. /builder/prepare_workspace.inc
prepare_workspace || exit
cd subdirectory
/go/bin/glide install
glide.bashをバラして
自分で記述したの
じゃ!
- 73. .ssh/configを設定する
- name: 'gcr.io/cloud-builders/git'
entrypoint: bash
args:
- '-c'
- |
chmod 600 /root/.ssh/id_ed25519
cat <<EOF >/root/.ssh/config
Hostname gitlab.com
IdentityFile /root/.ssh/id_ed25519
EOF
mv known_hosts /root/.ssh/known_hosts
volumes:
- name: 'ssh'
path: /root/.ssh このファイルも/root/.ssh
で後ほど使うのでマウント
じゃ。
- 79. イメージの準備
FROM alpine:3.6 AS helm
RUN apk add --update --no-cache ca-certificates git
ENV FILENAME helm-v2.7.2-linux-amd64.tar.gz
RUN apk add --update -t deps curl tar gzip
RUN curl -L http://storage.googleapis.com/kubernetes-helm/${FILENAME} | tar
zxv -C /tmp
FROM google/cloud-sdk:alpine
COPY --from=helm /tmp/linux-amd64/helm /bin/helm
RUN gcloud components install kubectl docker-credential-gcr gsutil
- 80. イメージの準備
FROM alpine:3.6 AS helm
RUN apk add --update --no-cache ca-certificates git
ENV FILENAME helm-v2.7.2-linux-amd64.tar.gz
RUN apk add --update -t deps curl tar gzip
RUN curl -L http://storage.googleapis.com/kubernetes-helm/${FILENAME} | tar
zxv -C /tmp
FROM google/cloud-sdk:alpine
COPY --from=helm /tmp/linux-amd64/helm /bin/helm
RUN gcloud components install kubectl docker-credential-gcr gsutil
マルチステージDockerfile
でまずhelmを取得しておい
て、あとでコピーじゃ
- 81. イメージの準備
FROM alpine:3.6 AS helm
RUN apk add --update --no-cache ca-certificates git
ENV FILENAME helm-v2.7.2-linux-amd64.tar.gz
RUN apk add --update -t deps curl tar gzip
RUN curl -L http://storage.googleapis.com/kubernetes-helm/${FILENAME} | tar
zxv -C /tmp
FROM google/cloud-sdk:alpine
COPY --from=helm /tmp/linux-amd64/helm /bin/helm
RUN gcloud components install kubectl docker-credential-gcr gsutil
こちらではすでにビル
ドされているcloud-
sdkをまるっと使うぞ
- 82. イメージの準備
FROM alpine:3.6 AS helm
RUN apk add --update --no-cache ca-certificates git
ENV FILENAME helm-v2.7.2-linux-amd64.tar.gz
RUN apk add --update -t deps curl tar gzip
RUN curl -L http://storage.googleapis.com/kubernetes-helm/${FILENAME} | tar
zxv -C /tmp
FROM google/cloud-sdk:alpine
COPY --from=helm /tmp/linux-amd64/helm /bin/helm
RUN gcloud components install kubectl docker-credential-gcr gsutil
kubectl等もこのタイ
ミングでgcloudからイ
ンストールじゃ
- 83. イメージの準備
FROM alpine:3.6 AS helm
RUN apk add --update --no-cache ca-certificates git
ENV FILENAME helm-v2.7.2-linux-amd64.tar.gz
RUN apk add --update -t deps curl tar gzip
RUN curl -L http://storage.googleapis.com/kubernetes-helm/${FILENAME} | tar
zxv -C /tmp
FROM google/cloud-sdk:alpine
COPY --from=helm /tmp/linux-amd64/helm /bin/helm
RUN gcloud components install kubectl docker-credential-gcr gsutil
gcr.ioにpushするなら
これをいれておくとよ
いぞ!
- 92. The Good Parts
• ローカル環境で爆速で開発できる
• ローカル環境で爆速で開発できる(2回目)
• 下手にCIサービスのキャッシュとかに振り
回されるより効率的な環境を作れる
• Googleのサービスと絡めやすい
- 93. The Bad Parts
• Moving Partsが増える
• コンテナイメージの管理等
• UIとはなんだったのか
• ドキュメントとはなんだったのか
• entrypointのトリックを知らないとデバッグ
が無理