Jenkinsは、継続的インテグレーションと継続的デプロイメント (CI/CD) を実装するために使用されます。 Container Service for Kubernetes (ACK) クラスターにJenkinsをデプロイして、サービスの高可用性を確保し、O&Mコストを削減できます。 このトピックでは、ACKクラスターにJenkinsをデプロイし、簡単なアプリケーションを作成してデプロイする方法について説明します。
前提条件
ACKクラスターが作成されます。 詳細については、「マネージド Kubernetes クラスターの作成」をご参照ください。
kubectlクライアントがクラスターに接続されています。 詳細については、「kubectl を利用した Kubernetes クラスターへの接続」をご参照ください。
CoreDNSはkube-system名前空間で期待どおりに実行されています。
[デプロイメント] ページで、kube-system名前空間を選択し、corednsを検索します。 CoreDNSポッドのステータスが正常であることを確認します。
注意事項
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!⎈
説明上記のリポジトリは、中国本土の外部にデプロイされたHalmチャートリポジトリです。 したがって、中国本土にデプロイされたACKクラスターからリポジトリを設定すると、設定に時間がかかる場合があります。
Jenkinsをインストールします。
次のコマンドを実行して、
cicd
という名前空間を作成します。kubectl create ns cicd
次のコマンドを実行して、
cicd
名前空間にJenkinsをデプロイします。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="admin"
persistence.storageClass="alicloud-disk-available": 利用可能なクラウドディスクタイプを自動的に選択し、jenkins_homeディレクトリにファイルを保持するディスクボリュームを作成します。 This parameter is required.
persistence.size="20Gi": Elastic Compute Service (ECS) クラウドディスクの最小容量を20 GiBに設定します。 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にログインします。 左側のナビゲーションウィンドウで、[新しい項目] をクリックします。
では、アイテム名を入力セクション、最初のパイプライン、選択パイプラインをクリックし、OK.
ページの上部で、パイプラインタブを選択し、ハローワールドをクリックし、保存.
左側のナビゲーションウィンドウで、今すぐビルドビルドを実行します。
左側のナビゲーションウィンドウで、[ビルド履歴] をクリックします。 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