This is a cloud-native application that focuses on the DevOps area.

Overview

Gitpod ready-to-code codecov FOSSA Status

Get started

  1. Install KubeSphere via kk (or other ways). This is an optional step, basically we need a Kubernetes Cluster and the front-end of DevOps.
  2. Install ks-devops via chart
  3. Replace the images of ks-apiserver and ks-controller-manager. In current phase, we need to use a temporary images of KubeSphere which comes from the branch remove-devops-ctrl:
  • kubespheredev/ks-apiserver:remove-devops-ctrl
  • kubespheredev/ks-controller-manager:remove-devops-ctrl

Want to go into deep? Please checkout the documentation.

Install it as a Helm Chart

First, please clone this git repository. Then run command: make install-chart

Run it locally

Technically, apiserver and controller are all binary files. So, it's possible to run them in your local environment. You just need to make sure that the connection between your environment and a Kubernetes cluster works well. This is a default config file of these components, please see also the sample file.

Development locally

  • Run kind in local or remote machine

  • Make sure that you can access cluster via kubectl command in local machine

  • Execute the following command to install our CRDs:

make install
  • Debug code...

  • Execute the following command to uninstall our CRDs:

make uninstall

Create Pipeline via CLI

ks is an official client of KubeSphere. You can create a Pipeline by it.

ks pip create --ws simple --template java --project default --skip-check -b good

APIs

For example, you can access an API like:

curl -H "Authorization: Bearer xxxx" \
  http://localhost:9090/kapis/devops.kubesphere.io/v1alpha3/devops/testblpsz/pipelines

Please get a token from Kubernetes cluster, and replace xxxx with it.

Code contribution

If you're going to update or add CRD go struct, please run the following command once done with that:

make manifests generate generate-listers

then, it can generate CRDs and DeepCopy methods.

Lint your codes

We are using golangci-lint as our code linter. Before you make some code changes, please execute following command to check code style:

golangci-lint run
# Or with specified folder, e.g.
golangci-lint run controllers/jenkinsconfig

TODO

  • A separate front-end project of ks-devops
  • Install ks-devops via helm chart in ks-installer
  • Auth support
    • OIDC support as a default provider

Experimental support

octant-ks-devops is a plugin of octant. It provides a dashboard for Kubernetes and ks-devops.

License

FOSSA Status

Available communication channels:

