この記事では、Single nodeのRancher server と二つのk3sクラスタ環境を構築し、 そRancherのContinuous Delivery機能で、二つのk3sクラスタをGitOpsで操作します。
Step 1: Deploying a Rancher Server
まずはrancherノードで、以下のdocker コマンドを実行しSingle nodeのRancher serverを構築します。
|
|
Rancher serverが1分程度で立ち上がりますので、rancherノードのIPアドレスをブラウザで開いてRancher UIをアクセスしてください。
今回の場合、Rancherは自己署名証明書を使用しているため、ブラウザに証明書の警告が表示されます。この警告はスキップしても問題ありません。 また、一部のブラウザでは、スキップボタンが表示されない場合があります。 この場合は、エラーページの任意の場所をクリックして、thisisunsafe
と入力します。 これにより、ブラウザは警告をバイパスして証明書を受け入れるようになります。
初回アクセスの時パスワードの初期設定が必要です。画面のガイドに従って設定してください。
Step 2: Deploy k3s Kubernetes Cluster
次はk3sクラスタをデプロイします。手順はとても簡単で、以下のコマンドをk3s-1とk3s-2ノードで実行するだけです。
後でアップグレードもやる予定なので、ここではあえてちょっと古いバージョンを指定しk3sのクラスタをデプロイします。
k3s-1
|
|
k3s-2
|
|
デプロイが完了したら、以下のコマンドでクラスタを確認してください。
|
|
Note: K3sはroot
ユーザの操作を想定しているのでsudo
権限が必要です。
Step 3: Add k3s cluster to Rancher
次はk3sクラスタをRancher にImportします。 以下の手順で、k3s-1を登録してください。
- RancherのGlobal画面で、右側にある
Add Cluster
をクリックし、Other Cluster
を選択してください。 - Cluster Nameにクラスタの名前
k3s-1
を入力しCreate
をクリックします。 curl...
から始まっているコマンドをクリックし、k3s-1のノードで実行してください。
同じ手順で、k3s-2
を登録してください。
Step 4: Cluster Group
ここから、Continuous Deliveryの操作に入ります。 Global画面のTools
->Continous Delivery
を選択してください。
まずはCluster Group
を作成します。左側のCluster Group
メニューに入り、画面右側にあるCreate
をクリックし、Cluster Group
作成メニューに入ります。
今回はk3s
を使ってデモするので、Nameのところをk3s-demo
に入力します。
次は重要なところです。Cluster Group
の所属は設定されたラベルを持つクラスタを選択するので、ここではAdd Rule
をクリックしてラベルを設定します。今回のDemoでは、K3sを使っているので、Cluster Selectors
のところに k3s=true
のラベルを設定します。
上記の設定が終わったらCreate
をクリックしCluster Group
の作成が終了します。
次はimportされた2機のk3sクラスタをこのCluster Group
にアサインします。左側のClusters
メニューに入り、まずはk3s-1
のクラスタの右側にある︙をクリックし、Assign to
を選択します。
Add/Set Label
をクリックし、さっき設定したラベルk3s=true
を設定し、Apply
をクリックします。これでこのクラスタがさっき作成したクラスタグループに配属されました。
同じ手順でk3s-2
のクラスタもCluster Group
に配属しましょう。Cluster Groups
画面からClusters Ready
が2
になっていることが分かります。
Step 5: Git Repos
このステップでは、参照するGit Repo
の設定を行います。左側のGit Repos
に入り、画面右側にあるCreate
をクリックし、Git Repos
作成画面に入ります。
名前を入力した後、各自のGithubのアカウントで https://github.com/rancher/fleet-examples をfolkし、Repository URL(e.g. https://github.com/xibuka/fleet-examples.git )に設定してください。 また、Paths
に今回利用するguest-book
の定義ファイルが置いてあった /single-cluster/manifests
を設定して ください。 次はこのGit Repos
をどこにデプロイするのかを設定します。Deploy To
のメニューから、さっき作成したCluster Group
を選択し、Create
をクリックしてください。
これで、k3s-1とk3s-2にguest-book
のリソースがデプロイされます。
次に、deployment以下に新しいファイルnginx.yaml
を追加しましょう。以下の内容で追加したら、Continuous Deliveryがこのファイルを検知し、Cluster Group
にデプロイします。
|
|
デプロイが完了したら、クラスタ側でPod
やService
などを確認しましょう。
同じく、監視先のファイルに変更がある場合も、その修正内容は随時cluster group
にデプロイされます。 試しに、上記のYAMLの以下の2行を変更してみてください。
|
|
修正内容が反映されました。
Step 6: Deploy Application
このステップでは、Git Repoの登録からRancherのアップリケーションをデプロイします。
まずはRepository URLに、https://github.com/xibuka/core-bundles.gitを設定し、Add Path
で以下の二つのパスを追加します。
- /longhorn
- /longhorn-crd
Create
をクリックしたら定義したアップリケーションがデプロイされます。
Step 7: Upgrade
このステップでは、Git Repoの登録から二つのk3sクラスタをアップグレードします。アップグレードを実現するために、以下のAutomated Upgrades機能を利用します。
https://rancher.com/docs/k3s/latest/en/upgrades/automated/
まずはこの機能に必要なリソースを準備します。以下のコマンドを一回ずつクリックし各クラスタで実行させてください。
|
|
次は https://github.com/xibuka/k3s-upgrade-plan をfolkし、Git reposを設定してください。Branch NameをMain
にして、Create
をクリックしてください。 /
以下が対象なのでpath
の追加が必要ないです。
現在のk3sのバージョンは 1.21.5+k3s2 であることを確認します。
Git ReposにあるPlanのファイルを変更し、versionを1.22.2+k3s1
に変更しcommitしてください。少し時間が立つと二つのk3sクラスタのバージョンは1.22.2にアップグレードされるはずです。
FleetのDemoはここまでですが、まだまだ使える機能はたくさんありますので探してみてください。