安裝 Tanzu CLI 和 Kubernetes CLI,以便與 vSphere with Tanzu 主管搭配使用

本主題說明如何在啟動機器上安裝 Tanzu 命令列介面 (CLI)。啟動機器是一部您從中部署管理和工作負載叢集的筆記型電腦、主機或伺服器,且用來保留您部署的 Tanzu 和 Kubernetes 組態檔。啟動機器通常是本機機器,但也可以是您遠端存取的實體機器或虛擬機器。如需 Tanzu CLI 的詳細資訊 (包括命令參考),請參閱 VMware Tanzu CLI v1.0.x 說明文件。

如果要以 vSphere 8 上的 vSphere with Tanzu 主管作為管理叢集,在您安裝 Tanzu CLI 後,可以將其連線到主管。

附註

本主題中的指示專門用來安裝 Tanzu CLI 以與 vSphere 8 上的 vSphere with Tanzu 主管搭配使用。如果您要安裝 Tanzu CLI,以在不含主管的 vSphere 上部署獨立管理叢集,在 AWS 或 Azure 上部署獨立管理叢集,請參閱《部署和管理 Tanzu Kubernetes Grid 2.4 獨立管理叢集》中的對應主題:安裝 Tanzu CLI 和 Kubernetes CLI 以用於獨立管理叢集

Tanzu CLI 會與主管通訊,以在 vSphere with Tanzu 中建立和管理工作負載叢集。

Tanzu Kubernetes Grid v2.x 和 vSphere 8 中的 vSphere with Tanzu 主管

重要

vSphere 8.0.1c 和更新版本中的 vSphere with Tanzu 主管執行 TKG v2.2。舊版的 vSphere 8 執行 TKG v2.0,該版本並非獨立於主管發佈。由於主管中嵌入了較早的 TKG 版本,某些獨立 TKG 2.4 管理叢集中可用的功能,在使用 vSphere with Tanzu 建立工作負載叢集時不可用。更新的 TKG 版本將嵌入到未來 vSphere 更新版本的主管中。因此,特定時間最新 vSphere with Tanzu 版本中嵌入的 TKG 版本可能不如最新獨立 TKG 版本新。但是,完全支援與所有 TKG v2.x 版本相容的 Tanzu CLI 版本與 vSphere 8 所有版本中的主管一起使用。例如,Tanzu CLI v0.90.1 與主管提供的 TKG 2.2 外掛程式完全向後相容。

Tanzu Kubernetes Grid v2.x 和 vSphere 7 中的 vSphere with Tanzu

注意

與 vSphere 8 中的 TKG 2.x 和 vSphere with Tanzu 主管相容的 Tanzu CLI 版本與 vSphere 7 中的主管叢集不相容。如要在 vSphere 7 上對 vSphere with Tanzu 主管叢集使用 Tanzu CLI,請使用 TKG v1.6 中的 Tanzu CLI 版本。如要使用與具有主管的 TKG 2.x 相容的 Tanzu CLI 版本,請升級到 vSphere 8。如果 vSphere with Tanzu 主管叢集不存在,您可以將獨立 TKG 2.x 管理叢集部署到 vSphere 7。有關 Tanzu CLI 與 VMware 產品之間相容性的資訊,請參閱 Tanzu CLI 文件

必要條件

用來安裝及執行 Tanzu CLI 以與 Tanzu Kubernetes Grid 搭配使用的啟動機器必須符合特定需求。另有進一步的需求,具體取決於您是打算將 Tanzu CLI 與作為管理叢集的 vSphere with Tanzu 主管搭配使用,還是要部署獨立管理叢集,還是兩者都要。

若要執行具有 Tanzu Kubernetes Grid v2.4 的 Tanzu CLI,您需要啟動機器,以安裝和執行具有下列Tanzu CLI:

  • 在具有下列硬體的實體或虛擬機器上執行的 Linux、Windows 或 macOS 作業系統:
    • 最少 8 GB RAM。VMware 建議使用 16 GB RAM。
    • 具有 50 GB 可用儲存空間的磁碟。
    • 2 或 4 個 2 核心 CPU。
  • 如果您打算使用 Tanzu Kubernetes Grid 安裝程式介面來部署獨立管理叢集,則需要具有瀏覽器,或使用瀏覽器從機器進行遠端存取。無需瀏覽器即可使用 Tanzu CLI,但若是第一次部署,強烈建議使用安裝程式介面。
  • 系統時間會與網路時間通訊協定 (NTP) 伺服器同步。
  • 如果啟動機器執行 Windows,VMware 建議將 Windows Subsystem for Linux (WSL) 與 Ubuntu 20.04.4 LTS 一起安裝,以便在 Windows 上執行 Linux 命令。如需 WSL 的詳細資訊,請參閱 Microsoft 說明文件中的安裝 WSL

