15 Commits
Author SHA1 Message Date
volker.raschek 1893741d78 Merge remote-tracking branch 'origin/master' into feat/support-gateway-api
Helm / helm-unittest (push) Successful in 25s
Generate README / generate-parameters (push) Successful in 44s
Markdown linter / markdown-lint (push) Successful in 17s
Helm / helm-lint (push) Successful in 10s
Markdown linter / markdown-link-checker (push) Successful in 39s
2026-06-07 17:31:19 +02:00
volker.raschek 000f65045e fix(renovate): use preset helm
Helm / helm-lint (push) Successful in 5s
Helm / helm-unittest (push) Successful in 21s
2026-06-07 17:30:50 +02:00
volker.raschek 556ef904b2 Merge remote-tracking branch 'origin/master' into feat/support-gateway-api 2026-06-07 17:05:41 +02:00
volker.raschek 322800e4af fix(Makefile): get rid of volkerraschek/helm
Helm / helm-lint (push) Successful in 6s
Helm / helm-unittest (push) Successful in 18s
2026-06-07 17:05:20 +02:00
volker.raschek 4a7c066777 fix(Makefile): get rid of volkerraschek/helm 2026-06-07 16:32:40 +02:00
CSRBot e5cca09d32 Merge pull request 'chore(deps): update dependency helm-unittest/helm-unittest to v1.1.1' (#17) from renovate/update-helm-plugin-'unittest' into master
Helm / helm-lint (push) Successful in 10s
Helm / helm-unittest (push) Successful in 15s
2026-06-06 00:22:43 +00:00
CSRBot e15cf6ee14 chore(deps): update dependency helm-unittest/helm-unittest to v1.1.1
Helm / helm-unittest (push) Successful in 16s
Helm / helm-lint (pull_request) Successful in 5s
Helm / helm-lint (push) Successful in 30s
Helm / helm-unittest (pull_request) Successful in 13s
2026-06-06 00:22:39 +00:00
CSRBot 9c5544495e Merge pull request 'chore(deps): pin dependencies' (#15) from renovate/pin-dependencies into master
Helm / helm-unittest (push) Failing after 14m44s
Helm / helm-lint (push) Failing after 14m49s
2026-06-05 12:33:38 +00:00
CSRBot ef5168d379 chore(deps): pin dependencies
Helm / helm-lint (push) Successful in 14s
Helm / helm-unittest (push) Successful in 14s
Helm / helm-lint (pull_request) Successful in 5s
Helm / helm-unittest (pull_request) Successful in 15s
2026-06-05 12:33:19 +00:00
CSRBot 6d08b8db8b Merge pull request 'chore(deps): update docker.io/library/node docker tag to v26.3.0' (#14) from renovate/update-docker.iolibrarynode into master
Helm / helm-lint (push) Successful in 6s
Helm / helm-unittest (push) Successful in 21s
2026-06-04 15:32:47 +00:00
CSRBot 8a568f7af7 chore(deps): update docker.io/library/node docker tag to v26.3.0
Helm / helm-lint (push) Successful in 6s
Helm / helm-unittest (push) Successful in 14s
Helm / helm-lint (pull_request) Successful in 8s
Helm / helm-unittest (pull_request) Successful in 21s
2026-06-04 15:31:45 +00:00
CSRBot c17634828f Merge pull request 'chore(deps): update actions/checkout action to v6.0.3' (#12) from renovate/actions-checkout-6.x into master
Helm / helm-lint (push) Successful in 9s
Helm / helm-unittest (push) Successful in 14s
2026-06-04 15:30:21 +00:00
CSRBot e9ea7792d8 chore(deps): update actions/checkout action to v6.0.3
Helm / helm-unittest (push) Successful in 16s
Helm / helm-lint (push) Successful in 5s
Helm / helm-lint (pull_request) Successful in 7s
Helm / helm-unittest (pull_request) Successful in 14s
2026-06-04 15:30:14 +00:00
volker.raschek c9322a9adc docs(README): add ingress and gateway API example 2026-05-30 13:51:11 +02:00
volker.raschek f8bfa9141e fix(gatewayAPI): to backendTLSPolicy 2026-05-30 12:12:39 +02:00
11 changed files with 133 additions and 78 deletions
+2 -2
View File
@@ -15,14 +15,14 @@ on:
jobs:
generate-parameters:
container:
image: docker.io/library/node:26.1.0-alpine
image: docker.io/library/node:26.3.0-alpine
runs-on: ubuntu-latest
steps:
- name: Install tooling
run: |
apk update
apk add git npm
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Generate parameter section in README
run: |
npm install
+4 -4
View File
@@ -14,8 +14,8 @@ jobs:
helm-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.2
- uses: azure/setup-helm@v5.0.0
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5.0.0
with:
version: v4.1.4 # renovate: datasource=github-releases depName=helm/helm
- name: Lint helm files
@@ -25,8 +25,8 @@ jobs:
helm-unittest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.2
- uses: azure/setup-helm@v5.0.0
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- uses: azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5.0.0
with:
version: v4.1.4 # renovate: datasource=github-releases depName=helm/helm
- env:
+4 -4
View File
@@ -15,14 +15,14 @@ on:
jobs:
markdown-link-checker:
container:
image: docker.io/library/node:26.1.0-alpine
image: docker.io/library/node:26.3.0-alpine
runs-on: ubuntu-latest
steps:
- name: Install tooling
run: |
apk update
apk add git npm
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Verify links in markdown files
run: |
npm install
@@ -30,14 +30,14 @@ jobs:
markdown-lint:
container:
image: docker.io/library/node:26.1.0-alpine
image: docker.io/library/node:26.3.0-alpine
runs-on: ubuntu-latest
steps:
- name: Install tooling
run: |
apk update
apk add git
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Lint markdown files
run: |
npm install
+1 -1
View File
@@ -16,7 +16,7 @@ jobs:
apk update
apk add git npm jq yq
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
fetch-depth: 0
+1 -1
View File
@@ -1,6 +1,6 @@
{
"yaml.schemas": {
"https://raw.githubusercontent.com/helm-unittest/helm-unittest/v1.1.0/schema/helm-testsuite.json": [
"https://raw.githubusercontent.com/helm-unittest/helm-unittest/v1.1.1/schema/helm-testsuite.json": [
"/unittests/**/*.yaml"
]
},
+6 -32
View File
@@ -1,12 +1,6 @@
# CONTAINER_RUNTIME
CONTAINER_RUNTIME?=$(shell which podman)
# HELM_IMAGE
HELM_IMAGE_REGISTRY_HOST?=docker.io
HELM_IMAGE_REPOSITORY?=volkerraschek/helm
HELM_IMAGE_VERSION?=3.19.0 # renovate: datasource=docker registryUrl=https://docker.io depName=docker.io/volkerraschek/helm
HELM_IMAGE_FULLY_QUALIFIED=${HELM_IMAGE_REGISTRY_HOST}/${HELM_IMAGE_REPOSITORY}:${HELM_IMAGE_VERSION}
# NODE_IMAGE
NODE_IMAGE_REGISTRY_HOST?=docker.io
NODE_IMAGE_REPOSITORY?=library/node
@@ -31,6 +25,12 @@ readme/lint:
readme/parameters:
npm install && npm run readme:parameters
# HELM UNITTESTS
# ==============================================================================
PHONY+=helm/unittest
helm/unittest:
helm unittest --strict --file 'unittests/**/*.yaml' ./
# CONTAINER RUN - README
# ==============================================================================
PHONY+=container-run/readme
@@ -60,32 +60,6 @@ container-run/readme/parameters:
${NODE_IMAGE_FULLY_QUALIFIED} \
npm install && npm run readme:parameters
# CONTAINER RUN - HELM UNITTESTS
# ==============================================================================
PHONY+=container-run/helm-unittests
container-run/helm-unittests:
${CONTAINER_RUNTIME} run \
--env HELM_REPO_PASSWORD=${CHART_SERVER_PASSWORD} \
--env HELM_REPO_USERNAME=${CHART_SERVER_USERNAME} \
--rm \
--volume $(shell pwd):$(shell pwd) \
--workdir $(shell pwd) \
${HELM_IMAGE_FULLY_QUALIFIED} \
unittest --strict --file 'unittests/**/*.yaml' ./
# CONTAINER RUN - HELM UPDATE DEPENDENCIES
# ==============================================================================
PHONY+=container-run/helm-update-dependencies
container-run/helm-update-dependencies:
${CONTAINER_RUNTIME} run \
--env HELM_REPO_PASSWORD=${CHART_SERVER_PASSWORD} \
--env HELM_REPO_USERNAME=${CHART_SERVER_USERNAME} \
--rm \
--volume $(shell pwd):$(shell pwd) \
--workdir $(shell pwd) \
${HELM_IMAGE_FULLY_QUALIFIED} \
dependency update
# CONTAINER RUN - MARKDOWN-LINT
# ==============================================================================
PHONY+=container-run/helm-lint
+113 -2
View File
@@ -63,8 +63,9 @@ The following examples serve as individual configurations and as inspiration for
#### TLS encryption
The example describe how to deploy Reposilite with TLS encryption. If Reposilite is deployed behind reverse proxy, for
example an ingress nginx controller, please instruct the ingress to establish an TLS encrypted connection to avoid
connection problems.
example an ingress nginx controller or Gateway API, please instruct the reserve proxy to establish an TLS encrypted
connection to avoid connection problems. The documentation describe configuring [ingress NGINX](#ingress-nginx) as well
as [NGINX Gateway Fabric](#gatewayapi-nginx-fabric).
> [!WARNING]
> The secret `reposilite-tls` containing the TLS certificate is already present. The keys `ca.crt`, `tls.key` and
@@ -94,6 +95,108 @@ helm install --version "${CHART_VERSION}" reposilite volker.raschek/reposilite \
--set 'service.port=8443'
```
##### Ingress NGINX
The following changes must be applied to enable TLS encryption and authentication on-top between the ingress and backend
service.
> [!IMPORTANT]
> The HTTP Version between the ingress nginx and backend must be set to `1.1`, as well as the TLS protocol must be set
> to `TLSv1.2`. Otherwise can't the nginx establish a TLS connection.
The secret `reposilite/ingress-nginx-controller-tls` contains TLS certificates for the nginx ingress controller. The TLS
certificate must be created manually, for example via [cert-manager](https://cert-manager.io/). It is used by the nginx
for TLS authentication.
```yaml
ingress:
enabled: true
className: "nginx"
annotations:
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
nginx.ingress.kubernetes.io/proxy-http-version: "1.1"
nginx.ingress.kubernetes.io/proxy-ssl-secret: reposilite/ingress-nginx-controller-tls
nginx.ingress.kubernetes.io/proxy-ssl-protocols: TLSv1.2
nginx.ingress.kubernetes.io/proxy-ssl-name: reposilite
nginx.ingress.kubernetes.io/proxy-ssl-verify: "on"
```
##### GatewayAPI: NGINX Fabric
The following changes must be applied to enable TLS encryption and authentication on-top between the ingress and backend
service.
> [!IMPORTANT]
> The HTTP Version between the ingress nginx and backend must be set to `1.1`, as well as the TLS protocol must be set
> to `TLSv1.2`. Otherwise can't the nginx establish a TLS connection.
The `gatewayAPI.core.backendTLSPolicy.validation.caCertificateRefs` must contains at least one secret containing the
root or intermediate certificate of the issued TLS certificate used by reposilite to be able to validate the TLS certificate.
```yaml
gatewayAPI:
enabled: true
core:
backendTLSPolicy:
enabled: true
validation:
caCertificateRefs:
- group: ""
kind: Secret
name: "reposilite-ca"
hostname: "reposilite"
httpRoute:
hostnames:
- reposilite.example.local
parentRefs:
- name: nginx
kind: Gateway
group: gateway.networking.k8s.io
namespace: my-gateway-namespace
sectionName: reposilite-https
```
The Gateway resource is not part of the helm chart, but for illustrating the configuration example, here a GatewayAPI
resource with configured backend TLS certificate. The TLS certificates `gateway-frontend-tls` and `gateway-backend-tls`
must also be created manually, for example via [cert-manager](https://cert-manager.io/).
```yaml
---
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: nginx
namespace: my-gateway-namespace
spec:
gatewayClassName: nginx
listeners:
- allowedRoutes:
kinds:
- group: gateway.networking.k8s.io
kind: HTTPRoute
namespaces:
from: All
hostname: reposilite.example.local
name: https
port: 443
protocol: HTTPS
tls:
certificateRefs:
- group: ''
kind: Secret
name: gateway-frontend-tls
namespace: my-gateway-namespace
mode: Terminate
tls:
backend:
clientCertificateRef:
group: ''
kind: Secret
name: gateway-backend-tls
namespace: my-gateway-namespace
```
#### TLS certificate rotation
If Reposilite uses TLS certificates that are mounted as a secret in the container file system like the example
@@ -172,12 +275,20 @@ networkPolicies:
ingress:
- from:
# Ingress NGINX
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: ingress-nginx
podSelector:
matchLabels:
app.kubernetes.io/name: ingress-nginx
# NGINX GatewayAPI Fabric
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: gateway-nginx
podSelector:
matchLabels:
app.kubernetes.io/name: gateway-nginx
ports:
- port: http
protocol: TCP
+2 -32
View File
@@ -4,6 +4,7 @@
"local>volker.raschek/renovate-config:default#master",
"local>volker.raschek/renovate-config:container#master",
"local>volker.raschek/renovate-config:actions#master",
"local>volker.raschek/renovate-config:helm#master",
"local>volker.raschek/renovate-config:npm#master",
"local>volker.raschek/renovate-config:regexp#master"
],
@@ -33,40 +34,9 @@
"packageNameTemplate": "https://git.cryptic.systems/volker.raschek/reposilite-charts",
"datasourceTemplate": "git-tags",
"versioningTemplate": "semver"
},
{
"customType": "regex",
"datasourceTemplate": "github-releases",
"fileMatch": [
".vscode/settings\\.json$"
],
"matchStrings": [
"https:\\/\\/raw\\.githubusercontent\\.com\\/(?<depName>[^\\s]+?)\\/(?<currentValue>v[0-9.]+?)\\/schema\\/helm-testsuite\\.json"
]
}
],
"packageRules": [
{
"groupName": "Update docker.io/volkerraschek/helm",
"matchDepNames": [
"docker.io/volkerraschek/helm",
"volkerraschek/helm"
]
},
{
"automerge": true,
"groupName": "Update helm plugin 'unittest'",
"matchDepNames": [
"helm-unittest/helm-unittest"
],
"matchDatasources": [
"github-releases"
],
"matchUpdateTypes": [
"minor",
"patch"
]
},
{
"groupName": "Update docker.io/library/node",
"matchDepNames": [
@@ -118,4 +88,4 @@
],
"executionMode": "update"
}
}
}