1 of 23

CNCF Cross-cloud CI + IBM Cloud

Monday, April 9th, 2018

2 of 23

Meet the Cross-cloud CI Team

  • Denver Williams

@denverwilliams

  • W. Watson

@wavell

  • Joshua Smith

@nupejosh

  • Lucina Stricko

@lixuna

  • Taylor Carpenter

@taylor

  • Andre Ortiz*

@andreortiz82

  • Robert Siekmann*

@rsiekmann

3 of 23

Cross-cloud CI Intro

Why? The CNCF ecosystem is large, diverse and continues to grow. CNCF would like to ensure cross-project interoperability and cross-cloud deployments of all cloud native technologies and show the daily status of builds and deployments on a status dashboard.

What? The Cross-cloud CI project consists of a cross-cloud testing system, status repository server and a dashboard. The cross-cloud testing system has 3 components (build, cross-cloud, cross-project) that continually validate the interoperability of each CNCF project for any commit on stable and head across all supported cloud providers. The cross-cloud testing system can reuse existing artifacts from a project’s preferred CI system or generate new build artifacts. The status repository server collects the test results and the dashboard displays them.

3

4 of 23

Goal: to target all CNCF projects

4

Graduated

Incubating

Sandbox

5 of 23

Goal: to target non-CNCF projects, too!

5

Implemented

6 of 23

Goal: to target all public, bare metal & private clouds

6

+

7 of 23

Live Demo: Testing System + Status Dashboard

On Demo Environment:

  • Pre-Demo: Builds and cloud provisioning were run in advance
    • Builds for all projects currently take 15-30 minutes
    • Kubernetes provisioning of all clouds currently takes 15-30 minutes
  • Live Demo:
    • Start app deployment of all active projects to the provisioned clouds
    • Gitlab App Deploy Pipeline View
    • Dashboard showing app deployments�

7

8 of 23

CI Status Dashboard Overview

CI Dashboard Overview:

  • Overview of cncf.ci (Production)
    • Shows status of 3 pipeline stages: Build, Provision and App Deployments
    • Refreshes at 3:00am Eastern every day
    • Supports dynamically adding/removing active clouds and projects
    • Clicking on Build status badge opens CI system build job URL
    • Clicking on Release Name opens project’s GitHub commit URL
    • Clicking on Deployment status badge opens “provisioning/app-deploy” job URL

8

9 of 23

Cross-cloud Testing System Overview

  • Build Pipeline per project (optional, can use project’s build artifacts)
  • Cloud Provisioning Pipeline (cross-cloud)
  • App Deployment Pipeline (cross-project)

9

10 of 23

Build Pipeline Stage

  1. Build: Compile binaries and e2e tests
  2. Package: Create containers, create artifact pinning config and push to registry
  3. Update-Dashboard: Update build status badges

10

11 of 23

Cloud Provisioning Pipeline Stage

  • Build: Prepare provisioning software from the cross-cloud project
  • Artifacts: Collect K8s artifact pinnings from the previous K8s builds
  • Cross-Cloud: Deploy K8s onto each cloud using Cross-cloud provisioner
  • Update-Dashboard: Update deployment badges

11

12 of 23

App Deployment Pipeline Stage

  • Artifacts: Collect project artifact pinnings from the previous build stages
  • Cross-Project: Use Helm charts to deploy each project
  • End-to-End: Run e2e tests for each project
  • Dashboard-Update: Update deployment status badges

12

13 of 23

CI System Technology Overview

  • Unified CI/CD platform: Gitlab

  • Cross-cloud provisioning: Terraform, Cloud-init,

and per cloud K8s configuration

  • App Deployments: K8s manifest management with Helm

  • E2e tests: Custom containers + Helm

  • Automated builds and deployments: Git + per project yaml configuration

13

14 of 23

Status Dashboard Technology Overview

  • Backend API: Elixir and Erlang

  • Frontend: Vue.js

  • Automated builds and deployments: Git + per project yaml configuration

14

15 of 23

Cross-cloud CI Project Timeline

Phase 1:

  • CI Platform

Phase 2:

  • CI Platform + Status Dashboard, cncf.ci

15

Dash-

board v1.2.0 Release

Dash-

board v1.3.0 Release

Dash-

board v1.0.0 Release

Dash-

board v1.1.0 Release

1st demo of CI Platform

Feb 28

June 27

Aug 13

Sept 22

Jan 26

Mar 12

CI Platform started

Mar 14

Mar 20

CI Platform v.1.0.0 Release

Greenlight

for

Dash-

board

16 of 23

What’s next for Cross-Cloud CI Project?

Add New Projects:

  • Envoy (ETA: April)
  • Jaeger
  • Notary
  • Vitess

16

17 of 23

What’s next for Cross-Cloud CI Project?

Add New Clouds:

  • Oracle (in progress)
  • Huawei
  • Alibaba Cloud
  • Packet + ARM

17

18 of 23

What’s next for Cross-Cloud CI Project?

New Features:

  • Automate project release updates (ETA: April)
  • API for history of builds, deployments and end-to-end tests
  • Rollback to previous working release
  • New screens TBD: Project, Deployments, etc

18

19 of 23

What’s next for Cross-Cloud CI Project?

Cross-Group Collaboration:

  • OpenCI Community
    • Contributing to Collaborative Whitepaper
    • Started an RFC for Pipeline Messaging Protocol

  • Cluster Lifecycle SIG Demo - Tue, April 10th
  • Spinnaker Intro call - Wed, April 11th
  • VMware Cloud Intro call - Thur, April 12th
  • Prometheus end-to-end tests
  • CoreDNS end-to-end tests
  • GitOps Intro call

19

20 of 23

Upcoming Events

  • April 10th & April 24th
    • CI WG Public Meetings

20

21 of 23

Any questions?

21

22 of 23

How to Collaborate with Cross-cloud

Please subscribe to the CNCF CI public mailing list:

https://lists.cncf.io/g/cncf-ci-public

Post to the CI Public Discussion Group:

cncf-ci-public@lists.cncf.io

Create issues on GitHub:

https://github.com/crosscloudci/cross-cloud/issues

22

23 of 23

Today’s Demo Prepared by:

denver@debian.nz

lucina@vulk.coop

taylor@vulk.coop

��

23