在 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. 在 GCP Console 的專案選擇器頁面中,選取或建立 GCP 專案。

    前往專案選取器頁面

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

  4. 啟用Compute Engine、GKE 和 Cloud Build必要的 。

    啟用 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" \
      --cluster-version 1.12
    

    額外的範圍可讓 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 搭配您的設定集來部署圖表:

    ./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. 按一下 [log in] (登入) 按鈕。

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

清除所用資源

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

刪除專案

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

如要刪除專案:

  1. 前往 GCP Console 中的「Manage resources」(管理資源) 頁面。

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

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

刪除磁碟

  1. 前往 GCP Console 的「Disks」(磁碟) 頁面。

    前往「Disks」(磁碟) 頁面

  2. 按一下 jenkins-home 磁碟的核取方塊。
  3. 按一下「Delete」(刪除) 圖示 以刪除磁碟。

刪除執行個體

如何刪除 Compute Engine 執行個體:

  1. 前往 GCP Console 的「VM Instances」(VM 執行個體) 頁面。

    前往「VM Instances」(VM 執行個體) 頁面

  2. 勾選您要刪除的執行個體相應核取方塊。
  3. 按一下 [Delete] (刪除) ,藉此刪除執行個體。

後續步驟

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

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

這個網頁
解決方案