Skip to content

Commit 470195c

Browse files
feat: add support for custom registry on 1.27 and prepare v1.27.9 release (#261)
* feat: add support for custom registry on 1.27 * fix: generate docs and schemas * docs: change upgrade links * feat: prepare v1.27.9 release * docs: apply suggestions * docs(schemas): add description for grafana's advanced configuration * docs(schema): improve Pomerium documentation * chore(ci/linting): allow bare URLs in markdown * chore: add missing new line * tests: use latest furyctl * tests: fix 1.27.8 version --------- Co-authored-by: Ramiro Algozino <ramiro@sighup.io>
1 parent a77d7aa commit 470195c

23 files changed

+1588
-332
lines changed

.drone.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ steps:
157157
environment:
158158
CLUSTER_NAME: ${DRONE_REPO_NAME}-${DRONE_BUILD_NUMBER}
159159
KUBECONFIG: /drone/src/kubeconfig
160-
FURYCTL_VERSION: v0.29.5-rc.2
160+
FURYCTL_VERSION: v0.29.7-rc.0
161161
depends_on: [create Kind cluster]
162162
commands:
163163
- export KUBECONFIG=/drone/src/kubeconfig
@@ -196,7 +196,7 @@ volumes:
196196
host:
197197
path: /var/run/docker.sock
198198
---
199-
name: e2e-kubernetes-1.27.5-1.27.6-1.27.7-1.27.8
199+
name: e2e-kubernetes-1.27.5-1.27.6-1.27.7-1.27.8-1.27.9
200200
kind: pipeline
201201
type: docker
202202

@@ -261,7 +261,7 @@ steps:
261261
environment:
262262
CLUSTER_NAME: ${DRONE_REPO_NAME}-${DRONE_BUILD_NUMBER}-upgrades
263263
KUBECONFIG: /drone/src/kubeconfig-upgrades
264-
FURYCTL_VERSION: v0.29.5-rc.2
264+
FURYCTL_VERSION: v0.29.7-rc.0
265265
depends_on: [create Kind cluster]
266266
commands:
267267
- export KUBECONFIG=/drone/src/kubeconfig-upgrades
@@ -306,7 +306,7 @@ type: docker
306306

307307
depends_on:
308308
- e2e-kubernetes-1.27
309-
- e2e-kubernetes-1.27.5-1.27.6-1.27.7-1.27.8
309+
- e2e-kubernetes-1.27.5-1.27.6-1.27.7-1.27.8-1.27.9
310310

311311
platform:
312312
os: linux

.rules/.markdown-lint.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ MD026:
3232
punctuation: ".,;:!。,;:" # List of not allowed
3333
MD029: false # Ordered list item prefix
3434
MD033: false # Allow inline HTML
35+
MD034: false # Allow bare-URLs in Markdown, GitHub and Docusaurus support them
3536
MD036: false # Emphasis used instead of a heading
3637
MD041: false
3738

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
<p align="center">Kubernetes Fury Distribution (KFD) is a certified battle-tested Kubernetes distribution based purely on upstream Kubernetes.</p>
88
<!-- markdownlint-enable MD033 MD045 -->
99

10-
[![Build Status](http://ci.sighup.io/api/badges/sighupio/fury-distribution/status.svg?ref=refs/tags/v1.27.8)](http://ci.sighup.io/sighupio/fury-distribution)
11-
[![Release](https://img.shields.io/badge/release-v1.27.8-blue?label=FuryDistributionRelease)](https://github.com/sighupio/fury-distribution/releases/latest)
10+
[![Build Status](http://ci.sighup.io/api/badges/sighupio/fury-distribution/status.svg?ref=refs/tags/v1.27.9)](http://ci.sighup.io/sighupio/fury-distribution)
11+
[![Release](https://img.shields.io/badge/release-v1.27.9-blue?label=FuryDistributionRelease)](https://github.com/sighupio/fury-distribution/releases/latest)
1212
[![Slack](https://img.shields.io/badge/slack-@kubernetes/fury-yellow.svg?logo=slack)](https://kubernetes.slack.com/archives/C0154HYTAQH)
1313
[![License](https://img.shields.io/github/license/sighupio/fury-distribution)](https://github.com/sighupio/fury-distribution/blob/main/LICENSE)
1414

@@ -132,7 +132,7 @@ Current supported versions of KFD are:
132132
| :----------------------------------------------------------------------------: | :----------------: |
133133
| [`1.29.3`](https://github.com/sighupio/fury-distribution/releases/tag/v1.29.3) | `1.29.x` |
134134
| [`1.28.3`](https://github.com/sighupio/fury-distribution/releases/tag/v1.28.3) | `1.28.x` |
135-
| [`1.27.8`](https://github.com/sighupio/fury-distribution/releases/tag/v1.27.8) | `1.27.x` |
135+
| [`1.27.9`](https://github.com/sighupio/fury-distribution/releases/tag/v1.27.9) | `1.27.x` |
136136

137137
Check the [compatibility matrix][compatibility-matrix] for additional information about previous releases of the Distribution and the compatibility with `furyctl`.
138138

docs/COMPATIBILITY_MATRIX.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ For a complete list of all KFD releases and their compatibility with Kubernetes
1010

1111
| KFD / Kubernetes Version | v1.27.X |
1212
| ----------------------------------------------------------------------------- | ------------------ |
13+
| [v1.27.9](https://github.com/sighupio/fury-distribution/releases/tag/v1.27.9) | :white_check_mark: |
1314
| [v1.27.8](https://github.com/sighupio/fury-distribution/releases/tag/v1.27.8) | :white_check_mark: |
1415
| [v1.27.7](https://github.com/sighupio/fury-distribution/releases/tag/v1.27.7) | :white_check_mark: |
1516
| [v1.27.6](https://github.com/sighupio/fury-distribution/releases/tag/v1.27.6) | :white_check_mark: |

docs/releases/v1.27.9.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Kubernetes Fury Distribution Release v1.27.9
2+
3+
Welcome to KFD release `v1.27.9`.
4+
5+
The distribution is maintained with ❤️ by the team [SIGHUP](https://sighup.io/) it is battle tested in production environments.
6+
7+
## New Features since `v1.27.8`
8+
9+
### Installer Updates
10+
11+
No changes
12+
13+
### Module updates
14+
15+
No changes
16+
17+
## New features 🌟
18+
19+
- **Configurable distribution registry**: Now the registry used by the distribution can be configured. An example configuration:
20+
21+
```yaml
22+
spec:
23+
distribution:
24+
common:
25+
registry: myregistry.mydomain.ext
26+
```
27+
28+
- **Configurable on-premises registry**: Now the registry used by the on-premises kind can be configured. An example configuration:
29+
30+
```yaml
31+
spec:
32+
kubernetes:
33+
advanced:
34+
registry: myregistry.mydomain.ext
35+
```
36+
37+
## Fixes 🐞
38+
39+
No changes
40+
41+
## Upgrade procedure
42+
43+
Check the [upgrade docs](https://docs.kubernetesfury.com/docs/upgrades/upgrades) for the detailed procedure.

docs/schemas/ekscluster-kfd-v1alpha2.md

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ A Fury Cluster deployed through AWS's Elastic Kubernetes Service
8888
|:----------------------------------------------------------------|:---------|:---------|
8989
| [nodeSelector](#specdistributioncommonnodeselector) | `object` | Optional |
9090
| [provider](#specdistributioncommonprovider) | `object` | Optional |
91+
| [registry](#specdistributioncommonregistry) | `string` | Optional |
9192
| [relativeVendorPath](#specdistributioncommonrelativevendorpath) | `string` | Optional |
9293
| [tolerations](#specdistributioncommontolerations) | `array` | Optional |
9394

@@ -111,6 +112,14 @@ The node selector to use to place the pods for all the KFD modules
111112

112113
The type of the provider, must be EKS if specified
113114

115+
## .spec.distribution.common.registry
116+
117+
### Description
118+
119+
URL of the registry where to pull images from for the Distribution phase. (Default is registry.sighup.io/fury).
120+
121+
NOTE: If plugins are pulling from the default registry, the registry will be replaced for these plugins too.
122+
114123
## .spec.distribution.common.relativeVendorPath
115124

116125
### Description
@@ -711,6 +720,10 @@ The value of the toleration
711720
| [routes](#specdistributionmodulesauthpomeriumroutes) | `array` | Optional |
712721
| [secrets](#specdistributionmodulesauthpomeriumsecrets) | `object` | Required |
713722

723+
### Description
724+
725+
Configuration for Pomerium, an identity-aware reverse proxy used for SSO.
726+
714727
## .spec.distribution.modules.auth.pomerium.defaultRoutesPolicy
715728

716729
### Properties
@@ -728,6 +741,10 @@ The value of the toleration
728741
| [monitoringPrometheus](#specdistributionmodulesauthpomeriumdefaultroutespolicymonitoringprometheus) | `array` | Optional |
729742
| [tracingMinioConsole](#specdistributionmodulesauthpomeriumdefaultroutespolicytracingminioconsole) | `array` | Optional |
730743

744+
### Description
745+
746+
override default routes for KFD components
747+
731748
## .spec.distribution.modules.auth.pomerium.defaultRoutesPolicy.gatekeeperPolicyManager
732749

733750
## .spec.distribution.modules.auth.pomerium.defaultRoutesPolicy.hubbleUi
@@ -807,7 +824,7 @@ DEPRECATED: Use defaultRoutesPolicy and/or routes
807824

808825
### Description
809826

810-
Routes configuration for pomerium
827+
Additional routes configuration for Pomerium. Follows Pomerium's route format: https://www.pomerium.com/docs/reference/routes
811828

812829
## .spec.distribution.modules.auth.pomerium.secrets
813830

@@ -820,29 +837,45 @@ Routes configuration for pomerium
820837
| [SHARED_SECRET](#specdistributionmodulesauthpomeriumsecretsshared_secret) | `string` | Required |
821838
| [SIGNING_KEY](#specdistributionmodulesauthpomeriumsecretssigning_key) | `string` | Required |
822839

840+
### Description
841+
842+
Pomerium needs some user-provided secrets to be fully configured. These secrets should be unique between clusters.
843+
823844
## .spec.distribution.modules.auth.pomerium.secrets.COOKIE_SECRET
824845

825846
### Description
826847

827848
Cookie Secret is the secret used to encrypt and sign session cookies.
828849

850+
To generate a random key, run the following command: `head -c32 /dev/urandom | base64`
851+
829852
## .spec.distribution.modules.auth.pomerium.secrets.IDP_CLIENT_SECRET
830853

831854
### Description
832855

833-
Identity Provider Client Secret is the OAuth 2.0 Secret Identifier retrieved from your identity provider.
856+
Identity Provider Client Secret is the OAuth 2.0 Secret Identifier. When auth type is SSO, this value will be the secret used to authenticate Pomerium with Dex, **use a strong random value**.
834857

835858
## .spec.distribution.modules.auth.pomerium.secrets.SHARED_SECRET
836859

837860
### Description
838861

839862
Shared Secret is the base64-encoded, 256-bit key used to mutually authenticate requests between Pomerium services. It's critical that secret keys are random, and stored safely.
840863

864+
To generate a key, run the following command: `head -c32 /dev/urandom | base64`
865+
841866
## .spec.distribution.modules.auth.pomerium.secrets.SIGNING_KEY
842867

843868
### Description
844869

845-
Signing Key is one or more PEM-encoded private keys used to sign a user's attestation JWT, which can be consumed by upstream applications to pass along identifying user information like username, id, and groups.
870+
Signing Key is the base64 representation of one or more PEM-encoded private keys used to sign a user's attestation JWT, which can be consumed by upstream applications to pass along identifying user information like username, id, and groups.
871+
872+
To generates an P-256 (ES256) signing key:
873+
874+
```bash
875+
openssl ecparam -genkey -name prime256v1 -noout -out ec_private.pem
876+
# careful! this will output your private key in terminal
877+
cat ec_private.pem | base64
878+
```
846879

847880
## .spec.distribution.modules.auth.provider
848881

@@ -2906,6 +2939,12 @@ The value of the toleration
29062939

29072940
## .spec.distribution.modules.monitoring.grafana.basicAuthIngress
29082941

2942+
### Description
2943+
2944+
Setting this to true will deploy an additional `grafana-basic-auth` ingress protected with Grafana's basic auth instead of SSO. It's intended use is as a temporary ingress for when there are problems with the SSO login flow.
2945+
2946+
Notice that by default anonymous access is enabled.
2947+
29092948
## .spec.distribution.modules.monitoring.grafana.overrides
29102949

29112950
### Properties
@@ -2973,6 +3012,16 @@ The value of the toleration
29733012

29743013
## .spec.distribution.modules.monitoring.grafana.usersRoleAttributePath
29753014

3015+
### Description
3016+
3017+
[JMESPath](http://jmespath.org/examples.html) expression to retrieve the user's role. Example:
3018+
3019+
```yaml
3020+
usersRoleAttributePath: "contains(groups[*], 'beta') && 'Admin' || contains(groups[*], 'gamma') && 'Editor' || contains(groups[*], 'delta') && 'Viewer'
3021+
```
3022+
3023+
More details in [Grafana's documentation](https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/configure-authentication/generic-oauth/#configure-role-mapping).
3024+
29763025
## .spec.distribution.modules.monitoring.kubeStateMetrics
29773026
29783027
### Properties

docs/schemas/kfddistribution-kfd-v1alpha2.md

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ An example file can be found [here](https://github.com/sighupio/fury-distributio
8080
|:----------------------------------------------------------------|:---------|:---------|
8181
| [nodeSelector](#specdistributioncommonnodeselector) | `object` | Optional |
8282
| [provider](#specdistributioncommonprovider) | `object` | Optional |
83+
| [registry](#specdistributioncommonregistry) | `string` | Optional |
8384
| [relativeVendorPath](#specdistributioncommonrelativevendorpath) | `string` | Optional |
8485
| [tolerations](#specdistributioncommontolerations) | `array` | Optional |
8586

@@ -103,6 +104,14 @@ The node selector to use to place the pods for all the KFD modules
103104

104105
The type of the provider
105106

107+
## .spec.distribution.common.registry
108+
109+
### Description
110+
111+
URL of the registry where to pull images from for the Distribution phase. (Default is registry.sighup.io/fury).
112+
113+
NOTE: If plugins are pulling from the default registry, the registry will be replaced for the plugin too.
114+
106115
## .spec.distribution.common.relativeVendorPath
107116

108117
### Description
@@ -708,6 +717,10 @@ The value of the toleration
708717
| [routes](#specdistributionmodulesauthpomeriumroutes) | `array` | Optional |
709718
| [secrets](#specdistributionmodulesauthpomeriumsecrets) | `object` | Required |
710719

720+
### Description
721+
722+
Configuration for Pomerium, an identity-aware reverse proxy used for SSO.
723+
711724
## .spec.distribution.modules.auth.pomerium.defaultRoutesPolicy
712725

713726
### Properties
@@ -725,6 +738,10 @@ The value of the toleration
725738
| [monitoringPrometheus](#specdistributionmodulesauthpomeriumdefaultroutespolicymonitoringprometheus) | `array` | Optional |
726739
| [tracingMinioConsole](#specdistributionmodulesauthpomeriumdefaultroutespolicytracingminioconsole) | `array` | Optional |
727740

741+
### Description
742+
743+
override default routes for KFD components
744+
728745
## .spec.distribution.modules.auth.pomerium.defaultRoutesPolicy.gatekeeperPolicyManager
729746

730747
## .spec.distribution.modules.auth.pomerium.defaultRoutesPolicy.hubbleUi
@@ -804,7 +821,7 @@ DEPRECATED: Use defaultRoutesPolicy and/or routes
804821

805822
### Description
806823

807-
Routes configuration for pomerium
824+
Additional routes configuration for Pomerium. Follows Pomerium's route format: https://www.pomerium.com/docs/reference/routes
808825

809826
## .spec.distribution.modules.auth.pomerium.secrets
810827

@@ -817,29 +834,45 @@ Routes configuration for pomerium
817834
| [SHARED_SECRET](#specdistributionmodulesauthpomeriumsecretsshared_secret) | `string` | Required |
818835
| [SIGNING_KEY](#specdistributionmodulesauthpomeriumsecretssigning_key) | `string` | Required |
819836

837+
### Description
838+
839+
Pomerium needs some user-provided secrets to be fully configured. These secrets should be unique between clusters.
840+
820841
## .spec.distribution.modules.auth.pomerium.secrets.COOKIE_SECRET
821842

822843
### Description
823844

824845
Cookie Secret is the secret used to encrypt and sign session cookies.
825846

847+
To generate a random key, run the following command: `head -c32 /dev/urandom | base64`
848+
826849
## .spec.distribution.modules.auth.pomerium.secrets.IDP_CLIENT_SECRET
827850

828851
### Description
829852

830-
Identity Provider Client Secret is the OAuth 2.0 Secret Identifier retrieved from your identity provider.
853+
Identity Provider Client Secret is the OAuth 2.0 Secret Identifier. When auth type is SSO, this value will be the secret used to authenticate Pomerium with Dex, **use a strong random value**.
831854

832855
## .spec.distribution.modules.auth.pomerium.secrets.SHARED_SECRET
833856

834857
### Description
835858

836859
Shared Secret is the base64-encoded, 256-bit key used to mutually authenticate requests between Pomerium services. It's critical that secret keys are random, and stored safely.
837860

861+
To generate a key, run the following command: `head -c32 /dev/urandom | base64`
862+
838863
## .spec.distribution.modules.auth.pomerium.secrets.SIGNING_KEY
839864

840865
### Description
841866

842-
Signing Key is one or more PEM-encoded private keys used to sign a user's attestation JWT, which can be consumed by upstream applications to pass along identifying user information like username, id, and groups.
867+
Signing Key is the base64 representation of one or more PEM-encoded private keys used to sign a user's attestation JWT, which can be consumed by upstream applications to pass along identifying user information like username, id, and groups.
868+
869+
To generates an P-256 (ES256) signing key:
870+
871+
```bash
872+
openssl ecparam -genkey -name prime256v1 -noout -out ec_private.pem
873+
# careful! this will output your private key in terminal
874+
cat ec_private.pem | base64
875+
```
843876

844877
## .spec.distribution.modules.auth.provider
845878

@@ -2381,6 +2414,12 @@ The value of the toleration
23812414

23822415
## .spec.distribution.modules.monitoring.grafana.basicAuthIngress
23832416

2417+
### Description
2418+
2419+
Setting this to true will deploy an additional `grafana-basic-auth` ingress protected with Grafana's basic auth instead of SSO. It's intended use is as a temporary ingress for when there are problems with the SSO login flow.
2420+
2421+
Notice that by default anonymous access is enabled.
2422+
23842423
## .spec.distribution.modules.monitoring.grafana.overrides
23852424

23862425
### Properties
@@ -2448,6 +2487,16 @@ The value of the toleration
24482487

24492488
## .spec.distribution.modules.monitoring.grafana.usersRoleAttributePath
24502489

2490+
### Description
2491+
2492+
[JMESPath](http://jmespath.org/examples.html) expression to retrieve the user's role. Example:
2493+
2494+
```yaml
2495+
usersRoleAttributePath: "contains(groups[*], 'beta') && 'Admin' || contains(groups[*], 'gamma') && 'Editor' || contains(groups[*], 'delta') && 'Viewer'
2496+
```
2497+
2498+
More details in [Grafana's documentation](https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/configure-authentication/generic-oauth/#configure-role-mapping).
2499+
24512500
## .spec.distribution.modules.monitoring.kubeStateMetrics
24522501
24532502
### Properties

0 commit comments

Comments
 (0)