• Stars
    star
    110
  • Rank 316,770 (Top 7 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created almost 4 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Continuous Development on Kubernetes environments with Skaffold

tondra

GitHub license GitHub stars Twitter Follow LinkedIn Follow

A brief example of Kubernetes based Agile-development process with Skaffold.

With a Zero-downtime and rolling update approach that achieved from Kubernetes features.

What is Agile software development?

In software development, agile (sometimes written Agile)[1] practices involve discovering requirements and developing solutions through the collaborative effort of self-organizing and cross-functional teams and their customer(s)/end user(s).[2] It advocates adaptive planning, evolutionary development, early delivery, and continual improvement, and it encourages flexible responses to change. Wikipedia

What is tondra?

tondra is an example application that used Skaffold to demonstrate agile-development process on Kubernetes based environments. In the environments that using Kubernetes for software deployments and providing services, not only we need a Dev/Prod parity approach for a software development but in most cases of Microservices architecture, developers need to connect to other microservices to develop and test their works. In this situation needs of a development environment with a minimum-trusted access is felt. Skaffold is a right technology to achieve these needs. With the Skaffold, developers do not need to worried about deployments and they should focus just on writing codes. skaffold dev command will build the application and deploy it on Kubernetes, code changes are detected automatically and the process of build and deployment is triggered afterward. In addition to this, tondra implements all needed health-check endpoints that can makes application highly available.

Why we should use Skaffold?

Skaffold handles the workflow for building, pushing and deploying your application, allowing you to focus on what matters most: writing code. With Skaffold you can write your codes on your local system and deploy them to Kubernetes clusters as easy as drinking a cup of tea.

How to create a minimum-trusted development environment:

For creating this environment each developer/team that working on a specific microservice needs a Kubernetes Namespace. Each of one can connects to other microservices in other namespaces via Service. With this approach connectivity is achieved without any unnecessary code disclosure.

Installation and usage:

To deploy tondra you need:

  • Kubernetes v1.20 or later versions.
  • Local Docker v2.10+ installation for building Docker images.
  • Skaffold v1.27+ with v2beta18 api version.
  • Helm v3.4 or newer versions.

Get started:

kubectl create ns devel
./start
curl localhost:8080/appinfo

demo

Available endpoints:

The application goes to unhealthy status after processing a number of requests. After that Kubernetes detects this behavior and restarts the unhealthy pod. The number of requests that application can process before going to unhealthly status is considered randomly at application startup. But with this event - restarting pods - the application works prefectly and responsed to all requests.

Endpoint Description
/appinfo Shows application info (app_version, git_commit, target_point, num_requests, health_status).
/livez Use this endpoint in Kubernetes livenessProbe property.
/readyz Use this endpoint in Kubernetes readinessProbe property.

More Repositories

1

jenkins-tutorial

The completest Jenkins tutorial, reference, awesome, examples
335
star
2

jenkins-stack-kubernetes

Scripts and manifests to deploy complete Jenkins on Kubernetes
Shell
192
star
3

kubernetes-complete-reference

Kubernetes reference, awesome, cheatsheet, concepts, tools, examples
183
star
4

maasta

MAAS Terraform Ansible
Python
157
star
5

jenkins-stack-docker

Docker-compose version of jenkins-stack-kubernetes
Dockerfile
150
star
6

vboxpower

VirtualBox Power Driver for MAAS
Python
142
star
7

netmeter-exporter

Prometheus exporter for Netmeter
Python
104
star
8

netmeter

Network monitoring tool
Python
98
star
9

zagros

Zagros Open Source Operating System
Assembly
32
star
10

terraform-tutorial

The completest Terraform tutorial, reference, awesome, examples
HCL
31
star
11

devops-bash-scripts

The completest repository of BASH scripts for DevOps engineers
Shell
22
star
12

ssbostan

My Profile Project :)) Readme
13
star
13

prometheus-multi-tenant-proxy-server

Multi-tenant reverse proxy for Prometheus server
Go
12
star
14

xsocket

XSocket is a cross-platform Socket library
C
11
star
15

docker-with-saeid

Applications repository of Docker with Saeid tutorial
Python
10
star
16

docker-logging-awesome

Complete reference for Docker Logging systems and drivers
7
star
17

neptune

Simple API with Flask web framework
Python
6
star
18

vault-secrets-sdk-go

HCP Vault Secrets SDK for Go programming language
Go
5
star
19

librempc

Multiple Precision Arithmetic
C
5
star
20

telescope

Export kubernetes Pod info
Python
4
star
21

anakonda

Anakonda is an API-led container-based task runner
Python
3
star
22

argostart

Helm Chart to deploy the first ArgoCD Application to setup AppOfApps and AppOfAppSets patterns
Smarty
3
star
23

just-for-dockerize

Test your Dockerizing experience
Python
2
star
24

argoapps

Helm Charts to generate ArgoCD Applications for Kubernetes Platform management
2
star
25

kubernetes-opa-library

Kubernetes OPA Gatekeeper policies with a deployable Helm chart
Shell
1
star
26

vault-secrets-sdk-python

HCP Vault Secrets SDK for Python programming language
1
star
27

charts

Helm charts of my github projects
1
star
28

secret-injector

Helm Chart to deploy Sealed-Secrets and External-Secrets resources
1
star
29

london-tube-lines

An API-led container-based project for DevOps in 10 days
HCL
1
star
30

rafay-deploy-pipeline

Deploy Kubernetes workloads with Rafay Kubernetes platform
HCL
1
star
31

devops

DevOps Conference Website
HTML
1
star