Skip to content

Merge in changes made by NGINXaaS for Azure project #1

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

Merged
merged 114 commits into from
Jul 21, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
64a9b9d
Seed repo
puneetsarna Mar 28, 2024
a66041f
Format code
puneetsarna Mar 29, 2024
bb270b9
Lint code
puneetsarna Mar 29, 2024
8584802
Update go version and deps
puneetsarna Mar 30, 2024
00cdef2
Disable exhaustruct linter for now
puneetsarna Jul 8, 2024
c8c1baf
NLB-4655 NLK will retry a work item to update upstreams indefinitely
arussellf5 Jun 26, 2024
e011b20
Update binary/docker img to nginxaas-operator
puneetsarna Jul 23, 2024
8be4d61
Run the informer in go routine
puneetsarna Aug 7, 2024
6948389
NLB-4617 Watcher filters events by annotation on ingress service name
arussellf5 Jul 29, 2024
f3fd672
NLB-4823 Translator assumes that port names provide context and upstr…
arussellf5 Jul 26, 2024
7aa99ae
NLB-5282: Allow images to be pushed to Dockerhub
puneetsarna Aug 17, 2024
067a631
Remove unneeded file
puneetsarna Jul 31, 2024
a4ac798
Capture code coverage
puneetsarna Aug 19, 2024
3786008
NLB-5360 Upgraded nginx-plus client to v 1.2.2
arussellf5 Aug 22, 2024
12ba086
NLB-5065 Operator adds API Key to header
arussellf5 Jul 31, 2024
c6dd79a
Publish helm charts for development
puneetsarna Sep 2, 2024
21d4bbe
Update Chart version to be 0.1.0
puneetsarna Aug 23, 2024
6ecc8f0
Update release script to handle dual artifacts
puneetsarna Aug 26, 2024
beb7ad4
NLB-5549 Translator allows hyphens in upstream name
arussellf5 Sep 16, 2024
9ca27de
Keep major version to 0
puneetsarna Sep 12, 2024
00da1e6
Use semantic versioning
puneetsarna Sep 20, 2024
f48f170
Rename the chart to nginxaas-operator
puneetsarna Sep 24, 2024
975fff6
Update name to be operator
puneetsarna Sep 24, 2024
32aaf74
Update registry paths to dockerhub
puneetsarna Sep 25, 2024
e75a756
Update gitignore with new chart name
puneetsarna Sep 25, 2024
80200a3
Add support for image pull secrets
puneetsarna Sep 25, 2024
7d05b7b
Mount configmap as a volume
puneetsarna Sep 27, 2024
fd31461
Drop configmap access for operator
puneetsarna Sep 27, 2024
10b4be8
Grant permissions to read configmaps
puneetsarna Sep 27, 2024
c140945
NLB-5342 Configuration settings now read from config file
arussellf5 Sep 5, 2024
64399dd
Get rid of helm chart cruft
UnwashedMeme Sep 30, 2024
89f279e
NLB-5678: Template the namespace
puneetsarna Oct 1, 2024
2fb4364
NLB-5666: Inject dataplane API key via Helm
puneetsarna Sep 27, 2024
7d2168b
Cleanup helm chart values
puneetsarna Oct 1, 2024
b3da2be
Quote the helm function
puneetsarna Oct 1, 2024
45a1df5
Default the API Key value in helm
puneetsarna Oct 1, 2024
bb37bf0
Rename nginxaas-operator to nginxaas-loadbalancer-kubernetes
puneetsarna Oct 2, 2024
fa233ec
Fix up helm and docker versions
puneetsarna Oct 2, 2024
2ed642f
Fixup nlk configmap name
puneetsarna Oct 2, 2024
c730c67
Remove configmap and secret permissions
UnwashedMeme Oct 1, 2024
8965228
Put config values in config key
UnwashedMeme Oct 1, 2024
7514bdf
Remove unused YAMLs
puneetsarna Oct 7, 2024
9183981
NLB-5679 Added checksum field to helm nlk-deployment to force restart…
arussellf5 Oct 8, 2024
95390d8
NLB-5679 bumped to v0.4.1
arussellf5 Oct 9, 2024
7ea6d5a
NLB-5717: Add manifest for marketplace app
puneetsarna Oct 8, 2024
e7de62a
NLB-5707: Create UI definition for AKS marketplace
puneetsarna Oct 11, 2024
622e047
NLB-5733: Update Helm chart for Azure Marketplace
puneetsarna Oct 10, 2024
3b30428
NLB-5733: Update Helm chart for Azure Marketplace
puneetsarna Oct 10, 2024
7d38a1f
NLB-5708: Create ARM template for AKS extension
puneetsarna Oct 11, 2024
f8cbcb9
Add constraints to dataplane-related user inputs
puneetsarna Oct 15, 2024
4199f8f
Change extension to ClusterScope
puneetsarna Oct 17, 2024
7bf53d9
Use release namespace everywhere
puneetsarna Oct 21, 2024
1225fe1
Fixup helm value supplied in extension
puneetsarna Oct 21, 2024
979d4be
Allow NLK to READ endpoint slices
puneetsarna Oct 18, 2024
b43c21e
NLB-5753 Added buildinfo package and injected vars at build time
arussellf5 Oct 16, 2024
19f797e
NLB-5753 Replaced logrus with slog as the nlk logger; added version i…
arussellf5 Oct 16, 2024
53b5685
NLB-6753 Added nlk version to outgoing request headers
arussellf5 Oct 16, 2024
40d6a00
NLB-5753 Bumped to version 0.6.1
arussellf5 Oct 16, 2024
51f8013
Update AKS API version in marketplace bundle
puneetsarna Nov 6, 2024
d982051
NLB-4468 Added package pointer from ARP
arussellf5 Nov 7, 2024
f86ad73
NLB-4468 Added support for cluster IP services, service IP addresses …
arussellf5 Oct 31, 2024
1edb633
NLB-4468 Bumped version to 0.7.0
arussellf5 Nov 7, 2024
8fa8185
NLB-5868: Use same image tag as appVersion
puneetsarna Nov 7, 2024
425d954
NLB-5872 NLK main routine uses a shared informer factory
arussellf5 Nov 11, 2024
2463e01
NLB-5872 Added event handlers for endpoint slice events
arussellf5 Nov 13, 2024
6b821a3
NLB-5872 Added node informer to watcher
arussellf5 Nov 14, 2024
81489c9
NLB-5872 Translator now uses shared listers to access endpoint slices…
arussellf5 Nov 15, 2024
e9230a9
NLB-5872 If user removes nginxaas service annotation remove the servi…
arussellf5 Nov 19, 2024
917b58e
NLB-5872 Bumped version to 0.8.0
arussellf5 Nov 15, 2024
edce61b
Update chart,app version to 0.8.0
puneetsarna Dec 7, 2024
2857828
Update default logger to be info
puneetsarna Dec 9, 2024
2064f54
NLB-5933 Remove handler; responsibilities for looking up upstream ser…
arussellf5 Dec 11, 2024
abb3337
NLB-5933 Added error group to the main routine
arussellf5 Dec 11, 2024
c7fee28
NLB-5933 Remove PreviousService from core event
arussellf5 Dec 17, 2024
2838ba8
NLB-5933 Handle 404 errors when deleting upstream servers
arussellf5 Dec 19, 2024
ba5f39b
NLB-5933 Bumped version to 0.8.2
arussellf5 Dec 19, 2024
4f36990
Upgrade the indirect net dep
puneetsarna Jan 4, 2025
ff2078b
Upgrade nginx-plus-go-client to v2.2.0
arussellf5 Jan 9, 2025
51b207a
Bumped version to 0.8.3
arussellf5 Jan 9, 2025
9f0fb39
NLB-6070 Removal of service annotation is equivalent to service deletion
arussellf5 Jan 21, 2025
99d72a1
NLB-6070 bumped version to 0.8.4
arussellf5 Jan 21, 2025
719d8d1
NLB-5828: update nginx-plus-go-client version
dylan-way Jan 29, 2025
4866119
Release NLK 1.0.0
puneetsarna Feb 4, 2025
75fbd52
NLB-6230 Handle services of type LoadBalancer
arussellf5 Feb 10, 2025
503baf5
NLB-6320 Bumped to version 1.1.0
arussellf5 Feb 10, 2025
b3dcd17
NLB-6293 Updated k8s libraries used by NLK
arussellf5 Feb 27, 2025
e4c017b
NLB-6293 Added mutex lock around certification's Certificates type
arussellf5 Feb 27, 2025
d6be96b
NLB-6293 Upgraded golangci-lint to v1.64.5 and fixed configuration
arussellf5 Feb 27, 2025
769c5be
NLB-6294 The synchronizer uses a typed rate-limited workqueue
arussellf5 Feb 27, 2025
236137f
NLB-6294 Bumped version to 1.1.1
arussellf5 Feb 27, 2025
180acca
NLB-6294 NewTransport clones the default http.DefaultTransport variable
arussellf5 Feb 28, 2025
c97e398
prometheus config update (#178)
chrisakker Jul 25, 2024
57877fa
update prometheus files (#179)
chrisakker Aug 1, 2024
213a5d0
fix typo (#181)
chrisakker Aug 13, 2024
3c607d0
Fix "listen" directive syntax prometheus.conf (#180)
itaytalmi Oct 25, 2024
df7f96e
Corrects the NGINX Plus Client interface
ciroque Feb 14, 2025
fc21eaf
Removed synhronization's random functions
arussellf5 Mar 13, 2025
fee4216
NGINX plus http client rejects requests with too many headers
arussellf5 Mar 21, 2025
85f81a1
Upgraded go to 1.23.8 and golang.org/x/sync to v0.12.0
arussellf5 Mar 21, 2025
5454980
Bumped version to 1.1.2
arussellf5 Mar 21, 2025
b16c2be
Skip go-cache while linting
puneetsarna May 19, 2025
1bfc2c4
unit test flake fix and go version upgrade to 1.24.3
kuthiala May 30, 2025
8651cca
Fixed up helm templating for nginx-hosts param to support multiple ng…
arussellf5 Jun 26, 2025
f42d4f8
NLB-6295 Simplified user configuration of TLS modes
arussellf5 Jun 30, 2025
5f618f9
NLB-6295 Bumped version to 1.2.0
arussellf5 Mar 13, 2025
4a84034
Updated go version to 1.24.4
arussellf5 Jul 1, 2025
f4fb000
NLB-6754 When deleting upstream servers handle upstream not found error
arussellf5 Jul 2, 2025
950de97
NLB-6754 Bumped version to 1.2.1
arussellf5 Jul 2, 2025
d0f4692
Removed context as a field within the nginx stream border client
arussellf5 Jul 8, 2025
2673517
Betterification
ciroque Nov 18, 2024
9ad94d2
Updates cosign
ciroque Nov 18, 2024
c19629a
Needs --yes flag
ciroque Nov 19, 2024
a96ce41
Resolved merge conflicts involved in bringing NGINXaaS changes into o…
arussellf5 Jul 18, 2025
9b190c4
Re-added tool-versions
arussellf5 Jul 18, 2025
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
67 changes: 66 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,69 @@ cover*
tmp/
docs/tls/DESIGN.md
:q
qqq
qqq.env
.env*
!.env.example
!.allowed_clients.json
!.env.example.auth
*.db
priv/certs
priv/nginx-agent/*
!priv/nginx-agent/nginx-agent.conf.example
key-data.json
nginx-instance-manager.tar.gz
vendor/

# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib

# Test binary, built with `go test -c`
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

# Output from debugger
__debug_bin

code-quality.json
coverage/*

# vim
*~
*.swp

### VisualStudioCode (from https://gitignore.io/api/VisualStudioCode) ###
.vscode/*
!.vscode/tasks.example.json
!.vscode/launch.example.json
!.vscode/extensions.json
!.vscode/KubernetesLocalProcessConfig*.yaml
*.code-workspace

### Goland
.idea/*

# bridge to kubernetes artifact
/KubernetesLocalProcessConfig.yaml


# output directory for build artifacts
build

# output directory for test artifacts (eg. coverage report, junit xml)
results

# devops-utils repo
.devops-utils/

# Ignore golang cache in CI
.go/pkg/mod

.go-build

nginxaas-loadbalancer-kubernetes-*
92 changes: 92 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# GolangCI-Lint settings

# Disable all linters and enable the required ones
linters:
disable-all: true

# Supported linters: https://golangci-lint.run/usage/linters/
enable:
- errcheck
- gosimple
- govet
- ineffassign
- staticcheck
- typecheck
- unused
- bodyclose
- dupl
- gochecknoinits
- goconst
- gocritic
- gocyclo
- gofmt
- goimports
- gosec
- lll
- misspell
- nakedret
- prealloc
- stylecheck
- unconvert
- unparam
- paralleltest
- forbidigo
fast: false

# Run options
run:
# 10 minute timeout for analysis
timeout: 10m
# Specific linter settings
linters-settings:
gocyclo:
# Minimal code complexity to report
min-complexity: 16
govet:
disable-all: true
enable:
# Report shadowed variables
- shadow

misspell:
# Correct spellings using locale preferences for US
locale: US
goimports:
# Put imports beginning with prefix after 3rd-party packages
local-prefixes: gitswarm.f5net.com/indigo,gitlab.com/f5
exhaustruct:
# List of regular expressions to match struct packages and names.
# If this list is empty, all structs are tested.
# Default: []
include:
- "gitlab.com/f5/nginx/nginxazurelb/azure-resource-provider/pkg/token.TokenID"
- "gitlab.com/f5/nginx/nginxazurelb/azure-resource-provider/internal/dpo/agent/certificates.CertGetRequest"

issues:
exclude-dirs:
- .go/pkg/mod
# Exclude configuration
exclude-rules:
# Exclude gochecknoinits and gosec from running on tests files
- path: _test\.go
linters:
- gochecknoinits
- gosec
- path: test/*
linters:
- gochecknoinits
- gosec
# Exclude lll issues for long lines with go:generate
- linters:
- lll
source: "^//go:generate "
# Exclude false positive paralleltest error : Range statement for test case does not use range value in test Run
- linters:
- paralleltest
text: "does not use range value in test Run"

# Disable maximum issues count per one linter
max-issues-per-linter: 0

# Disable maximum count of issues with the same text
max-same-issues: 0
2 changes: 1 addition & 1 deletion .tool-versions
Original file line number Diff line number Diff line change
@@ -1 +1 @@
golang 1.23.3
golang 1.24.4
34 changes: 9 additions & 25 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,27 +1,11 @@
# Copyright 2023 f5 Inc. All rights reserved.
# Use of this source code is governed by the Apache
# license that can be found in the LICENSE file.
FROM alpine:3.14.1 AS base-certs
RUN apk update && apk add --no-cache ca-certificates

FROM golang:1.23.3-alpine3.20 AS builder
FROM scratch AS base
COPY docker-user /etc/passwd
USER 101
COPY --from=base-certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt

WORKDIR /app

COPY go.mod go.sum ./

RUN go mod download

COPY . .

RUN go build -o nginx-loadbalancer-kubernetes ./cmd/nginx-loadbalancer-kubernetes/main.go

FROM alpine:3.20

WORKDIR /opt/nginx-loadbalancer-kubernetes

RUN adduser -u 11115 -D -H nlk

USER nlk

COPY --from=builder /app/nginx-loadbalancer-kubernetes .

ENTRYPOINT ["/opt/nginx-loadbalancer-kubernetes/nginx-loadbalancer-kubernetes"]
FROM base as nginxaas-loadbalancer-kubernetes
ENTRYPOINT ["/nginxaas-loadbalancer-kubernetes"]
COPY build/nginxaas-loadbalancer-kubernetes /
Loading