Issues
  • Provide more refined configuration of Devops agent

    Provide more refined configuration of Devops agent

    opened by JohnNiang 6
  • Add jwt command to generate jwtSecret and Jenkins token

    Add jwt command to generate jwtSecret and Jenkins token

    Considering there're a lot of changes in this PR. Please let me explain what did I do. Hopefully, it can help any potential reviewers.

    • Adding a command-line jwt to generate jwtSecret and Jenkins token
      • Update the ConfigMap devops-config via initContainer of ks-devops-apiserver
    • Unit tests for the jwt command parts
    • Mock code lines generated via gomock
    • Run go mod tidy command to clean go module file

    Caution

    The image ghcr.io/linuxsuren/devops-tools:master does not exist now. Please use surenpi/devops-tools:dev--cdef143 if you want to try it. The official image can be pushed after this PR got merged.

    There're two issues you might meet when you try to use the helm chart:

    • Jenkins cannot start successfully if there's no default StorageClass
      • Possible solution: install openebs, and set a default StorageClass
    • Got wrong connection configuration
      • Jenkins should connect to ks-devops instead of ks-apiserver

    I'm going to fix those issues outside of this PR.

    hi @JohnNiang , please help me to review this PR. Thanks for your time.

    opened by LinuxSuRen 5
  • Add contact links of DevOps team into the README file

    Add contact links of DevOps team into the README file

    opened by LinuxSuRen 4
  • Add  DevOps team contact in the README

    Add DevOps team contact in the README

    Added communication channels to the README file #47 image

    opened by AbdelouahabMbarki 4
  • Fix the container namespace from linuxsuren to kubesphere-sigs

    Fix the container namespace from linuxsuren to kubesphere-sigs

    • issue: #51
    • Description : pointing to container registry ghcr.io/kubesphere-sigs instead of ghcr.io/linuxsuren in values.yaml in helm chart change repository_owner from kubesphere to kubesphere-sigs in build.yaml change to docker hub org from kubespheredev to kubespheresig in build.yaml
    opened by AbdelouahabMbarki 4
  • Fix the communication issue between ks-devops and Jenkins

    Fix the communication issue between ks-devops and Jenkins

    There're three changes you can find in this PR:

    • provide a constant password for the admin user
    • make the default security realm be local instead of LDAP
      • we will support OIDC later
    • provide a correct server address for the KubeSphere token server
    opened by LinuxSuRen 3
  • Refactor getting devops operator

    Refactor getting devops operator

    Due to change of devops authentication, and devops operator has no ability to authenticate request, so we have to intercept request before invoking methods of devops operator. This PR tries to fix alph3 api handler.

    By the way, this PR has merged another PR: https://github.com/LinuxSuRen/ks-devops/pull/29.

    Also fix #38

    opened by JohnNiang 3
  • Provide pre-defined and customizable Jenkins agent resource limit

    Provide pre-defined and customizable Jenkins agent resource limit

    What this pr is for

    By default, pod templates container limits in je-nkins-casc-config configmap is too high (need 4.5C 9.5G per pod), and it's not a good workaround for fresh people who try DevOps component in KubeSphere in a low-hardware configuration server.

    However If we provide a low-requirement of resource per pod as default, users' server won't be killed due to DevOps component.

    What this PR dose

    This pr provides three options for Jenkins agent pod resource limit named jenkins.agent.pod_resource_limit in jenkins-config configmap: default(or leave empty), high and custom, each representing a different limit level respectively, except for the custom option.

    After doing this,

    • Users can configure different limit levels according to their own actual situation to improve the stability and efficiency of the system.
    • Once user has specified the custom option, any subsequent changes will not take effect.
    • Even if uses upgrade from the old version, it will not have any impact.

    Which issue(s) this PR fixes:

    Fix #19

    Special notes for reviewers:

    There are two problems left here:

    • After we change jenkins-casc-config configmap, we have to invoke reload Jenkins CasC configuration api. I suggest to make another pull request for this.
    • If users upgrade KubeSphere, we don't recognize whether jenkins-casc-config configmap is fresh or not. Similarly, I suggest to make another pull request for this one.
    opened by JohnNiang 3
  • 有关 devops api 引用不一致的问题

    有关 devops api 引用不一致的问题

    问题

    在 ks-devops repo 和 kubesphere/api 下我发现了两份不一致的 devops api:

    所以,我们具体以哪个为准呢?

    opened by JohnNiang 3
  • Argo CD integration request

    Argo CD integration request

    Currently, I don't have enough information for this. But Argo CD is a very popular GitOps project. Please contact us, if there's anyone who wants to help with this.

    /help /stage alpha

    help wanted 
    opened by LinuxSuRen 1
  • Add Tekton charts into ks-devops

    Add Tekton charts into ks-devops

    Integrate Tekton into ks-devops by adding chart installation in charts/ks-devops/charts/

    /ospp-2021

    ospp-2021 
    opened by flamywhale 5
  • Change default docker registry into docker.io for charts

    Change default docker registry into docker.io for charts

    Currently, the default docker registry of ks-devops charts is ghcr.io, which is too slow if you are in Chinese network.

    See also: https://github.com/kubesphere-sigs/ks-devops/blob/678147e3ae80f3f12370ee743c03d2041f212864/charts/ks-devops/values.yaml

    Suggestions

    Change the default docker registry from ghcr.io into docker.io.

    /good-first-issue

    good first issue help wanted 
    opened by JohnNiang 4
  • Create a team in postman for ks-devops

    Create a team in postman for ks-devops

    issue: #48 description : include ks-devops postman team link in the readme file

    opened by AbdelouahabMbarki 2
  • Fix kubesphere.yam broken link in the Readme file

    Fix kubesphere.yam broken link in the Readme file

    issue: Broken link in the Readme file #57 description : include kubesphere.yaml link in readme file

    opened by AbdelouahabMbarki 2
  • WIP: Replace informers with k8sclient in the APIServer module

    WIP: Replace informers with k8sclient in the APIServer module

    issue: Replace informers with k8sclient in the APIServer module #40 description: removing informer form ks-devops APIServer

    opened by AbdelouahabMbarki 2
  • Broken link in the Readme file

    Broken link in the Readme file

    There is broken link to https://github.com/kubesphere-sigs/ks-devops/blob/master/config/samples/kubesphere.yaml in the readme file

    image

    opened by AbdelouahabMbarki 7
  • WIP: Fix the token verify error

    WIP: Fix the token verify error

    surenpi/devops-apiserver:dev--14a376c

    opened by LinuxSuRen 1
  • Add support to MacOS node

    Add support to MacOS node

    opened by JohnNiang 2
  • Add a collection of DevOps related projects

    Add a collection of DevOps related projects

    You can find the projects from the following filters:

    Suggestion

    You can create a table to show all those projects. There're two necessary columns, name and description.

    And, I prefer to put it into a new markdown file. Then, add a link in the readme file.

    good first issue 
    opened by LinuxSuRen 1
