書籍來源:《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所示。
步驟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 ~]#