若要以主管叢集作為管理叢集,還需要:

安裝 Tanzu CLI

若要安裝 Tanzu CLI 以與 Tanzu Kubernetes Grid v2.4 搭配使用,請為 Tanzu Kubernetes Grid v2.4 安裝相容版本的 Tanzu Core CLI 和 Tanzu CLI 外掛程式。這些外掛程式提供的命令可啟用叢集和套件作業。有關相容 CLI 版本的清單,請參見產品互通性對照表

安裝 Tanzu Core CLI

如要安裝 Tanzu Core CLI,請執行以下步驟;如要查看這些步驟,請按兩下使用套件管理員安裝 (Install using a package manager) 從二進位版本安裝 (Install from a binary release) 索引標籤。

安裝 Tanzu Core CLI 後,繼續安裝適用於 TKG v2.4 的 Tanzu CLI 外掛程式

附註

如果要保留 Tanzu CLI 的現有安裝,請先將 CLI 二進位檔從 /usr/local/bin/tanzu 移到其他位置,然後再執行以下步驟。

使用套件管理員安裝
如要使用套件管理員安裝 Tanzu CLI,請執行以下操作:
  1. 選擇相容版本的 Tanzu CLI。有關與此版本 Tanzu Kubernetes Grid 相容的 CLI 版本清單,請參見產品互通性對照表

  2. 按照下面適用於您的套件管理員的說明進行操作。

    • APT (Debian 或 Ubuntu):

      • 如果要安裝的版本是 Tanzu CLI 的最新可用版本,例如 v1.0.0,請執行:

        sudo apt update
        sudo apt install -y ca-certificates curl gpg
        sudo mkdir -p /etc/apt/keyrings
        curl -fsSL https://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-RSA-KEY.pub | sudo gpg --dearmor -o /etc/apt/keyrings/tanzu-archive-keyring.gpg
        echo "deb [signed-by=/etc/apt/keyrings/tanzu-archive-keyring.gpg] https://storage.googleapis.com/tanzu-cli-os-packages/apt tanzu-cli-jessie main" | sudo tee /etc/apt/sources.list.d/tanzu.list
        sudo apt update
        sudo apt install -y tanzu-cli
        
      • 如果要安裝早期版本的 Tanzu CLI,例如 v0.90.1,請執行:

        sudo apt update
        sudo apt install -y ca-certificates curl gpg
        sudo mkdir -p /etc/apt/keyrings
        curl -fsSL https://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-RSA-KEY.pub | sudo gpg --dearmor -o /etc/apt/keyrings/tanzu-archive-keyring.gpg
        echo "deb [signed-by=/etc/apt/keyrings/tanzu-archive-keyring.gpg] https://storage.googleapis.com/tanzu-cli-os-packages/apt tanzu-cli-jessie main" | sudo tee /etc/apt/sources.list.d/tanzu.list
        sudo apt update
        sudo apt install tanzu-cli=0.90.1
        
    • Chocolatey (Windows):

      • 如果要安裝的版本是 Tanzu CLI 的最新可用版本,例如 v1.0.0,請執行:

        choco install tanzu-cli
        
      • 如果要安裝早期版本的 Tanzu CLI,例如 v0.90.1,請執行:

        choco install tanzu-cli --version 0.90.1
        
    • Homebrew (MacOS):

      • 如果要安裝的版本是 Tanzu CLI 的最新可用版本,例如 v1.0.0,請執行:

        brew update
        brew install vmware-tanzu/tanzu/tanzu-cli
        
      • 如果要安裝早期版本的 Tanzu CLI,例如 v0.90.1,請執行:

        brew update
        brew tap-new local/tap
        brew extract --version=0.90.1 vmware-tanzu/tanzu/tanzu-cli local/tap
        brew install tanzu-cli@0.90.1
        
    • YUM 或 DNF (RHEL):

      • 如果要安裝的版本是 Tanzu CLI 的最新可用版本,例如 v1.0.0,請執行:

        cat << EOF | sudo tee /etc/yum.repos.d/tanzu-cli.repo
        [tanzu-cli]
        name=Tanzu CLI
        baseurl=https://storage.googleapis.com/tanzu-cli-os-packages/rpm/tanzu-cli
        enabled=1
        gpgcheck=1
        repo_gpgcheck=1
        gpgkey=https://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-RSA-KEY.pub
        EOF
        
        sudo yum install -y tanzu-cli # If you are using DNF, run sudo dnf install -y tanzu-cli.
        
      • 如果要安裝早期版本的 Tanzu CLI,例如 v0.90.1,請執行:

        cat << EOF | sudo tee /etc/yum.repos.d/tanzu-cli.repo
        [tanzu-cli]
        name=Tanzu CLI
        baseurl=https://storage.googleapis.com/tanzu-cli-os-packages/rpm/tanzu-cli
        enabled=1
        gpgcheck=1
        repo_gpgcheck=1
        gpgkey=https://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-RSA-KEY.pub
        EOF
        
        sudo yum install tanzu-cli-0.90.1 # If you are using DNF, run sudo dnf install tanzu-cli-0.90.1.
        
  3. 檢查是否適當安裝了正確版本的 CLI。例如:

    tanzu version
    version: v1.0.0
    ...
    
