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

chore(base-cluster/dependencies): update docker.io/fluxcd/flux-cli docker tag to v2 #521

Merged
merged 1 commit into from
Sep 19, 2023

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Aug 23, 2023

Mend Renovate

This PR contains the following updates:

Package Update Change
docker.io/fluxcd/flux-cli major v0.41.2 -> v2.1.0

Release Notes

fluxcd/flux2 (docker.io/fluxcd/flux-cli)

v2.1.0

Compare Source

Highlights

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

The Flux APIs 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 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.

❤️ 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.

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 and the flux2-monitoring-example repository.

API changes

GitRepository v1

The GitRepository 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 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
- Merge
- IfNotPresent
- Ignore
Apply policy
kustomize.toolkit.fluxcd.io/force Disabled - Enabled
- Disabled
Recreate policy
kustomize.toolkit.fluxcd.io/prune Enabled - Enabled
- 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 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.
  • OCIRepository: Support for the caFile, keyFile and certFile keys in the Secret specified in .spec.certSecretRef have been deprecated in favor of ca.crt, tls.key and tls.crt.
  • ImageRepository: Support for thecaFile, keyFile and certFile keys in the Secret specified in .spec.certSecretRef 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 or by using the Flux GitHub Action.

To upgrade Flux from v0.x to v2.1.0 please follow the Flux GA upgrade procedure.

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

Components changelog

CLI Changelog

v2.0.1

Compare Source

Highlights

Flux v2.0.1 is a patch release which comes with various fixes. Users are encouraged to upgrade for the best experience.

💡 For upgrading from Flux v0.x, please see the procedure documented in 2.0.0.

Fixes
  • Fix AWS auth for cross-region ECR repositories (source-controller, image-reflector-controller).
  • Prevent spurious alerts for skipped resources (kustomize-controller).
  • List removed resources for flux diff ks --kustomization-file (flux CLI).
  • Fix SLSA provenance generation for the Flux CLI binaries.
Components changelog
CLI Changelog
New Documentation

v2.0.0

Compare Source

Highlights

This is the first General Availability (GA) release of Flux v2.

Flux v2.0.0 comes with the promotion of the GitOps related APIs to v1 and adds horizontal scaling & sharding capabilities to Flux controllers. The Git bootstrap capabilities provided by the Flux CLI and by Flux Terraform Provider are now considered stable and production ready.

Starting with this version, the build, release and provenance portions of the Flux project supply chain provisionally meet SLSA Build Level 3.

Flux GA is fully integrated with Kubernetes Workload Identity for AWS, Azure and Google Cloud to facilitate passwordless authentication to OCI sources (container images, OCI artifacts, Helm charts).

The Flux alerting capabilities have been extended with PagerDuty and Google Pub/Sub support. The improved Alert v1beta2 API provides better control over events filtering and allows users to enrich the alerts with custom metadata.

Supported versions

Starting with this version, the Flux CLI and the GA components (source-controller, kustomize-controller and notification-controller) follow the release cadence and support pledge documented in the Flux release specification.

Kubernetes compatibility

This release is compatible with the following Kubernetes versions:

Kubernetes version Minimum required
v1.24 >= 1.24.0
v1.25 >= 1.25.0
v1.26 >= 1.26.0
v1.27 >= 1.27.1

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

Flux ecosystem support

The following (open-source) extensions & integrations are compatible with this Flux release, starting from the specified minimum version or higher.

Type Project Version
Flux Web UI weave-gitops 0.26.0
Terraform integration tf-controller 0.15.0
API changes
GitRepository v1

The GitRepository kind was promoted from v1beta2 to v1 (GA) and deprecated fields were removed.

The v1 API is backwards compatible with v1beta2, except for the following:

  • the deprecated field .spec.gitImplementation was removed
  • the unused field .spec.accessFrom was removed
  • the deprecated field .status.contentConfigChecksum was removed
  • the deprecated field .status.artifact.checksum was removed
  • the .status.url was removed (replaced by .status.artifact.url)
Kustomization v1

