UNCLASSIFIED - NO CUI

Skip to content
Snippets Groups Projects
CONTRIBUTING.md 4.55 KiB
Newer Older
# Contributing to Big Bang

Thanks for taking the time to contribute to BigBang!

Michael McLeroy's avatar
Michael McLeroy committed
Table of Contents:

- [Contributing to Big Bang](#contributing-to-big-bang)
  - [Developers Guide](#developers-guide)
  - [Iron Bank Images](#iron-bank-images)
  - [Local Kubernetes cluster](#local-kubernetes-cluster)
  - [Deploying Big Bang (Quick Start)](#deploying-big-bang-quick-start)
  - [Testing Big Bang Development Changes](#testing-big-bang-development-changes)
  - [DNS](#dns)
  - [Secrets & Certificates](#secrets--certificates)
  - [Merge requests process](#merge-requests-process)

Ismail Ahmad's avatar
Ismail Ahmad committed
## Developers Guide 

Big Bang is designed in such a way as to be as easily deployed locally as it is in production.  In fact, most contributions begin locally.

Michael McLeroy's avatar
Michael McLeroy committed
## Iron Bank Images

Per the [charter](https://repo1.dso.mil/platform-one/big-bang/charter), all Big Bang packages will leverage container images from [IronBank](https://ironbank.dso.mil/).  In order to pull these images, ImagePullSecrets must be provided to BigBang.  To obtain access to these images, follow the guides below.  These steps should NOT be used for production since the API keys for a user are only valid when the user is logged into [Registry1](https://registry1.dso.mil)
1) Register for a free Ironbank account [Here](https://sso-info.il2.dso.mil/new_account.html)
1) Log into the [Iron Bank Registry](https://registry1.dso.mil), in the top right click your *Username* and then *User Profile* to get access to your *CLI secret*/API keys.
Michael McLeroy's avatar
Michael McLeroy committed
1) When installing BigBang, set the Helm Values `registryCredentials.username` and `registryCredentials.password` to match your Registry1 username and API token
Michael McLeroy's avatar
Michael McLeroy committed
## Local Kubernetes cluster

Follow the steps below to get a local Kubernetes cluster for Big Bang  using [k3d](https://k3d.io/).
# Create a local k3d cluster with the appropriate port forwards (tested on version 5.4.1)
k3d cluster create --k3s-arg "--no-deploy=metrics-server,traefik@server:*" -p 80:80@loadbalancer -p 443:443@loadbalancer
Michael McLeroy's avatar
Michael McLeroy committed
## Deploying Big Bang (Quick Start)
Michael McLeroy's avatar
Michael McLeroy committed
For development, it is quicker to test changes without having to push to Git.  To do this, we can bypass Flux2 and deploy Big Bang directly with its Helm chart.
Start by creating `myvalues.yaml` to configure your local Big Bang.  Big Bang's template repository contains a starter [development values.yaml](https://repo1.dso.mil/platform-one/big-bang/customers/template/-/blob/main/dev/configmap.yaml).
Michael McLeroy's avatar
Michael McLeroy committed
Configure `myvalues.yaml` to suit your needs.
Michael McLeroy's avatar
Michael McLeroy committed
```bash
# Deploy the latest fluxv2 with Iron Bank images
# For development, you can use flux from the internet using 'flux install`
# Be aware, the internet version is likely newer than the Iron Bank version
evan.rush's avatar
evan.rush committed
# Apply a local version of the Big Bang chart
# NOTE: This is the alternative to deploying a HelmRelease and having flux manage it, we use a local copy to avoid having to commit every change
Michael McLeroy's avatar
Michael McLeroy committed
helm upgrade -i bigbang chart -n bigbang --create-namespace -f myvalues.yaml
# It may take Big Bang up to 10 minutes to recognize your changes and start to deploy them.  This is based on the flux `interval` value set for polling.  You can force Big Bang to immediately check for changes by running the ./scripts/sync.sh script.
./scripts/sync.sh
For more extensive development, use the [Development Guide](./docs/developer).
Michael McLeroy's avatar
Michael McLeroy committed

## Testing Big Bang Development Changes

Development changes should be tested using a full GitOps environment.  The [Big Bang environment template](https://repo1.dso.mil/platform-one/big-bang/customers/template/) should be replicated, either on a branch or new repository, to start your deployment.  Follow the instructions in the [template's readme](https://repo1.dso.mil/platform-one/big-bang/customers/template/-/tree/main/README.md) and in the [Big Bang docs](./docs) for configuration.
Michael McLeroy's avatar
Michael McLeroy committed

Follow the [Big Bang documentation](./docs) for testing a full deployment of Big Bang.

## DNS
evan.rush's avatar
evan.rush committed
To ease with local development, the TLD `bigbang.dev` is maintained by the Big Bang team with the CNAME record:

`CNAME: *.bigbang.dev -> 127.0.0.1`

All routable endpoints BigBang deploys will use the TLD of `bigbang.dev` by default.  It is expected that consumers modify this appropriately for their environment.

Michael McLeroy's avatar
Michael McLeroy committed
## Secrets & Certificates
Follow instructions in the [Big Bang encryption guide](./docs/encryption.md) for how to encrypt and decrypt secrets.
The merge request process is provided as an overview of the pipeline stages required to get a commit merged.
Follow instruction in [CI-Workflow](./docs/developer/ci-workflow.md) for specific details on the pipeline stages.