1 of 29

2 of 29

K8GB Contribfest

3 of 29

Speakers

Yury Tsarev

Upbound

Principal Solutions Architect

Nuno Guedes

Millennium bcp

Cloud Compute Lead

Creator

End User and Contributor

4 of 29

Show of hands I

Have you ever heard of K8GB?

5 of 29

Show of hands II

Have you ever used K8GB?

6 of 29

Show of hands III

Have you ever contributed to K8GB?

7 of 29

K8GB (Kubernetes Global Balancer) is an open-source project that provides a global traffic management solution for Kubernetes clusters. It is designed to simplify the configuration and management of DNS-based traffic routing for multi-cluster and multi-region Kubernetes deployments.

✅ Open Source CNCF Sandbox project https://www.k8gb.io/

✅ Running on Kubernetes Clusters exposing single Gslb CRD

✅ No Management Cluster needed

✅ No Single Point Of Failure (using DNS protocol, distributed by design)

✅ Multiple load balancing strategies

✅ Designed to handle high impact regional failures

✅ Application (pod-status) aware GSLB(Global Service Load Balancing)

What is K8GB

8 of 29

Handle Regional Failures with Ease

Reliable Global Service Load Balancer without vendor lock-in

9 of 29

Simple Way to Control Global Traffic

Gslb custom resource

or standard Ingress annotations

Reliable Global Service Load Balancer without vendor lock-in

10 of 29

Multiple Integrations

✅ K8GB is architected to run on top of any CNCF-conformant K8s cluster and Ingress controller (Gateway support coming)

✅ Operates in any on-prem, cloud or hybrid scenarios

✅ Supported external DNS providers for full zone delegation automation:

✅ AWS Route53

✅ Azure Public DNS

✅ NS1

✅ Infoblox

✅ Cloudflare

✅ RFC2136 implementations (e.g. Bind/Windows DNS)

Reliable Global Service Load Balancer without vendor lock-in

11 of 29

Project Status

CNCF Sandbox��✅ Incubating proposal is planned for this year

�✅ 3 public adopters

✅ 2 times finalist of CNCF Security Slam

✅ Perfect CLOMonitor score�

✅ Maintainers from Absa, Upbound, Kedify

✅ Contributors from Millenium bcp, Tetrate

Reliable Global Service Load Balancer without vendor lock-in

12 of 29

Show of hands IV

Feel like contributing to K8GB?

13 of 29

Good first issues

14 of 29

Issue #1267

15 of 29

Contribution Flow

Navigating the codebase

Getting familiar with the project codebase

Local Env Setup

Setup Local Multi-Cluster environment to be able to experiment in isolation

Reproducing the issue

Preparing the change

Crafting the code change

Pull Request

Preparing the change for review.

Evaluating the CI/CD pipeline feedback.

Testing

Getting familiar with the project Test Automation

Unit test suite

e2e test suite

16 of 29

Navigating the Codebase

  1. git clone https://github.com/k8gb-io/k8gb.git
  2. cd k8gb

  • Big and mighty Makefile
  • api, controller, main.go - kubebuilder stuff
  • deploy - example manifests
  • docs
  • K8GB helm chart templates

17 of 29

Contribution Flow

Navigating the codebase

Getting familiar with the project codebase

Local Env Setup

Setup Local Multi-Cluster environment to be able to experiment in isolation

Reproducing the issue

Preparing the change

Crafting the code change

Pull Request

Preparing the change for review.

Evaluating the CI/CD pipeline feedback.

Testing

Getting familiar with the project Test Automation

Unit test suite

e2e test suite

18 of 29

Local Multi-Cluster Setup

  • `make deploy-full-local-setup` for the win!
    • Will create 3 k8s clusters
    • 2 k8gb enabled clusters
    • 1 local edgeDNS(bind)
    • https://k3d.io/ is required

  • Straightforward way to investigate the project behavior

  • Exploratory testing for the code change

19 of 29

Contribution Flow

Navigating the codebase

Getting familiar with the project codebase

Local Env Setup

Setup Local Multi-Cluster environment to be able to experiment in isolation

Reproducing the issue

Preparing the change

Crafting the code change

Pull Request

Preparing the change for review.

Evaluating the CI/CD pipeline feedback.

Testing

Getting familiar with the project Test Automation

Unit test suite

e2e test suite

20 of 29

Preparing the code change

  • Usually a branch in your k8gb repo fork

  • We will use this straightforward example for contribution flow demo

21 of 29

Contribution Flow

Navigating the codebase

Getting familiar with the project codebase

Local Env Setup

Setup Local Multi-Cluster environment to be able to experiment in isolation

Reproducing the issue

Preparing the change

Crafting the code change

Pull Request

Preparing the change for review.

Evaluating the CI/CD pipeline feedback.

Testing

Getting familiar with the project Test Automation

Unit test suite

e2e test suite

22 of 29

Test automation, part I

  • Not so unit test suite

  • Testing DNS is hard

  • But it’s possible to fake it locally!

  • Let’s look into our unit test suite and run it together

23 of 29

Test automation, part II

  • What is terratest and why we use it

  • Local multicluster ‘global’ test run

  • Let’s look at e2e testing internal DSL

24 of 29

Contribution Flow

Navigating the codebase

Getting familiar with the project codebase

Local Env Setup

Setup Local Multi-Cluster environment to be able to experiment in isolation

Reproducing the issue

Preparing the change

Crafting the code change

Pull Request

Preparing the change for review.

Evaluating the CI/CD pipeline feedback.

Testing

Getting familiar with the project Test Automation

Unit test suite

e2e test suite

25 of 29

Preparing the Pull Request

  • Example change ready to be submitted

  • Clear intent

  • Bullet points with motivation, semantics and outcome

  • Link to the original/related issue using GitHub PR keywords

  • Lightweight formatting

  • Every PR template contains additional CI instructions

  • Sign-off your commit(s)

26 of 29

Pull Request Feedback

  • What are all these pipes?

  • Understanding the pipelines

  • What to do if something fails

27 of 29

Be a part of K8GB

Visit us at www.k8gb.io

Try K8GB in your environment

Drop any question to #k8gb CNCF slack channel

⭐ Star us in GitHub! :) github.com/k8gb-io/k8gb

Add your organization to ADOPTERS.md!

Create Issues and PRs!

28 of 29

Deploy K8GB local environment on your laptop

Deploy local multi-cluster K8GB environment, get a K8GB sticker

29 of 29

Title

  • The task
  • The flow
  • Local environment setup
  • Testing
  • PR
  • Test pipelines