Skip to content

Commit 617e3ed

Browse files
author
Kate Osborn
committed
Split docs and add links
1 parent 18bc29e commit 617e3ed

File tree

4 files changed

+57
-55
lines changed

4 files changed

+57
-55
lines changed

CONTRIBUTING.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ Before beginning development, familiarize yourself with the following documents:
9191
outlining guidelines and best practices to ensure smooth and efficient pull request processes.
9292
- [Go Style Guide](/docs/developer/go-style-guide.md): A coding style guide for Go. Contains best practices and
9393
conventions to follow when writing Go code for the project.
94-
- [Architecture and Design Principles](/docs/architecture.md): An overview of the project's architecture and design principles.
94+
- [Architecture](/docs/architecture.md): An high-level overview of the project's architecture.
95+
- [Design Principles](/docs/developer/design-principles.md): An overview of the project's design principles.
9596

9697
## Contributor License Agreement
9798

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ For a list of supported Gateway API resources and features, see the [Gateway API
99
> Warning: This project is actively in development (beta feature state) and should not be deployed in a production environment.
1010
> All APIs, SDKs, designs, and packages are subject to change.
1111
12+
Learn about our [design principles](/docs/developer/design-principles.md) and [architecture](/docs/architecture.md).
13+
1214
## Getting Started
1315

1416
1. [Quick Start on a kind cluster](docs/running-on-kind.md).

docs/architecture.md

Lines changed: 1 addition & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Architecture and Design Principles
1+
# Architecture
22

33
This document provides an overview of the architecture and design principles of the NGINX Kubernetes Gateway. The target
44
audience includes the following groups:
@@ -133,56 +133,3 @@ configuration and shutdowns workers with the old configuration.
133133
[conf-file]: https://github.com/nginxinc/nginx-kubernetes-gateway/blob/main/deploy/manifests/nginx-conf.yaml
134134

135135
[share]: https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/
136-
137-
## Design Principles
138-
139-
The aim of NGINX Kubernetes Gateway is to become a fundamental infrastructure component within a Kubernetes cluster,
140-
serving as both an ingress and egress point for traffic directed towards the services (applications) running either
141-
within or outside the cluster. Leveraging NGINX as a data plane technology, it harnesses the well-established reputation
142-
of NGINX as an open-source project widely recognized for its role as a web server, proxy, load balancer, and content
143-
cache. NGINX is renowned for its stability, high performance, security, and rich feature set, positioning it as a
144-
critical infrastructure tool. Notably, once properly configured and operational, NGINX requires minimal attention,
145-
making it reliable and "boring" software.
146-
147-
Likewise, the goal for the NGINX Kubernetes Gateway is to embody the same qualities as NGINX and be regarded as "boring"
148-
software. The principles outlined below serve as a guide for engineering the NGINX Kubernetes Gateway with the intention
149-
of achieving this goal.
150-
151-
### Security
152-
153-
We are security first. We prioritize security from the outset, thoroughly evaluating each design and feature with a
154-
focus on security. We proactively identify and safeguard assets at the early stages of our processes, ensuring their
155-
protection throughout the development lifecycle. We adhere to best practices for secure design, including proper
156-
authentication, authorization, and encryption mechanisms.
157-
158-
### Availability
159-
160-
As a critical infrastructure component, we must be highly available. We design and review features with redundancy and
161-
fault tolerance in mind. We regularly test the NGINX Kubernetes Gateway's availability by simulating failure scenarios
162-
and conducting load testing. We work to identify potential weaknesses and bottlenecks, and address them to ensure high
163-
availability under various conditions.
164-
165-
### Performance
166-
167-
We must be highly performant and lightweight. We fine-tune the NGINX configuration to maximize performance without
168-
requiring custom configuration. We strive to minimize our memory and CPU footprint, enabling efficient resource
169-
allocation and reducing unnecessary processing overhead. We use profiling tools on our code to identify bottlenecks and
170-
improve performance.
171-
172-
### Resilience
173-
174-
We design with resilience in mind. This includes gracefully handling failures, such as pod restarts or network
175-
interruptions, as well as leveraging Kubernetes features like health checks, readiness probes, and container restart
176-
policies.
177-
178-
### Observability
179-
180-
We provide comprehensive logging, metrics, and tracing capabilities to gain insights into our behavior and
181-
performance. We prioritize Kubernetes-native observability tools like Prometheus, Grafana, and distributed
182-
tracing systems to help users monitor the health of NGINX Kubernetes Gateway and to assist in diagnosing issues.
183-
184-
### Ease of Use
185-
186-
NGINX Kubernetes Gateway must be easy and intuitive to use. This means that it should be easy to install, easy to
187-
configure, and easy to monitor. Its defaults should be sane and should lead to "out-of-box" success. The documentation
188-
should be clear and provide meaningful examples that customer's can use to inform their deployments and configurations.

docs/developer/design-principles.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Design Principles
2+
3+
The aim of NGINX Kubernetes Gateway is to become a fundamental infrastructure component within a Kubernetes cluster,
4+
serving as both an ingress and egress point for traffic directed towards the services (applications) running either
5+
within or outside the cluster. Leveraging NGINX as a data plane technology, it harnesses the well-established reputation
6+
of NGINX as an open-source project widely recognized for its role as a web server, proxy, load balancer, and content
7+
cache. NGINX is renowned for its stability, high performance, security, and rich feature set, positioning it as a
8+
critical infrastructure tool. Notably, once properly configured and operational, NGINX requires minimal attention,
9+
making it reliable and "boring" software.
10+
11+
Likewise, the goal for the NGINX Kubernetes Gateway is to embody the same qualities as NGINX and be regarded as "boring"
12+
software. The principles outlined below serve as a guide for engineering the NGINX Kubernetes Gateway with the intention
13+
of achieving this goal.
14+
15+
## Security
16+
17+
We are security first. We prioritize security from the outset, thoroughly evaluating each design and feature with a
18+
focus on security. We proactively identify and safeguard assets at the early stages of our processes, ensuring their
19+
protection throughout the development lifecycle. We adhere to best practices for secure design, including proper
20+
authentication, authorization, and encryption mechanisms.
21+
22+
## Availability
23+
24+
As a critical infrastructure component, we must be highly available. We design and review features with redundancy and
25+
fault tolerance in mind. We regularly test the NGINX Kubernetes Gateway's availability by simulating failure scenarios
26+
and conducting load testing. We work to identify potential weaknesses and bottlenecks, and address them to ensure high
27+
availability under various conditions.
28+
29+
## Performance
30+
31+
We must be highly performant and lightweight. We fine-tune the NGINX configuration to maximize performance without
32+
requiring custom configuration. We strive to minimize our memory and CPU footprint, enabling efficient resource
33+
allocation and reducing unnecessary processing overhead. We use profiling tools on our code to identify bottlenecks and
34+
improve performance.
35+
36+
## Resilience
37+
38+
We design with resilience in mind. This includes gracefully handling failures, such as pod restarts or network
39+
interruptions, as well as leveraging Kubernetes features like health checks, readiness probes, and container restart
40+
policies.
41+
42+
## Observability
43+
44+
We provide comprehensive logging, metrics, and tracing capabilities to gain insights into our behavior and
45+
performance. We prioritize Kubernetes-native observability tools like Prometheus, Grafana, and distributed
46+
tracing systems to help users monitor the health of NGINX Kubernetes Gateway and to assist in diagnosing issues.
47+
48+
## Ease of Use
49+
50+
NGINX Kubernetes Gateway must be easy and intuitive to use. This means that it should be easy to install, easy to
51+
configure, and easy to monitor. Its defaults should be sane and should lead to "out-of-box" success. The documentation
52+
should be clear and provide meaningful examples that customer's can use to inform their deployments and configurations.

0 commit comments

Comments
 (0)