このチュートリアルでは、ソフトウェア デリバリー パイプラインをオーケストレートできるように Google Kubernetes Engine(GKE)で Jenkins を設定する方法について説明します。
目標
- GKE を使用して Kubernetes クラスタを作成する。
- Helm を使用して Jenkins をインストールする。
- Jenkins に接続する。
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
- Google Kubernetes Engine
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE APIs.
環境の準備
最初にデプロイ環境を準備します。
Cloud Shell をアクティブにします。Cloud Shell では Google Cloud コンソールのコマンドラインにアクセスできるほか、Google Cloud での開発に必要な gcloud CLI などのツールも利用できます。Cloud Shell のプロビジョニングには数分かかる場合があります。
プロセスが完了すると、次の出力が表示されます。
Welcome to Cloud Shell! Type "help" to get started.
サンプルコードのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/continuous-deployment-on-kubernetes.git
この Git リポジトリには、Jenkins のデプロイに使用する Kubernetes マニフェストが含まれています。マニフェストとその設定については、Kubernetes Engine 用に Jenkins を構成をご覧ください。
サンプルコードのディレクトリに移動します。
cd continuous-deployment-on-kubernetes
GKE クラスタの作成
GKE クラスタをプロビジョニングします。この手順は完了までに数分かかる場合があります。
gcloud container clusters create jenkins-cd \ --zone us-east1-d --scopes cloud-platform
cloud-platform
スコープを使用すると、Jenkins が Cloud Source Repositories と Container Registry にアクセスできるようになります。クラスタに接続できることを確認します。
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
クラスタの RBAC 内に、自分をクラスタ管理者として追加します。これにより、クラスタ内で Jenkins 権限を付与できるようになります。
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin --user=$(gcloud config get-value account)
Jenkins のインストール
Helm を使用して、リポジトリから Jenkins をデプロイします。
Jenkins Helm チャート リポジトリを追加します。
helm repo add jenkinsci https://charts.jenkins.io helm repo update
カスタムの値ファイルを使用して Jenkins のインストールを構成します。構成の詳細については、jenkins/values.yaml
ファイルを参照してください。
Helm CLI を使用して、構成セットとともにチャートをデプロイします。
helm install cd-jenkins -f jenkins/values.yaml jenkinsci/jenkins --wait
Jenkins インストールの構成に関する詳細については、Jenkins チャートのドキュメント ページをご覧ください。
Jenkins Pod が
Running
状態になり、コンテナがREADY
状態になっていることを確認します。kubectl get pods
READY
列に2/2
、STATUS
列にRunning
が表示されます。Jenkins が初期化を完了するまでに数分かかる場合があります。NAME READY STATUS RESTARTS AGE cd-jenkins-0 2/2 Running 0 6m30s
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 への接続
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 &
Jenkins ユーザー インターフェースを開くには、Cloud Shell で [ウェブでプレビュー] をクリックし、[プレビューのポート: 8080] をクリックします。
これで、Jenkins と GKE にアクセスできるようになりました。継続的デリバリー パイプラインでこれらのコンポーネントを使用して、このソリューションをさらに活用できます。
クリーンアップ
チュートリアルが終了したら、GCP で作成したリソースについて料金が発生しないようにクリーンアップします。
プロジェクトの削除
課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
GKE クラスタの削除
- GKE クラスタを削除します。
gcloud container clusters delete jenkins-cd --zone us-east1-d
次のステップ
GKE で Jenkins を使用するためのおすすめの方法について学習する。
GKE 用に Jenkins を構成する方法について学習する。
Jenkins を使用した GKE への継続的なデプロイの設定方法を学習する。
Google Cloud に関するリファレンス アーキテクチャ、図、チュートリアル、ベスト プラクティスを確認する。Cloud Architecture Center を確認します。