The Kustomization kind was promoted from v1beta2 to v1 (GA) and deprecated fields were removed.

A new optional field .spec.commonMetadata was added to the API for setting labels and/or annotations to all resources part of a Kustomization.

The v1 API is backwards compatible with v1beta2, except for the following:

  • the deprecated field .spec.validation was removed
  • the deprecated field .spec.patchesStrategicMerge was removed (replaced by .spec.patches)
  • the deprecated field .spec.patchesJson6902 was removed (replaced by .spec.patches)
Receiver v1

The Receiver kind was promoted from v1beta2 to v1 (GA) and deprecated fields were removed.

The v1 API is backwards compatible with v1beta2, except for the following:

  • the deprecated field .status.url was removed (replaced by .status.webhookPath)
Upgrade procedure

Upgrade Flux from v0.x to v2.0.0 either by rerunning bootstrap or by using the Flux GitHub Action.

To upgrade the APIs from v1beta2, make sure the new CRDs and controllers are deployed, and then change the manifests in Git:

  1. Remove the deprecated fields from the GitRepository and Kustomization definitions.
  2. Commit, push and reconcile the fields removal changes.
  3. Set apiVersion: source.toolkit.fluxcd.io/v1 in the YAML files that contain GitRepository definitions.
  4. Set apiVersion: kustomize.toolkit.fluxcd.io/v1 in the YAML files that contain Flux Kustomization definitions.
  5. Set apiVersion: notification.toolkit.fluxcd.io/v1 in the YAML files that contain Receiver definitions.
  6. Update the API version of GitRepository and Kustomization objects present in the .spec.resources list of Receiver definitions.
  7. Commit, push and reconcile the API version changes.

Bumping the APIs version in manifests can be done gradually. It is advised to not delay this procedure as the beta versions will be removed after 6 months.

New Documentation

❤️ Big thanks to all the Flux contributors that helped us reach this milestone!
👏 And a special shoutout to the Flux community who supported us over the years!

Components changelog
CLI Changelog

Configuration

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

🚦 Automerge: Enabled.

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.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate. View repository job log here.

@renovate renovate bot requested review from cwrau and marvinWolff as code owners August 23, 2023 11:19
@renovate renovate bot requested a review from a user August 23, 2023 11:19
@renovate renovate bot assigned cwrau Aug 23, 2023
@renovate renovate bot force-pushed the renovate/base-cluster-docker.io-fluxcd-flux-cli-2.x branch 6 times, most recently from 4aca5db to 54d2faf Compare August 24, 2023 10:59
@renovate renovate bot force-pushed the renovate/base-cluster-docker.io-fluxcd-flux-cli-2.x branch 7 times, most recently from de6947d to 08e3a0a Compare August 31, 2023 09:05
@renovate renovate bot force-pushed the renovate/base-cluster-docker.io-fluxcd-flux-cli-2.x branch 3 times, most recently from e6af6d8 to d854dce Compare September 5, 2023 09:35
@tasches
Copy link
Collaborator

tasches commented Sep 8, 2023

link for the upgrade procedure from the flux documentation (0.x.x to 2.0.0)
https://github.com/fluxcd/flux2/releases/tag/v2.0.0#upgrade

@cwrau
Copy link
Member

cwrau commented Sep 8, 2023

link for the upgrade procedure from the flux documentation (0.x.x to 2.0.0) fluxcd/flux2@v2.0.0#upgrade (release)

We should probably address the issue of updating flux in the various clusters beforehand, currently each cluster has it's own flux.yaml which holds the configuration to deploy flux.

I would say base-cluster should take over flux after installation, so we can update it on our own terms.

