SlideShare una empresa de Scribd logo
1 de 52
Descargar para leer sin conexión
GitLabによるコンテナCI/CD
パイプラインのこれから
Japan Container Days v1812
GitLab User Japan Community
2
Introductions
Red Hat K.K.
Agenda
GitLabによるコンテナCI/CDパイプラインのこれから
3
Concurrent DevOps
Container CI/CD with GitOps
Auto DevOps
Summary
4
Concurrent
DevOps
GitLabのビジョン
Less time maintaining Toolchain
5
“GitLab’s vision is to serve enterprise-scale,
integrated software development teams that
want to spend more time writing code and
less time maintaining their tool chain.”
GitLabのビジョン
エンタープライズの開発チームが、Toolchainを維持する時間を短縮し、
ソフトウェア開発に時間を費す環境を提供すること。
Complete DevOps
Intersection of development, operations
6
Developers Operators/SRE
[参照] https://about.gitlab.com/2017/10/11/from-dev-to-devops/
Developer
Tools
Operator
Tools
Traditional DevOps
DevOpsのビジネス上の価値は、継続的な改善によりソフトウェアをより速く提供すること
Complete DevOps
7
Traditional DevOps
Toolchainのステージごとに異なるミドルウェアを連携している
Continuous Integration Continuous Deployment
Plan Create Verify Package Release Configure Monitor
8
2018 Global Developer Report
Top 3 challenges you face to support your investments for 2018
[参照] https://about.gitlab.com/developer-survey/2018/
1. 適切なテクノロジーの選択
2. 他のツールとの統合/連携
3. 不十分な内部プロセス
新しいツールの採用
デプロイメントの実行
技術者やマネージャーのスキル不足
トレーニングやサポート
2018年のDevOpsへの投資を支援する上で直面している課題
主要な機能の欠如
n=684
多くの企業は
DevOpsパイプラインにおいて、
3-6個のツールを利用している
9
Complete DevOps
DevOps Toolchain for Complete DevOps
Continuous Integration Continuous Deployment
Plan Create Verify Package Release Configure Monitor
Complete DevOps
10
GitLab Main Features
Target features in 2018
[参照] https://about.gitlab.com/features/
11
Concurrent DevOps
Visible / Efficient / Governed
Visible Efficient Governed
Real time view across
the entire lifecycle
Collaborate without
waiting
Develop and operate
with confidence
可視化 効率化 統制化
•See everything that matters
•Stay in your flow
•Don’t wait on syncing
•Manage projects, not tools
•Improve cycle time
•Start immediately
•Work concurrently
•No more handoffs
•Security and compliance
already built-in
•Simplify user management
•Expedite auditing
•Act with certainty
ライフサイクル全体のリアルタイムビュー 待ち時間なしのコラボレーション 統制がとれた開発と運用
12
High Velocity Open Source Project in CNCF
迅速性かつ信頼性の高い開発が求められる
The power of convention
既存組織のDevOpsベストプラクティスを活用
Everyone can contribute
2200以上のコントリビューターの存在
Co-creation
Customer-drivenな機能開発
Continuous innovation
2011年以降、毎月22日に新機能提供
Open eco-system
KubernetesやPrometheusなどのOSSとの連携
[参照] https://github.com/cncf/velocity
This tool set generates data for a Bubble/Motion Google Sheet Chart.
The input is a csv file created from BigQuery results
13
Container
CI/CD
with GitOps
Maintenance
(Operation)
Typical CI/CD
既存のCI/CDでは、デプロイ後の運用を手動で行う
14
App Code
Repository
Continuous
Integration
Application
Packages
Plan Create Verify Package Release Configure Monitor
Continuous Integration Continuous Deployment
Application
Deploy
Developers
Operators
Login or IaC
alert
Release
(Observability)
Container CI/CD
Manifestを更新しながら、環境ごとにデプロイを管理
15
App Code
Repository
Continuous
Integration
Application
Packages
Plan Create Verify Package Release Configure Monitor
Continuous Integration Continuous Deployment
Container
Deploy
Release
(Observability)
Developers
SRE
IaC
alert
Manifest
Repository
Maintenance
(Operation)
Container CI/CDの課題
CIが動的に回るようになると、CDに対してSREの負荷が高まる
16
App Code
Repository
Continuous
Integration
Application
Packages
Plan Create Verify Package Release Configure Monitor
Continuous Integration Continuous Deployment
Container
Deploy
Release
(Observability)
Developers
Operators
IaC
alert
Manifest
Repository
デプロイ承認の負荷
コマンドの本番環境への実行権限は、SREに依存
デプロイ運用の負荷
障害時のロールバック作業
Canary Deploy、Blue/Green Deployの管理
動的な監視とトレーシングの作成
結果的にデプロイしている状態と管
理している情報にズレが生じる
Maintenance
(Operation)
GitOpsとは
継続的Deploymentを実践するための手法
17
Application CodeだけでなくManifest運用においても、マージリクエストを通してKubernetesの作業を行う。
※Manifest用のリポジトリは、Application Codeと別途管理
master
develop
(リリース版)
(Manifest
修正)
承認
マージ
リクエスト
ステージング環境
のレビュー実施
・開発者によって、Manifestファイルの作成
・運用者によるメンテナンス修正
本番環境への
リリース
マージ
リクエスト
Manifestリポジトリ
18
LeanとDevOpsの科学[Accelerate]
テクノロジーの戦略的活用が組織変革を加速する
継続的デリバリのプラクティス
– 有効性の高いものは
「システムおよびアプリケーションのコンフィギュレーショ
ンをバージョン管理の対象項目にしていること」のほう
が、「アプリケーションコードをバージョン管理の対象項
目にしていること」よりもデリバリのパフォーマンスとの
相関が強かった。
※P64 4.4.1 「バージョン管理」 抜粋
GitOpsにおける動的な運用
常にデプロイの状況とリポジトリの内容が等しいように保つ
19
Test
application
App Code
Repository
Build
Application
Manifest
Image Repo
Container
Deploy
Release
(Observability)
Continuous Integration Continuous Deployment
Maintenance
(Operation)
継続的に差分をチェックして、求める状況に戻すことができれば、SREとしての運用が減る
Diff Check
動的に差分をチェックし、修正
を行う仕組みが必要
Weave Flux
Automatically ensures that the state of a cluster matches the config in git
20[参照] https://github.com/weaveworks/flux
Manifest
Image Repo
Container
Deploy
Release
(Observability)
Maintenance
(Operation)
Diff Check
Observe
Orient
Decide
Act
Release
ROODA loop
Weave Flux(フラックス)
関連するリポジトリを監視し、新しいイメージの検出やデプロイをトリガーし、
それに基づいてManifestを更新する。
クラスタの状態がgitにあるManifestと一致
することを動的に保証するツール。
Automated
Deployment
Troubleshoot
Efficiency
Increase
Speed &
Reliability
新しいイメージやデプ
ロイを監視し、指定し
たポリシーに従ってク
ラスタ内のサービスを
動的に更新。
マニフェストのバー
ジョン管理を提供し、
プッシュされたイメー
ジのバージョンを含む
ように変更
手動のアップデートを
廃止し、効率的なトラ
ブルシューティングを
提供。問題の原因と
なったデプロイを把握
し、以前のバージョン
にロールバック可能
21
Weave Flux
Flux Deployment Pipeline
[参照] https://github.com/weaveworks/flux
Next Container CI/CD
動的にManifestを管理するCD環境
22
App Code
Repository
Continuous
Integration
Application
Packages
Plan Create Verify Package Release Configure Monitor
Continuous Integration Continuous Deployment
Container
Deploy
Release
(Observability)
Developers
SRE
IaC
alert
Manifest
Repository
Maintenance
(Operation)
Weave
Flux
weave - Deploy: Continuous Delivery with Weave Flux
Continuous Delivery with Weave Cloud
23[参照] https://www.weave.works/docs/tutorials/
24
[GitLab Meetup Tokyo #10] GitLabとWeave FluxでGitOpsしてみた
https://speakerdeck.com/endok/gitops-using-flux-and-gitlab
25
Auto
DevOps
Next Container CI/CD
CI/CDには、Kubernetes以外にも多くの機能が求められる
26
App Code
Repository
Continuous
Integration
Application
Packages
Plan Create Verify Package Release Configure Monitor
Continuous Integration Continuous Deployment
Container
Deploy
Release
(Observability)
Developers
SRE
IaC
alert
Manifest
Repository
Maintenance
(Operation)
CI/CD
Pipelines
Kubernetes
Cluster
27
What’s Auto DevOps
Auto DevOpsが実現する世界
エンタープライズの開発チームが、Toolchainを維持する時間を短縮し、ソフトウェア開発に時間を費す環境を提供
することを実現。Auto DevOpsは、Herokuのインスピレーションを受けてPaaSの機能を有している。
Container
Applications
CI/CD Pipelineに必要な設定を動的に行う仕組み ≒ PaaS
[参照] https://www.youtube.com/watch?v=6LZQCCVGVDg
(3) Auto DevOps does the rest
Auto DevOps is PaaS for Kubernetes
Easy 3 Steps for Application Deployment
28
Plan Create Verify Package Release Configure Monitor
Continuous Integration Continuous Deployment
Build
Code
Quality
SAST
Dependency
Scanning
Merge
License
Management
Container
Registry
Container
Scanning
Review
Apps
Deploy
Helm Chart
Scale
Kubernetes
Config
Response
Check
Performance
Monitoring
Developers
(1) Write Your Code
(2) Push Your Code
29
Auto DevOps
AutoDevOpsの各ステージ
Auto DevOps
Auto Build
Auto Test
Auto Code Quality
Auto SAST
Auto Dependency Scanning
Auto License Management
Auto Container Scanning
Auto Review App
Auto DAST
Auto Deploy
Auto Browser Performance Test
Auto Monitoring
Dockerfileもしくは、Herokuish and Heroku buildpacksで動的
にビルド
HerokuishとHeroku Buildpackを使用して、アプリケーションの適
切なテストを動的に実行
codeclimateを使用して、静的分析やコードチェック
を実行
SAST Dockerイメージを使用して現在のコードを静的分析し、潜
在的なセキュリティ問題をチェック
プロジェクトの依存関係を分析し、潜
在的なセキュリティ問題をチェック
ライセンスのプロジェクト依存関係を検
索
Clairを使用してDockerイメージの潜在
的なセキュリティ問題をチェック
ブランチのコードに基づいた一時的なアプリケーションレ
ビュー環境を構築
OWASP ZAProxyを使用して、現在のコードを分析し、潜在的な
セキュリティ問題をチェック
Sitespeed.ioを使用して
Webページのパフォーマンスを
測定
Helmを利用してプロジェクト名とIDに基づくKubernetesクラスター
へアプリケーションをデプロイ
Prometheusによるアプリケーションの監視
GitLab Instance
GitLab CI/CD Architecture
On Kubernetes Executor
30
GitLab
CI/CD
GitLab
Repository
GitLab Project
.gitlab-ci.yml
Developers
GitLab
Runner
Executors
- SSH
- Shell
- Parallels
- VirtualBox
- Docker
- Docker Machine
- Kubernetes
Kubernetes Cluster
NAMESPACE:
ci-${CI_COMMIT_REF_SLUG}
GitLab
Job Pod
- build-xxxxx
- svc-xxxxx
Job実行用のPodは、Jobが完了次第(成功しても失敗
しても)動的に削除される。そのため、Job実行のPodと
実際にデプロイするサービスPodは異なる。
→ デプロイ作業はJobとして実行しなければいけない。
※Auto DevOps機能を利用しない場合
継続的インテグレーションサービス
GitLab CI/CD Script
helm deploy sample in .gitlab-ci.yml
31
stages:
- setup
- test
- build
- release
- deploy
deploy_staging:
stage: deploy
image: lwolf/helm-kubectl-docker:v152_213
before_script:
- mkdir -p /etc/deploy
- echo ${kube_config} | base64 -d > ${KUBECONFIG}
- kubectl config use-context homekube
- helm init --client-only
- helm repo add stable https://kubernetes-charts.storage.googleapis.com/
- helm repo add incubator https://kubernetes-charts-
incubator.storage.googleapis.com/
- helm repo update
script:
- cd deploy/libr-files
- helm dep build
- export API_VERSION="$(grep "appVersion" Chart.yaml | cut -d" " -f2)"
- export DEPLOYS=$(helm ls | grep $RELEASE_NAME | wc -l)
- if [ ${DEPLOYS} -eq 0 ]; then helm install --name=${RELEASE_NAME} . -
-namespace=${STAGING_NAMESPACE}; else helm upgrade ${RELEASE_NAME} . --
namespace=${STAGING_NAMESPACE}; fi
GitLab Instance
Auto DevOps CI/CD Architecture
On Kubernetes Executor
32
GitLab
CI/CD
GitLab
Repository
GitLab Project
.gitlab-ci.yml
Developers
GitLab
Runner
Kubernetes Cluster
NAMESPACE: project-name
GitLab
Job Pod
gitlab-managed-apps
Helm
Tiller
Nginx
Ingress
Prometheus
Master Branch
Topic Branch
Default: GitLab 1 Project = Kubernetes 1 Cluster
Env: review/xxxxx
Env: production
master
topic
(リリース版)
(開発版)
Kubernetes Integrations
Add Existing Cluster
33
Kubernetes Integrations
New Cluster on GKE
34
Googleアカウントにサインインすれば、動的にクGKEクラスターを作成してくれる。
Installing managed applications
gitlab-managed-apps
35
GitLab Instance
35
GitLab
Runner
Kubernetes Cluster
NAMESPACE: project-name
GitLab
Job Pod
gitlab-managed-apps
Helm
Tiller
Nginx
Ingress
Prometheus
Master Branch
Topic Branch
Env: review/xxxxx
Env: production
Installing managed applications
動的にデプロイ可能なApplicationリスト
36
Application
GitLab
version
Description Helm Chart
Helm Tiller 10.2+
他のアプリケーションをインストールために必要。クラスタ内の専用ポッドにTillerがインストールされ、安全な
環境でhelm CLIを実行。
n/a
Ingress 10.2+
アプリケーションのロードバランシング、SSL処理などを提供。これは、アプリケーションのWebプロキシとして
機能し、Auto DevOpsでの独自のWebアプリケーションを展開。
stable/nginx-
ingress
Cert Manager 11.6+
証明書の発行を支援するネイティブKubernetes証明書管理コントローラ。Let‘s Encryptによって証明書
が発行され、証明書が有効で最新であることが動的に確認される。
stable/cert-
manager
Prometheus 10.4+ 導入されたアプリケーションを監視。レビュー用のアプリケーションに対してもPrometheusで監視。
stable/prometh
eus
GitLab Runner 10.6+
CIジョブを実行し、その結果をGitLabに送り返すプロセス。アプリケーションを介してGitLab Runnerをイン
ストールすると、デフォルトで特権モードで実行される。(*セキュリティ的に注意)
runner/gitlab-
runner
JupyterHub 11.0+
プロジェクトチーム全体のJupyter Notebookを管理するためのマルチユーザサービス。 NurtchのRubixライ
ブラリで構築された、すぐに使えるDevOps Runbookもご覧いただけます。 (*OAuth2経由でGitLabサー
バーのユーザーに認証が有効)
jupyter/jupyterh
ub
Knative 11.5+
サーバレスワークロードを作成、展開、および管理するためのプラットフォームを提供。これは、Knativeによっ
てホストされているすべてのプログラムに外部IPアドレスを提供するためにIstioとともに使用されます。 アプリ
ケーションが公開されるワイルドカードドメイン(DNS設定)が必要。
knative/knative
GitLab Instance
Auto DevOps Application Access
Nginx Ingress for applications
3737
GitLab
Runner
Kubernetes Cluster
NAMESPACE: project-name
GitLab
Job Pod
gitlab-managed-apps
Helm
Tiller
Nginx
Ingress
Prometheus
Master Branch
Topic Branch
Env: review/xxxxx
Env: production
master
topic
(リリース版)
(開発版)
Developers
DNS Record
*.example.com 3600 A 1.2.3.4
http://project.example.com
http://review-project-5td1uj.example.com
Monitoring
動的にURL生成
Using multiple Kubernetes clusters
Deploy different environments to different Kubernetes clusters
38
異なる環境を異なるKubernetesクラスタに展開することが可能
GitLab Instance
Kubernetes Cluster for Production
NAMESPACE: project-namegitlab-managed-apps
Nginx
Ingress
Prometheus
Master Branch
Topic Branch
Env: review/xxxxx
Env: production
master
(リリース版)
Developers
http://project.example.com
Monitoring
Kubernetes Cluster for Review
NAMESPACE: project-namegitlab-managed-apps
Nginx
Ingress
Prometheus
http://review-project-5td1uj.review.example.com
Deployment Strategy
CD means Delivery or Deployment
39
Review
Staging
Production
master
topic
(リリース版)
マージ
リクエスト
(開発版)
Continuous deployment to
production
Automatic deployment to staging,
manual deployment to production
master
topic
(リリース版)
マージ
リクエスト
(開発版)
CIパイプライン完了後、Masterブランチ
を直接Productionにデプロイする方法
MasterブランチはStagingに直接デプロ
イする方法。Productionへの段階的な
手動Actionが提供される。
INCREMENTAL_ROLLOUT_MODE = timed INCREMENTAL_ROLLOUT_MODE = manual
GitLab Manual Action
Manually deploying to environments
40
deploy_staging:
stage: deploy
script:
- echo "Deploy to staging server"
environment:
name: staging
url: https://staging.example.com
only:
- master
deploy_prod:
stage: deploy
script:
- echo "Deploy to production server"
environment:
name: production
url: https://example.com
when: manual
only:
- master
GitLabのUIに再生ボタンを公開し、deploy_prodジョブは、
ボタンをクリックしたときにのみデプロイされる。
41
Auto DevOps DEMO
Auto DAST
OWASP Zed Attack Proxy (ZAP)
42
OWASP ZAP
Container Scanning
Clair
43
データソースから脆弱性情報を取得
定期的に脆弱性データのアップデート
スキャン結果をエンドポイントへ送信
脆弱性情報を取得し に書き込み。
コンテナイメージの脆弱性をデータ
ベースに問い合わせ
は 社にて開発が行われている脆弱性スキャンができるツールです。スキャンは を元に実施され、
や コンテナ内に脆弱性がないかを静的スキャンを実施します。 自体もコンテナで提供されます。
Auto Browser Performance Test
Sitespeed.io
44
45
Appendix
46
GitLab Architecture was Monolith
GitLab自体のコンポーネントが複雑化
Gitaly
GitLab-Shell
nginx
GitLab-
Workhouse
GitLab-Rails
(unicorn)
redis
sidekiq
PostgreSQL
http/https
git
nfs nfs nfs
・ユーザーから要求された
タスクのスケジューリング
・静的コンテンツの配信
・タスク情報の保持
・ログインセッションの保持
タスクの実行
タスクの依頼
タスクの依頼
ユーザー情報の
問い合わせ
タスク情報
の取得
GitLab Architecture
47
GitLab.com is also planning to Cloud Native
Monolith to Microservice
https://about.gitlab.com/handbook/engineering/infrastructure/production-architecture/
48
GitLab Helm Chart
Install GitLab from the new GCP Marketplace
[参照] https://qiita.com/jb-vasseur/items/c25215fc1301452762a1
49
Summary
Summary GitLab CI/CD Pipeline
GitLab supports Kubernetes worlds
50
CI/CD
Pipelines
Kubernetes
Cluster
Container
Applications
GitLabのビジョン
エンタープライズの開発チームが、Toolchainを維持する時間を短縮し、
ソフトウェア開発に時間を費す環境を提供すること。
[Ad.1] GitLab Meetup Tokyo #12
2018年振り返り
51
日時
2018/12/20(木)
18:30
2018年11〜12月に開催された
KubeCon+CloudNativeCon China 2018
(中国・上海)およびAWS re:Invent
2018(アメリカ・ラスベガス)
KubeCon+CloudNativeCon North
America 2018(アメリカ・シアトル)におけ
るGitLab Inc.での状況を含めた最新の動向
について情報交換
52
[Ad.2] クリエーションライン株式会社
https://www.creationline.com/gitlab

Más contenido relacionado

La actualidad más candente

【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
Hibino Hisashi
 

La actualidad más candente (20)

Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
 
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
 
DockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐるDockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐる
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
インフラCICDの勘所
インフラCICDの勘所インフラCICDの勘所
インフラCICDの勘所
 
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
 
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティスAWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティス
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
【第26回Elasticsearch勉強会】Logstashとともに振り返る、やっちまった事例ごった煮
 
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~
 
コンテナ導入概要資料2018
コンテナ導入概要資料2018コンテナ導入概要資料2018
コンテナ導入概要資料2018
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 

Similar a GitLab Auto DevOps with Container CI/CD

Similar a GitLab Auto DevOps with Container CI/CD (20)

Amazon ECSとDevOps
Amazon ECSとDevOpsAmazon ECSとDevOps
Amazon ECSとDevOps
 
DevOps on Azure Kubernetes
DevOps on Azure KubernetesDevOps on Azure Kubernetes
DevOps on Azure Kubernetes
 
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
 
Amazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep diveAmazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep dive
 
Github入門2014
Github入門2014Github入門2014
Github入門2014
 
Azure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - OverviewAzure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - Overview
 
App Service の DevOps と Visual Studio Team Services 最新アップデート
App Service の DevOps と Visual Studio Team Services 最新アップデートApp Service の DevOps と Visual Studio Team Services 最新アップデート
App Service の DevOps と Visual Studio Team Services 最新アップデート
 
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
 
[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送
[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送
[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送
 
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
 
Developer-Controlled Packages (DCPs) を試してみた
Developer-Controlled Packages (DCPs) を試してみたDeveloper-Controlled Packages (DCPs) を試してみた
Developer-Controlled Packages (DCPs) を試してみた
 
新しいOpenShiftのしくみを調べてみた
新しいOpenShiftのしくみを調べてみた新しいOpenShiftのしくみを調べてみた
新しいOpenShiftのしくみを調べてみた
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
 
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみたKubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
 
Tech Dojo 02/09 IBM Japan CSM
Tech Dojo 02/09 IBM Japan CSMTech Dojo 02/09 IBM Japan CSM
Tech Dojo 02/09 IBM Japan CSM
 
Azure DevOps - ALGYAN Oct 2022.pdf
Azure DevOps - ALGYAN Oct 2022.pdfAzure DevOps - ALGYAN Oct 2022.pdf
Azure DevOps - ALGYAN Oct 2022.pdf
 
[Cloud OnAir] 【Google Kubernetes Engine 演習】解説を聞きながら GKE を体験しよう 2020年10月29日 放送
[Cloud OnAir] 【Google Kubernetes Engine 演習】解説を聞きながら GKE を体験しよう 2020年10月29日 放送[Cloud OnAir] 【Google Kubernetes Engine 演習】解説を聞きながら GKE を体験しよう 2020年10月29日 放送
[Cloud OnAir] 【Google Kubernetes Engine 演習】解説を聞きながら GKE を体験しよう 2020年10月29日 放送
 

Más de Shingo Kitayama

Más de Shingo Kitayama (9)

Kubernetes Security with DevSecOps
Kubernetes Security with DevSecOpsKubernetes Security with DevSecOps
Kubernetes Security with DevSecOps
 
GitLab Prometheus
GitLab PrometheusGitLab Prometheus
GitLab Prometheus
 
[Red Hat Forum 2017] Ansible Towerの実践!!エンタープライズのInfrastructure as Codeの現在(イマ)
[Red Hat Forum 2017] Ansible Towerの実践!!エンタープライズのInfrastructure as Codeの現在(イマ)[Red Hat Forum 2017] Ansible Towerの実践!!エンタープライズのInfrastructure as Codeの現在(イマ)
[Red Hat Forum 2017] Ansible Towerの実践!!エンタープライズのInfrastructure as Codeの現在(イマ)
 
【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界
【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界
【OpenStackDaysTokyo】4-B1-3 自動化を支えるCICDパイプラインの世界
 
Apache Mesosってなに
Apache MesosってなにApache Mesosってなに
Apache Mesosってなに
 
Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-Ansibleはじめよぉ -Infrastructure as Codeを理解-
Ansibleはじめよぉ -Infrastructure as Codeを理解-
 
運用のためのPlaybook (Playbook for Operation)
運用のためのPlaybook (Playbook for Operation)運用のためのPlaybook (Playbook for Operation)
運用のためのPlaybook (Playbook for Operation)
 
デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択
デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択
デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択
 
今日からはじめるディープラーニング
今日からはじめるディープラーニング今日からはじめるディープラーニング
今日からはじめるディープラーニング
 

GitLab Auto DevOps with Container CI/CD

  • 5. GitLabのビジョン Less time maintaining Toolchain 5 “GitLab’s vision is to serve enterprise-scale, integrated software development teams that want to spend more time writing code and less time maintaining their tool chain.” GitLabのビジョン エンタープライズの開発チームが、Toolchainを維持する時間を短縮し、 ソフトウェア開発に時間を費す環境を提供すること。
  • 6. Complete DevOps Intersection of development, operations 6 Developers Operators/SRE [参照] https://about.gitlab.com/2017/10/11/from-dev-to-devops/ Developer Tools Operator Tools Traditional DevOps DevOpsのビジネス上の価値は、継続的な改善によりソフトウェアをより速く提供すること Complete DevOps
  • 8. 8 2018 Global Developer Report Top 3 challenges you face to support your investments for 2018 [参照] https://about.gitlab.com/developer-survey/2018/ 1. 適切なテクノロジーの選択 2. 他のツールとの統合/連携 3. 不十分な内部プロセス 新しいツールの採用 デプロイメントの実行 技術者やマネージャーのスキル不足 トレーニングやサポート 2018年のDevOpsへの投資を支援する上で直面している課題 主要な機能の欠如 n=684 多くの企業は DevOpsパイプラインにおいて、 3-6個のツールを利用している
  • 9. 9 Complete DevOps DevOps Toolchain for Complete DevOps Continuous Integration Continuous Deployment Plan Create Verify Package Release Configure Monitor Complete DevOps
  • 10. 10 GitLab Main Features Target features in 2018 [参照] https://about.gitlab.com/features/
  • 11. 11 Concurrent DevOps Visible / Efficient / Governed Visible Efficient Governed Real time view across the entire lifecycle Collaborate without waiting Develop and operate with confidence 可視化 効率化 統制化 •See everything that matters •Stay in your flow •Don’t wait on syncing •Manage projects, not tools •Improve cycle time •Start immediately •Work concurrently •No more handoffs •Security and compliance already built-in •Simplify user management •Expedite auditing •Act with certainty ライフサイクル全体のリアルタイムビュー 待ち時間なしのコラボレーション 統制がとれた開発と運用
  • 12. 12 High Velocity Open Source Project in CNCF 迅速性かつ信頼性の高い開発が求められる The power of convention 既存組織のDevOpsベストプラクティスを活用 Everyone can contribute 2200以上のコントリビューターの存在 Co-creation Customer-drivenな機能開発 Continuous innovation 2011年以降、毎月22日に新機能提供 Open eco-system KubernetesやPrometheusなどのOSSとの連携 [参照] https://github.com/cncf/velocity This tool set generates data for a Bubble/Motion Google Sheet Chart. The input is a csv file created from BigQuery results
  • 14. Maintenance (Operation) Typical CI/CD 既存のCI/CDでは、デプロイ後の運用を手動で行う 14 App Code Repository Continuous Integration Application Packages Plan Create Verify Package Release Configure Monitor Continuous Integration Continuous Deployment Application Deploy Developers Operators Login or IaC alert Release (Observability)
  • 15. Container CI/CD Manifestを更新しながら、環境ごとにデプロイを管理 15 App Code Repository Continuous Integration Application Packages Plan Create Verify Package Release Configure Monitor Continuous Integration Continuous Deployment Container Deploy Release (Observability) Developers SRE IaC alert Manifest Repository Maintenance (Operation)
  • 16. Container CI/CDの課題 CIが動的に回るようになると、CDに対してSREの負荷が高まる 16 App Code Repository Continuous Integration Application Packages Plan Create Verify Package Release Configure Monitor Continuous Integration Continuous Deployment Container Deploy Release (Observability) Developers Operators IaC alert Manifest Repository デプロイ承認の負荷 コマンドの本番環境への実行権限は、SREに依存 デプロイ運用の負荷 障害時のロールバック作業 Canary Deploy、Blue/Green Deployの管理 動的な監視とトレーシングの作成 結果的にデプロイしている状態と管 理している情報にズレが生じる Maintenance (Operation)
  • 19. GitOpsにおける動的な運用 常にデプロイの状況とリポジトリの内容が等しいように保つ 19 Test application App Code Repository Build Application Manifest Image Repo Container Deploy Release (Observability) Continuous Integration Continuous Deployment Maintenance (Operation) 継続的に差分をチェックして、求める状況に戻すことができれば、SREとしての運用が減る Diff Check 動的に差分をチェックし、修正 を行う仕組みが必要
  • 20. Weave Flux Automatically ensures that the state of a cluster matches the config in git 20[参照] https://github.com/weaveworks/flux Manifest Image Repo Container Deploy Release (Observability) Maintenance (Operation) Diff Check Observe Orient Decide Act Release ROODA loop Weave Flux(フラックス) 関連するリポジトリを監視し、新しいイメージの検出やデプロイをトリガーし、 それに基づいてManifestを更新する。 クラスタの状態がgitにあるManifestと一致 することを動的に保証するツール。 Automated Deployment Troubleshoot Efficiency Increase Speed & Reliability 新しいイメージやデプ ロイを監視し、指定し たポリシーに従ってク ラスタ内のサービスを 動的に更新。 マニフェストのバー ジョン管理を提供し、 プッシュされたイメー ジのバージョンを含む ように変更 手動のアップデートを 廃止し、効率的なトラ ブルシューティングを 提供。問題の原因と なったデプロイを把握 し、以前のバージョン にロールバック可能
  • 21. 21 Weave Flux Flux Deployment Pipeline [参照] https://github.com/weaveworks/flux
  • 22. Next Container CI/CD 動的にManifestを管理するCD環境 22 App Code Repository Continuous Integration Application Packages Plan Create Verify Package Release Configure Monitor Continuous Integration Continuous Deployment Container Deploy Release (Observability) Developers SRE IaC alert Manifest Repository Maintenance (Operation) Weave Flux
  • 23. weave - Deploy: Continuous Delivery with Weave Flux Continuous Delivery with Weave Cloud 23[参照] https://www.weave.works/docs/tutorials/
  • 24. 24 [GitLab Meetup Tokyo #10] GitLabとWeave FluxでGitOpsしてみた https://speakerdeck.com/endok/gitops-using-flux-and-gitlab
  • 26. Next Container CI/CD CI/CDには、Kubernetes以外にも多くの機能が求められる 26 App Code Repository Continuous Integration Application Packages Plan Create Verify Package Release Configure Monitor Continuous Integration Continuous Deployment Container Deploy Release (Observability) Developers SRE IaC alert Manifest Repository Maintenance (Operation)
  • 27. CI/CD Pipelines Kubernetes Cluster 27 What’s Auto DevOps Auto DevOpsが実現する世界 エンタープライズの開発チームが、Toolchainを維持する時間を短縮し、ソフトウェア開発に時間を費す環境を提供 することを実現。Auto DevOpsは、Herokuのインスピレーションを受けてPaaSの機能を有している。 Container Applications CI/CD Pipelineに必要な設定を動的に行う仕組み ≒ PaaS [参照] https://www.youtube.com/watch?v=6LZQCCVGVDg
  • 28. (3) Auto DevOps does the rest Auto DevOps is PaaS for Kubernetes Easy 3 Steps for Application Deployment 28 Plan Create Verify Package Release Configure Monitor Continuous Integration Continuous Deployment Build Code Quality SAST Dependency Scanning Merge License Management Container Registry Container Scanning Review Apps Deploy Helm Chart Scale Kubernetes Config Response Check Performance Monitoring Developers (1) Write Your Code (2) Push Your Code
  • 29. 29 Auto DevOps AutoDevOpsの各ステージ Auto DevOps Auto Build Auto Test Auto Code Quality Auto SAST Auto Dependency Scanning Auto License Management Auto Container Scanning Auto Review App Auto DAST Auto Deploy Auto Browser Performance Test Auto Monitoring Dockerfileもしくは、Herokuish and Heroku buildpacksで動的 にビルド HerokuishとHeroku Buildpackを使用して、アプリケーションの適 切なテストを動的に実行 codeclimateを使用して、静的分析やコードチェック を実行 SAST Dockerイメージを使用して現在のコードを静的分析し、潜 在的なセキュリティ問題をチェック プロジェクトの依存関係を分析し、潜 在的なセキュリティ問題をチェック ライセンスのプロジェクト依存関係を検 索 Clairを使用してDockerイメージの潜在 的なセキュリティ問題をチェック ブランチのコードに基づいた一時的なアプリケーションレ ビュー環境を構築 OWASP ZAProxyを使用して、現在のコードを分析し、潜在的な セキュリティ問題をチェック Sitespeed.ioを使用して Webページのパフォーマンスを 測定 Helmを利用してプロジェクト名とIDに基づくKubernetesクラスター へアプリケーションをデプロイ Prometheusによるアプリケーションの監視
  • 30. GitLab Instance GitLab CI/CD Architecture On Kubernetes Executor 30 GitLab CI/CD GitLab Repository GitLab Project .gitlab-ci.yml Developers GitLab Runner Executors - SSH - Shell - Parallels - VirtualBox - Docker - Docker Machine - Kubernetes Kubernetes Cluster NAMESPACE: ci-${CI_COMMIT_REF_SLUG} GitLab Job Pod - build-xxxxx - svc-xxxxx Job実行用のPodは、Jobが完了次第(成功しても失敗 しても)動的に削除される。そのため、Job実行のPodと 実際にデプロイするサービスPodは異なる。 → デプロイ作業はJobとして実行しなければいけない。 ※Auto DevOps機能を利用しない場合 継続的インテグレーションサービス
  • 31. GitLab CI/CD Script helm deploy sample in .gitlab-ci.yml 31 stages: - setup - test - build - release - deploy deploy_staging: stage: deploy image: lwolf/helm-kubectl-docker:v152_213 before_script: - mkdir -p /etc/deploy - echo ${kube_config} | base64 -d > ${KUBECONFIG} - kubectl config use-context homekube - helm init --client-only - helm repo add stable https://kubernetes-charts.storage.googleapis.com/ - helm repo add incubator https://kubernetes-charts- incubator.storage.googleapis.com/ - helm repo update script: - cd deploy/libr-files - helm dep build - export API_VERSION="$(grep "appVersion" Chart.yaml | cut -d" " -f2)" - export DEPLOYS=$(helm ls | grep $RELEASE_NAME | wc -l) - if [ ${DEPLOYS} -eq 0 ]; then helm install --name=${RELEASE_NAME} . - -namespace=${STAGING_NAMESPACE}; else helm upgrade ${RELEASE_NAME} . -- namespace=${STAGING_NAMESPACE}; fi
  • 32. GitLab Instance Auto DevOps CI/CD Architecture On Kubernetes Executor 32 GitLab CI/CD GitLab Repository GitLab Project .gitlab-ci.yml Developers GitLab Runner Kubernetes Cluster NAMESPACE: project-name GitLab Job Pod gitlab-managed-apps Helm Tiller Nginx Ingress Prometheus Master Branch Topic Branch Default: GitLab 1 Project = Kubernetes 1 Cluster Env: review/xxxxx Env: production master topic (リリース版) (開発版)
  • 34. Kubernetes Integrations New Cluster on GKE 34 Googleアカウントにサインインすれば、動的にクGKEクラスターを作成してくれる。
  • 35. Installing managed applications gitlab-managed-apps 35 GitLab Instance 35 GitLab Runner Kubernetes Cluster NAMESPACE: project-name GitLab Job Pod gitlab-managed-apps Helm Tiller Nginx Ingress Prometheus Master Branch Topic Branch Env: review/xxxxx Env: production
  • 36. Installing managed applications 動的にデプロイ可能なApplicationリスト 36 Application GitLab version Description Helm Chart Helm Tiller 10.2+ 他のアプリケーションをインストールために必要。クラスタ内の専用ポッドにTillerがインストールされ、安全な 環境でhelm CLIを実行。 n/a Ingress 10.2+ アプリケーションのロードバランシング、SSL処理などを提供。これは、アプリケーションのWebプロキシとして 機能し、Auto DevOpsでの独自のWebアプリケーションを展開。 stable/nginx- ingress Cert Manager 11.6+ 証明書の発行を支援するネイティブKubernetes証明書管理コントローラ。Let‘s Encryptによって証明書 が発行され、証明書が有効で最新であることが動的に確認される。 stable/cert- manager Prometheus 10.4+ 導入されたアプリケーションを監視。レビュー用のアプリケーションに対してもPrometheusで監視。 stable/prometh eus GitLab Runner 10.6+ CIジョブを実行し、その結果をGitLabに送り返すプロセス。アプリケーションを介してGitLab Runnerをイン ストールすると、デフォルトで特権モードで実行される。(*セキュリティ的に注意) runner/gitlab- runner JupyterHub 11.0+ プロジェクトチーム全体のJupyter Notebookを管理するためのマルチユーザサービス。 NurtchのRubixライ ブラリで構築された、すぐに使えるDevOps Runbookもご覧いただけます。 (*OAuth2経由でGitLabサー バーのユーザーに認証が有効) jupyter/jupyterh ub Knative 11.5+ サーバレスワークロードを作成、展開、および管理するためのプラットフォームを提供。これは、Knativeによっ てホストされているすべてのプログラムに外部IPアドレスを提供するためにIstioとともに使用されます。 アプリ ケーションが公開されるワイルドカードドメイン(DNS設定)が必要。 knative/knative
  • 37. GitLab Instance Auto DevOps Application Access Nginx Ingress for applications 3737 GitLab Runner Kubernetes Cluster NAMESPACE: project-name GitLab Job Pod gitlab-managed-apps Helm Tiller Nginx Ingress Prometheus Master Branch Topic Branch Env: review/xxxxx Env: production master topic (リリース版) (開発版) Developers DNS Record *.example.com 3600 A 1.2.3.4 http://project.example.com http://review-project-5td1uj.example.com Monitoring 動的にURL生成
  • 38. Using multiple Kubernetes clusters Deploy different environments to different Kubernetes clusters 38 異なる環境を異なるKubernetesクラスタに展開することが可能 GitLab Instance Kubernetes Cluster for Production NAMESPACE: project-namegitlab-managed-apps Nginx Ingress Prometheus Master Branch Topic Branch Env: review/xxxxx Env: production master (リリース版) Developers http://project.example.com Monitoring Kubernetes Cluster for Review NAMESPACE: project-namegitlab-managed-apps Nginx Ingress Prometheus http://review-project-5td1uj.review.example.com
  • 39. Deployment Strategy CD means Delivery or Deployment 39 Review Staging Production master topic (リリース版) マージ リクエスト (開発版) Continuous deployment to production Automatic deployment to staging, manual deployment to production master topic (リリース版) マージ リクエスト (開発版) CIパイプライン完了後、Masterブランチ を直接Productionにデプロイする方法 MasterブランチはStagingに直接デプロ イする方法。Productionへの段階的な 手動Actionが提供される。 INCREMENTAL_ROLLOUT_MODE = timed INCREMENTAL_ROLLOUT_MODE = manual
  • 40. GitLab Manual Action Manually deploying to environments 40 deploy_staging: stage: deploy script: - echo "Deploy to staging server" environment: name: staging url: https://staging.example.com only: - master deploy_prod: stage: deploy script: - echo "Deploy to production server" environment: name: production url: https://example.com when: manual only: - master GitLabのUIに再生ボタンを公開し、deploy_prodジョブは、 ボタンをクリックしたときにのみデプロイされる。
  • 42. Auto DAST OWASP Zed Attack Proxy (ZAP) 42 OWASP ZAP
  • 43. Container Scanning Clair 43 データソースから脆弱性情報を取得 定期的に脆弱性データのアップデート スキャン結果をエンドポイントへ送信 脆弱性情報を取得し に書き込み。 コンテナイメージの脆弱性をデータ ベースに問い合わせ は 社にて開発が行われている脆弱性スキャンができるツールです。スキャンは を元に実施され、 や コンテナ内に脆弱性がないかを静的スキャンを実施します。 自体もコンテナで提供されます。
  • 44. Auto Browser Performance Test Sitespeed.io 44
  • 46. 46 GitLab Architecture was Monolith GitLab自体のコンポーネントが複雑化 Gitaly GitLab-Shell nginx GitLab- Workhouse GitLab-Rails (unicorn) redis sidekiq PostgreSQL http/https git nfs nfs nfs ・ユーザーから要求された タスクのスケジューリング ・静的コンテンツの配信 ・タスク情報の保持 ・ログインセッションの保持 タスクの実行 タスクの依頼 タスクの依頼 ユーザー情報の 問い合わせ タスク情報 の取得 GitLab Architecture
  • 47. 47 GitLab.com is also planning to Cloud Native Monolith to Microservice https://about.gitlab.com/handbook/engineering/infrastructure/production-architecture/
  • 48. 48 GitLab Helm Chart Install GitLab from the new GCP Marketplace [参照] https://qiita.com/jb-vasseur/items/c25215fc1301452762a1
  • 50. Summary GitLab CI/CD Pipeline GitLab supports Kubernetes worlds 50 CI/CD Pipelines Kubernetes Cluster Container Applications GitLabのビジョン エンタープライズの開発チームが、Toolchainを維持する時間を短縮し、 ソフトウェア開発に時間を費す環境を提供すること。
  • 51. [Ad.1] GitLab Meetup Tokyo #12 2018年振り返り 51 日時 2018/12/20(木) 18:30 2018年11〜12月に開催された KubeCon+CloudNativeCon China 2018 (中国・上海)およびAWS re:Invent 2018(アメリカ・ラスベガス) KubeCon+CloudNativeCon North America 2018(アメリカ・シアトル)におけ るGitLab Inc.での状況を含めた最新の動向 について情報交換