Skip to content
This repository was archived by the owner on Oct 8, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
ec3e69c
chore: update cert-manager chart and crds
Aug 1, 2022
90880d9
chore: update logagent (filebeat) chart version
Aug 1, 2022
0b0a57e
chore: update nginx IC to latest chart version
Aug 1, 2022
32c8080
chore: update prometheus chart to latest version
Aug 1, 2022
cf5cacd
chore: update logstore (Elasticsearch) to latest chart versoin
Aug 1, 2022
8c05f3f
chore: update observability to new yaml and new chart
Aug 1, 2022
b03aba9
chore: update example config with new values
Aug 1, 2022
0ac8f42
fix: remediation of deployment bugs
Aug 2, 2022
a66539e
fix: removed JWT-only logic from BoS
Aug 3, 2022
be5ad7e
fix: remove logic for sirius_host from deprecated jwt deploys
Aug 3, 2022
b74831b
fix: remove deprecated ingress-repo-only project
Aug 3, 2022
58020d4
fix: adjust min kubectl version deployed
Aug 3, 2022
426e5bd
Merge branch 'nginxinc:automation-api' into automation-api
qdzlug Aug 4, 2022
83ecfea
fix: refactor digitalocean to docean for variables
Aug 4, 2022
491e138
Merge branch 'nginxinc:automation-api' into automation-api
qdzlug Aug 4, 2022
f3fb05b
fix: add repo-only IC deploy to support kubeconfig deploys
Aug 8, 2022
16581f1
fix: modifications to handle kubeconfig deploys for now
Aug 8, 2022
0ea0a2b
fix: recommission bash scripts to support kubeconfig deploys for now
Aug 8, 2022
887ef22
fix: gitkeep needed for manifests dir under repo nginx
Aug 8, 2022
1a1dfde
chore: update jenkinsfiles for automation api
Aug 8, 2022
990ee2f
Merge remote-tracking branch 'origin/automation-api' into automation-api
Aug 8, 2022
f004373
fix: updates to the jenkinsfiles
Aug 10, 2022
eca884d
chore: doc updates for automation-api changes
qdzlug Aug 12, 2022
bce74ab
fix: update to docker instance for minikube jenkins
Aug 15, 2022
8adfef0
Merge remote-tracking branch 'qdzlug/automation-api' into automation-api
Aug 15, 2022
7b0d84f
Merge branch 'nginxinc:automation-api' into automation-api
qdzlug Aug 15, 2022
2ea5e07
fix: add wheel back into setup_venv.sh
qdzlug Aug 16, 2022
02f9883
Merge remote-tracking branch 'qdzlug/automation-api' into automation-api
Aug 17, 2022
72fcf08
fix: jenkinsfile updates
Aug 17, 2022
5d278d0
feat: accept stack value on CLI, handle mis-match
qdzlug Aug 18, 2022
38de917
Merge remote-tracking branch 'origin/automation-api' into automation-api
qdzlug Aug 18, 2022
1f29757
chore: reformat markdown to fit standards
Aug 24, 2022
49b68f4
fix: changes requested in #188
Aug 24, 2022
ab2b111
refactor: break up stack environment logic into fnctions
Aug 26, 2022
0ccaef8
refactor: formatting changes to main.py
Aug 26, 2022
a12ec78
fix: address PR comments and formatting
Aug 26, 2022
b2db07e
refactor: formatting fixes
Aug 26, 2022
a0ccc1b
fix: formatting and PR requested changes
Aug 26, 2022
8ae3f8c
refactor: bash script cleanup
Aug 26, 2022
f62cbee
chore: remove deprecated testcap script
Aug 26, 2022
44b9693
fix: shell isn't interpreting the args to pulumi right
Aug 26, 2022
f0d0806
fix: still having weird globbing issues.
Aug 26, 2022
ccb9d8f
fix: adjust jenkinsfiles for new runner syntax
Aug 26, 2022
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 .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ A clear and concise description of what you want to happen.
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
Add any other context or screenshots about the feature request here.
6 changes: 3 additions & 3 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
### Proposed changes
Describe the use case and detail of the change. If this PR addresses an issue
on GitHub, make sure to include a link to that issue here in this description
Describe the use case and detail of the change. If this PR addresses an issue
on GitHub, make sure to include a link to that issue here in this description
(not in the title of the PR).

