このチュートリアルでは、Helm を使用して ACK サーバーレスクラスターに Jenkins をデプロイし、最初のパイプラインビルドを実行する手順を説明します。Jenkins は、永続的な Pod 上でコントローラーを実行し、ビルドジョブごとにクラスター内にエージェント Pod を動的に作成します。
前提条件
開始する前に、以下が準備できていることを確認してください。
-
ACK サーバーレスクラスター。詳細については、「ACK サーバーレスクラスターの作成」をご参照ください。
-
クラスターに接続するように構成された kubectl。詳細については、「kubectl を使用した ACK クラスターへの接続」をご参照ください。
注意事項
Jenkins はコミュニティによってメンテナンスされているオープンソースツールです。Alibaba Cloud は Jenkins のテクニカルサポートを提供していません。Jenkins のインストール環境のメンテナンスは、お客様の責任で行ってください。
ステップ1:Jenkins のデプロイメント
Helm リポジトリの設定
Jenkins Helm リポジトリを追加し、ローカルのチャートインデックスを更新します。
helm repo add jenkins https://charts.jenkins.io
helm repo update
期待される出力:
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "jenkins" chart repository
Update Complete. Happy Helming!
Jenkins Helm リポジトリは中国本土以外でホストされています。ご利用の ACK サーバーレスクラスターが中国本土にデプロイされている場合、helm repo update コマンドの実行に通常より時間がかかることがあります。
Jenkins のインストール
-
cicd名前空間を作成します。kubectl create ns cicd -
Jenkins のホームディレクトリ用に NAS ボリュームを作成します。永続ストレージがない場合、コントローラー Pod が再起動するたびに、すべての Jenkins の構成とジョブ履歴が失われます。次に進む前に、ネットワークアタッチトストレージ (NAS) ボリュームと、
pvc-nasという名前の永続ボリューム要求 (PVC) をcicd名前空間に作成してください。-
ご利用のクラスターが Container Storage Interface (CSI) プラグインを使用している場合は、「静的にプロビジョニングされた NAS ボリュームのマウント」をご参照ください。
-
ご利用のクラスターが FlexVolume プラグインを使用している場合は、「静的にプロビジョニングされた NAS ボリュームのマウント」をご参照ください。
-
-
cicd名前空間に Jenkins をデプロイします。helm -n cicd install jenkins jenkins/jenkins \ --set persistence.existingClaim=pvc-nas \ --set controller.serviceType="LoadBalancer" \ --set controller.adminPassword="admin"パラメーター 説明 必須 persistence.existingClaim=pvc-nasNAS ボリュームをマウントする PVC の名前。 cicd名前空間に作成した PVC と一致する必要があります。はい controller.serviceType="LoadBalancer"Jenkins サービスをクラウドロードバランサー経由で外部に公開します。デフォルトは ClusterIPで、クラスター内からのみアクセス可能です。ACK サーバーレスクラスターでは、ブラウザから Jenkins UI にアクセスできるように、この値をLoadBalancerに設定します。いいえ controller.adminPassword="admin"固定の管理者パスワードを設定します。省略した場合、Jenkins はランダムなパスワードを生成します。このパラメーターを省略した場合は、「ランダムに生成されたパスワードの取得」をご参照ください。 いいえ 利用可能なすべてのパラメーターについては、「jenkins/helm-charts」をご参照ください。
-
Jenkins コントローラー Pod のステータスが
Runningになるまで待ちます。kubectl -n cicd get po期待される出力:
NAME READY STATUS RESTARTS AGE jenkins-0 2/2 Running 0 3m3s
Jenkins へのアクセス
Pod が実行中になったら、ブラウザを開き、Jenkins サービスの外部 IP アドレスにアクセスします。ユーザー名 admin と、インストール時に設定したパスワードでログインします。
外部 IP アドレスを調べるには、次のコマンドを実行します。
kubectl -n cicd get svc jenkins
EXTERNAL-IP 列にロードバランサーの IP アドレスが表示されます。
ランダムに生成されたパスワードの取得
インストール時に controller.adminPassword を設定しなかった場合は、次のコマンドで生成されたパスワードを取得します。
kubectl -n cicd exec -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo
インストール後のサービスタイプの変更
デフォルトの ClusterIP サービスタイプで Jenkins をデプロイし、後からロードバランサー経由で公開したい場合は、次のコマンドを実行します。
kubectl -n cicd patch svc jenkins -p '{"spec": {"type": "LoadBalancer"}}'
ステップ2:パイプラインビルドの作成
Jenkins は Kubernetes プラグインを介して ACK サーバーレスクラスターと統合します。ビルドをトリガーすると、Jenkins はクラスター内にエージェント Pod を動的に作成してジョブを実行します。Pod には、Jenkins エージェントとして機能し、コントローラーに接続する jnlp コンテナが含まれています。ビルドが完了すると、Jenkins はすぐにエージェント Pod を終了させるため、クラスターリソースはアクティブなビルド中にのみ消費されます。
以下の手順では、Hello World テンプレートを使用して first-pipeline という名前のパイプラインビルドを作成します。
-
Jenkins にログインし、左側のナビゲーションウィンドウで [新規アイテム] をクリックします。
-
[項目名を入力] フィールドに
first-pipelineと入力し、[パイプライン] を選択して [OK] をクリックします。 -
構成ページの上部にある [パイプライン] タブをクリックします。[Hello World] テンプレートを選択し、[保存] をクリックします。

-
左側のナビゲーションウィンドウで [今すぐビルド] をクリックしてビルドをトリガーします。
-
ビルドが開始されたら、左側のナビゲーションウィンドウで [ビルド履歴] をクリックし、次に [1#] をクリックしてビルド詳細を開きます。[コンソール出力] をクリックしてビルドログを表示し、ビルドが成功したことを確認します。
次のステップ
-
エージェント Pod テンプレートをカスタマイズして、特定のコンテナイメージを使用したり、言語固有のビルド用に複数のコンテナを追加したりします。詳細については、「Jenkins Kubernetes Plugin」をご参照ください。
-
ソースコード管理と Webhook を構成して、コードの変更時にパイプラインビルドを自動的にトリガーします。詳細については、「Jenkins ドキュメント」をご参照ください。