Skip to content
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

Adopt Kubernetes style TLS Secrets and add relevant flags #4147

Merged
merged 5 commits into from
Aug 23, 2023
Merged

Conversation

aryan9600
Copy link
Member

@aryan9600 aryan9600 commented Aug 9, 2023

  • flux create secret helm: Deprecate the --ca-file, --cert-file and key-file flags and recommend users to use flux create secret tls to generate TLS Secrets.
  • flux create secret tls: Add flags --tls-crt-file, --tls-key-file and --ca-crt-file and deprecate the current TLS flags. Use the tls.key, tls.crt and ca.crt keys in the generated Secret if the command is invoked using the new flags.
  • flux create secret git: Add --ca-crt-file as an alternative to --ca-file that uses ca.crt in the generated Secret. --ca-crt-file takes precedence over --ca-file.

Part of: #4137

pkg/manifestgen/sourcesecret/options.go Outdated Show resolved Hide resolved
pkg/manifestgen/sourcesecret/options.go Outdated Show resolved Hide resolved
@hiddeco hiddeco added the enhancement New feature or request label Aug 9, 2023
CAFileSecretKey = "caFile"
CertFileSecretKey = "certFile"
KeyFileSecretKey = "keyFile"
CACrtSecretKey = "ca.crt"

Check failure

Code scanning / CodeQL

Hard-coded credentials

Hard-coded [secret](1).
CertFileSecretKey = "certFile"
KeyFileSecretKey = "keyFile"
CACrtSecretKey = "ca.crt"
TLSCrtSecretKey = "tls.crt"

Check failure

Code scanning / CodeQL

Hard-coded credentials

Hard-coded [secret](1).
KeyFileSecretKey = "keyFile"
CACrtSecretKey = "ca.crt"
TLSCrtSecretKey = "tls.crt"
TLSKeySecretKey = "tls.key"

Check failure

Code scanning / CodeQL

Hard-coded credentials

Hard-coded [secret](1).

// Deprecated: Replaced by CACrtSecretKey, but kept for backwards
// compatibility with deprecated TLS flags.
CAFileSecretKey = "caFile"

Check failure

Code scanning / CodeQL

Hard-coded credentials

Hard-coded [secret](1).
CAFileSecretKey = "caFile"
// Deprecated: Replaced by TLSCrtSecretKey, but kept for backwards
// compatibility with deprecated TLS flags.
CertFileSecretKey = "certFile"

Check failure

Code scanning / CodeQL

Hard-coded credentials

Hard-coded [secret](1).
CertFileSecretKey = "certFile"
// Deprecated: Replaced by TLSKeySecretKey, but kept for backwards
// compatibility with deprecated TLS flags.
KeyFileSecretKey = "keyFile"

Check failure

Code scanning / CodeQL

Hard-coded credentials

Hard-coded [secret](1).
Copy link
Contributor

@darkowlzz darkowlzz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left a suggestion about keeping old test case to make sure that the old behavior is retained.
Other than that, it LGTM!

cmd/flux/create_secret_tls_test.go Show resolved Hide resolved
@aryan9600 aryan9600 force-pushed the tls-flags branch 2 times, most recently from 40324c7 to 37aa19f Compare August 18, 2023 11:28
@aryan9600 aryan9600 requested a review from darkowlzz August 18, 2023 11:28
Add support for using `tls.key`, `tls.crt` and `ca.crt` keys while
generating a Secret, using the `--tls-key-file`, `--tls-crt-file` and
`--ca-crt-file` flags respectively.
Mark the flags `--key-file`, `--cert-file` and `--ca-file` as
deprecated.

Signed-off-by: Sanskar Jaiswal <jaiswalsanskar078@gmail.com>
Signed-off-by: Sanskar Jaiswal <jaiswalsanskar078@gmail.com>
Add flag `--ca-crt-file` to `flux create secret git` to specify the path
to CA certificate. It takes precedence over `--ca-file` and uses the
key `ca.crt` in the generated Secret.

