Google Kubernetes Engine での Jenkins の設定

Last reviewed 2019-02-27 UTC

このチュートリアルでは、ソフトウェア デリバリー パイプラインをオーケストレートできるように Google Kubernetes Engine(GKE)で Jenkins を設定する方法について説明します。

目標

  • GKE を使用して Kubernetes クラスタを作成する。
  • Helm を使用して Jenkins をインストールする。
  • Jenkins に接続する。

費用

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

  • Google Kubernetes Engine

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the GKE APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the GKE APIs.

    Enable the APIs

環境の準備

最初にデプロイ環境を準備します。

  1. Cloud Shell をアクティブにします。Cloud Shell では Google Cloud コンソールのコマンドラインにアクセスできるほか、Google Cloud での開発に必要な gcloud CLI などのツールも利用できます。Cloud Shell のプロビジョニングには数分かかる場合があります。

    Cloud Shell をアクティブにする

    プロセスが完了すると、次の出力が表示されます。

    Welcome to Cloud Shell! Type "help" to get started.
    
  2. サンプルコードのクローンを作成します。

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

    この Git リポジトリには、Jenkins のデプロイに使用する Kubernetes マニフェストが含まれています。マニフェストとその設定については、Kubernetes Engine 用に Jenkins を構成をご覧ください。

  3. サンプルコードのディレクトリに移動します。

    cd continuous-deployment-on-kubernetes
    

GKE クラスタの作成

  1. GKE クラスタをプロビジョニングします。この手順は完了までに数分かかる場合があります。

    gcloud container clusters create jenkins-cd \
      --zone us-east1-d --scopes cloud-platform
    

    cloud-platform スコープを使用すると、Jenkins が Cloud Source Repositories と Container Registry にアクセスできるようになります。

  2. クラスタに接続できることを確認します。

    kubectl cluster-info
    

    クラスタに正常に接続できた場合、出力は次のようになります。

    Kubernetes control plane is running at https://35.196.84.95
    GLBCDefaultBackend is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/default-http-backend:http/proxy
    KubeDNS is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    Metrics-server is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
    
  3. クラスタの RBAC 内に、自分をクラスタ管理者として追加します。これにより、クラスタ内で Jenkins 権限を付与できるようになります。

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

Jenkins のインストール

Helm を使用して、リポジトリから Jenkins をデプロイします。

  1. Jenkins Helm チャート リポジトリを追加します。

    helm repo add jenkinsci https://charts.jenkins.io
    helm repo update
    

カスタムの値ファイルを使用して Jenkins のインストールを構成します。構成の詳細については、jenkins/values.yaml ファイルを参照してください。

  1. Helm CLI を使用して、構成セットとともにチャートをデプロイします。

    helm install cd-jenkins -f jenkins/values.yaml jenkinsci/jenkins --wait
    

    Jenkins インストールの構成に関する詳細については、Jenkins チャートのドキュメント ページをご覧ください。

  2. Jenkins Pod が Running 状態になり、コンテナが READY 状態になっていることを確認します。

    kubectl get pods
    

    READY 列に 2/2STATUS 列に Running が表示されます。Jenkins が初期化を完了するまでに数分かかる場合があります。

    NAME           READY   STATUS    RESTARTS   AGE
    cd-jenkins-0   2/2     Running   0          6m30s
    
  3. Kubernetes Service が適切に作成されたことを確認します。

    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. 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-jenkins" -o jsonpath="{.items[0].metadata.name}")
    kubectl port-forward $POD_NAME 8080:8080 >> /dev/null 2>&1 &
    
  2. Jenkins ユーザー インターフェースを開くには、Cloud Shell で [ウェブでプレビュー] をクリックし、[プレビューのポート: 8080] をクリックします。

    port8080

これで、Jenkins と GKE にアクセスできるようになりました。継続的デリバリー パイプラインでこれらのコンポーネントを使用して、このソリューションをさらに活用できます。

クリーンアップ

チュートリアルが終了したら、GCP で作成したリソースについて料金が発生しないようにクリーンアップします。

プロジェクトの削除

課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除するには:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

GKE クラスタの削除

  1. GKE クラスタを削除します。
    gcloud container clusters delete jenkins-cd --zone us-east1-d
    

次のステップ