Helmで試行錯誤

一昨日昨日と睡眠時間が不安定で今日もぼーっとしがち、というか頭痛すらして来た。

やりたい事はあるけど今日は早く寝よう。というか何であれば明日有休取ろう。


GKEのプロジェクトはhelmを使ってデプロイ・運用しているんだけど、不慣れな頃にエイヤッと作ったManifestfileを手探りで増強していったもんだから、非常に取り回しの悪いものになってしまっていた。

というわけでhelmのテンプレートとかループとかを活かした形にリファクタリング。


元々はActive/Standbyの二系統の箱があって、そこに埋め込まれた変数でイメージを更新していくという設計だった。

kind: Deployment
metadata:
  name: active
  labels:
    app: hoge
    mode: active
spec:
  template:
    containers:
      - name: 
        image: hoge:{{.Values.tag.active}}
---
kind: Deployment
metadata:
  name: standby
  labels:
    app: hoge
    mode: standby
spec:
  template:
    containers:
      - name: 
        image: hoge:{{.Values.tag.standby}}

ただ、これはreadness/livenessを上手いこと設定しないと瞬断してしまうし、事実上リリース前チェック程度にしか確認できない代物だった。


で、新しくやろうとしてるのは↓のように変数tagsをループで回してそれぞれデプロイ&serviceでtagで判別という方式。

{{- range $tag := .Values.tags}}
kind: Deployment
metadata:
  name: hoge-{{$tag}}
  labels:
    tag: {{$tag}}
spec:
  template:
    containers:
      - name: 
        image: hoge:{{$tag}}
---
{{- end}}

必要に応じて3系統でも4系統でもデプロイしてserviceの接続を変えて、不要になったら外していく感じ。


いやさ、これ折角のDeploymentのRollingUpdateやRollbackといった便利な機能を殺してしまう発想だし、本当はactive/standbyでそれぞれRELEASEとして分けてしまう方がスマートなのは分かってるんだけど、外部に出せるIPが限られてるんで苦肉の策なんですわ。


結構Kuberenetesの勉強会の資料なんかを漁ってると、Spinnakerの導入まで至らないところはHelmを使ってるって話を見かけるんだけど、具体的な構成とか運用とか見てみたいなー。

入門 Kubernetes

入門 Kubernetes

  • 作者: Kelsey Hightower,Brendan Burns,Joe Beda,松浦隼人
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2018/03/22
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

やっとKubernetes自体の技術書が出揃ってきたって段階だし、周辺ツールのノウハウみたいのはこれからって感じだろうか。


ようやっと話題の『ゆるキャン』の1話をチェックする。

湖畔の夜とキャンプの人々

湖畔の夜とキャンプの人々

なるほど 、萌えアニメ的なワチャワチャ感が控えめで環境映像的に楽しめる、好みの作風だ。