Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GitlabとRancherによるCICD環境構築
Search
cheng
June 06, 2019
Technology
1.9k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitlabとRancherによるCICD環境構築
GitlabとRancherによるCICD環境構築
cheng
June 06, 2019
More Decks by cheng
See All by cheng
Rancher v2.10、v2.11 Update情報
qiang1981cn
0
170
Rancher v2.8 & v2.9 Update情報
qiang1981cn
0
210
OSSでセキュリティをCI/CDパイプラインに透過的に取込む方法
qiang1981cn
1
280
Rancher v2.6.5 Update情報
qiang1981cn
0
520
NeuVector(Container Security) online meetup 06/30
qiang1981cn
0
530
Harvester 2022/01, オンラインミートアップ
qiang1981cn
0
290
Japan International Kubernetes Day
qiang1981cn
0
120
2021/01/20(水) はじめてのRancherオンラインミートアップ
qiang1981cn
0
410
"Rancherハンズオン with v2.5" ワークショップ 2020/12
qiang1981cn
0
470
Other Decks in Technology
See All in Technology
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
160
Kiro Crewをはじめよう
kizawa2020
1
110
2026-10-01_MagicPod_QAハーネスエンジニアリングとQA組織の未来像
ynisqa1988
1
570
しろおびから始める!ログ活用の第一歩
shumei_ito
0
760
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
0
580
組み立てて楽しむ AWS Blocks 入門
kmiya84377
0
220
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
2
440
使いこなすために知っておきたい Azure SRE Agent アンチパターン
torumakabe
2
420
freeeらしさをAIとともに作る / Creating the freee Experience with AI
ymrl
0
220
FactoryBotアンチパターン / factory_bot anti-patterns
toshimaru
0
140
Essential architectural thinking (revised edition)
ufried
0
110
購入ドメインでの課題と取り組み
ykagano
0
150
Featured
See All Featured
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
450
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
540
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
720
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
210
Designing for humans not robots
tammielis
254
26k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
910
How to train your dragon (web standard)
notwaldorf
96
6.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Transcript
1 Gitlab+RancherによるCI/CD環境構築 Cheng ちん 2019/06/06
About me Jianqiang Cheng(ちん) Field Engineer at Rancher Labs.
[email protected]
slack.rancher.jp ▪Favorite technologies: Rancher, Kubernetes, AWS,Gitlab,Jenkins. ▪Certifications: AWS Certified Solutions Architect – Professional Certified Kubernetes Administrator Certified Kubernetes Application Developer
3 目次 • ⽬的 • Rancher Pipelineについて • CI/CDツール構成図 •
CI/CDツールの設定とインストール • Rancher Pipelineの設定 • まとめ
4 基本は、画面操作だけで、Gitlab+Rancherにより、CI/CD環境を構築したいです。 CI/CD環境構築において、GitlabとRancherの役割が下記となります。 ツール 役割 Gitlab ソースコード管理 Helm Chart定義管理 Dockerイメージ管理
Rancher CI/CDのインフラ環境構築と管理 CI/CDのPipeline管理(Rancher Pipeline機能) CI/CDツールのインストール(Rancher カタログ機能) ※Sonarqube、Nexus 目的
5 SonarQube Nexus ・静的コード解析 GitLab ライブラリ管理: ・サードパーティlib ・プライベートlib Push 開発者
Jenkins Jenkins Jenkins GitLab Containner Registry 各種自動通知 ・Dockerイメージの 管理 Slaveが動的に拡張 テスト環境、ステージング環境、本番環境 APP ・ソース管理 ・Helm Chart管理 Rancherカタログ機能やkubectlによるデ プロイ ・Helm ChartがGitlabから取得 ・DockerイメージがGitlabから取得 APP APP Checkout Build Unit Test Code Analysis Dokcer build/push ▪参考:Pipelinesのワークフローの1つの例 ※各ステージ調整可 Deploy Rancher Pipeline機能 Kubernetesクラスター CI/CDツール構成図 Rancher Catalogs機能 Gitlab.com Gitlab.com
Rancherとは、Kubernetesクラスタを作成管理できるコンテナ管理のプラットフォームです。 Rancher Pipelinesは、Rancherに統合されたCI/CD機能です。Pipelineの編集は画⾯UIから、⾏えます。 パイプラインの実⾏にJenkinsを、各種実⾏ログの保管にMinioを、そしてコンテナイメージの保管にDockerレジストリ(デ フォルトの場合)を利⽤しています。 Rancher Pipelinesについて ▪参考:Pipelinesの各ステージの作成変更画面 ▪参考:Pipelinesのステップの作成変更画面
CI/CDのPipelineの実⾏結果は、画⾯から確認できます。 Rancher Pipelinesについて ▪参考:Pipelinesの各ステージの実行結果やログの確認画面 ▪参考:通知設定がありの場合、Pipelinesの実行結果をSlackに通知
8 SonarQube Nexus ・静的コード解析 GitLab ライブラリ管理: ・サードパーティlib ・プライベートlib Push 開発者
Jenkins Jenkins Jenkins GitLab Containner Registry 各種自動通知 ・Dockerイメージの 管理 Slaveが動的に拡張 テスト環境、ステージング環境、本番環境 APP ・ソース管理 ・Helm Chart管理 Rancherカタログ機能やkubectlによるデ プロイ ・Helm ChartがGitlabから取得 ・DockerイメージがGitlabから取得 APP APP Checkout Build Unit Test Code Analysis Dokcer build/push ▪参考:Pipelinesのワークフローの1つの例 ※各ステージ調整可 Deploy Rancher Pipeline機能 Kubernetesクラスター CI/CDツール構成図 Rancher Catalogs機能 Gitlab.com Gitlab.com
9 ・アプリのソースコードを管理 ・アプリのHelm Chartを管理 ・アプリのDokcerイメージ管理 ・CI/CDのPipeline実行 ・Master /Slave構成でPipeline実行毎に、Slaveを起動 ・サードパーティライブラリ管理 ・プライベートライブラリ管理
・リモートリポジトリをローカルキャッシュ ・ソースコードの静的解析 ・各ツールからの連携情報の集約と表示 GitLab Jenkins Nexus SonarQube Slack クラウドサービスを利用する為、インストール不要 Rancher Pipeline機能による自動インストールの為、インストール不要 ※Rancher Pipeline経由で、 Jenkins Pipelineの作成と実行などの処理が自動に行 われる為、Jenkinsに対しての管理も不要 Rancher カタログ画面UIからインストール Rancher カタログ画面UIからインストール インストール不要 役割 ツール インストール方法 ・CI/CDのインフラ環境構築管理 ・CI/CDのPipeline編集管理(Rancher Pipeline機能) ・CI/CDツールのインストール(Rancher カタログ機能) Rancher docker runコマンド1つでインストールする。※ Single Node構成 https://rancher.com/docs/rancher/v2.x/en/installation/single-node/ ▪参考:要件に合わせて、ツールの組合せの変更が可能です 各ツールの役割とインストール方法
10 Gitlabの設定 - OAuth App連携設定 ・Rancher Pipelineと連携できるようにする為、 GitLabにApplicationsを登録します。 設定としては下記のRancher Pipeline
のGUI上の指⽰に従ってOAuth Appとしての連携設定を⾏います。
11 Gitlabの設定 - ソースコードとHelm Chartプロジェクトを登録 • ソースコードプロジェクト:ルートディレクトリに「.rancher-pipeline.yaml」pipeline定義ファイルを配置します。 yamlサンプルは、https://github.com/rancher/pipeline-example-XXX.gitから取得できます。 yamlの中身のステージ定義はRancher PipelineのGUIで編集できます。
• Helm Chartプロジェクト:公式サイトのガイドhttps://helm.sh/docs/chart_template_guide/#chartsに合せて、作成します。 helm create CHART コマンドにより雛形も作成できます。
12 Rancherの設定 - CI/CDのインフラ環境構築 • Single Node構成(開発やテスト環境の場合)でRancher Serverをインストール docker runコマンド1つで、
Rancher serverを立ち上げます。 • Rancher serverにクラスターを構築します。詳細な手順は、下記をご参照下さい↓ ↓ ↓ https://qiita.com/cheng_rancher/items/6260cbc81b9ef66d3344
13 Rancherの設定 - CI/CDツールのインストール RancherのCatalog機能は、アプリケーションをカタログ化することによって、何度でも簡単にアプリケーションデプロイを 実現しています。 カタログ画面に、対象のアプリを選択し、画面から必要なパラメーターを入力し、すぐ指定したところにデプロイできます。 カタログデプロイ画⾯に、nexusツールの各種のパラメータの設定できます。 ・Nexusのバージョン ・データの永続化のパラメータ
・外部からアクセス時のIngressの指定 ・など 今回は、HelmのOfficial chartを使⽤します。
14 Rancherの設定 - CI/CDツールのインストール 2〜3分後に、Nexusがデプロイされます。
15 Rancherの設定 - CI/CDツールのインストール Sonarqubeも、同じくRancherのCatalog機能利用で、デプロイします。
Pipelineの編集は画⾯UIから、⾏えます。 • ステージ追加 • ステップ追加 • ステップの編集 • Pipeline実⾏結果の通知(Slack、Emailなど) •
など Pipelinesの設定
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と連携するビルドのステップの設定例↓
Pipelineの編集は、yamlに対して直接編集もできます。 Pipelinesの設定
Pipelineの起動トリガー ・⼿動 ・⾃動 イベントは、push, pull request, tagです。 Pipelinesの実行
Pipelinesの各ステージの実⾏結果とログ Pipelinesの実行結果
静的コード解析結果を確認 Pipelinesの実行結果
Dockerイメージがプッシュされていいることを確認 Pipelinesの実行結果
Slack通知設定ありの場合、 Pipelinesの実⾏結果をSlackから確認 Pipelinesの実行結果
サンプルアプリケーションがでデプロイされていることを確認 Pipelinesの実行結果
◦のところ: • PipelinesがRancher機能とのインテグレーション(通知機能、カタログ機能、シークレットのインジェクト)が簡単にできる • Gitlabで、ソースとDockerイメージを同じのプロジェクトに管理できるのは便利 • Pipelinesの編集と、SonarとNexusのインストール、をUI経由で簡単にできる ×なところ: • Pipelinesの分岐制御はまだ弱い、複雑で分岐条件が多いCI/CDのPipelinesにまだ向いてない
まとめ Thanks ご静聴、ありがとうございます。
slack.rancher.jp