Upgrading to 0.8.x
This guide explains how to upgrade from 0.7.x to 0.8.x.
Before you begin
Before you begin the upgrade process, ensure that you have a backup of your data.
The upgrade process will not touch the actual backup data, but will change the resource definitions and recreate the Deployments of backups.
Checklist
Follow the steps in this checklist to upgrade to 0.8.x.
Pause backups
Pause all backups to prevent any changes to the backup data by setting the .spec.enabled
field to false
.
#!/usr/bin/shfor backup_name in $(kubectl get backups -n [NAMESPACE] -o custom-columns='NAME:.metadata.name' --no-headers)do kubectl patch --type merge backup -n [NAMESPACE] "$backup_name" -p '{"spec":{"enabled": false}}'done
#!/usr/bin/fishfor backup_name in (kubectl get backups -n [NAMESPACE] -o custom-columns='NAME:.metadata.name' --no-headers) kubectl patch --type merge backup -n [NAMESPACE] $backup_name -p '{"spec":{"enabled": false}}'end
Replace [NAMESPACE]
with the namespace where the backups are located.
Pause existing operator
Pause the existing operator by setting the .spec.replicas
field to 0
.
$ kubectl scale deployment kannika-operator -n kannika-system --replicas=0
This will ensure no changes are made to the existing resources while the upgrade is in progress.
Upgrade CRDs
Install the new Custom Resource Definitions (CRDs) for 0.8.x.:
Using kubectl
$ kubectl apply -f https://docs.kannika.io/refs/0.8.0/crd/kannika-crd-v1alpha.yml
Using Helm
$ helm install kannika-crd oci://quay.io/kannika/charts/kannika-crd \ --version 0.8.0
Install application with updated Helm values
The new version of Kannika Armory adds the following options to the installation process:
- API URL
- API storage
- OIDC authentication
- Event Gateway configuration (see Metrics)
Example Helm chart values that you can add to your values.yaml
file:
api: # Add a persistent volume for the API storage: persistentVolume: enabled: true size: 10Gi storageClass: "default"
# Add OIDC to the API22 collapsed lines
config: security: enabled: true oidc: issuerUri: "https://my-issuer-uri" audience: "my-audience"
console: config: apiUrl: "https://api.kannika.my-domain.com" security: # Log users out after 15 minutes of inactivity userInactivityTimeoutSeconds: 900 # Add OIDC to the console oidc: enabled: true clientId: "my-client-id" audience: "my-audience" scope: "openid profile email" authEndpoint: "https://my-auth-endpoint" tokenEndpoint: "https://my-token-endpoint" logoutEndpoint: "https://my-logout-endpoint"
Install the new version of Kannika Armory using Helm:
$ helm upgrade --install kannika oci://quay.io/kannika/charts/kannika \ --create-namespace \ --namespace kannika-system \ --version 0.8.0 \ --values values.yaml
For more installation options, see Installation.
Enable backups again
Once you have completed the upgrade process,
enable backups again by setting the .spec.enabled
field to true
.
#!/usr/bin/shfor backup_name in $(kubectl get backups -n [NAMESPACE] -o custom-columns='NAME:.metadata.name' --no-headers)do kubectl patch --type merge backup -n [NAMESPACE] "$backup_name" -p '{"spec":{"enabled": true}}'done
#!/usr/bin/fishfor backup_name in (kubectl get backups -n [NAMESPACE] -o custom-columns='NAME:.metadata.name' --no-headers) kubectl patch --type merge backup -n [NAMESPACE] $backup_name -p '{"spec":{"enabled": true}}'end
Replace [NAMESPACE]
with the namespace where the backups are located.
Verify the installation
Verify that the upgrade was successful by checking the logs of the Kannika Armory components:
$ kubectl logs -n kannika-system -l app.kubernetes.io/name=kannika-operator$ kubectl logs -n kannika-system -l app.kubernetes.io/name=kannika-api$ kubectl logs -n kannika-system -l app.kubernetes.io/name=kannika-console
Verify that the backups are running as expected:
$ kubectl get backups -n [NAMESPACE]
If you encounter any issues during the upgrade process, do not hesitate to contact us on Slack.