CodeZine(コードジン)

特集ページ一覧

Chatworkに学ぶ実践Kubernetes導入──アップグレード戦略、CI/CDとGitOps

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2021/08/06 11:00

目次

Kubernetes導入に伴い、GitOpsを用いたCI/CDの構成に

 続いては、佐々木氏からEKS導入前後で、CI/CDの構成がどう変わったかが語られた。

 EKS導入前は、アプリケーションのコードやDeployConfigを、CIツール「Jenkins」を使ってデプロイしていた。

EKS導入前のCI/CD

 EKS導入後は、Immutable ClusterでBlue-Green Deploymentを用いていたため、クラスターが多くなった。そのため、クラスターが追加されるたびにデプロイ先をJenkinsで変更していたが、移行期間には並行稼動する必要があり、3~4カ月ごとに設定しなおすのは骨が折れる。そこでキーワードとして挙がったのが、GitOpsだった。

EKS導入後

 「一般的には、Git上の構成ファイルはKubernetesの構成ファイルをSingle Of Truthにして、常に同期させて正しい状態にしておくことでCIとCDを分離します。メリットとしては開発で使われるPRレビューのフローが持ってこれる、Gitの履歴管理ができる、セキュリティの分離ができるなど。Immutable Cluster環境におけるメリットとしては、クラスタ側からGitに同期させることができるので、それによって常に正しい状態にすることができる点です」

 下記の図のように、各クラスタからGitのほうに同期して、正しい状態にする。クラスター構築時にアプリケーションのデプロイまで一気にできしまうところは、このImmutable Clusterという環境においては、GitOpsのメリットだと佐々木氏は語る。

Immutable Cluster環境にGitOps

 続いて、CI/CDの構成とフローについて説明が行われた。ここで特徴的なのは、HelmfileというHelm ChartsをデプロイするツールでKubernetesのConfigを管理していること。Kubernetes上にArgoCDがあり、Helmfileのリポジトリと同期するようになっている。

現在のCI/CD

 「アプリケーションの変更がGitのほうにプッシュされるとCircleCIでビルドが走り、そこからContainer Registryにビルド済みのイメージがプッシュされる。同時にCircleCIでHelmfileのイメージタグの更新をかけると、ArgoCDとHelmfileの同期が外れた状態になるので、その差分を検知してArgoCDがマニフェストを生成して、Kubernetesにアプライする。それが終わるとまたArgoCDが同期状態になり、常に最新の正しい状態になるという流れになっています」

実際の動作

SREと開発のチームの動き方

 最後に、この仕組みをどのような組織と役割分担をしているのかが紹介された。下記の図のように、アプリケーションの管理とHelmfile・Configファイルの作成までは、開発側が行っている。一方、SRE側はHELM Chartsの生成を担当しているという。

 「クラスタのバージョンが変わるたびに変更が必要となるところを、なるべくこのHELM Charts側で吸収できるようにしています。変更があった場合は、説明会を開催して開発側にHelmfileを作ってもらい、SREのほうでレビューするという棲み分けをしています」

組織と役割

【Q&A】Kubernetes導入に関する質問と回答を紹介

 坂本氏と佐々木氏のセッション後は、濱氏からいくつかの質問が投げかけられた。こちらも簡単に紹介したい。

:ArgoCDは複数のクラスタに対応できるのが良いところだと思うのですが、どのように使っていますか?

佐々木:数のクラスタに1台で複数のクラスターを面倒を見るか、クラスタごとに入れるかという構成が取れると思うが、我々は今のところ、各クラスタにArgoCDを入れる感じにしてます。理由としては、クラスターを構築した時点でなるべく全て完了させたいので、クラスターの中に入れることで、最初に構築した時点で全て出来上がっている構成にしています。

:今出てきたキーワードであるArgoCDやHELM Chartsは、どのようなツールで、どんな背景・目的で採用したのですか?

佐々木:HELM Chartsはマニフェストを管理するツールです。我々だとHELM Chartsをより宣言的に扱えるHelmfileをマニフェスト生成のためのツールとして使っています。HelmfileからHelmを呼び出して、HelmfileコマンドをインストールしてあるArgoCDで変換して、最終的にアプライするようにしています。ArgoCDはHelmには対応しているんですけど、Helmfileは入っていないので、我々のほうで対応させています。

:GitOpsについて、今後の展望や課題など、考えていることはありますか?

佐々木:EKSに移行したいアプリケーションがまだあるので、その辺をまずはGitOps化しようと思います。最終的には全部GitOps化して同じデプロイフローにしたいので。今は段階的に取り組んでいる最中です。

:AWSプラットフォームの中でもKubernetesを活かせているChatworkさんの事例は大変貴重なので、今後もまたお話を聞かせてください。ありがとうございました。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:イベントレポート

もっと読む

著者プロフィール

  • 馬場 美由紀(ババ ミユキ)

     エンジニアとテクノロジーが好きな編集・ライター。エンジニア向けキャリアサイト「Tech総研」「CodeIQ MAGAZINE」、Web技術者向けの情報メディア「HTML5 Experts.jp」などでライティング、コンテンツディレクション、イベント企画などを行う。HTML5 開発者コミュニティ「h...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5