All Projects → nearmap → Kcd

nearmap / Kcd

Licence: mit
Continuous Delivery for Kubernetes

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Kcd

ansible-role-k8s
This role render an arbitrary number of Jinja2 templates and deploys or removes them to/from Kubernetes clusters.
Stars: ✭ 26 (-62.32%)
Mutual labels:  k8s, kubernetes-deployment
aws-eks-orb
An orb to simplify deployments to Amazon Elastic Container Service for Kubernetes (Amazon EKS)
Stars: ✭ 16 (-76.81%)
Mutual labels:  k8s, kubernetes-deployment
kong-map
Kongmap is a free visualization tool which allows you to view and edit configurations of your Kong API Gateway Clusters, including Routes, Services, and Plugins/Policies. The tool is being offered for installation via Docker and Kubernetes at this time.
Stars: ✭ 60 (-13.04%)
Mutual labels:  ci-cd, k8s
kahoy
Simple Kubernetes raw manifests deployment tool
Stars: ✭ 33 (-52.17%)
Mutual labels:  k8s, kubernetes-deployment
Tyk
Tyk Open Source API Gateway written in Go, supporting REST, GraphQL, TCP and gRPC protocols
Stars: ✭ 6,968 (+9998.55%)
Mutual labels:  api, k8s
eks-anywhere
Run Amazon EKS on your own infrastructure 🚀
Stars: ✭ 1,633 (+2266.67%)
Mutual labels:  k8s, kubernetes-deployment
kubernetes
Kubernetes Course
Stars: ✭ 19 (-72.46%)
Mutual labels:  k8s, kubernetes-deployment
Apisix Ingress Controller
ingress controller for K8s
Stars: ✭ 139 (+101.45%)
Mutual labels:  api, k8s
Carvel Kapp
kapp is a simple deployment tool focused on the concept of "Kubernetes application" — a set of resources with the same label
Stars: ✭ 489 (+608.7%)
Mutual labels:  k8s, kubernetes-deployment
Gitkube
Build and deploy docker images to Kubernetes using git push
Stars: ✭ 3,620 (+5146.38%)
Mutual labels:  ci-cd, k8s
deploy
Deploy Development Builds of Open Cluster Management (OCM) on RedHat Openshift Container Platform
Stars: ✭ 133 (+92.75%)
Mutual labels:  k8s, kubernetes-deployment
Screwdriver
An open source build platform designed for continuous delivery.
Stars: ✭ 870 (+1160.87%)
Mutual labels:  api, ci-cd
actions
Set of actions for implementing CI/CD with werf and GitHub Actions
Stars: ✭ 67 (-2.9%)
Mutual labels:  ci-cd, k8s
dashboard
No description or website provided.
Stars: ✭ 18 (-73.91%)
Mutual labels:  k8s, kubernetes-deployment
Orly
🏈 Generate your own O'RLY animal book cover to troll your colleagues | 生成你自己的O'RLY动物书封面,让你的同事惊掉下巴
Stars: ✭ 199 (+188.41%)
Mutual labels:  api, k8s
pipeline-lib
Global shared library for Glia pipeline jobs
Stars: ✭ 68 (-1.45%)
Mutual labels:  ci-cd, kubernetes-deployment
Php K8s
PHP K8s is a PHP handler for the Kubernetes Cluster API, helping you handling the individual Kubernetes resources directly from PHP, like viewing, creating, updating or deleting resources.
Stars: ✭ 111 (+60.87%)
Mutual labels:  api, k8s
K8s Istio Observe Backend
Go-based microservices reference platform for demo of k8s observability with Istio
Stars: ✭ 121 (+75.36%)
Mutual labels:  api, k8s
Kubekey
Provides a flexible, rapid and convenient way to install Kubernetes only, both Kubernetes and KubeSphere, and related cloud-native add-ons. It is also an efficient tool to scale and upgrade your cluster.
Stars: ✭ 288 (+317.39%)
Mutual labels:  k8s, kubernetes-deployment
Chn Eolinker Ams Lite 4.0 For Php
中国最大的在线API管理平台EOLINKER 旗下API管理系统开源精简版,适合个人以及微型团队使用。
Stars: ✭ 869 (+1159.42%)
Mutual labels:  api, ci-cd

KCD

