產生 kubectl 命令的參考文件

此頁面說明如何產生 kubectl 命令參考。

開始之前

需求條件

  • 您需要一部執行 Linux 或 macOS 的機器。

  • 您需要安裝這些工具

  • 您的 PATH 環境變數必須包含必要的建置工具,例如 Go 二進位檔和 python

  • 您需要知道如何建立提取請求到 GitHub 倉庫。這包括建立您自己的倉庫分支。如需更多資訊,請參閱從本地副本工作

設定本地倉庫

建立本地工作區並設定您的 GOPATH

mkdir -p $HOME/<workspace>

export GOPATH=$HOME/<workspace>

取得以下倉庫的本地副本

go get -u github.com/spf13/pflag
go get -u github.com/spf13/cobra
go get -u gopkg.in/yaml.v2
go get -u github.com/kubernetes-sigs/reference-docs

如果您還沒有 kubernetes/website 倉庫,請立即取得

git clone https://github.com/<your-username>/website $GOPATH/src/github.com/<your-username>/website

取得 kubernetes/kubernetes 倉庫的副本,作為 k8s.io/kubernetes

git clone https://github.com/kubernetes/kubernetes $GOPATH/src/k8s.io/kubernetes

$GOPATH/src/k8s.io/kubernetes/vendor/github.com 移除 spf13 套件

rm -rf $GOPATH/src/k8s.io/kubernetes/vendor/github.com/spf13

kubernetes/kubernetes 倉庫提供 kubectlkustomize 原始碼。

  • 判斷您的 kubernetes/kubernetes 倉庫副本的基礎目錄。例如,如果您依照先前的步驟取得倉庫,您的基礎目錄為 $GOPATH/src/k8s.io/kubernetes。剩餘步驟將您的基礎目錄稱為 <k8s-base>

  • 判斷您的 kubernetes/website 倉庫副本的基礎目錄。例如,如果您依照先前的步驟取得倉庫,您的基礎目錄為 $GOPATH/src/github.com/<your-username>/website。剩餘步驟將您的基礎目錄稱為 <web-base>

  • 判斷您的 kubernetes-sigs/reference-docs 倉庫副本的基礎目錄。例如,如果您依照先前的步驟取得倉庫,您的基礎目錄為 $GOPATH/src/github.com/kubernetes-sigs/reference-docs。剩餘步驟將您的基礎目錄稱為 <rdocs-base>

在您的本地 k8s.io/kubernetes 倉庫中,檢出感興趣的分支,並確保它是最新的。例如,如果您想要產生 Kubernetes 1.31.0 的文件,您可以使用以下命令

cd <k8s-base>
git checkout v1.31.0
git pull https://github.com/kubernetes/kubernetes 1.31.0

如果您不需要編輯 kubectl 原始碼,請依照設定建置變數的指示。

編輯 kubectl 原始碼

kubectl 命令參考文件是從 kubectl 原始碼自動產生的。如果您想要變更參考文件,第一步是變更 kubectl 原始碼中的一或多個註解。在您的本地 kubernetes/kubernetes 倉庫中進行變更,然後提交提取請求到 github.com/kubernetes/kubernetes 的 master 分支。

PR 56673 是一個提取請求的範例,它修正了 kubectl 原始碼中的錯字。

監控您的提取請求,並回覆審閱者評論。持續監控您的提取請求,直到它合併到 kubernetes/kubernetes 倉庫的目標分支中。

將您的變更揀選到發布分支中

您的變更現在位於 master 分支中,該分支用於下一個 Kubernetes 版本的開發。如果您希望您的變更出現在已發布的 Kubernetes 版本的文件中,您需要建議將您的變更揀選到發布分支中。

例如,假設 master 分支用於開發 Kubernetes 1.32,而您想要將變更向後移植到 release-1.31 分支。如需如何執行此操作的說明,請參閱提議 Cherry Pick

監控您的 cherry-pick pull request,直到它合併到 release 分支中。

設定建置變數

前往 <rdocs-base>。在您的命令列中,設定以下環境變數。

  • K8S_ROOT 設定為 <k8s-base>
  • K8S_WEBROOT 設定為 <web-base>
  • K8S_RELEASE 設定為您要建置的文件版本。例如,如果您要為 Kubernetes 1.31 建置文件,請將 K8S_RELEASE 設定為 1.31。

例如

export K8S_WEBROOT=$GOPATH/src/github.com/<your-username>/website
export K8S_ROOT=$GOPATH/src/k8s.io/kubernetes
export K8S_RELEASE=1.31

建立版本化的目錄

createversiondirs 建置目標會建立版本化的目錄,並將 kubectl 參考組態檔複製到版本化的目錄。版本化的目錄名稱遵循 v<major>_<minor> 的模式。

<rdocs-base> 目錄中,執行以下建置目標

cd <rdocs-base>
make createversiondirs

在 k8s.io/kubernetes 中取出 release 標籤

在您的本地 <k8s-base> 儲存庫中,取出具有您要記錄的 Kubernetes 版本的 branch。例如,如果您要為 Kubernetes 1.31.0 產生文件,請取出 v1.31 標籤。請確保您的本地 branch 是最新的。

cd <k8s-base>
git checkout v1.31.0
git pull https://github.com/kubernetes/kubernetes v1.31.0

執行文件產生程式碼

在您的本地 <rdocs-base> 中,執行 copycli 建置目標。此命令以 root 身分執行

cd <rdocs-base>
make copycli

copycli 命令會清除暫時的建置目錄、產生 kubectl 命令檔案,並將整理過的 kubectl 命令參考 HTML 頁面和 assets 複製到 <web-base>

找到產生的檔案

驗證已產生這兩個檔案

[ -e "<rdocs-base>/gen-kubectldocs/generators/build/index.html" ] && echo "index.html built" || echo "no index.html"
[ -e "<rdocs-base>/gen-kubectldocs/generators/build/navData.js" ] && echo "navData.js built" || echo "no navData.js"

找到複製的檔案

驗證所有產生的檔案都已複製到您的 <web-base>

cd <web-base>
git status

輸出應包含修改後的檔案

static/docs/reference/generated/kubectl/kubectl-commands.html
static/docs/reference/generated/kubectl/navData.js

輸出也可能包含

static/docs/reference/generated/kubectl/scroll.js
static/docs/reference/generated/kubectl/stylesheet.css
static/docs/reference/generated/kubectl/tabvisibility.js
static/docs/reference/generated/kubectl/node_modules/bootstrap/dist/css/bootstrap.min.css
static/docs/reference/generated/kubectl/node_modules/highlight.js/styles/default.css
static/docs/reference/generated/kubectl/node_modules/jquery.scrollto/jquery.scrollTo.min.js
static/docs/reference/generated/kubectl/node_modules/jquery/dist/jquery.min.js
static/docs/reference/generated/kubectl/node_modules/font-awesome/css/font-awesome.min.css

在本機測試文件

在您的本地 <web-base> 中建置 Kubernetes 文件。

cd <web-base>
git submodule update --init --recursive --depth 1 # if not already done
make container-serve

檢視本機預覽

在 kubernetes/website 中新增和提交變更

執行 git addgit commit 以提交檔案。

建立 pull request

建立到 kubernetes/website 儲存庫的 pull request。監控您的 pull request,並根據需要回覆審查意見。繼續監控您的 pull request,直到它合併。

在您的 pull request 合併幾分鐘後,您更新的參考主題將在已發布的文件中可見。

下一步

上次修改時間為 2024 年 1 月 2 日晚上 8:14 PST:Clean up three generate-ref-docs (4d6a8e57c08566e42ec1b63b6ed0e66fd82c6e63)