Skip to main content
Version: 1.27.3

📒 Developer Guide

There is always room for improvement over at Kubernetes Fury Distribution (KFD). We welcome all contributors who would like to get their hands dirty, and we promise to guide you through the journey.

Get an understanding of the core concepts of Fury Distribution

We have great documentation about the core concepts of KFD over here. We recommend you go through it to understand the base principles on how our distribution works and what makes it easy to use and configure. If you have any questions or doubts, please feel free to drop our engineers quickly a message at our Slack or via e-mail.

You can also open a Question issue over at Github.

Understand our tooling and distribution methods

We use a lot of popular package management and infra configuration tools for the KFD distribution. We recommend you get them installed and get a basic understanding of how to use them:

  • kubectl
  • kustomize
  • terraform
  • furyctl (ideally, the latest available)

Basic working knowledge of Kubernetes is required.

Explore our repositories

Finding your way around our repositories can be a bit of a hassle. Due to the modular nature of our distro, the parts comprising our module is rather spreading around. So here is a quick list of our most important repositories:

Repo Name/URLDescription
fury-distributionThis is the base repo of KFD.
furyctlfuryctl is the KFD (Kubernetes Fury Distribution) lifecycle manager

Core Modules

ModuleDescription
NetworkingNetworking functionality via Calico CNI
IngressFast and reliable Ingress Controller and TLS certificate management
LoggingA centralized logging solution based on the EFK stack (Elastic, Fluentd, and Kibana)
MonitoringMonitoring and alerting functionality based on Prometheus, AlertManager, and Grafana
TracingTracing functionality based on Tempo
Disaster RecoveryBackup and disaster recovery solution using Velero
OPAPolicy and Governance for your cluster using OPA Gatekeeper and Gatekeeper Policy Manager
AuthImproved auth for your Kubernetes Cluster and its applications

Add-on Modules

ModuleDescription
KongAdd Kong API Gateway for Kubernetes applications via Kong Ingress Controller
Service MeshDeploy a service mesh on top of KFD
RegistryComprehensive Container Registry solution
KafkaApache Kafka event streaming for your Clustersolution
StorageRook (Ceph Operator) based Storage solution on Kubernetes

Testing Fury out

The best way to get started with Fury is to test it on your favourite cloud provider. We have very well explained documentation about how to set it up with a step by step guide over here. If you are stuck, you know where to get help.

Contributing

If you can think of a feature that might work great with Fury by you can't find it, please open an issue in the fury-distribution repo under the Enhancements template and ask us to add it. Make sure the following information is clear while opening the issue:

  • Describe the feature in a couple of lines.
  • Give us a quick description of the environment where the need arises
  • Describe any available alternative out there

We will review the issue and let you know if it works for us to implement it.

Hands-on

In case someone at SIGHUP reviewed the issue and validated the idea, you will need to fork the repository and create a new branch with a self-descriptive name. For example git checkout -b add-envoy-rate-limit.

💡 we use semantic commits internally, we invite you to follow this standard too when commiting.

It would be best if you worked in your branch until you reached a stable enough feature.

Remember that you will have an engineer at SIGHUP who will help you if you have doubts about the feature.

Once you feel it's the right moment to open a pull request, do it against a new branch SIGHUP engineer should open (ask for it).

The Product Team will review this PR at SIGHUP. Once the Product Team approves the change, it will be merged into our repository, and E2E validation tests will run.

SIGHUP's Product Team is responsible for the releases, so the new feature will be released when the Product Team thinks it's the right moment.