GithubHelp home page GithubHelp logo

huawei / containerops Goto Github PK

View Code? Open in Web Editor NEW
336.0 45.0 85.0 38.43 MB

DevOps Orchestration Platform

License: Apache License 2.0

JavaScript 5.14% HTML 2.20% CSS 4.51% Go 50.20% Shell 7.04% Makefile 0.26% Python 15.42% Java 2.39% PHP 4.21% Dockerfile 8.65%
devops orchestration containers containerops devops-workflow

containerops's Introduction

ContainerOps - DevOps Orchestration

Why DevOps orchestration?

There are many tools, projects, plugins, services adopted in the DevOps workflow. However, no one can cover all DevOps tasks. When developers move from one tool to another, they are facing the huge risk of reinvestment. How should we promote the DevOps process and make iteration more speedy? The principle of DevOps orchestration is to keep your original process working without any changes and just assemble tools, projects, plugins, services into orchestration engine. Improvements to the DevOps process can be done by gradually adding or replacing tools, projects, plugins or services for a smooth migration, and overall, DevOps needs to be promoted step by step, invasive changes are dangerous.

How DevOps Orchestration?

Combo the different DevOps services, tools and plugins to implementing DevOps orchestration is very complex, and it should resolve many challenges like deliver data between jobs, or resolve environment consistency for tools or plugins.

ContainerOps VS. Jenkins

  1. Jenkins servers become snowflakes. Maintaining a DevOps workflow needs pasting shell script into the textboxes of UI, uploading and installing multiple plugins and dependencies in the slaves. The ContainerOps could clearly define the DevOps workflow by drawing and dragging through a GUI IDE. It uses the component endpoint URLs and doesn't need to download and install. All dependencies are already self-contained in the component.

  2. Jenkins has no first class support for pipelines, and Jenkins 2.0 tries to address this by introducing a Pipeline plugins. However, it misses the point of DevOps. There are many tools and services throughout the whole Jenkins process, and each has its own pipeline. With the cloud native app becomes more and more sophisticated, this increasing complexity makes tools to be isolated in the chain and finding a good way to pass context in the whole workflow becomes critical. These are the problems ContainerOps wants to resolve.

  3. Plugins accomplish everything you care about in Jenkins, and the plugin has dependencies on the environment. The ContainerOps use container-encapsulated components instead of plugins, and all dependencies have been self-contained in the component. The resources of running a component are handled by the ContainerOps engine through Kubernetes.

Architecture of project

The ContainerOps is a DevOps orchestration platform, and its architecture is micro services. All the codes in one repository, each service has an own folder and maintainer.

  • component - Some components maintained by ContainerOps team.
  • pilotage - The orchestration engine service.
  • crew - It's a RBAC service.
  • dockyard - It's a artifact & container repository.
  • assembling - It's a artifact & container build service.
  • scaler - The third service manage service.
  • nucleus - The component manage service.
  • singular - The deployment and operations tools.
  • logarithm - The log service collect from platform.

Database

The components of ContainerOps all need SQL database support, we suggest use TiDB/TiKV for distribute deployment. For debug, you could create a database in your localhost.

GRANT USAGE ON *.* TO 'containerops'@'localhost' IDENTIFIED BY 'containerops' WITH GRANT OPTION;
CREATE DATABASE `containerops` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON containerops.* TO containerops@localhost IDENTIFIED BY 'containerops';
FLUSH PRIVILEGES;

Contribute

If you interest the ContainerOps and want to get involved in developing. Getting start with this reading:

Community

containerops's People

Contributors

crystaldust avatar fivestarsky avatar genedna avatar haijuntan avatar lupino avatar marxgo avatar sincebyte avatar sixgodhuang avatar small145900 avatar sosozhuang avatar vivixie avatar wangkirin avatar xcheng1982 avatar xiechuanj avatar yangkghjh avatar yongjingzheng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

containerops's Issues

pipeline display

  1. "Action Name", "Action Timeout" label will change "Component Name", "Component Timeout"
  2. input json in inputbox, display imperfect

Correct Docker CE version?

From Docker CE release note page, we can see Docker CE's stable releases include:
17.09.0-ce (2017-09-26)
17.06.2-ce (2017-09-05)
17.06.1-ce (2017-08-15)
17.06.0-ce (2017-06-28)
17.03.1-ce (2017-03-27)
17.03.0-ce (2017-03-01)

And in Cloud Native Stack Integration Status page, current Docker CE version is 17.04.0, which is an edge release.

Is it better to put stable releases in higher priority?

Deploy cluster in parallel

Current deploying cluster in parallel with singular will fail, the reason is that the SSH commands direct both stdio and stderr to the same stream, which is not handled by a locker, so somethings the stream content would be empty(stdio flushes the correct result, no error occurs, then stderr flushes the empty content).

To solve this, just pass 2 readers to SSH commands, receive stdio and stderr separately.

Could you please support service and component of k8s check func

for example, such as Etcd.
step 1 : Verify whether that etcd service exists on the server. Just skip this step for installing etcd service when it exists.
step 2 : Verify whether that etcd binary exists on the server, then ask user replace it or continue.

A suggestion for the dirctory (“containerops/component/images/” )

containerops/component/images/
-------------------------------------- golang/
----------------------------------------------runtime_base/
----------------------------------------------golint_tool/
----------------------------------------------gofmt_tool/
----------------------------------------------XX_tool/
--------------------------------------javalang/
--------------------------------------XXlang/

Add an 'append' command

Sometimes we need to append a node to an existing cluster. For the existing template, we can add one or more node info, then apply it with append subcommand instead of deploy. When reading the template yaml with append subcommand, we can first check if the cluster's master and workers are there, then apply the infras to the newly added nodes.

check pipeline steps

  1. create component, set input, output, env data
  2. create pipeline, add stage, add action, use Component, set data
  3. link component and set relationship
  4. run the pipeline
  5. check code check result
  6. check code build result
  7. check code run result
  8. check code test result
  9. check input output para paras result

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.