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

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

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
    をクリックします。

    View Slide

  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
    の作成が終了します。

    View Slide

  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
    をクリックしてください。

    View Slide

  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

    View Slide

  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
    機能を利

    View Slide

  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

    View Slide