Member-only story
Kubernetesを用いたGitOps
2017年、クラウドネイティブ企業である Weaveworks が「GitOps — Operations by Pull Request(GitOps — プルリクエストによるオペレーション)」というブログ記事を公開しました。この投稿では、GitOpsという言葉を紹介し、Gitを真の源として使って、ほとんど全てのものを運用することだと定義しています。それ以来、GitOpsはどんどん広がっていき、人気を博しています。
今回は、GitOpsとは何か、そしてそれがKubernetesとの関係を詳しく見ていきます。GitOpsの原則を適用することで、どのようなメリットが得られるのでしょうか。単にGitを使ってデプロイすることと、GitOpsはどう違うのか?GitOpsを大規模に使うことはできるのか、など詳しく解説いたします。
Git
GitOpsは、その名が示すように、Gitと関係があります。面白いことに、GitOpsは本当の意味での(Git)Opsである必要はなく、(SVN)Opsや(Mercurial)Ops、あるいは(Version Control System)Opsでも良いのですが、まあGitOpsの方が言いやすいですよね^^
いずれにしても、私たちは皆、Gitを知っていて好きなとき(うまくいったとき)も、嫌いなとき(マージ・コンフリクトを解決しなければならないとき)もあるでしょう。現代のGitベースの開発者のワークフローがどのようなものか、簡単におさらいしてみましょう。明らかに、プル・リクエストのような機能は、バージョン管理システムであるGitの一部ではなく、GitHubやGitLabなどに属しています。この図では、コードの変更を管理するためのグッド・プラクティスとしてのプル・リクエストを含む、開発者が行う作業を見ています。
上記の例では、開発者のワークフローを簡略化して示していますが、最近ではGitリポジトリでの作業が多いことを考慮しています。
待てよ、今までずっとGitOpsに使ってきたんじゃないのか?
どうせGitOpsなんてずっと使ってきたんじゃないだろう、と思うかもしれません。何を騒いでいるのでしょう?あなたは毎日、Git を使って変更をコミットしたりプッシュしたりしています。重要な違いは、Gitリポジトリで定義された内容が、Kubernetesクラスター上の自動化されたエージェントを使ってインフラ側に反映されているかどうかを確認するために、継続的に行われる調整のループです。
言い換えれば、GitOps=継続的デリバリー+継続的オペレーションです。
GitOps の原則が Kubernetes…