@renovate renovate bot force-pushed the renovate/base-cluster-docker.io-fluxcd-flux-cli-2.x branch from d854dce to 90e93b1 Compare September 8, 2023 13:44
@renovate renovate bot requested a review from tasches as a code owner September 8, 2023 13:44
@renovate renovate bot force-pushed the renovate/base-cluster-docker.io-fluxcd-flux-cli-2.x branch 4 times, most recently from ce5e0cb to 3b0953c Compare September 11, 2023 13:14
@renovate renovate bot force-pushed the renovate/base-cluster-docker.io-fluxcd-flux-cli-2.x branch 9 times, most recently from 63bf2ed to e186987 Compare September 14, 2023 10:30
@renovate renovate bot force-pushed the renovate/base-cluster-docker.io-fluxcd-flux-cli-2.x branch from e186987 to 14e4af5 Compare September 18, 2023 11:46
@teutonet-bot
Copy link
Contributor

🤖 I have diffed this beep boop

"/$namespace/$kind/$name.yaml" for normal resources
"/$namespace/HelmRelease/$name/$namespace/$kind/$name.yaml" for HelmReleases <- this is recursive
'null' means it's either cluster-scoped or it's in the default namespace for the HelmRelease

charts/base-cluster/ci/rbac-values.yaml has no changes

charts/base-cluster/ci/imagepullsecrets-values.yaml has no changes

[charts/base-cluster/values.yaml](

<title> Error </title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script defer src="https://media.ethicalads.io/media/client/ethicalads.min.js"></script>
    <link rel="stylesheet" href="https://dpaste.b-cdn.net/static/pastebin/css/normalize.css">
    <link rel="stylesheet" href="https://dpaste.b-cdn.net/static/pastebin/css/skeleton.css">
    <link rel="stylesheet" href="https://dpaste.b-cdn.net/static/pastebin/css/main.css">
    <link href="https://fonts.googleapis.com/css2?family=Fira+Sans:wght@400;700&amp;display=swap"
          rel="stylesheet">
    <link href="https://fonts.googleapis.com/css?family=Fira+Mono"
          rel="stylesheet">
    <style></style>
</head>
<body>
    <div id='container'>
        <div class="topbuttons">
            
                <a href="/accounts/login/"
                   title="Personal dashboard, preferences, API token"
                   class="button"><b>Sign in</b></a>
            
            <a href="/" title="Create a new paste" class=" button">New</a>
            <a href="/api/v2/"
               title="Paste creation API, with code samples"
               class=" activebutton  button">API</a>
            <a href="/help"
               title="Usage tips, shortcuts"
               class="  button">Help</a>
            <a href="/about"
               title="Updates, stats, backstory"
               class=" button">About</a>
        </div>
        
<div class="error">
    <h3>Sorry!</h3>
    Sorry, maximum paste size is 1,000,000 characters.
    <hr>
    <p>
        Something unexpected? Please create a <a href='https://dpaste.freshdesk.com/support/tickets/new'>support ticket</a>.
    </p>
</div>
<p>
    <a class='button' href='/' onclick='history.back();return false;'>Go back</a>
</p>

    </div>
    
    
    <script>
        window.fwSettings={'widget_id':22000000180 };
        !function(){if("function"!=typeof window.FreshworksWidget){var n=function(){n.q.push(arguments)};n.q=[],window.FreshworksWidget=n}}();
    </script>
    <script defer src='https://widget.freshworks.com/widgets/22000000180.js'></script>
</body>
)

charts/base-cluster/ci/artifacthub-values.yaml

