Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
162caab
Emitters (#265)
Stevenjin8 Dec 8, 2025
d8cd2d8
Add Stevenjin8 to OWNERS. (#277)
Stevenjin8 Dec 11, 2025
f17b513
Emitters Implementation (#273)
Stevenjin8 Dec 23, 2025
2175d63
Update email announcement for new sig network mailing list (#293)
aojea Jan 7, 2026
d5407c0
Fix data race in NotificationAggregator (#292)
johananl Jan 8, 2026
35a9ffd
implement header manipulation for nginxingress (#283)
eladmotola Jan 13, 2026
788dce5
Fix typo (#285)
hatamiarash7 Jan 13, 2026
2c81a62
Release/prepare 0.5.0 (#300)
Stevenjin8 Jan 13, 2026
1557d5b
Feature/path rewrite (#288)
Stevenjin8 Jan 22, 2026
44c0b14
Feature/ssl redirect (#290)
Stevenjin8 Jan 22, 2026
8e88f2a
fix: setting proper secret group and kind in certificateRefs (#302)
cnvergence Jan 23, 2026
ec8e395
feat: support route rule name (#298)
kkk777-7 Jan 23, 2026
5f4e51f
Add some reviewers (#321)
Stevenjin8 Jan 28, 2026
4c4cc31
Migrate golangci lint v2 (#323)
kkk777-7 Jan 30, 2026
78fe67c
Add e2e tests (#294)
johananl Feb 2, 2026
10a1a2f
Add Kota as owner (#322)
Stevenjin8 Feb 4, 2026
bd0fbb5
feat: buffer annotations and envoy gateway emitter (#305)
kkk777-7 Feb 4, 2026
7f3528b
Add johanan as reviewer in OWNERS file (#332)
Stevenjin8 Feb 4, 2026
61b94a7
feat: Implement standard CORS support (#303)
chakravardhan Feb 5, 2026
b843bc0
feat: Add support for use-regex annotation (#307)
chakravardhan Feb 5, 2026
976ce6e
Don't error on nil ingress.rules.http (#335)
Stevenjin8 Feb 5, 2026
2802595
Feature/timeouts (#289)
Stevenjin8 Feb 6, 2026
32c0555
Fix inconsistent whitespace in switch (#339)
johananl Feb 6, 2026
f23ab47
Ingress NGINX - Support more canary (#287)
jgreeer Feb 11, 2026
b5c9d05
Test TLS termination, SSL-redirect, Canary, and CORS (#330)
Stevenjin8 Feb 13, 2026
fd921d7
Bump Kong chart to v3.0.2 (#349)
johananl Feb 16, 2026
c8e0094
Resolve hosts outside verifiers (#351)
johananl Feb 16, 2026
e47837b
feat: kgateway emitter (#320)
puertomontt Feb 17, 2026
60c1659
feat: ip range control (#345)
kkk777-7 Feb 17, 2026
5deca64
Fix hostname in test (#352)
johananl Feb 17, 2026
85b7527
Read resources from multiple files (#258)
carmal891 Feb 17, 2026
369d399
Fix reading ingresses from cluster (#357)
johananl Feb 18, 2026
a5c78d8
Feature/gce infra (#336)
chakravardhan Feb 19, 2026
7bc832f
Notify on unsupported/unparsed annotations (#359)
Stevenjin8 Feb 22, 2026
6f5a72d
Test timeouts (#353)
Stevenjin8 Feb 24, 2026
1f6b817
feat(ingress-nginx): add backend TLS support (#308)
rajashish Feb 24, 2026
5b1691d
Ingress NGINX - Support Redirect (#299)
jgreeer Feb 27, 2026
e52b9f9
implementing backend-protocol (#286)
eladmotola Feb 27, 2026
887d899
update to gateway API v1.5 (#367)
Stevenjin8 Feb 27, 2026
bb79f14
Fix regex and add some tests (#344)
Stevenjin8 Feb 28, 2026
e6050fd
Add Kota as approver (#373)
Stevenjin8 Mar 2, 2026
bcfc7e6
add parsed annotations map (#370)
kkk777-7 Mar 2, 2026
758626e
support cors output without experimental flag (#371)
kkk777-7 Mar 2, 2026
01d3b36
fix: parse canary annotation value as bool instead of checking presen…
Stevenjin8 Mar 3, 2026
cefbabf
remove unused timeoutMultiplier constant and info notification (#376)
Stevenjin8 Mar 3, 2026
6d0ef2e
fix: use continue instead of return in applyTCPTimeouts loop (#377)
Stevenjin8 Mar 3, 2026
8225911
fix: deduplicate TLS CertificateRefs in gateway listeners (#378)
Stevenjin8 Mar 3, 2026
85cd29b
Log unparsed IR (#361)
Stevenjin8 Mar 3, 2026
8c6a974
fix path for canary by header + add e2e (#365)
jgreeer Mar 4, 2026
5bb63bc
Release notes for v1.0.0-rc1 (#382)
Stevenjin8 Mar 4, 2026
b338dc0
Refactor notification mechanism (#360)
johananl Mar 5, 2026
d6206db
add envoy gateway e2e (#372)
kkk777-7 Mar 6, 2026
19c5f11
docs: add description for Providers vs Emitters (#369)
markuskobler Mar 6, 2026
24c3d6a
remove copyright years (#389)
Stevenjin8 Mar 10, 2026
7935dc7
fix: use binary suffixes (Ki/Mi/Gi) for body size conversion (#375)
Stevenjin8 Mar 11, 2026
44ab370
Update main and ingress-nginx README (#390)
Stevenjin8 Mar 12, 2026
e8e966b
Reorganize e2e tests (#366)
johananl Mar 12, 2026
dba7acb
Remove LiorLieberman from reviewers list (#392)
LiorLieberman Mar 16, 2026
4a7a91e
Clean up notifications (#384)
Stevenjin8 Mar 17, 2026
b9db81c
E2E for Backend TLS + Backend TLS fix (#381)
jgreeer Mar 19, 2026
21601cd
Implement agentgateway emitter (#388)
markuskobler Mar 20, 2026
7108009
Add trailing slash redirects and per route ssl-redirect (#385)
Stevenjin8 Mar 20, 2026
f1e8ef4
1.0 release notes (#393)
Stevenjin8 Mar 20, 2026
e3e1a33
Feat/gke session cookie stacked pr 313 2 (#394)
Stevenjin8 Mar 20, 2026
b51d240
chore: fixed GoRelaser config (#395)
ponkio-o Mar 24, 2026
3035b10
readme correction (#398)
ziyi-xuu Mar 24, 2026
6dfd2e1
Merge remote-tracking branch 'upstream/main' into sync
puertomontt Mar 28, 2026
884609e
boilerplate
puertomontt Mar 28, 2026
147eeb3
lint
puertomontt Mar 28, 2026
a8b76c0
skip verify for now
puertomontt Mar 28, 2026
bbc01e0
wire up basic/external auth
puertomontt Mar 28, 2026
6d1937a
restore support for ssl passthrough
puertomontt Mar 28, 2026
3eae893
restore service upstream
puertomontt Mar 28, 2026
20c5aeb
fix up agentgateway
puertomontt Mar 28, 2026
c344743
add timeout test
puertomontt Mar 29, 2026
7d90dc1
feat: Add Gloo Edge provider for basic VirtualService to HTTPRoute tr…
shivansh-source Mar 29, 2026
071be0f
fix link
puertomontt Mar 29, 2026
d590cbd
update e2e test files
puertomontt Mar 29, 2026
593c31e
bump gw api to 1.5.1 in e2e tests
puertomontt Mar 29, 2026
49b9da0
update ssl redirect to expect 308
puertomontt Mar 29, 2026
242b1c7
added boilerplate in the file
shivansh-source Mar 30, 2026
4344826
again trying to see if ci works
shivansh-source Mar 30, 2026
1d435c0
fix regex rewrite logic
puertomontt Mar 30, 2026
0b0014f
lf ending was the problem
shivansh-source Mar 30, 2026
2cd7d07
lint and remove unused code
puertomontt Mar 30, 2026
319c0e4
clean up
puertomontt Mar 30, 2026
9220188
Merge pull request #104 from kgateway-dev/sync
danehans Mar 31, 2026
0640847
wired provider to cli via blank import in cmd/root.go add example vir…
shivansh-source Apr 1, 2026
a24f6c6
wrong file it should be in print.go
shivansh-source Apr 1, 2026
5147a73
added asked changes
shivansh-source Apr 2, 2026
8e7332f
feat: Add Gloo Edge provider for basic VirtualService to HTTPRoute tr…
shivansh-source Mar 29, 2026
1f774b1
added boilerplate in the file
shivansh-source Mar 30, 2026
6f224e2
again trying to see if ci works
shivansh-source Mar 30, 2026
b2b7769
lf ending was the problem
shivansh-source Mar 30, 2026
7774510
wired provider to cli via blank import in cmd/root.go add example vir…
shivansh-source Apr 1, 2026
a4ac991
wrong file it should be in print.go
shivansh-source Apr 1, 2026
36a77be
added asked changes
shivansh-source Apr 2, 2026
141c3d0
done all changes
shivansh-source Apr 3, 2026
28b8ed1
Merge branch 'shivansh#1' of https://github.com/shivansh-source/ingre…
shivansh-source Apr 3, 2026
5d886ee
did some changes to converter.go
shivansh-source Apr 3, 2026
db51be2
did some changes to converter.go
shivansh-source Apr 3, 2026
fd5517a
Merge branch 'shivansh#1' of https://github.com/shivansh-source/ingre…
shivansh-source Apr 4, 2026
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
2 changes: 1 addition & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@be3c94b385c4f180051c996d336f57a34c397495 # v3.6.1
with:
go-version: '1.21'
go-version: '1.25'
id: go

- name: Check out code into the Go module directory
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@be3c94b385c4f180051c996d336f57a34c397495 # v3.6.1
with:
go-version: '1.21'
go-version: '1.25'
id: go

- name: Check out code into the Go module directory
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,8 @@ go.work
# VSCode files for debugging
.vscode/

.DS_Store
.DS_Store

kind-kubeconfig
e2e/kind.yaml
bin
109 changes: 82 additions & 27 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,48 +7,103 @@ run:
modules-download-mode: readonly
allow-parallel-runners: false
linters:
# Start from no linters and explicitly enable what you care about.
default: none
default: standard
enable:
- revive
- govet
- misspell
- unused
# Settings for linters (v2: moved here from `linters-settings`)
# bugs presets
- asasalint
- asciicheck
- bidichk
- bodyclose
- contextcheck
- durationcheck
- errcheck
- errchkjson
- errorlint
- exhaustive
- gocheckcompilerdirectives
- gochecksumtype
- gosec
- gosmopolitan
- loggercheck
- makezero
- musttag
- nilerr
- nilnesserr
- noctx
- protogetter
- reassign
- recvcheck
- rowserrcheck
- spancheck
- sqlclosecheck
- staticcheck
- testifylint
- zerologlint
# unused presets
- ineffassign
- unparam
# - unused
settings:
revive:
rules:
- name: exported
disabled: true
govet:
shadow: true
# report about shadowed variables
enable:
- shadow
misspell:
locale: US
# (rkatz) - Added as we have a couple of APIs conversion (eg Istio, Kong) that convert uint->int and there's no solution
gosec:
excludes:
- G115
revive:
rules:
- name: package-comments
disabled: true
- name: var-naming
disabled: true
exclusions:
paths:
- third_party$
- builtin$
- examples$
rules:
# Exclude some linters from running on tests files.
- path: '_test\.go'
linters:
- gocyclo
- errcheck
- dupl
# Exclude gosec G104 (unhandled errors) from test files
- path: '_test\.go'
linters:
- gosec
text: "G104"
# Allow underscores in emitter package names
- path: pkg/i2gw/emitters/
linters:
- revive
text: "var-naming: don't use an underscore in package name"
- path: '(.+)\.go$'
text: "Using the variable on range scope `tc` in function literal"
# Allow capitalized error messages
- linters:
- staticcheck
text: "ST1005:"
# Allow embedded field, currently this style is used in many places
- linters:
- staticcheck
text: "QF1008:"

formatters:
# In v2, gofmt/goimports live under "formatters", not "linters.enable"
enable:
- gofmt
- goimports
settings:
gofmt:
# simplify code: gofmt with `-s` option, true by default
simplify: true
issues:
exclude-rules:
# Same as before: skip some linters on *_test.go
- path: _test\.go
linters:
- gocyclo
- errcheck
- dupl
# Allow underscores in emitter package names
- path: pkg/i2gw/emitters/
linters:
- revive
text: "var-naming: don't use an underscore in package name"
exclude:
- Using the variable on range scope `tc` in function literal
exclusions:
paths:
- third_party$
- builtin$
- examples$
6 changes: 4 additions & 2 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,11 @@ builds:
- linux
- darwin
- windows
ldflags:
- -X 'github.com/kubernetes-sigs/ingress2gateway/pkg/i2gw.Version={{.Version}}'

archives:
- format: tar.gz
- formats: ['tar.gz']
# this name template makes the OS and Arch compatible with the results of uname.
name_template: >-
{{ .ProjectName }}_
Expand All @@ -27,7 +29,7 @@ archives:
# use zip for windows archives
format_overrides:
- goos: windows
format: zip
formats: ['zip']
checksum:
name_template: 'checksums.txt'
snapshot:
Expand Down
3 changes: 3 additions & 0 deletions CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
* @LiorLieberman @rikatz @robscott @Stevenjin8 @youngnick
/pkg/i2gw/emitters/envoygateway/ @kkk777-7
/pkg/i2gw/emitters/agentgateway/ @howardjohn @npolshakova @markuskobler @danehans @puertomontt
14 changes: 0 additions & 14 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,10 @@ _As contributors and maintainers of this project, and in the interest of fosteri

We have full documentation on how to get started contributing here:

<!---
If your repo has certain guidelines for contribution, put them here ahead of the general k8s resources
-->

- [Contributor License Agreement](https://git.k8s.io/community/CLA.md) Kubernetes projects require that you sign a Contributor License Agreement (CLA) before we can accept your pull requests
- [Kubernetes Contributor Guide](https://git.k8s.io/community/contributors/guide) - Main contributor documentation, or you can just jump directly to the [contributing section](https://git.k8s.io/community/contributors/guide#contributing)
- [Contributor Cheat Sheet](https://git.k8s.io/community/contributors/guide/contributor-cheatsheet) - Common resources for existing developers

## Mentorship

- [Mentoring Initiatives](https://git.k8s.io/community/mentoring) - We have a diverse set of mentorship programs available that are always looking for volunteers!

<!---
Custom Information - if you're copying this template for the first time you can add custom content here, for example:

## Contact Information

- [Slack channel](https://kubernetes.slack.com/messages/kubernetes-users) - Replace `kubernetes-users` with your slack channel string, this will send users directly to your channel.
- [Mailing list](URL)

-->
103 changes: 103 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
# We need all the Make variables exported as env vars.
# Note that the ?= operator works regardless.

REPO_ROOT := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))

# Enable Go modules.
export GO111MODULE=on

Expand All @@ -31,6 +33,14 @@ GIT_VERSION_STRING := $(shell git describe --tags --always --dirty 2>/dev/null)
# Construct the LDFLAGS string to inject the version
LDFLAGS := -ldflags="-X '$(I2GWPKG).Version=$(GIT_VERSION_STRING)'"

# Directory for local binaries (used in CI where we can't install to /usr/local/bin).
LOCAL_BIN := $(REPO_ROOT)/bin

KIND_VERSION ?= v0.25.0

# Default arguments for `go test` in e2e tests.
I2GW_GO_TEST_ARGS ?= -race -v -count=1 -timeout=30m

# Print the help menu.
.PHONY: help
help:
Expand Down Expand Up @@ -78,7 +88,100 @@ test-all: test test-e2e;$(info $(M)...Completed test-all.) @ ## Run integration
build: vet;$(info $(M)...Build the binary.) @ ## Build the binary.
go build $(LDFLAGS) -o ingress2gateway .

# install the binary
.PHONY: install
install: vet;$(info $(M)...Install the binary.) @ ## Build the binary.
go install $(LDFLAGS)

# Run static analysis.
.PHONY: verify
verify:
hack/verify-all.sh -v

# Detect OS and architecture for kind installation
OS := $(shell uname -s | tr '[:upper:]' '[:lower:]')
ARCH := $(shell uname -m)
ifeq ($(ARCH),x86_64)
ARCH := amd64
endif
ifeq ($(ARCH),aarch64)
ARCH := arm64
endif

KIND_BINARY_URL := https://kind.sigs.k8s.io/dl/$(KIND_VERSION)/kind-$(OS)-$(ARCH)
KIND := $(shell command -v kind 2>/dev/null || echo "$(LOCAL_BIN)/kind")

.PHONY: ensure-kind
ensure-kind:
@if command -v kind >/dev/null 2>&1; then \
echo "Found kind binary: $$(kind version)"; \
elif [ -x "$(LOCAL_BIN)/kind" ]; then \
echo "Found kind binary in $(LOCAL_BIN): $$($(LOCAL_BIN)/kind version)"; \
else \
echo "kind binary not found. Installing kind $(KIND_VERSION) for $(OS)/$(ARCH)..."; \
mkdir -p $(LOCAL_BIN); \
curl -Lo $(LOCAL_BIN)/kind $(KIND_BINARY_URL); \
chmod +x $(LOCAL_BIN)/kind; \
echo "kind installed successfully to $(LOCAL_BIN)/kind"; \
fi

KIND_CONFIG := $(REPO_ROOT)/e2e/kind.yaml

.PHONY: generate-kind-config
generate-kind-config:
@mkdir -p $(dir $(KIND_CONFIG))
@printf '%s\n' \
'kind: Cluster' \
'apiVersion: kind.x-k8s.io/v1alpha4' \
'nodes:' \
'- role: control-plane' \
'- role: worker' \
'- role: worker' \
'- role: worker' \
> $(KIND_CONFIG)

.PHONY: kind
kind: ensure-kind generate-kind-config
@if ! $(KIND) get clusters | grep -q i2gw-e2e; then \
$(KIND) create cluster -n i2gw-e2e --kubeconfig $(REPO_ROOT)/kind-kubeconfig --config $(KIND_CONFIG); \
else \
echo "Cluster i2gw-e2e already exists. Reusing it."; \
$(KIND) get kubeconfig --name i2gw-e2e > $(REPO_ROOT)/kind-kubeconfig; \
fi

# Set I2GW_KUBECONFIG to a path to a kubeconfig file to run the tests against an existing cluster.
# Running without setting this variable creates a local kind cluster and uses it for running the
# tests.
# See README.md for more info.
.PHONY: e2e
e2e: build ## Run end-to-end tests.
@if [ ! -z "$${KUBECONFIG}" ]; then \
echo "ERROR: KUBECONFIG is set in current shell. Refusing to run to avoid touching an"; \
echo "unrelated cluster."; \
echo "Unset KUBECONFIG and run 'I2GW_KUBECONFIG=/path/to/kubeconfig make e2e' to run"; \
echo "the tests against an existing cluster, or run 'make e2e' with no vars to use an"; \
echo "auto-created kind cluster."; \
exit 1; \
fi
@cleanup_kind=false; \
kubeconfig="$${I2GW_KUBECONFIG}"; \
if [ -z "$${I2GW_KUBECONFIG}" ]; then \
$(MAKE) kind || exit 1; \
kubeconfig="$(REPO_ROOT)/kind-kubeconfig"; \
cleanup_kind=true; \
fi; \
set -x; \
I2GW_BINARY_PATH=$(REPO_ROOT)/ingress2gateway KUBECONFIG=$${kubeconfig} \
go test $(I2GW_GO_TEST_ARGS) $(REPO_ROOT)/e2e; \
test_exit_code=$$?; \
set +x; \
if [ "$${cleanup_kind}" = "true" ] && [ "$${SKIP_CLEANUP}" != "1" ]; then \
$(MAKE) clean-kind; \
fi; \
exit $$test_exit_code

.PHONY: clean-kind
clean-kind:
$(KIND) delete cluster -n i2gw-e2e
rm -f $(REPO_ROOT)/kind-kubeconfig
rm -f $(KIND_CONFIG)
Loading