在 Kubernetes Engine 上設定 Jenkins

本教學課程將示範如何在 GKE 設定 Jenkins 來協助自動化調度管理軟體推送管道。

目標

  • 使用 GKE 建立 Kubernetes 叢集。
  • 使用 Helm 安裝 Jenkins。
  • 連線到 Jenkins。

費用

本教學課程使用的 Google Cloud Platform 可計費元件包括:

  • Compute Engine
  • Google Kubernetes Engine
  • Cloud Build

使用 Pricing Calculator 來根據您的預測使用量產生預估費用。 GCP 的新使用者可能符合申請免費試用的資格。

事前準備

  1. 登入您的 Google 帳戶。

    如果您沒有帳戶,請申請新帳戶

  2. 選取或建立 Google Cloud Platform 專案。

    前往「Manage resources」(管理資源) 頁面

  3. 請確認您已啟用 Google Cloud Platform 專案的計費功能。

    瞭解如何啟用計費功能

  4. 啟用 Compute Engine、Kubernetes Engine 和 Cloud Builder API。

    啟用 API

準備環境

首先,準備您的部署環境。

  1. 啟用 Cloud Shell。Cloud Shell 可讓您在 GCP 主控台中存取指令列,其中包括 Cloud SDK 及開發 GCP 所需要使用的其他工具。Cloud Shell 可能需要幾分鐘來完成佈建。

    啟用 Cloud Shell

    程序完成後,您會看到下列輸出:

    Welcome to Cloud Shell! For help, visit https://cloud.google.com/cloud-shell/help.
    

  2. 將預設 Compute Engine 區域設為 us-east1-d

    gcloud config set compute/zone us-east1-d
    

  3. 複製範例程式碼,或下載 zip 檔案

    git clone https://github.com/GoogleCloudPlatform/continuous-deployment-on-kubernetes.git
    

    Git 存放區包含 Kubernetes 資訊清單,您將使用這些資訊清單來部署 Jenkins。設定 GKE 中的 Jenkins 一文提供這些資訊清單和設定的說明。

  4. 前往範例程式碼目錄:

    cd continuous-deployment-on-kubernetes
    

建立 Kubernetes 叢集

您可以使用 GKE 建立及管理 Kubernetes 叢集。

  1. 建立 Compute Engine 網路,供 GKE 叢集連接及使用。

    gcloud compute networks create jenkins
    

  2. 使用 GKE 佈建 Kubernetes 叢集,這個步驟可能需要幾分鐘才能完成。

    gcloud container clusters create jenkins-cd \
      --network jenkins --machine-type n1-standard-2 --num-nodes 2 \
      --scopes "https://www.googleapis.com/auth/projecthosting,storage-rw,cloud-platform"
    

    額外的範圍可讓 Jenkins 存取 Cloud Source Repositories 和 Container Registry。

  3. 確認您的叢集正在執行中。

    gcloud container clusters list
    

    STATUS 欄中尋找 RUNNING

    NAME        LOCATION    MASTER_VERSION  MASTER_IP    MACHINE_TYPE   NODE_VERSION  NUM_NODES  STATUS
    jenkins-cd  us-east1-d  1.9.7-gke.3     35.231.8.57  n1-standard-2  1.9.7-gke.3   2          RUNNING
    

  4. 執行指令來檢查節點數,藉此確認您可以連接叢集。

    kubectl get nodes
    

    如果您可以成功連接叢集,則會看到畫面列出 2 個節點。

    NAME                                        STATUS    ROLES     AGE       VERSION
    gke-jenkins-cd-default-pool-0e5fa564-drl8   Ready         3m        v1.9.7-gke.3
    gke-jenkins-cd-default-pool-0e5fa564-h8vb   Ready         3m        v1.9.7-gke.3
    

安裝 Helm