Signed-off-by: Sanskar Jaiswal <jaiswalsanskar078@gmail.com>
Signed-off-by: Sanskar Jaiswal <jaiswalsanskar078@gmail.com>
Signed-off-by: Sanskar Jaiswal <jaiswalsanskar078@gmail.com>
@aryan9600 aryan9600 merged commit 525bd21 into main Aug 23, 2023
@aryan9600 aryan9600 deleted the tls-flags branch August 23, 2023 09:39
nrdufour added a commit to nrdufour/home-ops that referenced this pull request Aug 25, 2023
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [fluxcd/flux2](https://github.com/fluxcd/flux2) | Kustomization | minor | `v2.0.1` -> `v2.1.0` |

---

### Release Notes

<details>
<summary>fluxcd/flux2 (fluxcd/flux2)</summary>

### [`v2.1.0`](https://github.com/fluxcd/flux2/releases/tag/v2.1.0)

[Compare Source](fluxcd/flux2@v2.0.1...v2.1.0)

#### Highlights

Flux v2.1.0 is a feature release. Users are encouraged to upgrade for the best experience.

The [Flux APIs](#api-changes) were extended with new opt-in features in a backwards-compatible manner.

The Flux Git capabilities have been improved with support for Git push options, Git refspec, Gerrit, HTTP/S and SOCKS5 proxies.

The Flux alerting capabilities have been extended with [Datadog](https://fluxcd.io/flux/components/notification/provider/#pagerduity) support.

The Flux controllers come with performance improvements when reconciling Helm repositories with large indexes (80% memory reduction), and when reconciling Flux Kustomizations with thousands of resources (x4 faster server-side apply). The load distribution has been improved when reconciling Flux objects in parallel to reduce CPU and memory spikes.

:heart: Big thanks to all the Flux contributors that helped us with this release!

#### Deprecations

Flux v2.1.0 comes with support for Kubernetes TLS Secrets when referring to secrets containing TLS certs, and deprecates the usage of `caFile`, `keyFile` and `certFile` keys.

For more details about the TLS changes please see the [Kubernetes TLS Secrets section](#kubernetes-tls-secrets).

Flux v2.1.0 comes with major improvements to the Prometheus monitoring stack. Starting with this version, Flux is leveraging the `kube-state-metrics` CRD exporter to report metrics containing rich information about Flux reconciliation status e.g. Git revision, Helm chart version, OCI artifacts digests, etc. The `gotk_reconcile_condition` metrics was deprecated in favor of the `gotk_resource_info`.

For more details about the new monitoring stack please see the [Flux Prometheus metrics documentation](https://fluxcd.io/flux/monitoring/metrics) and the [flux2-monitoring-example repository](https://github.com/fluxcd/flux2-monitoring-example).

#### API changes

##### GitRepository v1

The [GitRepository](https://fluxcd.io/flux/components/source/gitrepositories/) API was extended with the following fields:

-   `.spec.proxySecretRef.name` is an optional field used to specify the name of a Kubernetes Secret that contains the HTTP/S or SOCKS5 proxy settings.
-   `.spec.verify.mode` now support one of the following values `HEAD`, `Tag`, `TagAndHEAD`.

##### Kustomization v1

The [Kustomization](https://fluxcd.io/flux/components/kustomize/kustomization/) API was extended with two apply policies `IfNotPresent` and `Ignore`.

Changing the apply behaviour for specific Kubernetes resources, can be done using the following annotations:

| Annotation                          | Default    | Values                                                         | Role            |
|-------------------------------------|------------|----------------------------------------------------------------|-----------------|
| `kustomize.toolkit.fluxcd.io/ssa`   | `Override` | - `Override`<br/>- `Merge`<br/>- `IfNotPresent`<br/>- `Ignore` | Apply policy    |
| `kustomize.toolkit.fluxcd.io/force` | `Disabled` | - `Enabled`<br/>- `Disabled`                                   | Recreate policy |
| `kustomize.toolkit.fluxcd.io/prune` | `Enabled`  | - `Enabled`<br/>- `Disabled`                                   | Delete policy   |

The `IfNotPresent` policy instructs the controller to only apply the Kubernetes resources if they are not present on the cluster.
This policy can be used for Kubernetes `Secrets` and `ValidatingWebhookConfigurations` managed by cert-manager,
where Flux creates the resources with fields that are later on mutated by other controllers.

##### ImageUpdateAutomation v1beta1

The [ImageUpdateAutomation](https://fluxcd.io/flux/components/image/imageupdateautomations/) was extended with the following fields:

-   `.spec.git.push.refspec` is an optional field used to specify a Git refspec used when pushing commits upstream.
-   `.spec.git.push.options` is an optional field used to specify the Git push options to be sent to the Git server when pushing commits upstream.

##### Kubernetes TLS Secrets

All the Flux APIs that accept TLS data have been modified to adopt Secrets of type
`kubernetes.io/tls`. This includes:

-   **HelmRepository**: The field `.spec.secretRef` has been deprecated in favor of a new field [`.spec.certSecretRef`](https://fluxcd.io/flux/components/source/helmrepositories/#cert-secret-reference).
-   **OCIRepository**: Support for the `caFile`, `keyFile` and `certFile` keys in the Secret specified in [`.spec.certSecretRef`](https://fluxcd.io/flux/components/source/ocirepositories/#cert-secret-reference) have been deprecated in favor of `ca.crt`, `tls.key` and `tls.crt`.
-   **ImageRepository**: Support for the`caFile`, `keyFile` and `certFile` keys in the Secret specified in [`.spec.certSecretRef`](https://fluxcd.io/flux/components/source/imagerepositories/#cert-secret-reference) have been deprecated in favor of `ca.crt`, `tls.key` and `tls.crt`.
-   **GitRepository**: CA certificate can now be provided in the Secret specified in `.spec.secretRef` using the `ca.crt` key, which takes precedence over the `caFile` key.

#### Upgrade procedure

Upgrade Flux from `v2.0.x` to `v2.1.0` either by [rerunning bootstrap](https://fluxcd.io/flux/installation/#bootstrap-upgrade) or by using the [Flux GitHub Action](https://github.com/fluxcd/flux2/tree/main/action).

To upgrade Flux from `v0.x` to `v2.1.0` please follow the [Flux GA upgrade procedure](https://github.com/fluxcd/flux2/releases/tag/v2.0.0#upgrade).

#### Kubernetes compatibility

This release is compatible with the following Kubernetes versions:

| Kubernetes version | Minimum required |
|--------------------|------------------|
| `v1.25`            | `>= 1.25.0`      |
| `v1.26`            | `>= 1.26.0`      |
| `v1.27`            | `>= 1.27.1`      |
| `v1.28`            | `>= 1.28.0`      |

Note that Flux may work on older versions of Kubernetes e.g. 1.21, but we don't recommend running end-of-life versions in production nor do we offer support for these versions.

#### New Documentation

-   [Flux installation](https://fluxcd.io/flux/installation/)
-   [Flux bootstrap](https://fluxcd.io/flux/installation/bootstrap/)
-   [Flux configuration](https://fluxcd.io/flux/installation/configuration/)
-   [Flux Prometheus metrics](https://fluxcd.io/flux/monitoring/metrics/)
-   [Flux custom Prometheus metrics](https://fluxcd.io/flux/monitoring/custom-metrics/)
-   [Flux logs](https://fluxcd.io/flux/monitoring/logs/)
-   [Flux events](https://fluxcd.io/flux/monitoring/events/)

#### Components changelog

-   source-controller [v1.1.0](https://github.com/fluxcd/source-controller/blob/v1.1.0/CHANGELOG.md)
-   kustomize-controller [v1.1.0](https://github.com/fluxcd/kustomize-controller/blob/v1.1.0/CHANGELOG.md)
-   notification-controller [v1.1.0](https://github.com/fluxcd/notification-controller/blob/v1.1.0/CHANGELOG.md)
-   helm-controller [v0.36.0](https://github.com/fluxcd/helm-controller/blob/v0.36.0/CHANGELOG.md)
-   image-reflector-controller [v0.30.0](https://github.com/fluxcd/image-reflector-controller/blob/v0.30.0/CHANGELOG.md)
-   image-automation-controller [v0.36.0](https://github.com/fluxcd/image-automation-controller/blob/v0.36.0/CHANGELOG.md)

#### CLI Changelog

-   PR [#&#8203;4189](fluxcd/flux2#4189) - [@&#8203;hiddeco](https://github.com/hiddeco) - Update dependencies
-   PR [#&#8203;4186](fluxcd/flux2#4186) - [@&#8203;fluxcdbot](https://github.com/fluxcdbot) - Update toolkit components
-   PR [#&#8203;4183](fluxcd/flux2#4183) - [@&#8203;somtochiama](https://github.com/somtochiama) - Fix autocompletion for helm chart
-   PR [#&#8203;4182](fluxcd/flux2#4182) - [@&#8203;hiddeco](https://github.com/hiddeco) - manifestgen/install: use clean default HTTP client
-   PR [#&#8203;4181](fluxcd/flux2#4181) - [@&#8203;hiddeco](https://github.com/hiddeco) - cmd/events: handle error value
-   PR [#&#8203;4180](fluxcd/flux2#4180) - [@&#8203;stefanprodan](https://github.com/stefanprodan) - Fix controller version info
-   PR [#&#8203;4177](fluxcd/flux2#4177) - [@&#8203;stefanprodan](https://github.com/stefanprodan) - Set min value for the `--ssh-rsa-bits` flag
-   PR [#&#8203;4176](fluxcd/flux2#4176) - [@&#8203;hiddeco](https://github.com/hiddeco) - ci: disable fail-fast for ARM end-to-end
-   PR [#&#8203;4175](fluxcd/flux2#4175) - [@&#8203;hiddeco](https://github.com/hiddeco) - build: update securejoin dependency
-   PR [#&#8203;4169](fluxcd/flux2#4169) - [@&#8203;darkowlzz](https://github.com/darkowlzz) - Add monitoring configuration deprecation notice
-   PR [#&#8203;4167](fluxcd/flux2#4167) - [@&#8203;dependabot](https://github.com/dependabot)\[bot] - build(deps): bump the ci group with 2 updates
-   PR [#&#8203;4166](fluxcd/flux2#4166) - [@&#8203;stefanprodan](https://github.com/stefanprodan) - e2e: Add Kubernetes v1.28.0 to conformance tests
-   PR [#&#8203;4151](fluxcd/flux2#4151) - [@&#8203;hiddeco](https://github.com/hiddeco) - ci: enable security-and-quality CodeQL query
-   PR [#&#8203;4147](fluxcd/flux2#4147) - [@&#8203;aryan9600](https://github.com/aryan9600) - Adopt Kubernetes style TLS Secrets and add relevant flags
-   PR [#&#8203;4142](fluxcd/flux2#4142) - [@&#8203;dependabot](https://github.com/dependabot)\[bot] - build(deps): bump the ci group with 2 updates
-   PR [#&#8203;4140](fluxcd/flux2#4140) - [@&#8203;somtochiama](https://github.com/somtochiama) - Disable azure e2e test
-   PR [#&#8203;4134](fluxcd/flux2#4134) - [@&#8203;sestegra](https://github.com/sestegra) - monitoring: add OCIRepository in cluster dashboard and new source panels in control-plane dashboard
-   PR [#&#8203;4131](fluxcd/flux2#4131) - [@&#8203;mraerino](https://github.com/mraerino) - Fix selection of kustomization resource from multi doc yaml
-   PR [#&#8203;4126](fluxcd/flux2#4126) - [@&#8203;stefanprodan](https://github.com/stefanprodan) - Set Kubernetes min version to 1.25
-   PR [#&#8203;4077](fluxcd/flux2#4077) - [@&#8203;dependabot](https://github.com/dependabot)\[bot] - build(deps): bump the ci group with 2 updates
-   PR [#&#8203;4068](fluxcd/flux2#4068) - [@&#8203;stefanprodan](https://github.com/stefanprodan) - Update dependencies
-   PR [#&#8203;4065](fluxcd/flux2#4065) - [@&#8203;hiddeco](https://github.com/hiddeco) - action: support `openssl` and `sha256sum`
-   PR [#&#8203;4062](fluxcd/flux2#4062) - [@&#8203;souleb](https://github.com/souleb) - diff: Take into account the server-side inventory for local Flux Kustomizations
-   PR [#&#8203;4061](fluxcd/flux2#4061) - [@&#8203;hiddeco](https://github.com/hiddeco) - action: re-allow configuration of non-default token
-   PR [#&#8203;4057](fluxcd/flux2#4057) - [@&#8203;fluxcdbot](https://github.com/fluxcdbot) - Update toolkit components
-   PR [#&#8203;4052](fluxcd/flux2#4052) - [@&#8203;stefanprodan](https://github.com/stefanprodan) - docs: Link to the Flux GitHub Action documentation
-   PR [#&#8203;4051](fluxcd/flux2#4051) - [@&#8203;hiddeco](https://github.com/hiddeco) - action: use `$RUNNER_TOOL_CACHE`, support MacOS and Windows, validate checksum
-   PR [#&#8203;4046](fluxcd/flux2#4046) - [@&#8203;stefanprodan](https://github.com/stefanprodan) - ci: backport: set write permissions
-   PR [#&#8203;4043](fluxcd/flux2#4043) - [@&#8203;stefanprodan](https://github.com/stefanprodan) - ci: release: extract the image tag from GITHUB_REF
-   PR [#&#8203;4041](fluxcd/flux2#4041) - [@&#8203;hiddeco](https://github.com/hiddeco) - ci: release: disable interpretation backslash esc

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4yMy4yIiwidXBkYXRlZEluVmVyIjoiMzYuMjMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Reviewed-on: https://git.home/nrdufour/home-ops/pulls/58
Co-authored-by: Renovate <renovate@ptinem.io>
Co-committed-by: Renovate <renovate@ptinem.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants