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

Migrate docs to docs.nginx.com #1226

Merged
merged 114 commits into from
Nov 29, 2023
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
48a0e89
chore: hugo initialization
Jcahilltorre Nov 2, 2023
cfce870
chore: fix conflicts
Jcahilltorre Nov 6, 2023
3f5ff52
feat: add hugo meta, rewrite routing-traffic doc
Jcahilltorre Nov 6, 2023
19b159d
fix: update readme for forking process
Jcahilltorre Nov 6, 2023
59b2668
feat: rename the hugo docs folder to hugo
Jcahilltorre Nov 8, 2023
bb21671
chore: Merge remote-tracking branch 'origin/main' into hugo-docs
Jcahilltorre Nov 9, 2023
fe9eca3
feat: update doc, move dev docs picture
Jcahilltorre Nov 9, 2023
0208b09
Update docs/README.md
Jcahilltorre Nov 9, 2023
4c1f5bc
fix: update go version. nits
Jcahilltorre Nov 9, 2023
b8f155f
fix: update filename
Jcahilltorre Nov 9, 2023
5e234ef
fix: update README
Jcahilltorre Nov 9, 2023
2cb5659
fix: README update
Jcahilltorre Nov 9, 2023
62b9459
organzied the NGF docs into diataxis IA
travisamartin Nov 9, 2023
d6b22e5
Merge pull request #1 from Jcahilltorre/doc-269-ngf-ia-rework
travisamartin Nov 9, 2023
7553608
added weights to doc folders and the changelog file
travisamartin Nov 9, 2023
4efca21
Update hugo/README.md
Jcahilltorre Nov 14, 2023
82b2443
Update hugo/README.md
Jcahilltorre Nov 14, 2023
c537934
fix: change docs folder to `site`
Jcahilltorre Nov 14, 2023
8251857
fix: updates to docs readme
Jcahilltorre Nov 14, 2023
5fd21af
Merge branch 'main' into hugo-docs
Jcahilltorre Nov 14, 2023
9d8c1bd
chore: add releases and tech specs dummy pages
Jcahilltorre Nov 14, 2023
6208ac9
Edits to Monitoring topic
travisamartin Nov 15, 2023
b74eeed
chore: edits
travisamartin Nov 15, 2023
6801a6d
chore: edits
travisamartin Nov 15, 2023
8160a68
chore: edits
travisamartin Nov 15, 2023
67e7259
Merge pull request #2 from Jcahilltorre/doc-286-monitoring
travisamartin Nov 16, 2023
4f6b26c
edits to NGF installation guide
travisamartin Nov 16, 2023
395e3ab
Merge branch 'hugo-docs' into doc-285-ngf-installation
travisamartin Nov 16, 2023
69f9814
fix: update caps
Jcahilltorre Nov 16, 2023
5911ef3
chore: rewrite upgrade apps without downtime
Jcahilltorre Nov 16, 2023
fe8a374
fix: update documentation readme run from /site
Jcahilltorre Nov 16, 2023
ff388c8
chore: disable lint line
Jcahilltorre Nov 16, 2023
0cf20ff
Merge branch 'main' into hugo-docs
Jcahilltorre Nov 16, 2023
fb4f584
chore: add custom-styles shortcode
Jcahilltorre Nov 16, 2023
c0b0c5c
reconfigured IA, added Installation dir
travisamartin Nov 17, 2023
2bd0d5e
edits to Manifests install guide
travisamartin Nov 17, 2023
d30d51e
chore: edits to Heml install
travisamartin Nov 18, 2023
2c10d23
chore: edits
travisamartin Nov 18, 2023
3335c04
merged in changes from hugo-docs
travisamartin Nov 18, 2023
4ec4980
chore: fixed broken link
travisamartin Nov 18, 2023
5154845
fixed links
travisamartin Nov 18, 2023
04e33c8
chore: edits
travisamartin Nov 18, 2023
dc68f93
chore: edits
travisamartin Nov 18, 2023
0b19d01
chore: edits
travisamartin Nov 18, 2023
2957ecc
chore: edits
travisamartin Nov 18, 2023
54ba522
chore: edits
travisamartin Nov 20, 2023
f55fb98
Update site/content/installation/installing-ngf/manifests.md
travisamartin Nov 20, 2023
5cb8626
Update site/content/installation/installing-ngf/helm.md
travisamartin Nov 20, 2023
883d2f3
Merge pull request #3 from Jcahilltorre/doc-285-ngf-installation
travisamartin Nov 20, 2023
a34ed77
Update Gateway Architecture document to fit standard NGINX Formatting
ADubhlaoich Nov 20, 2023
d00f5d7
Merge branch 'hugo-docs' of github.com:Jcahilltorre/nginx-gateway-fab…
ADubhlaoich Nov 20, 2023
01a4466
chore: fixed typo
travisamartin Nov 20, 2023
11e84c8
Merge branch 'hugo-docs' of github.com:Jcahilltorre/nginx-gateway-fab…
ADubhlaoich Nov 20, 2023
adcd3d3
fix: typos, style fixes
Jcahilltorre Nov 20, 2023
c8069f9
changed title case to sentence
travisamartin Nov 20, 2023
b700aa6
Merge branch 'hugo-docs' of github.com:Jcahilltorre/nginx-gateway-fab…
travisamartin Nov 20, 2023
7e4da05
changed Manifests title to sentence case
travisamartin Nov 20, 2023
c67a46f
Update site/content/how-to/maintenance/upgrade-apps-without-downtime.md
Jcahilltorre Nov 20, 2023
3ee2769
Update site/content/how-to/maintenance/upgrade-apps-without-downtime.md
Jcahilltorre Nov 20, 2023
d0fa154
Update site/content/how-to/maintenance/upgrade-apps-without-downtime.md
Jcahilltorre Nov 20, 2023
ffa047b
Update site/content/how-to/maintenance/upgrade-apps-without-downtime.md
Jcahilltorre Nov 20, 2023
a93eb38
Update site/content/how-to/maintenance/upgrade-apps-without-downtime.md
Jcahilltorre Nov 20, 2023
327fb32
Update site/content/how-to/maintenance/upgrade-apps-without-downtime.md
Jcahilltorre Nov 20, 2023
1b2adb8
Apply suggestions from code review
Jcahilltorre Nov 20, 2023
bb41615
Update site/content/how-to/traffic-management/routing-traffic-to-your…
Jcahilltorre Nov 20, 2023
4044cf0
fix: add canary release def
Jcahilltorre Nov 20, 2023
3862610
fix: change images shortcode
Jcahilltorre Nov 20, 2023
faad11c
Apply suggestions from code review
ADubhlaoich Nov 21, 2023
c570955
Fix broken links to reflect new file paths
ADubhlaoich Nov 21, 2023
31b7a32
Fix noun capitalization inconsistencies & line formatting.
ADubhlaoich Nov 21, 2023
236554e
Update CLI reference guide to match standard formatting, rephrase text
ADubhlaoich Nov 21, 2023
8e70a4f
Merge pull request #4 from Jcahilltorre/review-architecture
ADubhlaoich Nov 21, 2023
d7c3ddd
fix: update colorbind image , bump theme
Jcahilltorre Nov 21, 2023
b02fec2
chore: update hugo config
Jcahilltorre Nov 22, 2023
a780230
chore: update hugo config
Jcahilltorre Nov 22, 2023
2f88c2d
chore: update hugo config files
Jcahilltorre Nov 22, 2023
4d78850
feat: update makefile
Jcahilltorre Nov 22, 2023
3619273
chore: update netlify.toml
Jcahilltorre Nov 22, 2023
e726c25
fix: update makefile
Jcahilltorre Nov 22, 2023
f2369d1
fix: update hugo config
Jcahilltorre Nov 22, 2023
22e0869
fix: update config file
Jcahilltorre Nov 22, 2023
cbfb753
fix: fix image test
Jcahilltorre Nov 22, 2023
d836d3a
fix: fix images
Jcahilltorre Nov 22, 2023
9b186b7
feat: rewrites
Jcahilltorre Nov 23, 2023
9077dd5
chore: rewrite updates
Jcahilltorre Nov 23, 2023
7ea40c0
fix: update expose doc wording
Jcahilltorre Nov 27, 2023
11f0091
fix: rewrite docs, fix order
Jcahilltorre Nov 28, 2023
56fa7ea
fix: update building the images
Jcahilltorre Nov 28, 2023
072470b
fix: Merge remote-tracking branch 'origin/main' into hugo-docs
Jcahilltorre Nov 28, 2023
f82a543
fix: update new doc changes
Jcahilltorre Nov 28, 2023
a6f2ad4
fix: update README
Jcahilltorre Nov 28, 2023
38ac0e3
fix: update README
Jcahilltorre Nov 28, 2023
c9b99a3
Update docs/README.md
Jcahilltorre Nov 28, 2023
a495f0c
Update site/content/how-to/monitoring/troubleshooting.md
Jcahilltorre Nov 28, 2023
6229e75
Update site/content/how-to/traffic-management/advanced-routing.md
Jcahilltorre Nov 28, 2023
ab2ebb3
Update site/content/installation/expose-nginx-gateway-fabric.md
Jcahilltorre Nov 28, 2023
c8d9c72
Update site/content/how-to/traffic-management/advanced-routing.md
Jcahilltorre Nov 28, 2023
882cf7d
Update site/content/overview/gateway-architecture.md
Jcahilltorre Nov 28, 2023
66f39a4
Update site/content/overview/gateway-architecture.md
Jcahilltorre Nov 28, 2023
c2b60de
Update site/content/overview/gateway-architecture.md
Jcahilltorre Nov 28, 2023
063014e
Update site/content/reference/cli-help.md
Jcahilltorre Nov 28, 2023
a9c1993
fix: fix broken shortcode
Jcahilltorre Nov 28, 2023
e2fe311
fix: fix linting issues
Jcahilltorre Nov 29, 2023
e558e8e
fix: fix lint issues
Jcahilltorre Nov 29, 2023
e00756a
fix: fix lint issues
Jcahilltorre Nov 29, 2023
858d405
fix: fix lint issues
Jcahilltorre Nov 29, 2023
e8fc9dd
chore: update upgrade apps doc
Jcahilltorre Nov 29, 2023
392e627
fix: reword sentence upgrade apps without downtime
Jcahilltorre Nov 29, 2023
ebadc74
fix: various fixes
Jcahilltorre Nov 29, 2023
3c2bbfc
Update site/content/how-to/maintenance/upgrade-apps-without-downtime.md
Jcahilltorre Nov 29, 2023
55eab7e
fix: fix lint issues
Jcahilltorre Nov 29, 2023
05573e1
fix: fix lint issues
Jcahilltorre Nov 29, 2023
7e710ec
fix: fix lint issues
Jcahilltorre Nov 29, 2023
62b5f06
fix: add empty line gitignore
Jcahilltorre Nov 29, 2023
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
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
3 changes: 3 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
public
.hugo_build.lock
resources
68 changes: 68 additions & 0 deletions docs/config/_default/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
title = "NGINX Gateway Fabric"
enableGitInfo = false
baseURL = "/"
publishDir = "public/nginx-gateway-fabric"
staticDir = ["static"]
languageCode = "en-us"
description = "NGINX Gateway Fabric."
refLinksErrorLevel = "ERROR"
enableRobotsTXT = "true"
#canonifyURLs = true
pluralizeListTitles = false
pygmentsCodeFences = true
pygmentsUseClasses = true

