Slide 1

Slide 1 text

1 OSSによるCI/CD環境構築 Cheng ちん 2019/07/05

Slide 2

Slide 2 text

About me Jianqiang Cheng(ちん) Field Engineer at Rancher Labs. [email protected] slack.rancher.jp ■Favorite technologies: Rancher, Kubernetes, AWS, Jenkins. ■Certifications: AWS Certified Solutions Architect – Professional Certified Kubernetes Administrator Certified Kubernetes Application Developer

Slide 3

Slide 3 text

3 目次 • CI/CDとは • RancherによるCI/CD環境構築 • Rancher PipelineによるCI/CD • まとめ

Slide 4

Slide 4 text

4 CIとは CIとは「Continuous Integration(継続的インティグレーション)」の略です。 • 開発者がソースコードを頻繁にソースリポジトリにマージし、その度に⾃動化されたビルド、単体テストと静的コード解析を 実⾏します。 Compile & Package Run Unit Tests Static Code Analysis Committer: jdoe Story:25 Commit ID: 113 CODE UNIT TEST ■ポイント • 頻繁にコードを共有リポジトリにコミットする • コミットをトリガーに⾃動ビルドとテストが実⾏される • ビルドとテストが失敗したときのフィードバック、問題 が即座に発⾒される

Slide 5

Slide 5 text

5 CDとは CDとは「Continuous Delivery(継続的デリバリー)」の略です。 • CIのビルドやテストだけでなく、その後のテスト環境などへのデプロイ、テスト、リリースなどのプロセスを⾃動化します。 ■ポイント • インフラ(クラウド,Docker,k8s)構築の⾃動化 • テストの⾃動化 • デプロイの⾃動化 • アジャイル開発(早くテスト/リリースしてフィー ドバックを得るのサイクル) Create clustered env Tear down ST env Deploy Code Run Perf Test Run Security Test Run Ops Test Prod deploy Run Tests Create ST env Deploy Code Load Test Data Compile & Package Run Unit Tests Static Code Analysis Committer: jdoe Story:25 Commit ID: 113 CODE UNIT TEST LINK TEST ASSEMBLY TEST BUSINESS PROCESS TEST USER ACCEPTANCE TEST

Slide 6

Slide 6 text

Build Environments Artifacts Manager Code Quality Code Review Pipeline Tool SCM Test Automation CI/CDのコンポネート構成図

Slide 7

Slide 7 text

Projects Projects-A Projects-B(K8S) Projects-C(AWS) Pipeline Jenkins Jenkins Jenkins SCM Gitlab Github Bitbucket Build Gradle, Grunt Maven AWS CodeBuild Static Code Analysis SonarQube SonarQube SonarQube Artifacts Nexus, Docker registry Harbor Nexus, S3 Test Selenium, Jmeter Selenium Selenium Deploy Jenkins Plugin, Ansible kubectl, helmCLI AWS CloudFormation AWS CodeDeploy CI/CDのツール構成例

Slide 8

Slide 8 text

CI/CDのツールの連携例 CICD環境 ① Gitリポジトリに資 源をプッシュ ② ・チェックアウト ・ビルド ・単体テスト ・コード解析を実施 ⑥アーティファクト リポジトリに資源 (Jar,Docker Image) を登録 開発者 /リーダ Ansible デプロイ対象 ⑧DB資源をマイグ レーション ③ ・単体テスト、 カバレッジレ ポートを表示 リーダ ④ ・QAチェック ・リリースブラン チへのマージ ⑨Slack通知・ ChatOps ⑦アーティファクトリポジトリの 資源をデプロイ ⑤ Dokcerビルド、プッ シュ

Slide 9

Slide 9 text

9 RancherによるCI/CD環境構築 - Rancherとは ■Rancherとは オンプレミスや、あらゆるクラウドサービス上にKubernetesクラスタの構築及び管理ができるコンテ ナー管理プラットフォーム Unified Cluster Operations Self Service Kubernetes Environments Infrastructure GKE AKS EKS Any RKE RKE - User Interface - Service Catalog - CI/CD - Monitoring - Logging - Alerting - Global DNS - Backups & DR ITOps DevOps - Provisioning - Auth/RBAC - Policy - Security - Capacity - Cost

