Alibaba CloudでJenkinsを使ったCI/CD(その二)

2023年9月8日掲載

img-alibaba-cloud-linux-migration-blog-20230519-001

皆さんこんにちは。クラウドエンジニアのKangです。

この記事ではServerlessKubernetes にJenkinsをデプロイし、高可用性、柔軟なスケーリング、低コストの自動化CI/CD(継続的インテグレーション/継続的デリバリー) システムを構築する方法を紹介します。

目次

  • この記事ではAlibaba Cloud Container Registryサービスを利用し、Jenkinsを使ったCI/CDシステムを構築します。
  • ある程度Alibaba CloudとKubernetesに関する知識がある事を前提に書いています。
  • Kubernetes masterノードのシングルポイント障害、リソースの利用率が低い、システムの拡張性が悪いと言った問題を解決することを目指します。

はじめに

本記事は、ステップバイステップで丁寧に説明していこうと思います。そのため、記事が長くなっているため4つの記事に分割して解説していきます。

・はじめに
・構成図
・Pipeline
・使用するリソース
・データフロー
1. 構築用のリソースを作成します。
2. ASKにJenkinsをデプロイします。
その一
3. Jenkinsの共通設定を実行します。
4. JenkinsのCIを実行します。
その二
本記事
5. JenkinsのCDを実行します。その三
6. CICDデモを検証します。
・さいごに
その四

 

3. Jenkinsの共通設定を実行します。

3.1 ASKでServiceAccountのRBAC認証を設定します。

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
01

3.1.2  ASKのCloudShellでRolebindingを作成します。

RBACでjenkinsroleのロールをPodリソースへの読み取りと書き込みのアクセス権限を付与し、RolebindingでjenkinsroleのロールをKubernetes のデフォルト名前空間のデフォルトServiceAccountにバインドします。

kubectl create rolebinding jenkinsbinding --role=jenkinsrole --serviceaccount=default:default
02

3.2  JenkinsのKubernetesCloud設定を実行します。

3.2.1  Serverless Kubernetesクラスターのapiserverアドレスを取得します。

ASKインスタンスをクリックし、基本情報画面でapiserverアドレスを取得します。

https://47.74.xx.xx:6443

03

3.2.2  システム設定は下記のように設定しています。

Jenkins Dashboard → Manage Jenkins → Config System

04
05

3.2.3  JenkinsシステムのKubernetesCloud設定を実行します。

Jenkins Dashboard → Manage Jenkins → Config System→  Cloud → a separate configuration page →Kubernetesの順に設定します。

06
07
08
09

3.2.4  KubernetesCloud詳細を設定します。

名前:Kubernetes

Kubernetesアドレス:https://47.74.xx.xx:6443

Disable https certificate check:チェックオン

名前空間:default

10
11

3.2.5  ASKインスタンスの接続情報画面でクラスタークレデンシャル情報をk8s.confファイルに保存します。

12
13
14

3.2.6  クレデンシャルをk8s.confファイルを選択し、設定します。

15
16
17

3.2.7  クレデンシャルの接続テストを実行します。

18

接続テストはOKですので、設定を保存します。

3.2.8  Jenkinsのアドレスとチャンネルを取得します。

SKインスタンス→Network→Serivceで、JenkinsとJenkinsAgentのExternalエンドポイントでJenkinsアドレスとJenkinsトンネルを取得します。

19

3.2.9  Jenkinsのアドレスとチャンネルを設定します。

Jenkins Dashboard → Manage Jenkins → Config System→  Cloud → a separate configuration page→ JenkinsアドレスとJenkinsトンネルを設定し、保存します。

20

4. JenkinsのCIを実行します。

4.1 デモコードプロジェクトを用意します。

ここでGithubにデモコードプロジェクトを用いて、JenKinsのCIを実行します。

前提条件:

 Githubアカウントが事前に作成されていること。

 ローカル環境でgitをインストールしていること。

4.1.1  Githubにログインし、Projectを作成します。

21
22
23

4.1.2 ローカルでコードを初期化し、デモコードを編集します。

git init

4.1.3  ローカルでデモコードを編集します。

24

4.1.4  ローカルデモコードを編集します。

git add .
git status
25

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
26

4.1.6  Githubでコードを確認します。

27

4.1.7  Projectをパブリックに設定します。

先程、GithubにコミットしたProjectが外部からアクセスするために、Projectのプロパティを設定します。

28
29
30
31

4.2 Jenkinsのプロジェクトを作成します。

4.2.1  Dashboard→Mavenプロジェクトを作成します。

32

4.2.2  ラベルを設定します。

33

4.2.3  デモコードのgit repositoryURL を取得します。

https://github.com/nancyli2008/jenkins-demo.git
34

4.2.4  ソースコードを設定します。

35

4.2.5  ビルドトリガを設定します。

以下の設定をすると、Githubにコードがコミットされたらビルドをトリガーされます。

36

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
37

4.2.7  demo_projectが作成されていることを確認できます。

38
39

4.3  自動ビルドのトリガーを設定します。

次はソースコードが自動的にビルドできるようにトリガーを設定します。

4.3.1  JenkinsでWebhookを設定します。

4.3.1.1  JenkinsのDashboard→Jenkins管理をクリックします。

40

4.3.1.2  システム設定をクリックします。

41

4.3.1.3  GithubのOverride Hook URLを設定し、保存します。

以下の GithubのOverride Hookアドレスを入力します。

http://47.74.18.167:8080/github-webhook/
42

4.3.2 GithubにデモコードのWebhookを設定します。

4.3.2.1  プロジェクトの設定をクリックし、Webhookをクリックします。

43

4.3.2.2  GithubデモプロジェクトでWebhookを設定します。

44

その二のさいごに

本記事では、Alibaba CloudでJenkinsを使ったCI/CDの構築について、Jenkinsの共通設定とCIの実行までを解説しました。

つづきは、Alibaba CloudでJenkinsを使ったCI/CD(その三)をご覧ください。

・はじめに
・構成図
・Pipeline
・使用するリソース
・データフロー
1. 構築用のリソースを作成します。
2. ASKにJenkinsをデプロイします。
その一
3. Jenkinsの共通設定を実行します。
4. JenkinsのCIを実行します。
その二
本記事
5. JenkinsのCDを実行します。その三
6. CICDデモを検証します。
・さいごに
その四

 

関連サービス

Alibaba Cloud

Alibaba Cloudは中国国内でのクラウド利用はもちろん、日本-中国間のネットワークの不安定さの解消、中国サイバーセキュリティ法への対策など、中国進出に際する課題を解消できるパブリッククラウドサービスです。

MSPサービス

MSP(Managed Service Provider)サービスは、お客さまのパブリッククラウドの導入から運用までをトータルでご提供するマネージドサービスです。

おすすめの記事

条件に該当するページがございません