CircleCI Go Report Card GoDoc Docker Pulls GitHub (pre-)release

kcd

Kubernetes Continous Delivery (kcd), formally known as Container Version Manager (kcd), is a continous integration (CI) and continous delivery (CD) tool designed for Kubernetes cluster/services. Fundamentally, kcd is a custom Kubernetes controller to achieve a declarative configuration approach to continuous deployment.

Deployments that requires CI/CD, can declare KCD resource. kcd, KCD (Kubernetes Continous Delivery) controller starts monitoring for any new changes that should be rolled-out. If so, using the rollout strategy specified in this deployment, the rollout of new version is carried out.

kcd assumes ECR as the container registry. Supporting other registeries is T2D (see).

The tool has 3 main parts:

  • KCD Controller
  • KCD Syncer: Docker Registry Syncer (supports ECR and Dockerhub)
  • KCD Tagger: Docker Registry Tagger (supports ECR, with limited Dockerhub support)

architecturekcd logo.png

Docker images are on docker.io

kcd: Controller service

Container version controller that manages KCD resources.

Run locally

 kcd run --k8s-config ~/.kube/config --configmap-key=kube-system/kcd

Docker registry sync service

Registry sync service is a polling service that frequently check on registry (AWS ECR and dockerhub only) to see if new version should be rolled out for a given deployment/container.

Sync service default to using AWS ECR as regisrty provider but dockerhub is also supported. Use --provider dockerhub to use syncer service against dockerhub repo.

Dockerhub note: Dockerhub has very limited support w.r.t. tags via API and also multi-tag support is very limited. see 1, 2, 3 and 4 for more info. When using dockerhub, regisrty syncer monitors a tag (example latest) and when the latest image is change i.e. the digest of the image is changed Syncer picks it up as a candidate deployment and deploys new version.

Run locally

    kcd registry sync \
    --namespace=usdev-api \
    --provider=ecr \
    --kcd=photos-kcd \
    --k8s-config ~/.kube/config

ECR Tagger Util

A tagging tool that integrates with CI side of things to manage tags on the ECR repositories.

Get Tag

    kcd registry tags get \
    --repo  nearmap/kcd  \
    --version <SHA>

Add Tag

    kcd registry tags remove \
    --repo  nearmap/kcd  \
    --tags env-audev-api,env-usdev-api \
    --version <SHA>

Remove Tag

    kcd registry tags remove \
    --repo  nearmap/kcd  \
    --tags env-audev-api,env-usdev-api

Supporting other docker registries

We plan to support other docker registries as well in future via kcd.

Building and running kcd

Build & Run

docker build -t nearmap/kcd .
docker run -ti  nearmap/kcd <command>

Testing with docker-compose

 docker-compose down
 docker-compose rm -f
 docker-compose up --force-recreate --build --abort-on-container-exit

Deploying kcd to Kubernetes cluster

kcdanage is only supported on Kubernetes >= 1.9

kcd can be deployed using:

  1. Kubectl: yaml specs for Kubenetes configuration is here
  2. Helm: Helm chart spec is here and helm package is avaialble here

Please see for more info.

Getting current version of all CV managed deployments

  • REST API http://<host>:8081/v1/kcd/workloads is exposed that return naive html page with tabluar data of all CV managed deployments and current version eg.
[
   {
      "Namespace":"usdev-api",
      "Name":"photosapp",
      "Type":"Deployment",
      "Container":"photosapp-container",
      "Version":"d5dd6d366c1446cc9c0451096deeae3a8f3be48f",
      "AvailablePods":2,
      "CV":"photos-kcd",
      "Tag":"env-usdev-api"
   }
]
  • Html format can also be queried using format query, supported values are json/html. eg. http://localhost:8081/v1/kcd/workloads?format=html see example

  • Same can also be generated by (use --k8s-config only if running outside cluster:

    kcd rd get --k8s-config ~/.kube/config

Rollout history

Use --history CLI option on kcd to capture release history in configmap.

  • When history option is chosen, REST interface http://<host>:8081/v1/kcd/workloads/kcdapp?namespace=kube-system, details the update/rollout history. see example

  • The history is stored in configmap under same namespace as workload resource with configmap name <workload_resource_name>.history eg kcdapp.history see example

Reference links

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].