Slide 10

Slide 10 text

10 RancherによるCI/CD環境構築 - Rancherとは ■Rancherとは • Rancher Kubernetes Engine(RKE)経由 で、あらゆるインフラ環境上にKubernetes クラスタを構築と管理 • Amazon EKS、Azure AKS、Google GCEな どのマネジメントのクラスタを構築と管理 • 既存のKubernetesクラスタをインポートし てRancherで管理

Slide 11

Slide 11 text

11 RancherによるCI/CD環境構築 - Rancherカタログ機能とは ■Rancherカタログ機能とは Helmベースのアプリケーションをカタログ画⾯から選択し、画⾯から必要なパラメーターを⼊⼒し、直ちに指定したクラス ターのnamespaceにデプロイできる機能です。 ※Helmは、Chartというマニフェストをテンプレート化したパッケージを管理するKubernetesのパッケージマネージャーです。

Slide 12

Slide 12 text

12 RancherによるCI/CD環境構築 ■前提条件: Rancher Serverを⽴上げ済 Rancher上に1つのk8sクラスターを作成済 ■構築⼿順 Rancherカタログ機能から、下記のCI/CDのツールをインストールします。 ※ CI/CDのツールのインストールは、オフィシャルなHelm Chartを使⽤してインストールする為、 Rancherがなくても、Helm CLIだけでも、構築できます。 ・アプリのソースコードを管理 ・アプリのHelm Chartを管理 ・CI/CDのPipeline管理 ・Master /Slave構成でPipeline実行毎に、Slaveを起動 ・コンテナイメージを管理 ・プライベートライブラリ管理 ・リモートリポジトリをローカルキャッシュ ・ソースコードの静的解析 GitLab Jenkins Nexus SonarQube 役割 ツール

Slide 13

Slide 13 text

13 RancherによるCI/CD環境構築 - Jenkins ■Rancherカタログ画⾯からJenkinsを選択し、Jenkins設定画⾯から必要なパラメーターを⼊⼒してデプ ロイします。

Slide 14

Slide 14 text

14 RancherによるCI/CD環境構築 - Jenkins ■Jenkins設定画⾯上の項⽬説明(100項⽬ぐらい)に従って、 Answersのところにデフォルト設定値を上書きできます。 • 外部からのアクセス(LB,Ingress,NodePort) • 永続化ボリュームPVC • データバックアップ先 • LDAP連携 • など

Slide 15

Slide 15 text

15 RancherによるCI/CD環境構築 - Jenkins ■Jenkinsインストール結果確認 ■参考:Jenkinsの初期ユーザーアカウント情報をクラスターのsecretsから参照

Slide 16

Slide 16 text

16 RancherによるCI/CD環境構築 - Jenkins ■Jenkins-kubernetesプラグインがデフォルトで設定されています為、 追加設定なしで、Jenkins Dynamicスレーブ(Pod)が対応されています。 ■参考:複数なJenkinsジョブが同時実行時に、必要な数のスレーブ(Pod)が自動に作成でされています。

Slide 17

Slide 17 text

17 RancherによるCI/CD環境構築 - SonarQube ■同様なやり⽅で、SonarQubeをデプロイします。

Slide 18

Slide 18 text

18 RancherによるCI/CD環境構築 - Nexus ■同様なやり⽅で、Nexusをデプロイします。

Slide 19

Slide 19 text

19 RancherによるCI/CD環境構築 - Gitlab ■Helmのオフィシャルのリポジトリには、最新版Gitlabがない為、GitlabのオフィシャルのChartリポジト リをカタログに追加します。

Slide 20

Slide 20 text

20 RancherによるCI/CD環境構築 - Gitlab ■同様なやり⽅で、Gitlabをデプロイします。

Slide 21

Slide 21 text

