Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OSSによるCI/CD環境構築

cheng
July 05, 2019

 OSSによるCI/CD環境構築

OSSによるCI/CD環境構築

cheng

July 05, 2019
Tweet

More Decks by cheng

Other Decks in Technology

Transcript

  1. 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
  2. 4 CIとは CIとは「Continuous Integration(継続的インティグレーション)」の略です。 • 開発者がソースコードを頻繁にソースリポジトリにマージし、その度に⾃動化されたビルド、単体テストと静的コード解析を 実⾏します。 Compile & Package

    Run Unit Tests Static Code Analysis Committer: jdoe Story:25 Commit ID: 113 CODE UNIT TEST ▪ポイント • 頻繁にコードを共有リポジトリにコミットする • コミットをトリガーに⾃動ビルドとテストが実⾏される • ビルドとテストが失敗したときのフィードバック、問題 が即座に発⾒される
  3. 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
  4. Build Environments Artifacts Manager Code Quality Code Review Pipeline Tool

    SCM Test Automation CI/CDのコンポネート構成図
  5. 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のツール構成例
  6. CI/CDのツールの連携例 CICD環境 ① Gitリポジトリに資 源をプッシュ ② ・チェックアウト ・ビルド ・単体テスト ・コード解析を実施

    ⑥アーティファクト リポジトリに資源 (Jar,Docker Image) を登録 開発者 /リーダ Ansible デプロイ対象 ⑧DB資源をマイグ レーション ③ ・単体テスト、 カバレッジレ ポートを表示 リーダ ④ ・QAチェック ・リリースブラン チへのマージ ⑨Slack通知・ ChatOps ⑦アーティファクトリポジトリの 資源をデプロイ ⑤ Dokcerビルド、プッ シュ
  7. 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
  8. 10 RancherによるCI/CD環境構築 - Rancherとは ▪Rancherとは • Rancher Kubernetes Engine(RKE)経由 で、あらゆるインフラ環境上にKubernetes

    クラスタを構築と管理 • Amazon EKS、Azure AKS、Google GCEな どのマネジメントのクラスタを構築と管理 • 既存のKubernetesクラスタをインポートし てRancherで管理
  9. 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 役割 ツール
  10. 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と連携するビルドのステップの設定例↓
  11. 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機能
  12. ↓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ガーデンシティ東梅田 第一部と第二部が同じの実施内容となっています。