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

0808-OSSによるCI_CD環境構築.pdf

cheng
August 08, 2019

 0808-OSSによるCI_CD環境構築.pdf

cheng

August 08, 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:
  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(ܧଓతσϦόϦʔ)」ͷུͰ͢ɻ • $*ͷϏϧυ΍ςετ͚ͩͰͳ͘ɺͦͷޙͷςετ؀ڥͳͲ΁ͷσϓϩΠɺςετɺϦϦʔεͳͲͷϓϩηεΛࣗ ಈԽ͠·͢ɻ ˙ϙΠϯτ • Πϯϑϥ(Ϋϥ΢υ,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 GKEͳ ͲͷϚωδϝϯτͷΫϥελΛߏஙͱ؅ཧ • طଘͷΫϥελΛΠϯϙʔτͯ͠RancherͰ ؅ཧ
  9. 12 RancherʹΑΔCI/CD؀ڥߏங ˙લఏ৚݅ɿ Rancher্ʹCI/CD؀ڥ༻ͷΫϥελʔΛ࡞੒ࡁ ˙ߏஙखॱ RancherΧλϩάػೳ͔ΒɺԼهͷCI/CDͷπʔϧΛΠϯετʔϧ͠·͢ɻ ※ 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 ϚχϑΣετϑΝΠϧʹΔσϓϩΠ 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機能