Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[CNDT2021]Kubernetes GitOps with Rancher Contin...

Wenhan Shi
November 02, 2021

[CNDT2021]Kubernetes GitOps with Rancher Continuous Delivery - Hands-on

Wenhan Shi

November 02, 2021
Tweet

More Decks by Wenhan Shi

Other Decks in Technology

Transcript

  1. CNDT2021 hands-on CNDT2021 hands-on Step 1: Deploying a Rancher Server

    今回のHands-on で、Single node のRancher server と二つのk3s クラスタ環境を構築します。 その後、Rancher server のContinuous Delivery 機能で、二つのk3s クラス タを操作します。 このステップでは rancher ノードだけを操作します。 rancher ノードで、以下のdocker command を実行しSingle node のRancher server を構築します。 sudo docker run -d --restart=unless-stopped \ -p 80:80 -p 443:443 \ --privileged \ rancher/rancher:v2.5.10 Rancher server が1 分程度で立ち上がりますので、以下のpublic IP をブラウザで開いてRancher UI をアクセスしてください。 https://${vminfo:rancher:public_ip} このHandson の場合、Rancher は自己署名証明書を使用しているため、ブラウザに証明書の警告が表示されます。この警告はスキップしても問題ありません。 また、一部の ブラウザでは、スキップボタンが表示されない場合があります。 この場合は、エラーページの任意の場所をクリックして、「thisisunsafe 」と入力します(引用符は含みま せん)。 これにより、ブラウザは警告をバイパスして証明書を受け入れるようになります。 初回アクセスの時パスワードの初期設定が必要です。画面のガイドに従って設定してください。 Step 2: Deploy k3s Kubernetes Cluster このステップでk3s クラスタをインストールします。 手順はとても簡単で、以下のコマンドをk3s-1 とk3s-2 ノードで実行するだけです。 今回のHands-on でアップグレードもやる予定なので、ここではk3s のバージョンを指定しクラスタをデプロイします。 k3s-1 sudo curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.19.15+k3s2 sh - k3s-2 sudo curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.19.15+k3s2 sh - デプロイが完了したら、以下のコマンドでクラスタを確認してください。 sudo kubectl get node Note: K3s はroot ユーザの操作を想定しているのでsudo 権限が必要です。 Step 3: Add k3s cluster to Rancher このステップでk3s クラスタをRancher にImport します。 以下の手順で、k3s-1 を登録してください。 1. Rancher のGlobal 画面で、右側にある"Add Cluster" をクリックし、”Other Cluster” を選択してください。 2. Cluster Name にクラスタの名前 k3s-1  を入力しCreate をクリックします。
  2. 3. "curl..." から始まっているコマンドをクリックし、k3s-1 のノードで実行してください。 同じ手順で、k3s-2 を登録してください。 Step 4: Hands-on: Cluster

    Group ここから、Continuous Delivery のHands-on に入ります。 Global 画面のTools->Continous Delivery を選択してください。 まずはCluster Group を作成します。左側のCluster Group メニューに入り、画面右側にあるCreate をクリックし、Cluster Group 作成メニューに入ります。 今回はk3s を使ってデモするので、Name のところを k3s-demo  に入力します。 次は重要なところです。Cluster Group の所属は設定されたラベルを持つクラスタを選択するので、ここではAdd Rule をクリックしてラベルを設定します。今回のHands- on では、K3s を使っているので、Cluster Selectors のところに k3s=true のラベルを設定します。 上記の設定が終わったらCreate をクリックしCluster Group の作成が終了します。
  3. 次は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: Hands-on: 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 をクリックしてください。
  4. これで、k3s-1 とk3s-2 にguest-book のリソースがデプロイされます。 次に、deployment 以下に新しいファイルnginx.yaml を追加しましょう。以下の内容で追加したら、Continuous Delivery がこのファイルを検知し、Cluster Group

    にデプ ロイします。 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.21 ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx-nodeport spec: type: NodePort selector: app: nginx
  5. ports: - port: 80 targetPort: 80 nodePort: 32000 デプロイが完了したら、クラスタ側でPod やService

    などを確認しましょう。 同じく、監視先のファイルに変更がある場合も、その修正内容は随時cluster group にデプロイされます。 試しに、上記のYAML の以下の2行を変更してみてください。 ... image: nginx:1.20 ... nodePort: 31000 修正内容が反映されました。 ## Step 6: Hands-on: Deploy Application このステップでは、Git Repo の登録からRancher のア ップリケーションをデプロイします。 まずはRepository URL に、https://github.com/xibuka/core-bundles.git  を設定し、Add Path で以下の二つのパスを追加します。 /longhorn /longhorn-crd Create をクリックしたら定義したアップリケーションがデプロイされます。 ## Step 7: Hands-on: Upgrade このステップでは、Git Repo の登録から二つのk3s クラスタをアップグレードします。アップグレードを実現するために、以下のAutomated Upgrades 機能を利
  6. 用します。 https://rancher.com/docs/k3s/latest/en/upgrades/automated/ まずはこの機能に必要なリソースを準備します。以下のコマンドを一回ずつクリックし各クラスタで実行させてください。 sudo kubectl apply -f https://github.com/rancher/system-upgrade-controller/releases/download/v0.6.2/system-upgrade-controller.yaml sudo kubectl

    apply -f https://github.com/rancher/system-upgrade-controller/releases/download/v0.6.2/system-upgrade-controller.yaml 次は 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 にアップグレー ドされるはずです。 Step 8: Summary 本日のHands-on はこれで終了しました。お疲れ様でした! ご質問やコメントがある場合は、下記までご連絡いただけるとありがたいです。 [email protected] https://twitter.com/shi_wenhan