從二進位版本安裝
您可以從 VMware Customer Connect 或 GitHub 下載 Tanzu CLI 二進位檔。有關所有相容 CLI 版本的清單,請參見 產品互通性對照表

如要從 Customer Connect 下載 Tanzu CLI 的二進位版本,然後進行安裝,請執行以下操作:

  1. 下載並解壓縮 Tanzu CLI 二進位版本:

    1. 移至 VMware Customer Connect 上的 VMware Tanzu CLI 頁面,然後在 Tanzu CLI v1.0.0 的產品下載 (Product Downloads) 之下,找到並下載適用您作業系統的 Tanzu CLI 二進位檔。
    2. 解壓縮適用您作業系統的 Tanzu CLI 檔。若要解壓縮檔案,請使用您選擇的解壓縮工具。例如,在 Linux 或 macOS 上,您可以使用 tar 命令。

      • macOS:

        tar -xvf tanzu-cli-darwin-amd64.tar.gz
        
      • Linux:

        tar -xvf tanzu-cli-linux-amd64.tar.gz
        
      • Windows:

        使用 Windows 解壓縮工具來解壓縮 tanzu-cli-windows-amd64.zip

  2. 使 CLI 可供系統使用:

    • macOS:

      將二進位檔安裝到 /usr/local/bin

      install tanzu-cli-darwin_amd64 /usr/local/bin/tanzu
      
    • Linux:

      將二進位檔安裝到 /usr/local/bin

      sudo install tanzu-cli-linux_amd64 /usr/local/bin/tanzu
      
    • Windows:

      1. 建立新的 Program Files\tanzu 資料夾。
      2. tanzu-cli-windows_amd64.exeProgram Files\tanzu
      3. tanzu-cli-windows_amd64.exe 重新命名為 tanzu.exe
      4. tanzu 資料夾上按一下滑鼠右鍵,選取內容 (Properties) > 安全性 (Security),並確定您的使用者帳戶具有完全控制 (Full Control) 權限。
      5. 使用 Windows Search 搜尋 env
      6. 選取編輯系統環境變數 (Edit the system environment variables),然後按一下環境變數 (Environment Variables) 按鈕。
      7. 系統變數 (System variables) 下選取 Path 資料列,然後按一下編輯 (Edit)
      8. 按一下新增 (New),以新增資料列,然後輸入 tanzu CLI 的路徑。路徑值不得包含 .exe 延伸/副檔名。例如,C:\Program Files\tanzu
  3. 檢查是否適當安裝了正確版本的 CLI。例如:

    tanzu version
    version: v1.0.0
    ...
    

如要從 GitHub 上的二進位版本下載並安裝 Tanzu CLI,請按照《安裝 Tanzu CLI》的從 GitHub 專案中的二進位版本部分的說明進行。

