在 Google 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, GKE, and Cloud Build API。

    啟用 API

準備環境

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

  1. 啟用 Cloud Shell。Cloud Shell 可讓您在 GCP 主控台中使用指令列,並包括 GCP 開發需要的 Cloud SDK 和其他工具。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. 使用 GKE 佈建 Kubernetes 叢集,這個步驟可能需要幾分鐘才能完成。

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

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

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

    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.12.8-gke.10     35.231.8.57  n1-standard-2  1.12.8-gke.3   2          RUNNING
    
  3. 確認您可以連線至叢集。

    kubectl cluster-info
    

    如果您可以成功連接叢集,即會顯示 Kubernetes 元件網址。

    Kubernetes master is running at https://130.211.178.38
    GLBCDefaultBackend is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/default-http-backend
    Heapster is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/heapster
    KubeDNS is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/kube-dns
    kubernetes-dashboard is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard
    

安裝 Helm

使用 Helm 從存放區部署 Jenkins。

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

    wget https://storage.googleapis.com/kubernetes-helm/helm-v2.14.1-linux-amd64.tar.gz
    
  2. 將檔案解壓縮到本機系統:

    tar zxfv helm-v2.14.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 repo update
    
  6. 執行下列指令來確認 Helm 已正確安裝:

    ./helm version
    

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

    Client: &version.Version{SemVer:"v2.14.1", GitCommit:"5270352a09c7e8b6e8c9593002a73535276507c0", GitTreeState:"clean"}
    Server: &version.Version{SemVer:"v2.14.1", GitCommit:"5270352a09c7e8b6e8c9593002a73535276507c0", GitTreeState:"clean"}
    

安裝 Jenkins

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

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

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

    如需 Jenkins 安裝設定的更多相關資訊,請造訪 Jenkins Chart 的說明文件頁面

  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
    
  3. 從 Cloud Shell 將通訊埠轉送設定為 Jenkins UI:

    export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/component=jenkins-master" -l "app.kubernetes.io/instance=cd" -o jsonpath="{.items[0].metadata.name}")
    kubectl port-forward $POD_NAME 8080:8080 >> /dev/null &
    
  4. 檢查是否已正確建立 Jenkins 服務。

    kubectl get svc
    

    輸出範例:

    NAME               CLUSTER-IP     EXTERNAL-IP   PORT(S)     AGE
    cd-jenkins         10.35.249.67   <none>        8080/TCP    3h
    cd-jenkins-agent   10.35.248.1    <none>        50000/TCP   3h
    kubernetes         10.35.240.1    <none>        443/TCP     9h
    

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

連線到 Jenkins

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

    printf $(kubectl get secret cd-jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo
    
  2. 如要開啟 Jenkins 使用者介面,請按一下 Cloud Shell 中的 [Web Preview] (網頁預覽),然後按一下 [Preview on port 8080] (在通訊埠 8080 上預覽)

    port8080

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

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

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

清理

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

刪除專案

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

如要刪除專案,請執行以下操作:

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

    前往專案頁面

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

刪除磁碟

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

    前往磁碟頁面

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

刪除執行個體

如要刪除 Compute Engine 執行個體:

  1. 在 GCP 主控台中,前往「VM Instances」(VM 執行個體) 頁面。

    前往 VM 執行個體頁面

  2. 找到 您要刪除的執行個體,然後點選旁邊的核取方塊。
  3. 按一下頁面頂端的 [刪除] 按鈕,刪除該執行個體。

相關資源

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

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

這個網頁
解決方案