使用 Helm 從存放區部署 Jenkins。

  1. 下載並安裝 Helm 二進位檔:

    wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz
    

  2. 將檔案解壓縮到本機系統:

    tar zxfv helm-v2.9.1-linux-amd64.tar.gz
    cp linux-amd64/helm .
    

  3. 將您自己新增為叢集 RBAC 中的叢集管理員,以便在叢集中提供 Jenkins 權限:

    kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin \
            --user=$(gcloud config get-value account)
    

  4. 在您的叢集中,將 cluster-admin 角色授予 Helm 伺服器端 Tiller:

    kubectl create serviceaccount tiller --namespace kube-system
    kubectl create clusterrolebinding tiller-admin-binding --clusterrole=cluster-admin \
                   --serviceaccount=kube-system:tiller
    

  5. 初始化 Helm,這可確保 Tiller 有正確安裝到您的叢集中。

    ./helm init --service-account=tiller
    ./helm update
    

  6. 執行下列指令來確認 Helm 已正確安裝:

    ./helm version
    

    您會看到用戶端版本和伺服器版本都顯示為 v2.9.1

    Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
    Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
    

安裝 Jenkins

您將使用自訂的值檔案來設定 Jenkins 安裝。如要進一步瞭解設定,請參見 jenkins/values.yaml 檔案。

  1. 使用 Helm CLI 搭配您的設定集來部署圖表:

    ./helm install -n cd stable/jenkins -f jenkins/values.yaml --version 0.16.6 --wait
    

  2. 指令執行完後,請確認 Jenkins pod 進入 Running 狀態,且容器處於 READY 狀態:

    kubectl get pods
    

    您會在 READY 欄和 STATUS 欄中分別看到 1/1Running。Jenkins 需要幾分鐘來完成初始化。

    NAME                          READY     STATUS    RESTARTS   AGE
    cd-jenkins-7c786475dd-vbhg4   1/1       Running   0          1m
    

Jenkins 安裝正在使用 Kubernetes 外掛程式建立建構工具代理程式。當 Jenkins 主要執行個體需要執行建構作業時,就會視需要自動啟動這些代理程式。當這些代理程式的工作完成後,系統就會自動終止代理程式,其中的資源會新增回叢集的資源集區。

連線到 Jenkins

  1. 擷取由 Jenkins Helm 圖表自動建立的管理員密碼:

    printf $(kubectl get secret cd-jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo
    

  2. 從 Cloud Shell 將通訊埠轉送設定為 Jenkins UI:

    export POD_NAME=$(kubectl get pods -l "component=cd-jenkins-master" -o jsonpath="{.items[0].metadata.name}")
    kubectl port-forward $POD_NAME 8080:8080 >> /dev/null &
    

  3. 如要開啟 Jenkins 使用者介面,請按一下 Cloud Shell 中的 [Web Preview] (網頁預覽),然後按一下 [Preview on port 8080] (在通訊埠 8080 上預覽)

    port8080

  4. 按一下視窗右上角的 [登入]。在「使用者」欄位中輸入 admin,並在「密碼」欄位中輸入在先前步驟中取得的密碼值。

  5. 按一下 [登入] 按鈕。

現在,您可以存取 Jenkins 和 GKE 代管的 Kubernetes 叢集。如要進一步利用這個解決方案,您可以將這些元件運用於持續推送軟體更新管道中。

清理

完成本教學課程後,您可以清除在 GCP 建立的資源,這樣日後就不需再為這些資源付費。

刪除專案

如要避免付費,最簡單的方法就是刪除您針對教學課程 建立的專案。

刪除專案:

  1. 前往 GCP 主控台的「Projects」(專案) 頁面。

    前往專案頁面

  2. 在專案清單中選取要刪除的專案,然後按一下 [Delete] (刪除)
  3. 在對話方塊中輸入專案 ID,按一下 [Shut down] (關閉) 即可刪除專案。

刪除磁碟

  1. 前往 GCP 主控台的 「磁碟」頁面。

    前往磁碟頁面

  2. 找到 您的 jenkins-home 磁碟,然後按一下旁邊的核取方塊。
  3. 按一下頁面頂端的 [刪除] 按鈕, 刪除該磁碟。

刪除執行個體

刪除 Compute Engine 執行個體:

相關資源

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
解決方案