安裝適用於 TKG v2.4 的 Tanzu CLI 外掛程式

若要安裝適用于 Tanzu Kubernetes Grid v2.4 的獨立 Tanzu CLI 外掛程式:

  1. 列出適用于 Tanzu Kubernetes Grid v2.4 的獨立 Tanzu CLI 外掛程式:

    tanzu plugin group get vmware-tkg/default:v2.4.0
    

    此輸出看起來類似如下:

    Plugins in Group:  vmware-tkg/default:v2.4.0
      NAME                TARGET      VERSION
      isolated-cluster    global      v0.31.0
      management-cluster  kubernetes  v0.31.0
      package             kubernetes  v0.31.0
      pinniped-auth       global      v0.31.0
      secret              kubernetes  v0.31.0
      telemetry           kubernetes  v0.31.0
    

    如要列出 vmware-tkg/default 外掛程式群組的所有可用版本,請執行:

    tanzu plugin group search -n vmware-tkg/default --show-details
    
  2. 安裝適用於 Tanzu Kubernetes Grid v2.4 的獨立外掛程式:

    tanzu plugin install --group vmware-tkg/default:v2.4.0
    
  3. 確認外掛程式是否成功安裝:

    tanzu plugin list
    

    tanzu plugin group get vmware-tkg/default:v2.4.0 傳回的每個外掛程式名稱和外掛程式版本必須包含在 tanzu plugin list 的輸出中。

    附註

    在安裝 Tanzu CLI 和 Tanzu Kubernetes Grid 的獨立外掛程式之後,但在使用其連接到管理叢集之前,該內容特定的所有 CLI 命令群組 (例如 tanzu clustertanzu kubernetes-release) 均無法使用,並且不會包含在 Tanzu CLI --help 輸出中。Tanzu CLI 會在您連接到管理叢集時自動安裝相關範圍的外掛程式。有關 Tanzu CLI 外掛程式以及如何安裝這些外掛程式的詳細資訊,請參閱安裝 Tanzu CLI 外掛程式

安裝 Kubernetes CLI

在執行啟動程序機器中下載並解壓縮 Kubernetes CLI kubectl,然後提供給系統使用:

  1. 移至 VMware Customer Connect,然後使用 VMware Customer Connect 認證登入。

  2. 造訪 Tanzu Kubernetes Grid 下載頁面

  3. VMware Tanzu Kubernetes Grid 資料列中,按一下移至下載 (Go to Downloads)

  4. 選取版本 (Select Version) 下拉式功能表中,選取 2.4.0

  5. 產品下載 (Product Downloads) 下,捲動到標有 Kubectl 1.27.5 for VMware Tanzu Kubernetes Grid 2.4.0 的區段。

    macOS
    找到 kubectl cli v1.27.5 for Mac,然後按一下 立即下載 (Download Now)
    Linux
    找到 kubectl cli v1.27.5 for Linux,然後按一下 立即下載 (Download Now)
    Windows
    找到 kubectl cli v1.27.5 for Windows,然後按一下 立即下載 (Download Now)
  6. (選用) 驗證所下載的檔案與原始檔案相同。對於每一次的下載,VMware 都會提供 SHA-1、SHA-256 和 MD5 總和檢查。若想取得這些總和檢查,請按一下您要下載的項目下的閱讀更多 (Read More)。如需詳細資訊,請參閱使用密碼編譯雜湊

  7. 如要解壓縮作業系統的 kubectl 二進位檔,請使用您選擇的解壓縮工具。例如,gunzip 命令。

    macOS
    gunzip kubectl-mac-v1.27.5+vmware.1.gz
    
    Linux
    gunzip kubectl-linux-v1.27.5+vmware.1.gz
    
    Windows
    使用 Windows 解壓縮工具來解壓縮 kubectl-windows-v1.27.5+vmware.2.exe.gz
  8. 使 CLI 可供系統使用:

    macOS
    1. 將下載的檔案指定為可執行檔:

      chmod ugo+x kubectl-mac-v1.27.5+vmware.1
      
    2. 將二進位檔安裝到 /usr/local/bin

      sudo install kubectl-mac-v1.27.5+vmware.1 /usr/local/bin/kubectl
      
    3. 執行 kubectl version,檢查 kubectl 的正確版本是否已安裝且可執行。

      kubectl version
      
    Linux
    1. 將下載的檔案指定為可執行檔:

      chmod ugo+x kubectl-linux-v1.27.5+vmware.1
      
    2. 將二進位檔安裝到 /usr/local/bin

      sudo install kubectl-linux-v1.27.5+vmware.1 /usr/local/bin/kubectl
      
    3. 執行 kubectl version,檢查 kubectl 的正確版本是否已安裝且可執行。

      kubectl version
      
    Windows
    1. 建立新的 Program Files\kubectl 資料夾。
    2. 找出 kubectl-windows-v1.27.5+vmware.1.exe 檔案,並將其複製到新的 Program Files\kubectl 資料夾中。
    3. kubectl-windows-v1.27.5+vmware.1.exe 重新命名為 kubectl.exe
    4. kubectl 資料夾上按一下滑鼠右鍵,選取內容 (Properties) > 安全性 (Security),並確定您的使用者帳戶具有完全控制 (Full Control) 權限。
    5. 使用 Windows Search 搜尋 env
    6. 選取編輯系統環境變數 (Edit the system environment variables),然後按一下環境變數 (Environment Variables) 按鈕。
    7. 系統變數 (System variables) 下選取 Path 資料列,然後按一下編輯 (Edit)
    8. 按一下新增 (New),以新增資料列,然後輸入 kubectl CLI 的路徑。
    9. 執行 kubectl version,檢查是否適當安裝了正確版本的 CLI。

      kubectl version
      

