フォーム読み込み中
皆さんこんにちは。クラウドエンジニアのKangです。
この記事ではServerlessKubernetes にJenkinsをデプロイし、高可用性、柔軟なスケーリング、低コストの自動化CI/CD(継続的インテグレーション/継続的デリバリー) システムを構築する方法を紹介します。
Kubernetes masterノードのシングルポイント障害、リソースの利用率が低い、システムの拡張性が悪いと言った問題を解決することを目指します。
Kubernetes Cloudのシステム設定にはServiceAccount 認証とサーティフィケート認証の二つ方法があります。ここでSerivceAccount認証方法で設定します。
名前空間をデフォルトのServiceAccountのRBAC認証により、名前空間ベースのきめ細かいリソースアクセス制御が可能です。
3.1.1 ASKのCloudShellでjenkinsroleのロールを作成します。
kubectl create role jenkinsrole --verb=get --verb=list --verb=create --verb=update --verb=patch --verb=delete --resource=pods
3.1.2 ASKのCloudShellでRolebindingを作成します。
RBACでjenkinsroleのロールをPodリソースへの読み取りと書き込みのアクセス権限を付与し、RolebindingでjenkinsroleのロールをKubernetes のデフォルト名前空間のデフォルトServiceAccountにバインドします。
kubectl create rolebinding jenkinsbinding --role=jenkinsrole --serviceaccount=default:default
3.2.1 Serverless Kubernetesクラスターのapiserverアドレスを取得します。
ASKインスタンスをクリックし、基本情報画面でapiserverアドレスを取得します。
https://47.74.xx.xx:6443
3.2.2 システム設定は下記のように設定しています。
Jenkins Dashboard → Manage Jenkins → Config System
3.2.3 JenkinsシステムのKubernetesCloud設定を実行します。
Jenkins Dashboard → Manage Jenkins → Config System→ Cloud → a separate configuration page →Kubernetesの順に設定します。
3.2.4 KubernetesCloud詳細を設定します。
名前:Kubernetes
Kubernetesアドレス:https://47.74.xx.xx:6443
Disable https certificate check:チェックオン
名前空間:default
3.2.5 ASKインスタンスの接続情報画面でクラスタークレデンシャル情報をk8s.confファイルに保存します。
3.2.6 クレデンシャルをk8s.confファイルを選択し、設定します。
3.2.7 クレデンシャルの接続テストを実行します。
接続テストはOKですので、設定を保存します。
3.2.8 Jenkinsのアドレスとチャンネルを取得します。
SKインスタンス→Network→Serivceで、JenkinsとJenkinsAgentのExternalエンドポイントでJenkinsアドレスとJenkinsトンネルを取得します。
3.2.9 Jenkinsのアドレスとチャンネルを設定します。
Jenkins Dashboard → Manage Jenkins → Config System→ Cloud → a separate configuration page→ JenkinsアドレスとJenkinsトンネルを設定し、保存します。
ここでGithubにデモコードプロジェクトを用いて、JenKinsのCIを実行します。
前提条件:
Githubアカウントが事前に作成されていること。
ローカル環境でgitをインストールしていること。
4.1.1 Githubにログインし、Projectを作成します。
4.1.2 ローカルでコードを初期化し、デモコードを編集します。
git init
4.1.3 ローカルでデモコードを編集します。
4.1.4 ローカルデモコードを編集します。
git add .
git status
4.1.5 ローカルデモコードをGitProjectへコミットします。
次のコマンドを入力し、デモコードをGitProjectにコミットします。
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/nancyli2008/jenkins-demo.git
git push -u origin main
4.1.6 Githubでコードを確認します。
4.1.7 Projectをパブリックに設定します。
先程、GithubにコミットしたProjectが外部からアクセスするために、Projectのプロパティを設定します。
4.2.1 Dashboard→Mavenプロジェクトを作成します。
4.2.2 ラベルを設定します。
4.2.3 デモコードのgit repositoryURL を取得します。
https://github.com/nancyli2008/jenkins-demo.git
4.2.4 ソースコードを設定します。
4.2.5 ビルドトリガを設定します。
以下の設定をすると、Githubにコードがコミットされたらビルドをトリガーされます。
4.2.6 ビルド環境を設定します。
以下のコマンドでビルド環境を設定します。
Root POM:pom.xml
Goals and options:clean compile spring-boot:start package test
-Dserver.port=18080
clean compile spring-boot:start package test -Dserver.port=18080
4.2.7 demo_projectが作成されていることを確認できます。
次はソースコードが自動的にビルドできるようにトリガーを設定します。
4.3.1 JenkinsでWebhookを設定します。
4.3.1.1 JenkinsのDashboard→Jenkins管理をクリックします。
4.3.1.2 システム設定をクリックします。
4.3.1.3 GithubのOverride Hook URLを設定し、保存します。
以下の GithubのOverride Hookアドレスを入力します。
http://47.74.18.167:8080/github-webhook/
4.3.2 GithubにデモコードのWebhookを設定します。
4.3.2.1 プロジェクトの設定をクリックし、Webhookをクリックします。
4.3.2.2 GithubデモプロジェクトでWebhookを設定します。
本記事では、Alibaba CloudでJenkinsを使ったCI/CDの構築について、Jenkinsの共通設定とCIの実行までを解説しました。
つづきは、Alibaba CloudでJenkinsを使ったCI/CD(その三)をご覧ください。
条件に該当するページがございません