Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MackerelにおけるKubernetes利用の取組みとこれから / Kubernetes Meetup Tokyo #22

MackerelにおけるKubernetes利用の取組みとこれから / Kubernetes Meetup Tokyo #22

Hayato Imai

August 28, 2019
Tweet

More Decks by Hayato Imai

Other Decks in Technology

Transcript

  1. 1. CONTAINERIZATION
 • アプリケーションのDockerイメー ジを準備 ◦ マルチステージビルド ◦ Buildkitの `--mount=type=cache`

    # syntax=docker/dockerfile:experimental # Stage: prepare go test and build FROM golang:1.12 AS prepare RUN go get github.com/golang/dep/cmd/dep && \ go get golang.org/x/lint/golint RUN mkdir -p /app ADD Gopkg.toml Gopkg.lock /app WORKDIR /app RUN --mount=type=cache,target=/go/pkg/dep \ dep ensure --vendor-only ADD . /app # Stage: build go application FROM prepare AS build RUN go build -ldflags=$(BUILD_LDFLAGS) -o ./app # Stage: build container image FROM debian:stretch-slim RUN apt-get update -yq && \ apt-get install -yq ca-certificates && \ rm -rfv /var/lib/apt RUN mkdir -p /app COPY --from=build /app/app /
  2. 3. ORCHESTRATION
 • マネージドサービスを利用できない理由は前述のとおり • クラスタ構築に kubespray +Terraform を採用 ◦

    Ansibleを利用するため構築ステップが追跡しやすい ◦ インスタンスはTerraformで作成し、テンプレートでAnsibleのインベント リを生成
  3. まとめ
 • 構築できる ≠ 運用できる
 • クラスタ運用を見据えた体制を整えることが大事
 ◦ 学習プランの整備、ドキュメントの充実
 ◦

    軌道に乗るまでは専任エンジニアが2人以上ほしい(肌感覚)
 • スモールスタート、並行運用、撤退可能な設計を心がける
 ◦ とくに既存システムからの移行において