Skip to content

Claudie v0.16

This release is not backwards compatible with previous v0.15.x versions, due to an internal rework of handling state files for clusters

Readme Before Deploying

⚠️ Breaking Change: No upgrade path from pre-v0.16.x clusters

Clusters created with Claudie versions older than v0.16.x are not compatible with this release and cannot be upgraded in place.

Migration steps

  1. Back up all workloads running on your existing cluster.
  2. Using your current (old) Claudie version, destroy the existing cluster. v0.16.x cannot destroy clusters created by older versions, so this step must be completed before upgrading.
  3. Upgrade Claudie to v0.16.x.
  4. Create a new cluster with v0.16.x.
  5. Redeploy your workloads to the new cluster.

Note: Do not upgrade Claudie before destroying the old cluster. Once you are on v0.16.x, the old cluster can no longer be torn down through Claudie.

Deployment

To deploy Claudie v0.16.x, please:

  1. Download Claudie.yaml from release page

  2. Verify the checksum with sha256 (optional)

We provide checksums in claudie_checksum.txt you can verify the downloaded yaml files against the provided checksums.

  1. Install Claudie using kubectl

We strongly recommend changing the default credentials for MongoDB, MinIO before you deploy it.

kubectl apply -f https://github.com/berops/claudie/releases/latest/download/Claudie.yaml

To further harden Claudie, you may want to deploy our pre-defined network policies:

# for clusters using cilium as their CNI
kubectl apply -f https://github.com/berops/claudie/releases/latest/download/network-policy-cilium.yaml
# other
kubectl apply -f https://github.com/berops/claudie/releases/latest/download/network-policy.yaml

What's Changed

  • External templates handling has been reworked #2165

External templates are now defined in their own CRD called TemplateGitReference instead of directly defining them inside the InputManifest. You can read further about the new CRD in our documentation.

An example custom resource is provided below:

apiVersion: claudie.io/v1beta1
kind: TemplateGitReference
metadata:
  name: my-templates
  namespace: claudie
spec:
  endpoint:
    url: github.com/berops/claudie-config
    protocol: https
  auth:
    secretRef:
      name: git-token
      namespace: claudie
  commit: latest
  paths:
    terraformer: templates/terraformer
    playbooks: templates/playbooks
    configLb: templates/config-lb
    configK8s: templates/config-k8s
    manifestsK8s: templates/manifests-k8s 

Inside the InputManifest you can then reference the Custom Resource under the provider as follows:

apiVersion: claudie.io/v1beta1
kind: InputManifest
metadata:
  name: example
spec:
  providers:
    - name: hetzner-1
      providerType: hetzner
      templatesRef:
        name: my-templates
        namespace: claudie
...

If no templates are specified Claudie generates a default custom resource that points to the configuration in https://www.github.com/berops/claudie-config.

  • Update kubeone. The currently supported kubernetes versions are 1.34.x, 1.35.x, and 1.36.x. #2184

  • Upgrade longhorn to v1.12 #2188

  • Update tofu to 1.12.5 #2186

  • Updated generated kubeconfig secret name to omit auto-generated hash #2183

  • Dropped raw ICMP pings in favor of SSH pings #2191

  • A single state file per cluster has been dropped in favor of a single state file per nodepool with an additional shared infrastructure state file for each cluster #2177. This speeds up scaling up/scaling down existing nodepools.

  • General maintenance dependencies update #2201

Bug fixes

  • fix dangling generated directory #2189

  • fix unreachable node deletion pipeline #2193

v0.16.1

Before upgrading, back up the state bucket as described in Creating Claudie Backup. Rolling back is not supported; restore from this backup instead.

What's Changed

  • Improve scheduling workflow for 0-sized nodepools #2214
  • Drop MinIO for pgsty/silo #2226

MinIO images were withdrawn from public registries, so the tfstate object store now runs pgsty/silo (a MinIO fork) with pgsty/mc as the bucket-init client.

Upgrading

  • A plain kubectl apply of the new manifests is enough. Silo starts on the existing MinIO volumes without any data migration and the minio StatefulSet rolls in place.
  • During the rollout, silo pods log Following servers have mismatching configuration ... Expected Silo binary checksum ... and grid reconnect errors for peers still running MinIO. This is expected and stops once all four pods are updated.
  • If kubectl apply fails with Job "make-bucket-job" is invalid ... field is immutable, the previous bucket-init Job still exists. Delete it and apply again:
kubectl -n claudie delete job make-bucket-job

Bug fixes

  • Fixed InputManifest validation to reject unusable AutoscalerConfig #2220
  • Fixed InputManifest validation for correct handling of externalNetworkName #2221