Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding the contributing guidelines #12

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 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
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ If the problem is related to a specific module, open the issue in the module re

## Contributing

If you wish to contribute please read the [Contributing Guidelines](docs/CONTRIBUTING.md).
If you wish to contribute please read the [Contributing Guidelines](docs/contributing).

## CNCF Certified 🎓

Expand Down
1 change: 0 additions & 1 deletion docs/CONTRIBUTING.md

This file was deleted.

24 changes: 24 additions & 0 deletions docs/contributing/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Contributing Guidelines 🙌

Here at [SIGHUP][sighup-site] we appreciate and whole-heartedly welcome community
engagement and support. We try to be on top of the issues and
enhancements requested by Fury lovers, and to facilitate that we have
written some guidelines to get you started with the process.

Here are some of the quick links to get you started:

- [Reporting Bugs and Enhancement Requests](bugs.md)
- [Developer Guide](developer.md)

## Get in touch with us

We understand that it is easy to get lost in the wrath of Fury,
since our distro is quite modular and has a lot of moving pieces. You
can always get in touch with us with queries and suggestions on:

- [💬 #fury-distribution community Slack channel at the official Kubernetes Slack][slack-channel]
- [✉️ e-mail our engineering team](mailto:[email protected])

<!-- Links -->
[sighup-site]: https://sighup.io/
[slack-channel]: https://kubernetes.slack.com/archives/C0154HYTAQH
84 changes: 84 additions & 0 deletions docs/contributing/bugs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
---
title: "🐞 Report Issues"
id: "bugs"
---

Team SIGHUP makes it a priority to respond and solve the bugs that are reported
about our tools and products.

Here at SIGHUP, we use GitHub issues to keep track of issues and requests that
can be picked up by the developers in a priority basis.

If you found an issue with any of our products, we recommend first to go through
the existing issues and pull requests in the repo itself to see if it has already
been reported or there is currently a work in progress regarding it.

In case there the issue has not been reported and there are no Pull Requests open,
we invite you to continue to the following sections to open a GitHub Issue Report.

## Bugs and Enhancements

Much like every community product, we thrive under constant feedback and error
reports. We apologise for the issue that you have faced in your Fury journey,
but we promise to get it fixed as soon as possible.

We provide some Issue templates in GitHub to ease the process of reporting and
resolving issues. Once you have a clear idea of the nature of the issue, you can
head over to the component's repository, for example, if you found an issue in
the [logging module](../../modules/logging), you can open an issue in its
[GitHub repository](https://github.com/sighupio/fury-kubernetes-logging/issues)
and in this way we will be notified and get back to you.

You can click on `New Issue` option in the issues section of the repo, and you
will be offered with a couple of templates for the issue in hand. You can chose
either a `Bug Report` or a `Enhancement Request` based on your issue. You can
follow the guidelines that will be offered to you and complete the filing process.

If you lack a GitHub account or prefer to not use it, you can write to our
engineering team an e-mail at `[email protected]`. We recommend you follow
the following structure to help us investingate the issue:

```text
Subject: [BUG] Fury Kubernetes {logging,networking,monitoring,disaster-recovery...}
To: [email protected]
Content:
- Describe the issue in a couple of lines
- Give us a quick description about the environment
- Describe here how to reproduce the issue
- Would be awesome if is reproducible also locally
- How is the impact in you cluster
```

### Security

If you found a security problem, please notify SIGHUP's Security team as soon as possible.

Security-related issues get more priority than other kinds of bugs. We run a lot of tests to ensure every component
runs as expected (as our third parties do) but sometimes it is impossible to cover all scenarios.

You can create an issue exactly like before but choosing the option `Security
Reports` among the issue creation templates. To escalate the issue you can
always send us an e-mail, with the following format:

```text
Subject: [Security Risk] Fury Kubernetes {logging,networking,monitoring,disaster-recovery...}
To: [email protected]
Content:
- Describe the issue in a couple of lines
- Give us a quick description about the environment
- Describe here how to reproduce the issue
- Would be awesome if is reproducible also locally
- How is the impact in you cluster
```

Even if you are not sure about the possible security risk, don't hesitate to get in touch with us [via e-mail or via Slack](index.md#get-in-touch-with-us).

## Questions or queries

If you are having trouble with the setup, we recommend you to join our [Slack
channel](index.md#get-in-touch-with-us), and ask our engineers directly there.

If your question is not time intensive, you can open a `Question` issue over at
GitHub. Follow the same procedure as above, but choose `Question` template
from the list that follows. Give as much information as possible to make the
process a bit easier for us to understand.
115 changes: 115 additions & 0 deletions docs/contributing/developer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
---
title: "📒 Developer Guide"
id: "development"
---

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

## Get an understanding of the core concepts of Fury Distribution

We have a great documentation about the core concepts of KFD over [here](../02-core-concepts/00-principles.md).
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 quickly drop our engineers
a message at [our Slack or via e-mail](index.md#get-in-touch-with-us).

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
distribution of KFD. We recommend you get them installed and get a basic
understanding on how to use them:

* `kubectl` >= 1.20.0
* `kustomize` >= 3.3.0
* `terraform` == 0.15.4
* [furyctl](../02-core-concepts/03-furyctl.md) >= 0.6.0

Basic working knowledge of Kuberentes is required.

## Explore our repos

Having said that, finding your way around our repos 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 gist of our most
important repos:

| Repo Name/URL | Description |
|--------------------------------------------------------------------|---------------------------------|
| [Fury-Distribution](https://github.com/sighupio/fury-distribution) | This is the base repo of `KFD`. |

### Core Modules

| Module | Description |
|---------------------------------|-------------------------------------------------------------------------------------------|
| [Networking][networking-module] | Networking functionality via Calico CNI |
| [Ingress][ingress-module] | Fast and reliable Ingress Controller and TLS certificate management |
| [Logging][logging-module] | A centralized logging solution based on the EFK stack (Elastic, Fluentd and Kibana) |
| [Monitoring][monitoring-module] | Monitoring and alerting functionality based on Prometheus, AlertManager and Grafana |
| [Disaster Recovery][dr-module] | Backup and disaster recovery solution using Velero |
| [OPA][opa-module] | Policy and Governance for your cluster using OPA Gatekeeper and Gatekeeper Policy Manager |

### Add-on Modules

| Module | Description |
|-------------------------------------|------------------------------------------------------------------------------|
| [Kong][kong-module] | Add Kong API Gateway for Kubernetes applications via Kong Ingress Controller |
| [Service Mesh][service-mesh-module] | Deploy a service mesh on top of KFD |
| [Registry][registry-module] | Comprehensive Container Registry solution |

## Testing Fury out

The best way to get started with Fury is to start testing it on your favorite
cloud provider. We have a very well explained documentation about how to set it
up with a step by step guide over [here](../03-quickstart/1-fury-on-eks.mdx). If
you are stuck, you know [where to get help](index.md#get-in-touch-with-us).

## 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`](https://github.com/sighupio/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 le 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](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/working-with-forks)
and create a new branch with a self-descriptive name. For example `git checkout -b add-envoy-rate-limit`.

You should work in your branch until you reach 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)*.

This PR will be reviewed by the Product Team at SIGHUP. Once the Product Team approves the change, it will be
merged into our repository and we will run E2E validation tests.

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.

<!-- Links -->
<!-- Core Modules -->
[networking-module]: https://github.com/sighupio/fury-kubernetes-networking
[ingress-module]: https://github.com/sighupio/fury-kubernetes-ingress
[logging-module]: https://github.com/sighupio/fury-kubernetes-logging
[monitoring-module]: https://github.com/sighupio/fury-kubernetes-monitoring
[dr-module]: https://github.com/sighupio/fury-kubernetes-dr
[opa-module]: https://github.com/sighupio/fury-kubernetes-opa

<!-- Addon Modules -->
[kong-module]: https://github.com/sighupio/fury-kubernetes-kong
[service-mesh-module]: https://github.com/sighupio/fury-kubernetes-service-mesh
[registry-module]: https://github.com/sighupio/fury-kubernetes-registry