Skip to content

Commit 96f6330

Browse files
committed
fixed conflicts
2 parents 732acda + 89f7bcc commit 96f6330

12 files changed

+265
-0
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,12 @@ We look forward to building a community around NKL and value all feedback and su
163163
diverse ideas will be key to NKL becoming a solution that is useful to the community. We will consider it a success
164164
when we are able to accept pull requests from the community.
165165

166+
## Authors
167+
- Chris Akker - Solutions Architect - Community and Alliances @ F5, Inc.
168+
- Steve Wagner - Solutions Architect - Community and Alliances @ F5, Inc.
169+
170+
<br/>
171+
166172
## License
167173

168174
[Apache License, Version 2.0](https://github.com/nginxinc/nginx-k8s-loadbalancer/blob/main/LICENSE)

docs/http/http-installation-guide.md

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,22 @@
22
<<<<<<< HEAD
33
<<<<<<< HEAD
44
<<<<<<< HEAD
5+
<<<<<<< HEAD
56
# NGINX Kubernetes Loadbalancer - HTTP MultiCluster LB Solution
67
=======
78
# NGINX Loadbalancer for Kubernetes - HTTP MultiCluster LB Solution
89
>>>>>>> change NKL to NLK
10+
=======
11+
# NGINX Loadbalancer for Kubernetes - HTTP MultiCluster LB Solution
12+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
913
1014
<br/>
1115

1216
## This is the `HTTP Installation Guide` for the NGINX Loadbalancer for Kubernetes Controller Solution. It contains detailed instructions for implementing the different components for the Solution.
1317

1418
<br/>
1519

20+
<<<<<<< HEAD
1621
<<<<<<< HEAD
1722
![Kubernetes](../media/kubernetes-icon.png) | ![NKL](../media/nkl-logo.png)| ![NGINX Plus](../media/nginx-plus-icon.png) | ![NIC](../media/nginx-ingress-icon.png)
1823
=======
@@ -39,6 +44,9 @@
3944
=======
4045
![Kubernetes](../media/kubernetes-icon.png) | ![NLK](../media/nlk-logo.png)| ![NGINX Plus](../media/nginx-plus-icon.png) | ![NIC](../media/nginx-ingress-icon.png)
4146
>>>>>>> change NKL to NLK
47+
=======
48+
![Kubernetes](../media/kubernetes-icon.png) | ![NLK](../media/nlk-logo.png)| ![NGINX Plus](../media/nginx-plus-icon.png) | ![NIC](../media/nginx-ingress-icon.png)
49+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
4250
--- | --- | --- | ---
4351

4452
<br/>
@@ -47,11 +55,15 @@
4755

4856
<<<<<<< HEAD
4957
<<<<<<< HEAD
58+
<<<<<<< HEAD
59+
=======
60+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
5061
### This Solution from NGINX provides Enterprise class features which address common challenges with networking, traffic management, and High Availability for On-Premises Kubernetes Clusters.
5162

5263
1. Provides a `replacement Loadbalancer Service.` The Loadbalancer Service is a key component provided by most Cloud Providers. However, when running a K8s Cluster On Premises, the `Loadbalancer Service is not available.`
5364
This Solution provides a replacement, using an NGINX Server, and a new K8s Controller from NGINX. These two components work together to watch the `nginx-ingress Service` in the cluster, and immediately update the NGINX LB Server when changes occur.
5465

66+
<<<<<<< HEAD
5567
<<<<<<< HEAD
5668
2. Provides `MultiCluster Load Balancing`, traffic steering, health checks, TLS termination, advanced LB algorithms, and enhanced metrics.
5769

@@ -111,6 +123,8 @@ This Solution from Nginx provides Enterprise class features which address common
111123
This Solution provides a replacement, using an NGINX Server, and a new K8s Controller from NGINX. These two components work together to watch the `nginx-ingress Service` in the cluster, and immediately update the NGINX LB Server when changes occur.
112124
=======
113125
>>>>>>> added numbering
126+
=======
127+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
114128
2. Provides `MultiCluster Load Balancing`, traffic steering, health checks, TLS termination, advanced LB algorithms, and enhanced metrics.
115129

116130
3. Provides dynamic, ratio-based Load Balancing for Multiple Clusters. This allows for advanced traffic steering, and operation efficiency with no Reloads or downtime.
@@ -158,12 +172,16 @@ This Solution provides a replacement, using an NGINX Server, and a new K8s Contr
158172

159173
<br/>
160174

175+
<<<<<<< HEAD
161176
<<<<<<< HEAD
162177
## Kubernetes Clusters
163178
>>>>>>> added Grafana
164179
=======
165180
### Kubernetes Clusters
166181
>>>>>>> change to NGINX
182+
=======
183+
### Kubernetes Clusters
184+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
167185
168186
<br/>
169187

@@ -175,6 +193,7 @@ This Solution provides a replacement, using an NGINX Server, and a new K8s Contr
175193
<<<<<<< HEAD
176194
<<<<<<< HEAD
177195
<<<<<<< HEAD
196+
<<<<<<< HEAD
178197
A standard K8s cluster is all that is required, two or more Clusters if you want the `Active/Active MultiCluster Load Balancing Solution` using HTTP Split Clients. There must be enough resources available to run the NGINX Ingress Controller, and the NGINX Kubernetes Loadbalancer Controller, and test application like the Cafe Demo. You must have administrative access to be able to create the namespace, services, and deployments for this Solution. This Solution was tested on Kubernetes version 1.23.
179198

180199
<br/>
@@ -928,14 +947,57 @@ This is not part of the actual Solution, but it is useful to have a well-known a
928947
=======
929948
This is not a component of the actual Solution, but it is useful to have a well-known application running in the cluster, as a known-good target for test commands. The example provided here is used by the Solution to demonstrate proper traffic flows.
930949
>>>>>>> update install guides
950+
=======
951+
A standard K8s cluster is all that is required, two or more Clusters if you want the `Active/Active MultiCluster Load Balancing Solution` using HTTP Split Clients. There must be enough resources available to run the NGINX Ingress Controller, and the NGINX Loadbalancer for Kubernetes Controller, and test application like the Cafe Demo. You must have administrative access to be able to create the namespace, services, and deployments for this Solution. This Solution was tested on Kubernetes version 1.23.
952+
953+
<br/>
954+
955+
## 1. Install NGINX Ingress Controller
956+
957+
<br/>
958+
959+
![NIC](../media/nginx-ingress-icon.png)
960+
961+
<br/>
962+
963+
The NGINX Ingress Controller in this Solution is the destination target for traffic (north-south) that is being sent to the cluster(s). The installation of the actual Ingress Controller is outside the scope of this guide, but the links to the docs are included for your reference. The `NIC installation using Manifests` must follow the documents exactly as written, as this Solution depends on the `nginx-ingress` namespace and service objects. **Only the very last step is changed.**
964+
965+
1. Follow these instructions to deploy the Nginx Ingress Controller into your cluster: https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/
966+
967+
**NOTE:** This Solution only works with `nginx-ingress` from NGINX. It will not work with the K8s Community version of Ingress, called ingress-nginx.
968+
969+
1. If you are unsure which Ingress Controller you are running, check out the blog on nginx.com for more information:
970+
971+
https://www.nginx.com/blog/guide-to-choosing-ingress-controller-part-4-nginx-ingress-controller-options
972+
973+
<br/>
974+
975+
>Important! Do not complete the very last step in the NIC deployment with Manifests, `do not deploy the loadbalancer.yaml or nodeport.yaml Service file!` You will apply a different loadbalancer or nodeport Service manifest later, after the NLK Controller is up and running. `The nginx-ingress Service file must be changed` - it is not the default file.
976+
977+
<br/>
978+
979+
## 2. Install NGINX Cafe Demo Application
980+
981+
<br/>
982+
983+
![Cafe Dashboard](..//media/cafe-dashboard.png)
984+
985+
<br/>
986+
987+
This is not a component of the actual Solution, but it is useful to have a well-known application running in the cluster, as a known-good target for test commands. The example provided here is used by the Solution to demonstrate proper traffic flows.
988+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
931989
932990
Note: If you choose a different Application to test with, `the NGINX configurations and health checks provided here may not work,` and will need to be modified to work correctly.
933991
934992
<br/>
935993
994+
<<<<<<< HEAD
936995
- Use the provided Cafe Demo manifests in the docs/cafe-demo folder:
937996
=======
938997
>>>>>>> added step numbers
998+
=======
999+
1. Use the provided Cafe Demo manifests in the docs/cafe-demo folder:
1000+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
9391001
9401002
```bash
9411003
kubectl apply -f cafe-secret.yaml
@@ -1572,6 +1634,7 @@ Use the `loadbalancer-cluster1.yaml` or `nodeport-cluster1.yaml` manifest file t
15721634
15731635
<br/>
15741636
1637+
<<<<<<< HEAD
15751638
<<<<<<< HEAD
15761639
<<<<<<< HEAD
15771640
When you are finished, the Nginx Plus Dashboard on the LB Server should look similar to the following image:
@@ -1582,6 +1645,9 @@ When you are finished, the NGINX Plus Dashboard on the LB Server should look sim
15821645
=======
15831646
When you are finished, the NGINX Plus Dashboard on the LB Server(s) should look similar to the following image:
15841647
>>>>>>> added step numbers
1648+
=======
1649+
When you are finished, the NGINX Plus Dashboard on the LB Server(s) should look similar to the following image:
1650+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
15851651
15861652
![NGINX Upstreams Dashboard](../media/nlk-multicluster-upstreams.png)
15871653
@@ -1594,6 +1660,7 @@ Important items for reference:
15941660
<<<<<<< HEAD
15951661
<<<<<<< HEAD
15961662
<<<<<<< HEAD
1663+
<<<<<<< HEAD
15971664
>Note: In this example, there is a 3-Node K8s cluster, with one Control Node, and 2 Worker Nodes. The NKL Controller only configures NGINX upstreams with `Worker Node` IP addresses, from Cluster1, which are:
15981665
=======
15991666
>Note: In this example, there is a 3-Node K8s cluster, with one Control Node, and 2 Worker Nodes. The NKL Controller only configures Nginx with `Worker Node` IP addresses, from Cluster1, which are:
@@ -1607,6 +1674,9 @@ Important items for reference:
16071674
=======
16081675
>Note: In this example, there is a 3-Node K8s cluster, with one Control Node, and 2 Worker Nodes. The NLK Controller only configures NGINX upstreams with `Worker Node` IP addresses, from Cluster1, which are:
16091676
>>>>>>> change NKL to NLK
1677+
=======
1678+
>Note: In this example, there is a 3-Node K8s cluster, with one Control Node, and 2 Worker Nodes. The NLK Controller only configures NGINX upstreams with `Worker Node` IP addresses, from Cluster1, which are:
1679+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
16101680
- 10.1.1.8
16111681
- 10.1.1.10
16121682
@@ -1616,11 +1686,15 @@ Cluster2 Worker Node addresses are:
16161686
16171687
<<<<<<< HEAD
16181688
<<<<<<< HEAD
1689+
<<<<<<< HEAD
1690+
=======
1691+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
16191692
Note: K8s Control Nodes are excluded from the list intentionally.
16201693
16211694
<br/>
16221695
16231696
1. Configure DNS, or the local hosts file, for cafe.example.com > NGINXLB Server IP Address. In this example:
1697+
<<<<<<< HEAD
16241698
<<<<<<< HEAD
16251699
16261700
```bash
@@ -1684,6 +1758,8 @@ Note: K8s Control Nodes are excluded from the list intentionally.
16841758
Configure DNS, or the local hosts file, for cafe.example.com > NGINXLB Server IP Address. In this example:
16851759
=======
16861760
>>>>>>> added step numbers
1761+
=======
1762+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
16871763
16881764
```bash
16891765
cat /etc/hosts
@@ -1737,6 +1813,7 @@ Configure DNS, or the local hosts file, for cafe.example.com > NGINXLB Server IP
17371813
<<<<<<< HEAD
17381814
<<<<<<< HEAD
17391815
<<<<<<< HEAD
1816+
<<<<<<< HEAD
17401817
`The NKL Controller detects this change, and modifies the LB Server upstreams.` The Dashboard will show you the new Port numbers, matching the new NodePort definitions. The NKL logs show these messages, confirming the changes:
17411818
>>>>>>> added Grafana
17421819
=======
@@ -1748,6 +1825,9 @@ Configure DNS, or the local hosts file, for cafe.example.com > NGINXLB Server IP
17481825
=======
17491826
`The NLK Controller detects this change, and modifies the LB Server(s) upstreams to match.` The Dashboard will show you the new Port numbers, matching the new LoadBalancer or NodePort definitions. The NLK logs show these messages, confirming the changes:
17501827
>>>>>>> change NKL to NLK
1828+
=======
1829+
`The NLK Controller detects this change, and modifies the LB Server(s) upstreams to match.` The Dashboard will show you the new Port numbers, matching the new LoadBalancer or NodePort definitions. The NLK logs show these messages, confirming the changes:
1830+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
17511831
17521832
![NLK Add NodePort](../media/nlk-cluster1-add-nodeport.png)
17531833
@@ -1756,14 +1836,18 @@ Configure DNS, or the local hosts file, for cafe.example.com > NGINXLB Server IP
17561836
<<<<<<< HEAD
17571837
<<<<<<< HEAD
17581838
<<<<<<< HEAD
1839+
<<<<<<< HEAD
17591840
=======
17601841
>>>>>>> add loadbalancer files
1842+
=======
1843+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
17611844
### MultiCluster Solution
17621845
17631846
If you plan to implement and test the MultiCluster Load Balancing Solution, repeat all the steps to configure the second K8s cluster, identical to the first Cluster1 steps.
17641847
- There is only one change - you MUST use the appropriate `loadbalancer-clusterX.yaml` or `nodeport-clusterX.yaml` manifest to match the appropriate cluster.
17651848
- Don't forget to check and set your ./kube Config Context when you change clusters!
17661849
<<<<<<< HEAD
1850+
<<<<<<< HEAD
17671851
- The NKL Controller in Cluster2 should be updating the `cluster2-https` upstreams.
17681852
<<<<<<< HEAD
17691853
@@ -1844,6 +1928,9 @@ The only tool you need for this, is an HTTP load generation tool. WRK, running
18441928
=======
18451929
- The NLK Controller in Cluster2 should be updating the `cluster2-https` upstreams.
18461930
>>>>>>> change NKL to NLK
1931+
=======
1932+
- The NLK Controller in Cluster2 should be updating the `cluster2-https` upstreams.
1933+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
18471934
18481935
<br/>
18491936
@@ -1919,6 +2006,7 @@ The Completes the Testing Section.
19192006
19202007
## 9. Prometheus and Grafana Servers
19212008
2009+
<<<<<<< HEAD
19222010
<<<<<<< HEAD
19232011
>>>>>>> added Grafana
19242012
=======
@@ -1938,6 +2026,8 @@ Here are the instructions to run 2 Docker containers on a Monitor Server, which
19382026
<<<<<<< HEAD
19392027
## 9. Prometheus and Grafana Servers
19402028
2029+
=======
2030+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
19412031
<br/>
19422032
19432033
![](../media/prometheus-icon.png) |![](../media/grafana-icon.png)
@@ -1952,6 +2042,7 @@ Here are the instructions to run 2 Docker containers on a Monitor Server, which
19522042
### Prometheus
19532043
19542044
1. Configure your Prometheus server to collect NGINX Plus statistics from the scraper page. Use the prometheus.yml file provided, edit the IP addresses to match your NGINX LB Server(s).
2045+
<<<<<<< HEAD
19552046
<<<<<<< HEAD
19562047
19572048
```bash
@@ -2036,6 +2127,8 @@ Here are the instructions to run 2 Docker containers on a Monitor Server, which
20362127
- Configure your Prometheus server to collect NGINX Plus statistics from the scraper page. Use the prometheus.yml file provided, edit the IP addresses to match your NGINX LB Server(s).
20372128
=======
20382129
>>>>>>> added step numbers
2130+
=======
2131+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
20392132
20402133
```bash
20412134
cat prometheus.yaml
@@ -2109,12 +2202,16 @@ Here are the instructions to run 2 Docker containers on a Monitor Server, which
21092202
21102203
<br/>
21112204
2205+
<<<<<<< HEAD
21122206
<<<<<<< HEAD
21132207
## End of Prometheus and Grafana Section
21142208
>>>>>>> added Grafana
21152209
=======
21162210
### End of Prometheus and Grafana Section
21172211
>>>>>>> change to NGINX
2212+
=======
2213+
### End of Prometheus and Grafana Section
2214+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
21182215
21192216
<br/>
21202217

docs/http/http-multicluster-overview.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
<br/>
99

10+
<<<<<<< HEAD
1011
<<<<<<< HEAD
1112
<<<<<<< HEAD
1213
>With the NGINX Plus Servers located external to the Cluster, using NGINX's advanced HTTP/S features provide Enterprise class traffic management solutions.
@@ -16,6 +17,9 @@
1617
=======
1718
>With the NGINX Plus Servers located external to the Cluster, using NGINX's advanced HTTP/S features provide Enterprise class traffic management solutions.
1819
>>>>>>> added step numbers
20+
=======
21+
>With the NGINX Plus Servers located external to the Cluster, using NGINX's advanced HTTP/S features provide Enterprise class traffic management solutions.
22+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
1923
2024
- MultiCluster Active/Active Load Balancing
2125
- Horizontal Cluster Scaling
@@ -27,6 +31,9 @@
2731
- ^^ With NO downtime or reloads
2832
<<<<<<< HEAD
2933
<<<<<<< HEAD
34+
<<<<<<< HEAD
35+
=======
36+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
3037
- NGINX Zone Sync of KeyVal data
3138
- API Gateway functions
3239
- Advanced TLS Processing - MutualTLS, OCSP, FIPS, dynamic cert loading
@@ -64,6 +71,7 @@ NGINX HTTP Split Clients with Dynamic Ratio -- 10% Cluster1 : 90% Cluster2
6471

6572
![NGINX HTTP Split 10](../media/nlk-clusters-10.png)
6673

74+
<<<<<<< HEAD
6775
=======
6876
- Nginx Zone Sync of KeyVal data
6977
=======
@@ -111,6 +119,8 @@ NGINX HTTP Split Clients with Dynamic Ratio -- 10% Cluster1 : 90% Cluster2
111119
![NGINX HTTP Split 10](../media/nkl-clusters-10.png)
112120

113121
>>>>>>> added step numbers
122+
=======
123+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655
114124
115125
<br/>
116126

@@ -121,6 +131,7 @@ The `Installation Guide` for HTTP MultiCluster Solution is located in the docs/h
121131
<br/>
122132
<<<<<<< HEAD
123133
<<<<<<< HEAD
134+
<<<<<<< HEAD
124135

125136
## Authors
126137
- Chris Akker - Solutions Architect - Community and Alliances @ F5, Inc.
@@ -133,3 +144,9 @@ The `Installation Guide` for HTTP MultiCluster Solution is located in the docs/h
133144
- Chris Akker - Solutions Architect - Community and Alliances @ F5, Inc.
134145
- Steve Wagner - Solutions Architect - Community and Alliances @ F5, Inc.
135146
>>>>>>> added step numbers
147+
=======
148+
149+
## Authors
150+
- Chris Akker - Solutions Architect - Community and Alliances @ F5, Inc.
151+
- Steve Wagner - Solutions Architect - Community and Alliances @ F5, Inc.
152+
>>>>>>> 89f7bcc4786e8d14d6416fa64d4b049a11fbe655

0 commit comments

Comments
 (0)