[caches]
[caches.modules]
maxAge = -1

[module]
[[module.imports]]
path="github.com/nginxinc/nginx-hugo-theme"

[markup]
[markup.highlight]
codeFences = true
guessSyntax = true
hl_Lines = ""
lineNoStart = 1
lineNos = false
lineNumbersInTable = true
noClasses = true
style = "monokai"
tabWidth = 4
[markup.goldmark]
[markup.goldmark.extensions]
definitionList = true
footnote = true
linkify = true
strikethrough = true
table = true
taskList = true
typographer = true
[markup.goldmark.parser]
attribute = true
autoHeadingID = true
autoHeadingIDType = "gitlab"
[markup.goldmark.renderer]
hardWraps = false
unsafe = true
xhtml = false

[params]
useSectionPageLists = "false"
buildtype = "webdocs"
RSSLink = "/index.xml"
author = "NGINX Inc." # add your company name
github = "nginxinc" # add your github profile name
twitter = "@nginx" # add your twitter profile
#email = ""
noindex_kinds = [
"taxonomy",
"taxonomyTerm"
]
logo = "NGINX-product-icon.svg"

sectionPagesMenu = "docs"

ignoreFiles = [ "\\.sh$", "\\.DS_Store$", "\\.git.*$", "\\.txt$", "\\/config\\/.*", "README\\.*"]
4 changes: 4 additions & 0 deletions docs/config/development/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
baseURL = "https://docs-dev.nginx.com/nginx-gateway-fabric"
title = "DEV -- NGINX Gateway Fabric"
publishDir = "public/nginx-gateway-fabric"
canonifyURLs = false
4 changes: 4 additions & 0 deletions docs/config/production/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
baseURL = "https://docs.nginx.com/nginx-gateway-fabric"
title = "NGINX Gateway Fabric"
publishDir = "public/nginx-gateway-fabric"
canonifyURLs = false
4 changes: 4 additions & 0 deletions docs/config/staging/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
baseURL = "https://docs-staging.nginx.com/nginx-gateway-fabric"
title = "STAGING -- NGINX Gateway Fabric"
publishDir = "public/nginx-gateway-fabric"
canonifyURLs = false
File renamed without changes.
6 changes: 6 additions & 0 deletions docs/content/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
title: "Welcome to the NGINX Gateway Fabric documentation"
description:
linkTitle: "NGINX Gateway Fabric"
menu: docs
---
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
8 changes: 8 additions & 0 deletions docs/content/guides/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: "Guides"
description:
linkTitle: "Guides"
menu:
docs:
parent: NGINX Gateway Fabric
---
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
# Routing to Applications Using HTTP Matching Conditions
---
title: "Routing to Applications Using HTTP Matching Conditions"
description: "Learn how to deploy multiple applications and HTTPRoutes with request conditions such as paths, methods, headers, and query parameters"
weight: 100
toc: true
docs: "DOCS-000"
---

In this guide we will configure advanced routing rules for multiple applications. These rules will showcase request
matching by path, headers, query parameters, and method. For an introduction to exposing your application, it is
recommended to go through the [basic guide](/docs/guides/routing-traffic-to-your-app.md) first.
recommended to go through the [basic guide]({{< relref "/guides/routing-traffic-to-your-app.md" >}}) first.

The following image shows the traffic flow that we will be creating with these rules.

![Traffic Flow Diagram](/docs/images/advanced-routing.png)
![Traffic Flow Diagram](/img/advanced-routing.png)

The goal is to create a set of rules that will result in client requests being sent to specific backends based on
the request attributes. In this diagram, we have two versions of the `coffee` service. Traffic for v1 needs to be
Expand All @@ -16,18 +22,16 @@ and `coffee` applications share the same Gateway.

## Prerequisites

- [Install](/docs/installation.md) NGINX Gateway Fabric.
- [Expose NGINX Gateway Fabric](/docs/installation.md#expose-nginx-gateway-fabric) and save the public IP
- [Install]({{< relref "/installation.md" >}}) NGINX Gateway Fabric.
- [Expose NGINX Gateway Fabric]({{< relref "/installation.md#expose-nginx-gateway-fabric" >}}) and save the public IP
address and port of NGINX Gateway Fabric into shell variables:

```text
GW_IP=XXX.YYY.ZZZ.III
GW_PORT=<port number>
```

> **Note**
> In a production environment, you should have a DNS record for the external IP address that is exposed,
> and it should refer to the hostname that the gateway will forward for.
{{< note >}}In a production environment, you should have a DNS record for the external IP address that is exposed, and it should refer to the hostname that the gateway will forward for.{{< /note >}}

## Coffee Applications

Expand All @@ -42,7 +46,7 @@ kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric
### Deploy the Gateway API Resources for the Coffee Applications

The [Gateway](https://gateway-api.sigs.k8s.io/api-types/gateway/) resource is typically deployed by the
[cluster operator][roles-and-personas]. To deploy the Gateway:
[cluster operator](https://gateway-api.sigs.k8s.io/concepts/roles-and-personas/#roles-and-personas_1). To deploy the Gateway:

```yaml
kubectl apply -f - <<EOF
Expand All @@ -62,7 +66,7 @@ EOF
This Gateway defines a single listener on port 80. Since no hostname is specified, this listener matches on all hostnames.

The [HTTPRoute](https://gateway-api.sigs.k8s.io/api-types/httproute/) is typically deployed by the
[application developer][roles-and-personas]. To deploy the `coffee` HTTPRoute:
[application developer](https://gateway-api.sigs.k8s.io/concepts/roles-and-personas/#roles-and-personas_1). To deploy the `coffee` HTTPRoute:

```yaml
kubectl apply -f - <<EOF
Expand Down Expand Up @@ -116,16 +120,12 @@ the `coffee-v2` Service:
- Request with the path prefix `/coffee` and the query parameter `TEST=v2`
If you want both conditions to be required, you can define headers and queryParams in the same match object.

[roles-and-personas]: https://gateway-api.sigs.k8s.io/concepts/roles-and-personas/#roles-and-personas_1

### Send Traffic to Coffee

Using the external IP address and port for NGINX Gateway Fabric, we can send traffic to our coffee
applications.

> **Note**
> If you have a DNS record allocated for `cafe.example.com`, you can send the request directly to that
> hostname, without needing to resolve.
{{< note >}}If you have a DNS record allocated for `cafe.example.com`, you can send the request directly to that hostname, without needing to resolve.{{< /note >}}

```shell
curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee
Expand Down Expand Up @@ -216,9 +216,7 @@ The properties of this HTTPRoute include:
Using the external IP address and port for NGINX Gateway Fabric, we can send traffic to our tea
applications.

> **Note**
> If you have a DNS record allocated for `cafe.example.com`, you can send the request directly to that
> hostname, without needing to resolve.
{{< note >}}If you have a DNS record allocated for `cafe.example.com`, you can send the request directly to that hostname, without needing to resolve.{{< /note >}}

```shell
curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/tea
Expand Down Expand Up @@ -352,7 +350,7 @@ If you have any issues while sending traffic, try the following to debug your co

## Further Reading

To learn more about the Gateway API and the resources we created in this guide, check out the following resources:
To learn more about the Gateway API and the resources we created in this guide, check out the following Kubernetes documentation resources:

- [Gateway API Overview](https://gateway-api.sigs.k8s.io/concepts/api-overview/)
- [Deploying a simple Gateway](https://gateway-api.sigs.k8s.io/guides/simple-gateway/)
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
136 changes: 136 additions & 0 deletions docs/content/proposals/data-plane-config.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# Enhancement Proposal-929: Data Plane Configuration

- Issue: https://github.com/nginxinc/nginx-kubernetes-gateway/issues/929
- Status: Implementable

## Summary

This proposal is intended to contain the design for how to configure global settings for the data plane
of the NGINX Gateway Fabric (NGF) product. Similar to control plane configuration, we should be able to leverage
a custom resource definition to define data plane configuration, considering fields such as telemetry and
upstream zone size.

## Goals

Define a CRD to configure various global settings for the NGF data plane. The initial configurable
options will be for telemetry (tracing) and upstream zone size.

## Non-Goals

1. This proposal is not defining every setting that needs to be present in the configuration.
2. This proposal is not for any configuration related to control plane.

## Introduction

The NGF data plane will evolve to have various user-configurable options. These could include, but are not
limited to, tracing, logging, or metrics. For the best user experience, these options should be able to be
changed at runtime, to avoid having to restart NGF. The first set of options that we will allow users to
configure are tracing and upstream zone size. The easiest and most intuitive way to implement a Kubernetes-native
API is through a CRD.

The purpose of this CRD is to contain "global" configuration options for the data plane, and not focused on policy
per route or backend.

NGF will reload NGINX when configuration changes are made.

In this doc, the term "user" will refer to the cluster operator (the person who installs and manages NGF). The
cluster operator owns this CRD resource.

## API, Customer Driven Interfaces, and User Experience

The API would be provided in a CRD. An authorized user would interact with this CRD using `kubectl` to `get`
or `edit` the configuration.

Proposed configuration CRD example:

```yaml
apiVersion: gateway.nginx.org/v1alpha1
kind: NginxProxy
metadata:
name: nginx-proxy-config
namespace: nginx-gateway
spec:
http:
upstreamZoneSize: 512k # default
telemetry:
tracing:
enabled: true # default false
endpoint: my-otel-collector.svc:4317 # required
interval: 5s # default
batchSize: 512 # default
batchCount: 4 # default
status:
conditions:
...
```

- The CRD would be Namespace-scoped.
- CRD is initialized and created when NGF is deployed, in the `nginx-gateway` Namespace.
- CRD would be referenced in the [ParametersReference][ref] of the NGF GatewayClass.
- Conditions include `Accepted` if the CRD config is valid, and `Programmed` to determine if an nginx
reload was successful.

[ref]:https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.ParametersReference

## Use Cases

The high level use case is to configure options in the NGF data plane that are not currently configurable. The
CRD also allows for these to change without the need to restart the NGF Pod.

### Tracing

Users may want to observe how traffic is flowing through their applications. Tracing is a great way to achieve
this. By taking advantage of the OpenTelemetry standards, a user can deploy any OTLP-compliant tracing collector
to receive and visualize tracing data. Allowing a user to configure a tracing backend for NGF will forward
nginx tracing data to that backend for visualization.

For future considerations, a user may want to disable tracing for certain routes (or only enable it for certain
routes), in order to reduce the amount of data being collected. We would likely be able to implement a [per-route
Policy](https://gateway-api.sigs.k8s.io/geps/gep-713/#direct-policy-attachment)
that would include this switch. The proposed "global" CRD in this document would remain unchanged, though
could include an additional field to enable or disable tracing globally.

### Upstream Zone Size

As the number of servers within an upstream increases (in other words, Pod replicas for a Service), the
shared memory zone size needs to increase to accomodate this. A user can fine-tune this number to fit their
environment.

## Testing

Unit tests can be leveraged for verifying that NGF properly watches and acts on CRD changes. These tests would
be similar in behavior as the current unit tests that verify the control plane CRD resource processing.

We would need system level tests to ensure that tracing works as expected.

## Security Considerations

We need to ensure that any configurable fields that are exposed to a user are:

- Properly validated. This means that the fields should be the correct type (integer, string, etc.), have appropriate
length, and use regex patterns or enums to prevent any unwanted input. This will initially be done through
OpenAPI schema validation. If necessary as the CRD evolves, CEL or control plane validation could be used.
- Have a valid use case. The more fields we expose, the more attack vectors we create. We should only be exposing
fields that are genuinely useful for a user to change dynamically.

RBAC via the Kubernetes API server will ensure that only authorized users can update the CRD containing NGF data
plane configuration.

## Alternatives

- ConfigMap
A ConfigMap is another type of resource that a user can provide configuration options within, however it lacks the
benefits of a CRD, specifically built-in schema validation, versioning, and conversion webhooks.

- Custom API server
The NGF control plane could implement its own custom API server. However the overhead of implementing this, which
would include auth, validation, endpoints, and so on, would not be worth it due to the fact that the Kubernetes
API server already does all of these things for us.

- Policies CRD for granular control
Being that these are global settings, a user may have a need for more granular control, in other words, changing
the settings at a per-route or per-backend basis. A new Policy CRD could accomplish this in future work.

## References

- [Kubernetes Custom Resources](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/)
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
5 changes: 5 additions & 0 deletions docs/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module github.com/nginxinc/nalb-shared/docs

go 1.18

require github.com/nginxinc/nginx-hugo-theme v0.39.0 // indirect
4 changes: 4 additions & 0 deletions docs/go.sum
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
github.com/nginxinc/nginx-hugo-theme v0.35.0 h1:7XB2GMy6qeJgKEJy9wOS3SYKYpfvLW3/H+UHRPLM4FU=
github.com/nginxinc/nginx-hugo-theme v0.35.0/go.mod h1:DPNgSS5QYxkjH/BfH4uPDiTfODqWJ50NKZdorguom8M=
github.com/nginxinc/nginx-hugo-theme v0.39.0 h1:P1hOPpityVUOM5OyIpQZa1UJyuUunGSmz0oZh/GYSJM=
github.com/nginxinc/nginx-hugo-theme v0.39.0/go.mod h1:DPNgSS5QYxkjH/BfH4uPDiTfODqWJ50NKZdorguom8M=
Loading