21 RancherによるCI/CD環境構築 – そのた ■同様なやり⽅で、そのたのOSSもデプロイできます。 Helm chartが存在すれば、カタログ画⾯からデプロイできます。

Slide 22

Slide 22 text

Rancher Pipelinesとは Rancherに統合されたCI/CD機能です。Pipelineの編集は画⾯UIから、⾏えます。 パイプラインの実⾏にJenkinsを、各種実⾏ログの保管にMinioを、そしてコンテナイメージの保管にDockerレジストリ(デ フォルトの場合)を利⽤しています。 Rancher Pipelinesについて ■参考:Pipelinesの各ステージの作成変更画面 ■参考:Pipelinesのステップの作成変更画面

Slide 23

Slide 23 text

CI/CDのPipelineの実⾏結果は、画⾯から確認できます。 Rancher Pipelinesについて ■参考:Pipelinesの各ステージの実行結果やログの確認画面 ■参考:通知設定がありの場合、Pipelinesの実行結果をSlackに通知

Slide 24

Slide 24 text

Rancher Pipelineには、下記の5種類のPipelineのステップを 事前に⽤意されています。 Pipelinesの設定 ステップ種類 ⽤途 Run Script ステップの実⾏環境のベースイメージを指定して、スク リプトを実⾏する Build and Publish Images Dockerイメージのビルドとパッシュ Publish Catalog Template カタログのHelm Chartの更新(バージョンアップ) Deploy YAML yamlファイルにるデプロイ Deploy Catalog App カタログ機能によるデプロイ ■参考:Nexus、Sonarqubeと連携するビルドのステップの設定例↓

Slide 25

Slide 25 text

Pipelineの編集は、yamlに対して直接編集もできます。 Pipelinesの設定

Slide 26

Slide 26 text

26 SonarQube Nexus ・静的コード解析 GitLab ライブラリ管理: ・サードパーティlib ・プライベートlib Push 開発者 Jenkins Jenkins Jenkins 各種自動通知 Slaveが動的に拡張 テスト環境、ステージング環境、本番環境 APP ・ソース管理 ・Helm Chart管理 Helm CLIやRancherカタログ機能による デプロイ ・Helm ChartがGitlabから取得 ・DockerイメージがGitlabから取得 APP APP Rancher Pipeline機能 Kubernetesクラスター Rancher PipelineによるCICD環境の構成例 Rancher Catalogs機能

Slide 27

Slide 27 text

• Rancher カタログ機能で、GUIからOSSのCICDツールを簡単にデプロイできます。 • Rancher Pipelinesの分岐制御はまだ弱いですが、Rancher上にシンプルなPipelinesを作成する 際にはお勧めです。 • 今回は、 CICDツールのデプロイレベルの説明に留まっており、ツール間の連携などのツールレ ベルの設定、Pipelineの作成について、実際には色々ハマるところがあります。 まとめ

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

↓Rancher Day2019の特割↓ https://eventregist.com/e/jZDKp4ZpEWRN パスワードが #rdt2019

Slide 32

Slide 32 text

↓ Rancher Day2019特割↓ パスワードが #rdt2019

Slide 33

Slide 33 text

↓Rancher Workshop大阪↓ 8/7 (水)に、大阪で、下記の無料のRancher Workshopを実施します。 • Rancher Workshop 大阪 8/7 第1部Rancherハンズオン 〜話題のRancherを触ってみよう〜 ■時間: 2019/08/07(水) 13:30 〜 15:00 ■会場:TKPガーデンシティ東梅田 • Rancher Workshop 大阪 8/7 第2部Rancherハンズオン 〜話題のRancherを触ってみよう〜 ■時間: 2019/08/07(水) 15:30 〜 17:00 ■会場:TKPガーデンシティ東梅田 第一部と第二部が同じの実施内容となっています。

Slide 34

Slide 34 text

↓Rancher Workshop大阪↓ https://connpass.com/event/138399/ https://connpass.com/event/138469/ 第一部と第二部が同じの実施内容となっています。

Slide 35

Slide 35 text

Thanks ご静聴、ありがとうございます。