Jenkins は継続的インテグレーションおよび継続的デプロイメント(CI/CD)プロセスを実装します。ACK クラスターに Jenkins をデプロイすることで、サービスの高可用性(HA)を確保し、運用・保守(O&M)コストを削減できます。本トピックでは、ACK クラスターへの Jenkins のデプロイ方法について説明し、シンプルなアプリケーション例を用いて、そのビルドおよびデプロイメント手順を実証します。
前提条件
Helm CLI がインストール済みであり、kubectl を使用してクラスターに接続済みである必要があります。詳細については、「Helm のインストール」および「kubectl を使用した ACK クラスターへの接続」をご参照ください。
注意事項
Jenkins システムの維持管理は開発者側の責任となります。本セクションでは、エンタープライズレベルのテクニカルサポートは提供されません。
Jenkins で使用される Helm Chart およびコンテナイメージは海外ソースから取得されるため、イメージのプルに失敗する場合があります。以下のソリューションをご参照ください:
Container Registry を使用して、海外ソースのイメージをサブスクライブします。手順については、「アーティファクトのサブスクリプション機能を用いた中国国外ソースからのイメージ同期」をご参照ください。
Global Accelerator (GA) インスタンスを作成し、そのグローバルアクセラレーションネットワークを活用してイメージを直接プルします。詳細については、「ACK におけるクロスリージョンコンテナイメージのプルを GA で高速化する方法」をご参照ください。
ステップ 1:Jenkins のデプロイ
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 をインストールします。
cicd名前空間を作成します。kubectl create ns cicdJenkins を
cicd名前空間にデプロイします。helm -n cicd install jenkins jenkins/jenkins \ --set persistence.storageClass="alicloud-disk-essd" \ --set persistence.size="20Gi" \ --set controller.serviceType="LoadBalancer" \ --set controller.admin.password="****"persistence.storageClass:必須。Jenkins の永続ストレージ領域 jenkins_home ディレクトリ内のファイルを保存するためのクラウドディスク永続ボリュームを作成します。"alicloud-disk-available"を指定すると、システムが利用可能なクラウドディスクタイプを自動的に選択します。persistence.size:必須。クラウドディスクのサイズです。Alibaba Cloud ECS のクラウドディスクの最小仕様は 20 GiB です。controller.serviceType:任意。Service のタイプです。デフォルト値は ClusterIP です。controller.admin.password:任意。管理者パスワードを指定します。デフォルトではランダムなパスワードが生成されます。
その他のデプロイパラメーターについては、「helm-charts」をご参照ください。
Jenkins Pod が正常に実行状態になるまで確認・待機します。
kubectl -n cicd get po期待される出力:
NAME READY STATUS RESTARTS AGE jenkins-0 2/2 Running 0 3m3s
Service の外部 IP アドレスを表示します。
LoadBalancer Service をデプロイした場合は、ブラウザから Jenkins サービスにアクセスします。
kubectl get -n cicd service期待される出力:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE jenkins LoadBalancer 192.168.***.*** 8.222.***.*** 8080:30949/TCP 2d17h jenkins-agent ClusterIP 192.168.***.* <none> 50000/TCP 2d17h
(任意)パイプラインタスクの作成
たとえば、first-pipeline という名前のパイプラインタスクを作成します。パイプラインをビルドする際、Jenkins はデフォルトで現在の ACK クラスターから動的に Slave Pod を起動し、ビルドタスクを実行します。ビルドタスク完了後、Slave Pod は直ちに解放されます。その他の Jenkins 構成情報については、「Jenkins」をご参照ください。
Jenkins にログインします。左側のナビゲーションウィンドウで、[新規アイテム] をクリックします。
[アイテム名の入力] エリアに first-pipeline と入力し、[パイプライン] タイプを選択して、[OK] をクリックします。
ページ上部の [パイプライン] タブをクリックし、[Hello World] テンプレートを選択して、[保存] をクリックします。

左側のナビゲーションウィンドウで、[今すぐビルド] をクリックしてビルドを実行します。
左側のナビゲーションウィンドウで、[ビルド履歴] をクリックし、[1#] をクリックしてパイプラインドキュメントページに移動し、[コンソール出力] をクリックしてパイプラインのビルド結果を確認します。
よくある質問
デフォルトのランダム Jenkins パスワードを取得する方法
Jenkins のデプロイ時にログインパスワードを指定しなかった場合、以下のコマンドを実行してデフォルトのランダム Jenkins パスワードを取得できます。
kubectl -n cicd exec -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo