Tanzu Kubernetes Grid を1.0から1.1へアップグレードする

## はじめに

先日、[Tanzu Kubernetes Grid 1.1](https://docs.vmware.com/en/VMware-Tanzu-Kubernetes-Grid/1.1/rn/VMware-Tanzu-Kubernetes-Grid-11-Release-Notes.html)がリリースされました。TKG CLIがWindowsに対応するなど、いくつか新機能が追加されているため、リリースノートを確認いただければと思います。

今回は、以前自宅ラボに構築したTanzu Kubernetes Grid 1.0の環境を1.1へアップグレードしてみます。

## 準備

### TKG CLIをアップグレードする

1. [MyVMware](https://www.vmware.com/go/get-tkg)からTKG 1.1 CLIのバイナリをダウンロードします。クライアント端末は、Macであるため、以下のファイルをダウンロードします。
  - `tkg-darwin-amd64-v1.1.0-vmware.1.gz`

2. `gunzip`コマンドで展開後、`/usr/local/bin/`に移動+リネームし、実行権限を付与します。

    ```
    $ gunzip tkg-darwin-amd64-v1.1.0-vmware.1.gz
    $ mv tkg-darwin-amd64-v1.1.0-vmware.1 /usr/local/bin/tkg 
    overwrite /usr/local/bin/tkg? (y/n [n]) y
    $ chmod +x /usr/local/bin/tkg
    ```

3. `tkg version`コマンドを実行して、TKG 1.1にアップグレードしたことを確認します。

    ```
    $ tkg version                              
    Client:
            Version: v1.1.0
            Git commit: 1faa437638dc81ed234721b2dbc2ad51ca9ec928
    ```

### ベースとなるテンプレートイメージをデプロイする

1. [MyVMware](https://www.vmware.com/go/get-tkg)から以下のOVAファイルをダウンロードします。
  - `photon-3-kube-v1.18.2-vmware.1.ova`
  - `photon-3-haproxy-v1.2.4-vmware.1.ova`

2. ダウンロードしたOVAをvCenter Serverへデプロイします。

3. デプロイしたOVAをテンプレートに変換します。

## Managementクラスタをアップグレードする

1. `tkg get management-cluster`コマンドを実行して、既存のManagementクラスタを確認します。この際、TKG CLIをアップグレードした影響で、configファイルを上書きするかどうか尋ねられる場合がありますが、`y`を選択して上書きを実行します。

    ```
    $ tkg get management-cluster
    MANAGEMENT-CLUSTER-NAME  CONTEXT-NAME                    
    mgmt-cluster *           mgmt-cluster-admin@mgmt-cluster
    ```

2. `tkg set management-cluster`コマンドを実行して、コンテキストをアップグレード対象のManagementクラスタにセットします。

    ```
    $ tkg set management-cluster mgmt-cluster 
    The current management cluster context is switched to mgmt-cluster
    ```

3. `tkg get cluster --include-management-cluster`コマンドを実行して、現在デプロイされているクラスタのKubernetesクラスタのバージョンを確認します。※アップグレードなので、Kubernetesのバージョンは1.17です。

    ```
    $ tkg get cluster --include-management-cluster
     NAME          NAMESPACE   STATUS   CONTROLPLANE  WORKERS  KUBERNETES       
     dev-cluster   default     running  1/1           1/1      v1.17.3+vmware.2 
     mgmt-cluster  tkg-system  running  1/1           1/1      v1.17.3+vmware.2
    ```

4. `tkg upgrade management-cluster`コマンドを実行して、Managementクラスタをアップグレードします。アップグレードしてよいか質問されるので、`y`を入力してEnterキーを押下します。

    ```
    $ tkg upgrade management-cluster mgmt-cluster --vpshere-vm-template-name photon-3-kube-v1.18.2+vmware.1
    ```

    注1）今回は、`--vpshere-vm-template-name`オプションを使用して、Kubernetes 1.18のテンプレートイメージを指定しますが、ドキュメントの記載通りこのオプションはTanzuサポートの指示に従って使用してください。
    注2）Managementクラスタのアップグレードには、思った以上に時間がかかります。コマンドがタイムアウトしたときは、再度同じコマンドを実行することで、処理を継続することが可能です。

5. `tkg get cluster --include-management-cluster`コマンドを実行して、Managementクラスタがアップグレードされたことを確認します。

    ```
    $ tkg get cluster --include-management-cluster
     NAME          NAMESPACE   STATUS   CONTROLPLANE  WORKERS  KUBERNETES       
     dev-cluster   default     running  1/1           1/1      v1.17.3+vmware.2 
     mgmt-cluster  tkg-system  running  1/1           1/1      v1.18.2+vmware.1
    ```

## Kubernetesクラスタをアップグレードする

アップグレードの流れは、Managermentクラスタの場合と同様です。

1. `tkg get management-cluster`コマンドを実行して、既存のManagementクラスタを確認します。

    ```
    $ tkg get management-cluster
    MANAGEMENT-CLUSTER-NAME  CONTEXT-NAME                    
    mgmt-cluster *           mgmt-cluster-admin@mgmt-cluster
    ```

2. `tkg set management-cluster`コマンドを実行して、コンテキストをアップグレード対象のKubernetesクラスタを管理しているManagementクラスタにセットします。

    ```
    $ tkg set management-cluster mgmt-cluster 
    The current management cluster context is switched to mgmt-cluster
    ```

3. `tkg get cluster --include-management-cluster`コマンドを実行して、現在デプロイされているクラスタのKubernetesクラスタのバージョンを確認します。

    ```
    $ tkg get cluster --include-management-cluster
     NAME          NAMESPACE   STATUS   CONTROLPLANE  WORKERS  KUBERNETES       
     dev-cluster   default     running  1/1           1/1      v1.17.3+vmware.2 
     mgmt-cluster  tkg-system  running  1/1           1/1      v1.18.2+vmware.1
    ```

4. `tkg upgrade cluster`コマンドを実行して、Kubernetesクラスタをアップグレードします。アップグレードしてよいか質問されるので、`y`を入力してEnterキーを押下します。

    ```
    $ tkg upgrade cluster dev-cluster --vpshere-vm-template-name photon-3-kube-v1.18.2+vmware.1
    ```

5. `tkg get cluster --include-management-cluster`コマンドを実行して、Managementクラスタがアップグレードされたことを確認します。

    ```
    $ tkg get cluster --include-management-cluster                                             
     NAME          NAMESPACE   STATUS   CONTROLPLANE  WORKERS  KUBERNETES       
     dev-cluster   default     running  1/1           1/1      v1.18.2+vmware.1 
     mgmt-cluster  tkg-system  running  1/1           1/1      v1.18.2+vmware.1
    ```