天天看點

CKA備考實驗 | 安裝helm

作者:熱愛程式設計的通信人

書籍來源:《CKA/CKAD應試指南:從Docker到Kubernetes完全攻略》

一邊學習一邊整理老師的課程内容及試驗筆記,并與大家分享,侵權即删,謝謝支援!

附上彙總貼:CKA備考實驗 | 彙總-CSDN部落格

helm3安裝在master上,是一個和kubectl類似的用戶端,隻是一個在Kubernetes API上執行操作的工具。

步驟1:下載下傳最新版的helm。

下載下傳位址為http://github.com/helm/helm/releases,提前下載下傳所需要的檔案:https://get.helm.sh/helm-v.3.2.1-linux-amd64.tar.gz及對應的checksum檔案,如圖14-1所示。

CKA備考實驗 | 安裝helm

步驟2:下載下傳安裝helm的腳本。

##########實操驗證##########
[root@vms10 ~]# curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11715  100 11715    0     0   2667      0  0:00:04  0:00:04 --:--:--  2667
[root@vms10 ~]# chmod +x get
[root@vms10 ~]#           

因為此腳本會自動到網際網路下載下傳最新版的helm,是以需要修改此腳本,以實作使用本地已經下載下傳好的helm檔案。

步驟3:修改helm安裝腳本。

因為已經下載下傳的helm版本是v3.2.1,是以先修改get檔案,直接指定helm的版本為v3.2.1,在get腳本裡大概104行找到checkDesiredVersion函數,改為如下内容。

checkDesiredVersion() {
  if [ "x$DESIRED_VERSION" == "x"]; then
    # Get tag from release URL
    local latest_release_url="https://github.com/helm/helm/releases"
    if [ "${HAS_CURL}" == "true" ]; then
      TAG=$(curl -Ls $latest_release_url | grep 'href="/helm/helm/releases/tag/v3.[0-9]*.[0-9]*\"' | grep -v no-underline | head -n 1 | cut -d '"' -f 2 | awk '{n=split($NF,a,"/");print a[n]}' | awk 'a !~ $0{print}; {a=$0}')
    elif [ "${HAS_WGET}" == "true"]; then
      TAG=$(wget $latest_release_url -O - 2>&1 | grep 'href="/helm/helm/releases/tag/v3.[0-9]*.[0-9]*\"' | grep -v no-underline | head -n 1 | cut -d '"' -f 2 | awk '{n=split($NF,a,"/");print a[n]}' | awk 'a !~ $0{print}; a=$0}') 
    fi
  else
    TAG=$DESIRED_VERSION 
  fi
}           

将上方的整段代碼修改成:

##########實操驗證##########
    107 # checkDesiredVersion checks if the desired version is available.
    108 checkDesiredVersion() {
    109   TAG=v3.2.1
    110 }           

在大概127行找到dowloadFile()函數,删除if到fi之間(127~142行)的語句并插入cp helm* $HELM_TMP_ROOT,結果如下。

downloadFile() {
  HELM_DIST="helm-$TAG-$OS-$ARCH.tar.gz"
  DOWNLOAD_URL="https://get.helm.sh/$HELM_DIST"
  CHECKSUM_URL="$DOWNLOAD_URL.sha256"
  HELM_TMP_ROOT="$(mktemp -dt helm-installer-XXXXXX)"
  HELM_TMP_FILE="$HELM_TMP_ROOT/$HELM_DIST"
  HELM_SUM_FILE="$HELM_TMP_ROOT/$HELM_DIST.sha256"
  echo "Downloading $DOWNLOAD_URL"
  if [ "${HAS_CURL}" == "true" ]; then
    curl -SsL "$CHECKSUM_URL" -o "$HELM_SUM_FILE"
    curl -SsL "$DOWNLOAD_URL" -o "$HELM_TMP_FILE"
  elif [ "${HAS_WGET}" == "true" ]; then 
    wget -q -O "$HELM_SUM_FILE" "$CHECKSUM_URL"
    wget -q -O "$HELM_TMP_FILE" "$DOWNLOAD_URL"
  fi
}           

改成:

##########實操驗證##########
    131 downloadFile() {
    132   HELM_DIST="helm-$TAG-$OS-$ARCH.tar.gz"
    133   DOWNLOAD_URL="https://get.helm.sh/$HELM_DIST"
    134   CHECKSUM_URL="$DOWNLOAD_URL.sha256"
    135   HELM_TMP_ROOT="$(mktemp -dt helm-installer-XXXXXX)"
    136   HELM_TMP_FILE="$HELM_TMP_ROOT/$HELM_DIST"
    137   HELM_SUM_FILE="$HELM_TMP_ROOT/$HELM_DIST.sha256"
    138   echo "Downloading $DOWNLOAD_URL"
    139   cp helm* $HELM_TMP_ROOT
    140 }           

在大概162行(這個行數是前面修改之後顯示的行數)找到verifyChecksum函數,把166~169行的if判斷删除,結果如下。

verifyChecksum() {
  printf "Verifying checksum... "
  local sum=$(openssl sha1 -sha256 ${HELM_TMP_FILE} | awk '{print $2}')
  local expected_sum=$(cat ${HELM_SUM_FILE})
  if [ "$sum" != "$expected_sum" ]; then 
    echo "SHA sum of ${HELM_TMP_FILE} does not match. Aborting."
    exit 1
  fi
  echo "Done."
}           

改成:

##########實操驗證##########
    166 verifyChecksum() {
    167   printf "Verifying checksum... "
    168   local sum=$(openssl sha1 -sha256 ${HELM_TMP_FILE} | awk '{print $2}')
    169   local expected_sum=$(cat ${HELM_SUM_FILE})
    170   echo "Done."
    171 }            

儲存退出。注意,可能因為版本問題,讀者自己做的時候,行數不一定能和這裡的行數比對,如果沒比對的話,可以找到對應的關鍵字,再做相關修改。

在get檔案downloadFile函數(大概在106行)裡可以看到安裝helm所需要的checksum檔案名(通過變量HELM_SUM_FILE定義),這個檔案可能和我們剛下載下傳的不一緻,如果不一緻的話,進行如下操作。

步驟4:對sum檔案拷貝并重命名。

##########實操驗證##########
[root@vms10 ~]# cp helm-v3.2.1-linux-amd64.tar.gz helm-v3.2.1-linux-amd64.tar.gz.sha256
[root@vms10 ~]#            

步驟5:確定get有可執行權限,并運作get。

##########實操驗證##########
[root@vms10 ~]# ./get
[WARNING] Could not find git. It is required for plugin installation.
Downloading https://get.helm.sh/helm-v3.2.1-linux-amd64.tar.gz
Verifying checksum... Done.
Preparing to install helm into /usr/local/bin
helm installed into /usr/local/bin/helm
[root@vms10 ~]#            

步驟6:檢視helm的版本。

##########實操驗證##########
[root@vms10 ~]# helm version
version.BuildInfo{Version:"v3.2.1", GitCommit:"fe51cd1e31e6a202cba7dead9552a6d418ded79a", GitTreeState:"clean", GoVersion:"go1.13.10"}
[root@vms10 ~]#            

步驟7:為了能使helm子指令使用Tab鍵,運作如下指令。

##########實操驗證##########
[root@vms10 ~]# helm completion bash > ~/.helmrc 
[root@vms10 ~]# echo "source ~/.helmrc" >> ~/.bashrc
[root@vms10 ~]# 
[root@vms10 ~]# source .bashrc 
[root@vms10 ~]#            

繼續閱讀