### Checklist
Before creating a PR, run through this checklist and mark each as complete.

- [ ] I have written my commit messages in the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) format.
- [ ] I have written my commit messages in the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) format.
- [ ] I have read the [CONTRIBUTING](/CONTRIBUTING.md) doc
- [ ] I have added tests (when possible) that prove my fix is effective or that my feature works
- [ ] I have checked that all unit tests pass after adding my changes
Expand Down
49 changes: 49 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
hooks:
- id: check-yaml
args: [--allow-multiple-documents]
- id: check-added-large-files
- id: check-merge-conflict
- id: detect-private-key
- id: trailing-whitespace
- id: mixed-line-ending
- id: end-of-file-fixer
- id: debug-statements
- id: check-merge-conflict
- id: check-ast

- repo: https://github.com/pre-commit/mirrors-autopep8
rev: v1.7.0
hooks:
- id: autopep8

- repo: https://github.com/asottile/dead
rev: v1.5.0
hooks:
- id: dead

- repo: https://github.com/jumanjihouse/pre-commit-hooks
rev: 3.0.0
hooks:
- id: shellcheck
- id: shfmt
- id: markdownlint

- repo: https://github.com/PyCQA/flake8
rev: 5.0.4
hooks:
- id: flake8

- repo: https://github.com/zricethezav/gitleaks
rev: v8.11.0
hooks:
- id: gitleaks