後續步驟

在您使用 Tanzu CLI 和 kubectl 將工作負載叢集和服務套件部署到 Tanzu Kubernetes Grid 之前,將 Tanzu CLI 連線到主管

將 Tanzu CLI 連線至主管

如要將 Tanzu CLI 連接到主管,請執行以下操作:

  1. 從 vCenter 取得「主管」的 IP 位址:

    1. 主機和叢集 (Hosts and Clusters) 視圖中,選取託管「主管」的資料中心。
    2. 命名空間 (Namespaces) 下,選取包含或鄰近三個 SupervisorControlPlaneVM 執行個體的命名空間。
    3. 在主窗格中的摘要 (Summary) > 狀態 (Status) > 連結至 CLI 工具 (Link to CLI Tools) 下,按一下複製連結 (Copy link),並記錄 URL,例如 https://192.168.123.3
  2. 無 IDP:如果您沒有使用外部身分識別提供者,請執行下列動作:

    1. (選用) 使用受信任的憑證來設定 kubectl vsphere 外掛程式,如設定 vSphere with Tanzu 叢集的安全登入中所述。

    2. 執行 kubectl vsphere login,以登入 vSphere。如需此步驟的詳細資訊,請參閱使用 Kubectl 以 vCenter Single Sign-On 使用者身分連線至主管

      kubectl vsphere login --vsphere-username VSPHERE-USERNAME --server=SUPERVISOR-IP
      

      其中,VSPHERE-USERNAME 是 vCenter Single Sign-On (SSO) 帳戶的使用者名稱 (例如 administrator@vsphere.local),而 SUPERVISOR-IP 是您在上述中取得的主管 IP 位址。

      如果您未使用受信任的憑證來設定 kubectl vsphere 外掛程式,您可以將 --insecure-skip-tls-verify=true 附加到上述命令,以不安全的方式登入。

      注意

      請僅在開發環境中使用不安全的登入。

    3. 輸入您用來登入 vCenter 的密碼。

      成功登入後,kubectl vsphere login 命令會:

      • 建立或修改您的本機 kubeconfig 檔案,以新增用來透過 Kubernetes API 進行驗證的 Token
      • 列出您有權存取的所有 Kubernetes 內容。此清單應包含主管 IP 位址。
    4. kubectl 的內容設定為「主管」。

      kubectl config use-context SUPERVISOR-IP
      

      其中,SUPERVISOR-IP 是主管的內容;請參閱 vSphere with Tanzu 服務和工作負載中的取得和使用主管內容

  3. 收集資訊來執行 tanzu context create 命令,以連線至「主管」:

    • 決定 Tanzu CLI 所要使用的主管名稱。
    • 本機 kubeconfig 檔案的路徑,預設值為 ~/.kube/config,這是由 KUBECONFIG 環境變數所設定。
  4. 執行 tanzu context create 命令,傳遞上述值,例如:

    無 IDP:

    tanzu context create my-supervisor --kubeconfig ~/.kube/config --kubecontext 192.168.123.3
    

    這會在 Tanzu CLI 中登錄主管內容,並下載特定於主管的外掛程式。

    [ok] successfully logged in to management cluster using the kubeconfig my-supervisor
    [i] Checking for required plugins...
    [i] Installing plugin 'cluster:v0.29' with target 'kubernetes'
    [i] Plugin binary for 'cluster:v0.29' found in cache
    [i] Installing plugin 'feature:v0.29' with target 'kubernetes'
    [i] Plugin binary for 'feature:v0.29' found in cache
    [i] Installing plugin 'kubernetes-release:v0.29' with target 'kubernetes'
    [i] Plugin binary for 'kubernetes-release:v0.29' found in cache
    [i] Installing plugin 'namespaces:v1.0.0' with target 'kubernetes'
    [i] Plugin binary for 'namespaces:v1.0.0' found in cache
    [i] Successfully installed all required plugins
    

    使用 IDP:

    tanzu context create --endpoint https://10.73.27.32 --name oidc-user
    
    tanzu context use https://10.73.27.32 oidc-user
    
    Detected a vSphere Supervisor being used
    Log in by visiting this link:
    ...
    https://10.27.62.33/wcp/pinniped/oauth2/authorize?..
    ...
    Optionally, paste your authorization code: G2TcS145Q4e6A1YKf743n3BJlfQAQ_UdjXy38TtEEIo.ju4QV3PTsUvOigVUtQllZ7AJFU0YnjuLHTRVoNxvdZc
    ...
    ??? successfully logged in to management cluster using the kubeconfig oidc-user
    Checking for required plugins...
    All required plugins are already installed and up-to-date
    

    在上述範例中,https://10.73.27.32 是主管控制平面 IP 位址。如需此步驟的詳細資訊,請參閱使用 Tanzu CLI 和外部 IDP 連線至主管

  5. 執行 tanzu context list,檢查是否已新增主管,例如:

    tanzu context list
    
    NAME            ISACTIVE  ENDPOINT                      KUBECONFIGPATH                KUBECONTEXT
    my-supervisor   true      https://192.168.123.3:443     /home/vmware/.kube/config     192.168.123.3
    

    tanzu context use 現在應會列出您指名的主管:

    tanzu context use
    
    ? Select a server  [Use arrows to move, type to filter]
    > my-supervisor  ()
     + new server
    
  6. 執行 tanzu plugin list,以查看主管特定外掛程式以及獨立 CLI 外掛程式的清單。

    tanzu plugin list
    
    Standalone Plugins
      NAME                DESCRIPTION                                                        TARGET      VERSION  STATUS
      isolated-cluster    Prepopulating images/bundle for internet-restricted environments   global      v0.31.0  installed
      pinniped-auth       Pinniped authentication operations (usually not directly invoked)  global      v0.31.0  installed
      management-cluster  Kubernetes management cluster operations                           kubernetes  v0.31.0  installed
      package             Tanzu package management                                           kubernetes  v0.31.0  installed
      secret              Tanzu secret management                                            kubernetes  v0.31.0  installed
      telemetry           Configure cluster-wide settings for vmware tanzu telemetry         kubernetes  v0.31.0  installed
    
    Plugins from Context:  my-supervisor
      NAME                DESCRIPTION                                                TARGET      VERSION  STATUS
      cluster             Kubernetes cluster operations                              kubernetes  v0.29.0  installed
      feature             Operate on features and featuregates                       kubernetes  v0.29.0  installed
      kubernetes-release  Kubernetes release operations                              kubernetes  v0.29.0  installed
      namespaces          Discover vSphere Supervisor namespaces you have access to  kubernetes  v1.0.0   installed
    
    附註

    在 vSphere 8.0.1c 中,適用於主管內容的外掛程式的版本為 0.29.0。

  7. (選用) 繼續建立工作負載叢集
check-circle-line exclamation-circle-line close-line
Scroll to top icon