Owner
KubeSphere SIGs
KubeSphere SIGs
GitHub中文排行榜,帮助你发现高分优秀中文项目、更高效地吸收国人的优秀经验成果;榜单每周更新一次,敬请关注!

榜单设立目的 ???? GitHub中文排行榜,帮助你发现高分优秀中文项目; 各位开发者伙伴可以更高效地吸收国人的优秀经验、成果; 中文项目只能满足阶段性的需求,想要有进一步提升,还请多花时间学习高分神级英文项目; 榜单设立范围 设立1个总榜(所有语言项目汇总排名)、18个分榜(单个语言项目排名);

kon9chunkit 36.7k Jul 25, 2021
k6 is a modern load testing tool for developers and testers in the DevOps era.

k6 is a modern load testing tool, building on our years of experience in the load and performance testing industry. It provides a clean, approachable scripting API, local and cloud execution, and flexible configuration.

k6 13.1k Jul 21, 2021
Terraform provider to help with various AWS automation tasks (mostly all that stuff we cannot accomplish with the official AWS terraform provider)

terraform-provider-awsutils Terraform provider for performing various tasks that cannot be performed with the official AWS Terraform Provider from Has

Cloud Posse 6 Jul 19, 2021
Enterprise-grade container platform tailored for multicloud and multi-cluster management

KubeSphere Container Platform What is KubeSphere English | 中文 KubeSphere is a distributed operating system providing cloud native stack with Kubernete

KubeSphere 5.8k Jul 16, 2021
Interactive Cloud-Native Environment Client

Fenix-CLI:Interactive Cloud-Native Environment Client English | 简体中文 Fenix-CLI is an interactive cloud-native operating environment client. The goal i

IcyFenix 18 Jul 12, 2021
provide api for cloud service like aliyun, aws, google cloud, tencent cloud, huawei cloud and so on

cloud-fitter 云适配 Communicate with public and private clouds conveniently by a set of apis. 用一套接口,便捷地访问各类公有云和私有云 对接计划 内部筹备中,后续开放,有需求欢迎联系。 开发者社区 开发者社区文档

null 16 Jul 3, 2021
A curated list of awesome Kubernetes tools and resources.

Awesome Kubernetes Resources A curated list of awesome Kubernetes tools and resources. Inspired by awesome list and donnemartin/awesome-aws. The Fiery

Tom Huang 806 Jul 22, 2021
基于Gin和Vue框架开发DevOps平台

本项目基于Gin-Vue-Admin开源前后端框架开发 (特别感谢!),在此基础上做了大量精简,力图实现管理Kubernetes、应用监控和发布回滚等功能。 技术栈 前端框架:Element-ui、Vue 后台框架:Gin 部署使用

null 37 Jul 22, 2021
A general purpose cloud provider for Kube-Vip

kube-vip-cloud-provider The Kube-Vip cloud provider is a general purpose cloud-provider for on-prem bare-metal or virtualised environments. It's desig

kube-vip 14 Jul 11, 2021
Litmus helps Kubernetes SREs and developers practice chaos engineering in a Kubernetes native way.

Litmus Cloud-Native Chaos Engineering Read this in other languages. ???? ???? ???? ???? Overview Litmus is a toolset to do cloud-native chaos engineer

Litmus Chaos 1.9k Jul 23, 2021
A simple Kubernetes Operator template that uses Golang, use it to build your own operators

A simple programmatic Kubernetes Operator template. Use this to create your own Kubernetes operators with golang. Build with KIND (Kubernetes in Docke

Cloud Native Skunkworks 3 Apr 11, 2021
Feels like Cloud Foundry. Runs on Kubernetes.

Migrate Cloud Foundry applications to Kubernetes using Kf As your teams standardize on Kubernetes, migrating applications from existing platforms like

Google 342 Jun 28, 2021
Zadig is a cloud native, distributed, developer-oriented continuous delivery product.

Zadig Developer-oriented Continuous Delivery Product ⁣ English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use?

KodeRover 30 May 9, 2021
An operator for managing ephemeral clusters in GKE

Test Cluster Operator for GKE This operator provides an API-driven cluster provisioning for integration and performance testing of software that integ

Isovalent 28 Mar 19, 2021