- repo: https://github.com/Yelp/detect-secrets
rev: v1.3.0
hooks:
- id: detect-secrets
12 changes: 7 additions & 5 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,13 +117,15 @@ the community.

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html](https://www.contributor-covenant.org/version/2/0/code_of_conduct.html)
.

Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
[https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq)
. Translations are available at
[https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations).
53 changes: 36 additions & 17 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
# Contributing Guidelines

The following is a set of guidelines for contributing. We really appreciate that you are considering contributing!
The following is a set of guidelines for contributing. We really appreciate
that you are considering contributing!

#### Table Of Contents
## Table Of Contents

[Ask a Question](#ask-a-question)

[Contributing](#contributing)

[Style Guides](#style-guides)
* [Git Style Guide](#git-style-guide)
* [Go Style Guide](#go-style-guide)

* [Git Style Guide](#git-style-guide)
* [Go Style Guide](#go-style-guide)

[Code of Conduct](https://github.com/nginxinc/nginx-wrapper/blob/master/CODE_OF_CONDUCT.md)

Expand All @@ -22,33 +24,50 @@ Please open an Issue on GitHub with the label `question`.

### Report a Bug

To report a bug, open an issue on GitHub with the label `bug` using the available bug report issue template. Please ensure the issue has not already been reported.
To report a bug, open an issue on GitHub with the label `bug` using the
available bug report issue template. Please ensure the issue has not already
been reported.

### Suggest an Enhancement

To suggest an enhancement, please create an issue on GitHub with the label `enhancement` using the available feature issue template.
To suggest an enhancement, please create an issue on GitHub with the label
`enhancement` using the available feature issue template.

### Open a Pull Request

* Fork the repo, create a branch, submit a PR when your changes are tested and ready for review.
* Fork the repo, create a branch, submit a PR when your changes are tested and
ready for review.
* Fill in [our pull request template](/.github/PULL_REQUEST_TEMPLATE.md)

Note: if you’d like to implement a new feature, please consider creating a feature request issue first to start a discussion about the feature.
Note: if you’d like to implement a new feature, please consider creating a
feature request issue first to start a discussion about the feature.

## Style Guides

### Git Style Guide

* Keep a clean, concise and meaningful git commit history on your branch, rebasing locally and squashing before submitting a PR
* Use the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) format when writing a commit message, so that changelogs can be automatically generated
* Follow the guidelines of writing a good commit message as described [here](https://chris.beams.io/posts/git-commit/) and summarised in the next few points
* In the subject line, use the present tense ("Add feature" not "Added feature")
* In the subject line, use the imperative mood ("Move cursor to..." not "Moves cursor to...")
* Limit the subject line to 72 characters or less
* Reference issues and pull requests liberally after the subject line
* Add more detailed description in the body of the git message (`git commit -a` to give you more space and time in your text editor to write a good message instead of `git commit -am`)
* Keep a clean, concise and meaningful git commit history on your branch,
rebasing locally and squashing before submitting a PR
* Use the
[Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) format
when writing a commit message, so that changelogs can be automatically
generated
* Follow the guidelines of writing a good commit message as described
[here](https://chris.beams.io/posts/git-commit/) and summarised in the next
few points
* In the subject line, use the present tense
("Add feature" not "Added feature")
* In the subject line, use the imperative mood ("Move cursor to..." not
"Moves cursor to...")
* Limit the subject line to 72 characters or less
* Reference issues and pull requests liberally after the subject line
* Add more detailed description in the body of the git message (
`git commit -a` to give you more space and time in your text editor to
write a good message instead of `git commit -am`)

### Code Style Guide

* Python code should conform to the [PEP-8 style guidelines](https://www.python.org/dev/peps/pep-0008/) whenever possible.
* Python code should conform to the
[PEP-8 style guidelines](https://www.python.org/dev/peps/pep-0008/)
whenever possible.
* Where feasible, include unit tests.
88 changes: 50 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,40 +1,45 @@
# NGINX Modern Reference Architectures

## Current Test Status

[![FOSSA Status](https://app.fossa.com/api/projects/custom%2B5618%2Fgit%40github.com%3Anginxinc%2Fkic-reference-architectures.git.svg?type=shield)](https://app.fossa.com/projects/custom%2B5618%2Fgit%40github.com%3Anginxinc%2Fkic-reference-architectures.git?ref=badge_shield)
![AWS Status](https://jenkins.mantawang.com/buildStatus/icon?job=mara_aws_prod&subject=AWS)
![DO Status](https://jenkins.mantawang.com/buildStatus/icon?job=mara_do_prod&subject=DigitalOcean)
![LKE Status](https://jenkins.mantawang.com/buildStatus/icon?job=mara_lke_prod&subject=Linode)
![AWS Status](https://jenkins.mantawang.com/buildStatus/icon?job=mara_aws_prod&subject=AWS)
![DO Status](https://jenkins.mantawang.com/buildStatus/icon?job=mara_do_prod&subject=DigitalOcean)
![LKE Status](https://jenkins.mantawang.com/buildStatus/icon?job=mara_lke_prod&subject=Linode)
![K3s Status](https://jenkins.mantawang.com/buildStatus/icon?job=mara_k3s_prod&subject=K3s)
![MicroK8s Status](https://jenkins.mantawang.com/buildStatus/icon?job=mara_mk8s_prod&subject=MicroK8s)
![Minikube Status](https://jenkins.mantawang.com/buildStatus/icon?job=mara_minikube_prod&subject=Minikube)

# NGINX Modern Reference Architectures
![Minikube Status](https://jenkins.mantawang.com/buildStatus/icon?job=mara_minikube_prod&subject=Minikube)

This repository has the basics for a common way to deploy and manage modern apps. Over time, we'll build more example
architectures using different deployment models and options – including other clouds – and you’ll be able to find those
here.
This repository has the basics for a common way to deploy and manage modern
apps. Over time, we'll build more example architectures using different
deployment models and options – including other clouds – and you’ll be able
to find those here.

## Nomenclature

Internally, we refer to this project as MARA for Modern Application Reference Architecture. The current repository name
reflects the humble origins of this project, as it was started with the purpose of allowing users to build custom
versions of the NGINX Ingress Controller in Kubernetes. This went so well that we expanded it to the project you're
currently viewing.
Internally, we refer to this project as MARA for Modern Application Reference
Architecture. The current repository name reflects the humble origins of this
project, as it was started with the purpose of allowing users to build custom
versions of the NGINX Ingress Controller in Kubernetes. This went so well that
we expanded it to the project you're currently viewing.

## Modern App Architectures

We define modern app architectures as those driven by four characteristics:
*scalability*, *portability*, *resiliency*, and *agility*. While many different aspects of a modern architecture exist,
these are fundamental.
*scalability*, *portability*, *resiliency*, and *agility*. While many different
aspects of a modern architecture exist, these are fundamental.

* **Scalability** – Quickly and seamlessly scale up or down to accommodate spikes or reductions in demand, anywhere in
the world.
* **Scalability** – Quickly and seamlessly scale up or down to accommodate
spikes or reductions in demand, anywhere in the world.

* **Portability** – Easy to deploy on multiple types of devices and infrastructures, on public clouds, and on premises.
* **Portability** – Easy to deploy on multiple types of devices and
infrastructures, on public clouds, and on premises.

* **Resiliency** – Can fail over to newly spun‑up clusters or virtual environments in different availability regions,
clouds, or data centers.
* **Resiliency** – Can fail over to newly spun‑up clusters or virtual
environments in different availability regions, clouds, or data centers.

* **Agility** – Ability to update through automated CI/CD pipelines with higher code velocity and more frequent code
pushes.
* **Agility** – Ability to update through automated CI/CD pipelines with higher
code velocity and more frequent code pushes.

This diagram is an example of what we mean by a **modern app architecture**:
![Modern Apps Architecture Example Diagram](docs/DIAG-NGINX-ModernAppsRefArch-NGINX-MARA-1-0-blog-1024x800.png)
Expand All @@ -53,26 +58,32 @@ To satisfy the four key characteristics, many modern app architectures employ:

For details on the current state of this project, please see the
[readme](pulumi/python/README.md) in the [`pulumi/python`](pulumi/python)
subdirectory. This project is under active development, and the current work is using [Pulumi](https://www.pulumi.com/)
with Python. Additionally, please see
[Status and Issues](docs/status-and-issues.md) for the project's up-to-date build status and known issues.

Subdirectories contained within the root directory separate reference architectures by infrastructure deployment tooling
with additional subdirectories as needed. For example, Pulumi allows the use of multiple languages for deployment. As we
decided to use Python in our first build, there is a `python` subdirectory under the `pulumi` directory.

This project was started to provide a complete, stealable, easy to deploy, and standalone example of how a modern app
architecture can be built. It was driven by the necessity to be flexible and not require a long list of dependencies to
get started. It needs to provide examples of tooling used to build this sort of architecture in the real world. Most
importantly, it needs to work. Hopefully this provides a ‘jumping off’ point for someone to build their own
subdirectory. This project is under active development, and the current work is
using [Pulumi](https://www.pulumi.com/) with Python. Additionally, please see
[Status and Issues](docs/status-and-issues.md) for the project's up-to-date
build status and known issues.

Subdirectories contained within the root directory separate reference
architectures by infrastructure deployment tooling with additional
subdirectories as needed. For example, Pulumi allows the use of multiple
languages for deployment. As we decided to use Python in our first build, there
is a `python` subdirectory under the `pulumi` directory.

This project was started to provide a complete, stealable, easy to deploy, and
standalone example of how a modern app architecture can be built. It was driven
by the necessity to be flexible and not require a long list of dependencies to
get started. It needs to provide examples of tooling used to build this sort of
architecture in the real world. Most importantly, it needs to work. Hopefully
this provides a ‘jumping off’ point for someone to build their own
infrastructure.

## Deployment Tools

### Pulumi

[Pulumi](https://www.pulumi.com/) is a modern Infrastructure as Code (IaC) tool that allows you to write code (node,
Python, Go, etc.) that defines cloud infrastructure. Within the [`pulumi`](pulumi) folder are examples of the pulumi
[Pulumi](https://www.pulumi.com/) is a modern Infrastructure as Code (IaC) tool
that allows you to write code (node, Python, Go, etc.) that defines cloud
infrastructure. Within the [`pulumi`](pulumi) folder are examples of the pulumi
being used to stand up MARA.

## Contribution
Expand All @@ -87,6 +98,7 @@ All code in this repository is licensed under the
[Apache License v2 license](LICENSE).

Open source license notices for all projects in this repository can be
found [here](https://app.fossa.com/reports/92595e16-c0b8-4c68-8c76-59696b6ac219).
found
[here](https://app.fossa.com/reports/92595e16-c0b8-4c68-8c76-59696b6ac219).

[![FOSSA Status](https://app.fossa.com/api/projects/custom%2B5618%2Fgit%40github.com%3Anginxinc%2Fkic-reference-architectures.git.svg?type=large)](https://app.fossa.com/projects/custom%2B5618%2Fgit%40github.com%3Anginxinc%2Fkic-reference-architectures.git?ref=badge_large)
[![FOSSA Status](https://app.fossa.com/api/projects/custom%2B5618%2Fgit%40github.com%3Anginxinc%2Fkic-reference-architectures.git.svg?type=large)](https://app.fossa.com/projects/custom%2B5618%2Fgit%40github.com%3Anginxinc%2Fkic-reference-architectures.git?ref=badge_large)
52 changes: 25 additions & 27 deletions bin/aws_write_creds.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,38 @@
set -o errexit # abort on nonzero exit status
set -o pipefail # don't hide errors within pipes

#
# This script is temporary until we rewrite the AWS deployment following #81 and #82.
# We look into the environment and if we see environment variables for the AWS
# authentication process we move them into a credentials file. This is primarily being
# done at this time to support Jenkins using env vars for creds
#
# This script is temporary until we rewrite the AWS deployment following
# 81 and #82. # We look into the environment and if we see environment
# variables for the AWS # authentication process we move them into a
# credentials file. This is primarily being # done at this time to support
# Jenkins using env vars for creds
#

aws_auth_vars=(AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN)

missing_auth_vars=()
for i in "${aws_auth_vars[@]}"
do
test -n "${!i:+y}" || missing_vars+=("$i")
for i in "${aws_auth_vars[@]}"; do
test -n "${!i:+y}" || missing_vars+=("$i")
done

if [ ${#missing_auth_vars[@]} -ne 0 ]
then
echo "Did not find values for:"
printf ' %q\n' "${missing_vars[@]}"
echo "Will assume they are in credentials file or not needed"
if [ ${#missing_auth_vars[@]} -ne 0 ]; then
echo "Did not find values for:"
printf ' %q\n' "${missing_vars[@]}"
echo "Will assume they are in credentials file or not needed"
else
echo "Creating credentials file"
# Create the directory....
mkdir -p ~/.aws
CREDS=~/.aws/credentials
echo "[default]" > $CREDS
echo "aws_access_key_id=$AWS_ACCESS_KEY_ID" >> $CREDS
echo "aws_secret_access_key=$AWS_SECRET_ACCESS_KEY" >> $CREDS
# This is if we have non-temp credentials...
if [[ -z "${AWS_SESSION_TOKEN+x}" ]]; then
echo "Variable AWS_SESSION_TOKEN was unset; not adding to credentials"
else
echo "aws_session_token=$AWS_SESSION_TOKEN" >> $CREDS
fi
echo "Creating credentials file"
# Create the directory....
mkdir -p ~/.aws
CREDS=~/.aws/credentials
echo "[default]" >$CREDS
echo "aws_access_key_id=$AWS_ACCESS_KEY_ID" >>$CREDS
echo "aws_secret_access_key=$AWS_SECRET_ACCESS_KEY" >>$CREDS
# This is if we have non-temp credentials...
if [[ -z "${AWS_SESSION_TOKEN+x}" ]]; then
echo "Variable AWS_SESSION_TOKEN was unset; not adding to credentials"
else
echo "aws_session_token=$AWS_SESSION_TOKEN" >>$CREDS
fi

fi

Loading