You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+35-18Lines changed: 35 additions & 18 deletions
Original file line number
Diff line number
Diff line change
@@ -11,69 +11,86 @@ The NGINX K8s Loadbalancer, or _NKL_, is a Kubernetes controller that provides T
11
11
12
12
## Requirements
13
13
14
-
###Who needs NKL?
14
+
[//]: #(### Who needs NKL?)
15
15
16
-
-[ ] If you find yourself living in a world where Kubernetes is running on-premise instead of a cloud provider, you might need NKL.
17
-
-[ ] If you want exceptional, best-in-class load-balancing for your Kubernetes applications, you might need NKL.
18
-
-[ ] If you want the ability to manage your load-balancing configuration with the same tools you use to manage your Kubernetes cluster, you might need NKL.
16
+
[//]: #()
17
+
[//]: #(- [ ] If you find yourself living in a world where Kubernetes is running on-premise instead of a cloud provider, you might need NKL.)
18
+
19
+
[//]: #(- [ ] If you want exceptional, best-in-class load-balancing for your Kubernetes clusters by using NGINX Plus, you might need NKL.)
20
+
21
+
[//]: #(- [ ] If you want the ability to manage your load-balancing configuration with the same tools you use to manage your Kubernetes cluster, you might need NKL.)
22
+
23
+
### What you will need
24
+
25
+
-[ ] A Kubernetes cluster running on-premise.
26
+
-[ ] One or more NGINX Plus hosts running outside your Kubernetes cluster (NGINX Plus hosts must have the ability to route traffic to the cluster).
27
+
28
+
There is a more detailed [Installation Guide](docs/InstallationGuide.md) available in the `docs/` directory.
19
29
20
30
### Why NKL?
21
31
22
32
NKL provides a simple, easy-to-manage way to automate load balancing for your Kubernetes applications by leveraging NGINX Plus hosts running outside your cluster.
23
33
24
34
NKL installs easily, has a small footprint, and is easy to configure and manage.
25
35
26
-
? {{review for embetterment}}: NKL does not require any specific domain knowledge for configuration, though you will have to understand NGINX configuration to get the most out of this solution. There is thorough documentation available about these specifics in the `docs/` directory.
36
+
NKL does not require learning a custom object model, you only have to understand NGINX configuration to get the most out of this solution.
37
+
There is thorough documentation available with the specifics in the `docs/` directory.
27
38
28
39
### What does NKL do?
29
40
30
41
tl;dr:
31
42
32
43
_**NKL is a Kubernetes controller that monitors Services and Nodes in your cluster, and then sends API calls to an external NGINX Plus server to manage NGINX Plus Upstream servers automatically.**_
33
44
34
-
That's all well and good, but what does that mean? Well, Kubernetes clusters require some tooling to handling routing traffic from the outside world (e.g.: the Internet, corporate network, etc.) to the cluster.
35
-
This is typically done with a load balancer. The load balancer is responsible for routing traffic to the appropriate Kubernetes worker node which then forwards the traffic to the appropriate Service / Pod.
45
+
That's all well and good, but what does it mean? Kubernetes clusters require some tooling to handling routing traffic from the outside world (e.g.: the Internet, corporate network, etc.) to the cluster.
46
+
This is typically done with a load balancer. The load balancer is responsible for routing traffic to the appropriate worker node which then forwards the traffic to the appropriate Service / Pod.
36
47
37
48
If you are using a hosted web solution -- Digital Ocean, AWS, Azure, etc. -- you can use the cloud provider's load balancer service. Those services will create a load balancer for you.
38
49
You can use the cloud provider's API to manage the load balancer, or you can use the cloud provider's web console.
39
50
40
-
However, if you checked the first box above, you are running Kubernetes on-premise and will need to manage your own load balancer. This is where NKL comes in.
51
+
If you are running Kubernetes on-premise and will need to manage your own load balancer, NKL can help.
41
52
42
-
NKL itself does not perform load balancing. Instead, NKL allows you to manage resources within your cluster and have the load balancers automatically be updated to support those changes, with tooling you are most likely already using.
53
+
NKL itself does not perform load balancing. Rather, NKL allows you to manage Service resources within your cluster to update your load balancers, with tooling you are most likely already using.
43
54
44
55
## Getting Started
45
56
46
57
There are few bits of administrivia to get out of the way before you can start leveraging NKL for your load balancing needs.
47
58
48
-
As noted above, NKL really shines when you have one or more Kubernetes clusters running on-premise. With this in place,
59
+
As noted above, NKL is intended for when you have one or more Kubernetes clusters running on-premise. In addition to this,
49
60
you need to have at least one NGINX Plus host running outside your cluster (Please refer to the [Roadmap](#Roadmap) for information about other load balancer servers).
50
61
51
-
You will not need to clone this repo to use NKL. Instead, you can install NKL using the included Manifest files (just copy the `deployments/` directory), which pulls the NKL image from the Container Registry.
62
+
### Deployment
52
63
53
-
### RBAC
64
+
####RBAC
54
65
55
66
As with everything Kubernetes, NKL requires RBAC permissions to function properly. The necessary resources are defined in the various YAML files in `deployement/rbac/`.
56
67
57
68
For convenience, two scripts are included, `apply.sh`, and `unapply.sh`. These scripts will apply or remove the RBAC resources, respectively.
58
69
59
-
The permissions required by NKL are modest. NKL requires the ability to read Resources via shared informers; the resources are Services, Nodes, and ConfigMaps.
70
+
The permissions required by NKL are modest. NKL requires the ability to read Resources via shared informers; the resources are Services, Nodes, and ConfigMaps.
60
71
The Services and ConfigMap are restricted to a specific namespace (default: "nkl"). The Nodes resource is cluster-wide.
61
72
62
-
### Configuration
73
+
####Configuration
63
74
64
-
NKL is configured via a ConfigMap, the default settings are found in `deployment/configmap.yaml`. Presently there is a single configuration value exposed in the ConfigMap, `nginx-hosts`.
75
+
NKL is configured via a ConfigMap, the default settings are found in `deployment/configmap.yaml`. Presently there is a single configuration value exposed in the ConfigMap, `nginx-hosts`.
65
76
This contains a comma-separated list of NGINX Plus hosts that NKL will maintain.
66
77
67
78
You will need to update this ConfigMap to reflect the NGINX Plus hosts you wish to manage.
68
79
69
80
If you were to deploy the ConfigMap and start NKL without updating the `nginx-hosts` value, don't fear; the ConfigMap resource is monitored for changes and NKL will update the NGINX Plus hosts accordingly when the resource is changed, no restart required.
70
81
71
-
### Deployment
72
-
73
82
There is an extensive [Installation Guide](docs/InstallationGuide.md) available in the `docs/` directory.
74
83
Please refer to that for detailed instructions on how to deploy NKL and run a demo application.
75
84
76
-
To get NKL up and running in ten steps or fewer, follow these instructions (NOTE, all the aforementioned prerequisites must be met for this to work):
85
+
#### Versioning
86
+
87
+
Versioning is a work in progress. The CI/CD pipeline is being developed and will be used to build and publish NKL images to the Container Registry.
88
+
Once in place, semantic versioning will be used for published images.
89
+
90
+
#### Deployment Steps
91
+
92
+
To get NKL up and running in ten steps or fewer, follow these instructions (NOTE, all the aforementioned prerequisites must be met for this to work).
93
+
There is a much more detailed [Installation Guide](docs/InstallationGuide.md) available in the `docs/` directory.
77
94
78
95
1. Clone this repo (optional, you can simply copy the `deployments/` directory)
0 commit comments