[charts/base-cluster/ci/flux-gitrepositories-values.yaml](

<title> Error </title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script defer src="https://media.ethicalads.io/media/client/ethicalads.min.js"></script>
    <link rel="stylesheet" href="https://dpaste.b-cdn.net/static/pastebin/css/normalize.css">
    <link rel="stylesheet" href="https://dpaste.b-cdn.net/static/pastebin/css/skeleton.css">
    <link rel="stylesheet" href="https://dpaste.b-cdn.net/static/pastebin/css/main.css">
    <link href="https://fonts.googleapis.com/css2?family=Fira+Sans:wght@400;700&amp;display=swap"
          rel="stylesheet">
    <link href="https://fonts.googleapis.com/css?family=Fira+Mono"
          rel="stylesheet">
    <style></style>
</head>
<body>
    <div id='container'>
        <div class="topbuttons">
            
                <a href="/accounts/login/"
                   title="Personal dashboard, preferences, API token"
                   class="button"><b>Sign in</b></a>
            
            <a href="/" title="Create a new paste" class=" button">New</a>
            <a href="/api/v2/"
               title="Paste creation API, with code samples"
               class=" activebutton  button">API</a>
            <a href="/help"
               title="Usage tips, shortcuts"
               class="  button">Help</a>
            <a href="/about"
               title="Updates, stats, backstory"
               class=" button">About</a>
        </div>
        
<div class="error">
    <h3>Sorry!</h3>
    Sorry, maximum paste size is 1,000,000 characters.
    <hr>
    <p>
        Something unexpected? Please create a <a href='https://dpaste.freshdesk.com/support/tickets/new'>support ticket</a>.
    </p>
</div>
<p>
    <a class='button' href='/' onclick='history.back();return false;'>Go back</a>
</p>

    </div>
    
    
    <script>
        window.fwSettings={'widget_id':22000000180 };
        !function(){if("function"!=typeof window.FreshworksWidget){var n=function(){n.q.push(arguments)};n.q=[],window.FreshworksWidget=n}}();
    </script>
    <script defer src='https://widget.freshworks.com/widgets/22000000180.js'></script>
</body>
)

charts/base-cluster/ci/priorityclasses-values.yaml

charts/base-cluster/ci/basic-values.yaml

[charts/base-cluster/ci/velero-backupStorageLocations-values.yaml](

<title> Error </title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script defer src="https://media.ethicalads.io/media/client/ethicalads.min.js"></script>
    <link rel="stylesheet" href="https://dpaste.b-cdn.net/static/pastebin/css/normalize.css">
    <link rel="stylesheet" href="https://dpaste.b-cdn.net/static/pastebin/css/skeleton.css">
    <link rel="stylesheet" href="https://dpaste.b-cdn.net/static/pastebin/css/main.css">
    <link href="https://fonts.googleapis.com/css2?family=Fira+Sans:wght@400;700&amp;display=swap"
          rel="stylesheet">
    <link href="https://fonts.googleapis.com/css?family=Fira+Mono"
          rel="stylesheet">
    <style></style>
</head>
<body>
    <div id='container'>
        <div class="topbuttons">
            
                <a href="/accounts/login/"
                   title="Personal dashboard, preferences, API token"
                   class="button"><b>Sign in</b></a>
            
            <a href="/" title="Create a new paste" class=" button">New</a>
            <a href="/api/v2/"
               title="Paste creation API, with code samples"
               class=" activebutton  button">API</a>
            <a href="/help"
               title="Usage tips, shortcuts"
               class="  button">Help</a>
            <a href="/about"
               title="Updates, stats, backstory"
               class=" button">About</a>
        </div>
        
<div class="error">
    <h3>Sorry!</h3>
    Sorry, maximum paste size is 1,000,000 characters.
    <hr>
    <p>
        Something unexpected? Please create a <a href='https://dpaste.freshdesk.com/support/tickets/new'>support ticket</a>.
    </p>
</div>
<p>
    <a class='button' href='/' onclick='history.back();return false;'>Go back</a>
</p>

    </div>
    
    
    <script>
        window.fwSettings={'widget_id':22000000180 };
        !function(){if("function"!=typeof window.FreshworksWidget){var n=function(){n.q.push(arguments)};n.q=[],window.FreshworksWidget=n}}();
    </script>
    <script defer src='https://widget.freshworks.com/widgets/22000000180.js'></script>
</body>
)

@cwrau
Copy link
Member

cwrau commented Sep 19, 2023

link for the upgrade procedure from the flux documentation (0.x.x to 2.0.0) fluxcd/flux2@v2.0.0#upgrade (release)

We should probably address the issue of updating flux in the various clusters beforehand, currently each cluster has it's own flux.yaml which holds the configuration to deploy flux.

I would say base-cluster should take over flux after installation, so we can update it on our own terms.

But it's ok to update this CLI

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants