LoginSignup
6
4

More than 5 years have passed since last update.

MinikubeでWeave Fluxを使ってGitOpsしてみる

Last updated at Posted at 2019-02-08

GitOpsに興味があり、MinikubeでWeave Fluxを試してみたメモ。

以下のガイドに従い試してみる。

GitOptsとはについては以下の資料などを参照。

準備

コマンドラインツールのfluxctlをインストールする。今回の作業だけならこのツールはなくても大丈夫。

brew install fluxctl

Fluxにウォッチさせるリポジトリとして、サンプルのリポジトリをフォークして使用する。以下のリポジトリでForkボタンを押す。

image.png

Weave Fluxの導入

Minikubeを起動する。

minikube start

Fluxのリポジトリをローカルにクローンする。

git clone https://github.com/weaveworks/flux

FluxのDeploymentのマニフェストを修正する。ウォッチするリポジトリをフォークした自分のリポジトリに変更する。

vi deploy/flux-deployment.yaml
...
        # replace or remove the following URL
        - --git-url=git@github.com:sotoiwa/flux-get-started.git
        - --git-branch=master
...

deployディレクトリ配下のマニフェスト群をデプロイする。

kubectl apply -f deploy

Podが起動したことを確認する。

$ kubectl get po
NAME                        READY   STATUS    RESTARTS   AGE
flux-546fdf9957-vbltb       1/1     Running   0          3s
memcached-57f9c8d4c-fxn8p   1/1     Running   0          8m58s
$

Fluxが起動時に生成した鍵ペアの公開鍵を確認する。

fluxctl identity

fluxctlを導入していない場合は以下コマンドでも確認できる。

kubectl logs deployment/flux | grep identity.pub

公開鍵をdeploy keyとして登録する。

image.png

image.png

以上で完了。

ウォッチしたリポジトリにあるマニフェストに従い、demoというNamespaceが作成され、podinfoのDepoymentが作成される。あとHPAも。

$ kubectl get po -n demo
NAME                       READY   STATUS    RESTARTS   AGE
podinfo-597bdb4466-qnkt9   1/1     Running   0          3m15s
podinfo-597bdb4466-vlsdk   1/1     Running   0          3m30s
$ kubectl get hpa -n demo
NAME      REFERENCE            TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
podinfo   Deployment/podinfo   <unknown>/99%   2         4         2          10m
$

リポジトリに変更をコミット

フォークしたリポジトリをローカルにクローンする。

git clone git@github.com:sotoiwa/flux-get-started.git

今回はMasterブランチでDeploymeht定義を修正する。

現在デプロイされているDeploymentのPODINFO_UI_COLOR環境変数を確認。

$ kubectl get deployments -n demo podinfo -o yaml | grep -2 "name: PODINFO_UI_COLOR"
        - --random-error=false
        env:
        - name: PODINFO_UI_COLOR
          value: green
        image: stefanprodan/podinfo:1.3.2

マニフェスト上のPODINFO_UI_COLOR環境変数のgreenblueに変える。

cd flux-get-started/
vi workloads/podinfo-dep.yaml
...
        env:
        - name: PODINFO_UI_COLOR
          value: blue
...

変更をコミットしてpushする。

git add
git commit
git push

デフォルトでは5分間隔で変更をウォッチしているので、しばらく待つとDeploymentが更新されることが確認できる。

$ kubectl get deployments -n demo podinfo -o yaml | grep -2 "name: PODINFO_UI_COLOR"
        - --random-error=false
        env:
        - name: PODINFO_UI_COLOR
          value: blue
        image: stefanprodan/podinfo:1.3.2
$

以上。

FluxのPodも非常に軽量なので、とてもよさそうに思える。

$ kubectl top pod
NAME                        CPU(cores)   MEMORY(bytes)
flux-546fdf9957-vbltb       3m           31Mi
memcached-57f9c8d4c-fxn8p   0m           9Mi
$
6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4