Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 93 additions & 0 deletions packs/k8gb-0.19.0/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# K8GB - Kubernetes Global Balancer

## Description

k8gb is a Kubernetes Global Load Balancer (GSLB) that provides DNS-based traffic management across multiple Kubernetes clusters. It enables automatic failover and load balancing by managing DNS records based on the health and availability of application endpoints.

## Prerequisites

Before deploying this pack, ensure that:

- Kubernetes 1.29 or later.
- A supported DNS provider is configured.
- A namespace is specified for the deployment.
- Network connectivity exists between participating clusters when using a multi-cluster deployment.

## CloudTypes Supported

Supported for all cloudTypes.

## Pack Contents

This pack deploys the following components:

- k8gb Operator
- Custom Resource Definitions (CRDs)
- CoreDNS
- ExternalDNS (optional)
- RBAC resources

## Configuration

The following Pack parameter is required:

| Parameter | Description |
|-----------|-------------|
| `pack.namespace` | Namespace where k8gb will be installed. |

Additional application settings can be customized through the `values.yaml` file.

## Presets

This pack provides two presets for configuring how k8gb discovers the external address used for DNS records.

### CoreDNS - ClusterIP

Uses an Ingress resource for address discovery.

Requirements:

- An Ingress Controller (for example, NGINX Ingress Controller) must be installed.
- An Ingress resource must be created for the application.
- The Ingress must be labeled with:

```yaml
k8gb.io/ip-source=true
```

This is the recommended deployment model described in the official k8gb documentation for Ingress-based address discovery.

### CoreDNS - LoadBalancer (Default)

Uses the CoreDNS Service of type `LoadBalancer` to discover the external address.

Recommended for:

- Managed Kubernetes services that provide external LoadBalancers.
- Bare-metal environments using MetalLB.
- Environments where an Ingress Controller is not required.

No Ingress Controller or labeled Ingress resource is required when using this preset.

## Verification

After the deployment completes, verify that:

- All k8gb pods are in the `Running` state.
- The required CRDs have been installed.
- The k8gb controller is running successfully.

Example commands:

```bash
kubectl get pods -n k8gb
kubectl get svc -n k8gb
kubectl get crds | grep k8gb
kubectl logs -n k8gb deployment/k8gb
```

## References

- https://www.k8gb.io/latest/
- https://www.k8gb.io/latest/address_discovery/
- https://github.com/k8gb-io/k8gb
Binary file added packs/k8gb-0.19.0/charts/k8gb-v0.19.0.tgz
Binary file not shown.
23 changes: 23 additions & 0 deletions packs/k8gb-0.19.0/charts/k8gb/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

9 changes: 9 additions & 0 deletions packs/k8gb-0.19.0/charts/k8gb/Chart.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
dependencies:
- name: coredns
repository: https://coredns.github.io/helm
version: 1.45.2
- name: external-dns
repository: https://kubernetes-sigs.github.io/external-dns
version: 1.20.0
digest: sha256:01a1f9be406545ddfc98e5db7246b5fa1ccf8e8d406a6e10b90b41f2c7ae0296
generated: "2026-01-23T17:03:09.819625805Z"
99 changes: 99 additions & 0 deletions packs/k8gb-0.19.0/charts/k8gb/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
annotations:
artifacthub.io/crds: |
- kind: Gslb
version: v1beta1
name: gslbs.k8gb.io
displayName: Gslb
description: Gslb resource for global load balancing strategy configuration
- kind: Gslb
version: v1beta1
name: gslbs.k8gb.absa.oss
displayName: Gslb
description: Legacy Gslb resource (k8gb.absa.oss)
- kind: DNSEndpoint
name: dnsendpoints.externaldns.k8s.io
version: v1alpha1
displayName: DNSEndpoint
description: Using ExternalDNS it synchronizes exposed Kubernetes Services and Ingresses with DNS providers
- kind: ZoneDelegation
version: v1beta1
name: zonedelegations.k8gb.io
displayName: ZoneDelegation
description: ZoneDelegation enables dynamic activation of DNS zones via the ZoneDelegation resource to prevent premature NXDOMAIN responses in multi-tenant or shared clusters.
artifacthub.io/crdsExamples: |
- apiVersion: k8gb.io/v1beta1
kind: Gslb
metadata:
name: test-gslb-failover
namespace: test-gslb
spec:
ingress:
rules:
- host: failover.test.k8gb.io # Desired GSLB enabled FQDN
http:
paths:
- path: /
backend:
service:
name: frontend-podinfo # Service name to enable GSLB for
port:
name: http
strategy:
type: failover # Global load balancing strategy
primaryGeoTag: eu-west-1 # Primary cluster geo tag
- apiVersion: k8gb.io/v1beta1
kind: ZoneDelegation
metadata:
name: test-zone
spec:
loadBalancedZone: test-zone.cloud.example.com
parentZone: cloud.example.com
dnsZoneNegTTL: 30
status:
dnsServers:
- name: gslb-ns-eu-cloud.example.com
address: 172.18.0.6
- name: gslb-ns-us-cloud.example.com
address: 172.18.0.10
artifacthub.io/operator: "true"
artifacthub.io/operatorCapabilities: Seamless Upgrades
apiVersion: v2
appVersion: v0.19.0
dependencies:
- name: coredns
repository: https://coredns.github.io/helm
version: 1.45.2
- alias: extdns
condition: extdns.enabled
name: external-dns
repository: https://kubernetes-sigs.github.io/external-dns
version: 1.20.0
description: A Helm chart for Kubernetes Global Balancer
home: https://www.k8gb.io/
icon: https://www.k8gb.io/images/k8gb-icon-color.svg
keywords:
- gslb
- dns-lb
- kuberneters-global-balancer
- kubernetes-operator
- balancer
- multi-cluster
kubeVersion: '>= 1.21.0-0'
maintainers:
- email: andre.aguas@protonmail.com
name: Andre Baptista Aguas
- email: bradley@0ttl.ai
name: Bradley Andersen
- email: dinar.valeev@absa.africa
name: Dinar Valeev
- email: jiri.kremser@gmail.com
name: Jiri Kremser
- email: kuritka@gmail.com
name: Michal Kuritka
- email: yury@upbound.io
name: Yury Tsarev
name: k8gb
sources:
- https://github.com/k8gb-io/k8gb
type: application
version: v0.19.0
Loading
Loading