このトピックでは、ACKサーバーレスクラスターにJenkinsをデプロイし、簡単なアプリケーションを作成してデプロイする方法について説明します。
前提条件
ACKサーバーレスクラスターが作成されます。 詳細については、「ACKサーバーレスクラスターの作成」をご参照ください。
kubectlクライアントがACKサーバーレスクラスターに接続されています。 詳細については、「kubectlを使用したACKクラスターへの接続」をご参照ください。
注意事項
Jenkinsにはテクニカルサポートは提供されていません。 Jenkinsを使用する開発者は、Jenkinsを維持する必要があります。
ステップ1: Jenkinsのデプロイ
次のコマンドを実行してJenkins Helm Repoを設定します。
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!⎈
説明上記のリポジトリは、中国国外にデプロイされたHelmチャートリポジトリです。 したがって、中国本土にデプロイされたACKサーバーレスクラスターからリポジトリを設定すると、設定に時間がかかる場合があります。
Jenkinsをインストールします。
次のコマンドを実行して、
cicd
という名前空間を作成します。kubectl create ns cicd
NASボリュームを作成します。
Jenkinsホームディレクトリにデータを保存するNASボリュームを作成します。 そうしないと、Jenkinsマスターポッドの再起動後にすべてのJenkins設定が失われます。
Container Storage Interface (CSI) プラグインを使用する場合は、「静的にプロビジョニングされたNASボリュームのマウント」を参照してNASボリュームを作成します。
FlexVolumeプラグインを使用する場合は、「Mount a statically provisioned NAS volume」を参照して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-nas: NASボリュームのマウントに使用される永続ボリュームクレーム (PVC) の名前に値を設定します。 この例では、PVCはpvc-nasという名前で、
cicd
名前空間に属します。 This parameter is required.controller.serviceType="LoadBalancer": デフォルト値はClusterIPです。 このパラメーターはオプションです。
controller.adminPassword="admin": デフォルトのパスワードはランダムに生成されます。 このパラメーターはオプションです。 ランダムに生成されたデフォルトパスワードを取得する方法の詳細については、「ロードバランサーを使用してJenkins Serviceにアクセスし、ランダムに生成されたデフォルトパスワードを取得する」をご参照ください。
その他のパラメーターの詳細については、「helm-charts」をご参照ください。
次のコマンドを実行してJenkinsポッドのステータスを照会し、Jenkinsポッドが正常に実行されるまで待ちます。
kubectl -n cicd get po
期待される出力:
NAME READY STATUS RESTARTS AGE jenkins-0 2/2 Running 0 3m3s
webブラウザを使用してJenkinsにアクセスし、ユーザー名とパスワードを入力します。
詳細については、「ロードバランサーを使用してJenkins Serviceにアクセスし、ランダムに生成されたデフォルトパスワードを取得する」をご参照ください。
ステップ2: パイプラインビルドの作成
このセクションでは、最初のパイプラインのビルドを例として、パイプラインビルドの作成方法を示します。 パイプラインビルドを作成すると、JenkinsはACKサーバーレスクラスターでスレーブポッドを動的に起動し、デフォルトでビルドを実行します。 Jenkinsはビルドの実行を終了すると、すぐにスレーブポッドを解放します。 Jenkins設定の詳細については、「Jenkins」をご参照ください。
Jenkinsにログインし、左側のナビゲーションウィンドウで [新しい項目] をクリックします。
[アイテム名の入力] セクションで、[first-pipeline] と入力し、[Pipeline] を選択し、[OK] をクリックします。
ページの上部で、[パイプライン] タブをクリックし、[Hello World] テンプレートを選択し、[保存] をクリックします。
ページの左側のナビゲーションウィンドウで、[今すぐビルド] をクリックしてビルドを実行します。
ページの左側のナビゲーションウィンドウで、[ビルド履歴] をクリックし、1# をクリックしてパイプラインの詳細ページに移動します。 [コンソール出力] をクリックしてビルド結果を表示します。
ロードバランサーを使用してJenkins Serviceにアクセスし、ランダムに生成されたデフォルトパスワードを取得する
Jenkinsサービスの既定のタイプはClusterIPです。 ロードバランサーを使用してJenkins Serviceを公開する場合は、次のコマンドを実行します。
kubectl -n cicd patch svc jenkins -p '{"spec": {"type": "LoadBalancer"}}'
Jenkinsのデプロイ時にパスワードを指定しない場合は、次のコマンドを実行して、Jenkinsによってランダムに生成されたデフォルトのパスワードを取得します。
kubectl -n cicd exec -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo