From bced0ef0792b02455f869159c809758fab09c106 Mon Sep 17 00:00:00 2001 From: Giuseppe Iannelli <94362884+g-iannelli@users.noreply.github.com> Date: Tue, 2 May 2023 17:24:44 +0200 Subject: [PATCH 01/25] docs: update terraform required version --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 38b2edc..f560f1a 100644 --- a/README.md +++ b/README.md @@ -91,10 +91,10 @@ Check the [compatibility matrix][compatibility-matrix] for additional informatio ### Prerequisites | Tool | Version | Description | -| --------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| --------------------------- |-----------| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [furyctl][furyctl-repo] | `>=0.6.0` | The recommended tool to download and manage KFD modules and their packages. To learn more about `furyctl` read the [official documentation][furyctl-repo]. | | [kustomize][kustomize-repo] | `>=3.5.0` | Packages are customized using `kustomize`. To learn how to create your customization layer with `kustomize`, please refer to the [repository][kustomize-repo]. | -| [terraform][terraform-page] | `=0.15.4` | Additional infrastructure is deployed using `terraform`. | +| [terraform][terraform-page] | `>=1.3.0` | Additional infrastructure is deployed using `terraform`. | ### Velero on AWS From 31ff5b406b21d834565213a465a48f5192c628f0 Mon Sep 17 00:00:00 2001 From: Giuseppe Iannelli <94362884+g-iannelli@users.noreply.github.com> Date: Tue, 2 May 2023 17:25:15 +0200 Subject: [PATCH 02/25] chore(module,aws-velero): change required terraform version to >=1.3.0 --- modules/aws-velero/versions.tf | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/aws-velero/versions.tf b/modules/aws-velero/versions.tf index 30dd293..2bf4b88 100644 --- a/modules/aws-velero/versions.tf +++ b/modules/aws-velero/versions.tf @@ -5,8 +5,11 @@ */ terraform { - required_version = ">= 0.15.4" + required_version = ">= 1.3.0" required_providers { - aws = ">= 3.37.0" + aws = { + version = "~> 3.37.0" + source = "hashicorp/aws" + } } } From 95cae93a927253390d3d4c150d8f56e819abb307 Mon Sep 17 00:00:00 2001 From: Giuseppe Iannelli <94362884+g-iannelli@users.noreply.github.com> Date: Tue, 2 May 2023 17:25:22 +0200 Subject: [PATCH 03/25] chore(module,azure-velero): change required terraform version to >=1.3.0 --- modules/azure-velero/versions.tf | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/modules/azure-velero/versions.tf b/modules/azure-velero/versions.tf index e65d660..59a4259 100644 --- a/modules/azure-velero/versions.tf +++ b/modules/azure-velero/versions.tf @@ -5,9 +5,15 @@ */ terraform { - required_version = ">= 0.15.4" + required_version = ">= 1.3.0" required_providers { - azurerm = ">= 2.60.0" - azuread = ">= 1.5.0" + azurerm = { + version = ">= 2.60.0" + source = "hashicorp/random" + } + azuread = { + version = ">= 1.5.0" + source = "hashicorp/azuread" + } } } From def1d0556eddeba88e42d11e09ff70608bb9ba5d Mon Sep 17 00:00:00 2001 From: Giuseppe Iannelli <94362884+g-iannelli@users.noreply.github.com> Date: Tue, 2 May 2023 17:25:30 +0200 Subject: [PATCH 04/25] chore(module,gcp-velero): change required terraform version to >=1.3.0 --- modules/gcp-velero/versions.tf | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/gcp-velero/versions.tf b/modules/gcp-velero/versions.tf index 467fa80..141a3e6 100644 --- a/modules/gcp-velero/versions.tf +++ b/modules/gcp-velero/versions.tf @@ -5,8 +5,11 @@ */ terraform { - required_version = ">= 0.15.4" + required_version = ">= 1.3.0" required_providers { - google = ">= 3.55.0" + google = { + version = "~> 3.63.0" + source = "hashicorp/google" + } } } From ff5b21ca02d5a5148c50ba6142c40317e4cae99b Mon Sep 17 00:00:00 2001 From: Giuseppe Iannelli <94362884+g-iannelli@users.noreply.github.com> Date: Tue, 2 May 2023 17:26:05 +0200 Subject: [PATCH 05/25] chore(example,aws-velero): change required terraform version to >=1.3.0 --- example/aws-example/main.tf | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/example/aws-example/main.tf b/example/aws-example/main.tf index 956df6f..5741a22 100644 --- a/example/aws-example/main.tf +++ b/example/aws-example/main.tf @@ -6,9 +6,12 @@ terraform { backend "s3" {} - required_version = ">= 0.15.4" + required_version = ">= 1.3.0" required_providers { - aws = ">= 3.37.0" + aws = { + version = "~> 3.37.0" + source = "hashicorp/aws" + } } } From b27a2117fe2a9fa2679e09b1e46fa0758b78d9b4 Mon Sep 17 00:00:00 2001 From: Giuseppe Iannelli <94362884+g-iannelli@users.noreply.github.com> Date: Tue, 2 May 2023 17:25:58 +0200 Subject: [PATCH 06/25] chore(example,azure-velero): change required terraform version to >=1.3.0 --- example/azure-example/main.tf | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/example/azure-example/main.tf b/example/azure-example/main.tf index c1685e6..47f0b71 100644 --- a/example/azure-example/main.tf +++ b/example/azure-example/main.tf @@ -6,10 +6,16 @@ terraform { backend "azurerm" {} - required_version = ">= 0.15.4" + required_version = ">= 1.3.0" required_providers { - azurerm = ">= 2.60.0" - azuread = ">= 1.5.0" + azurerm = { + version = ">= 2.60.0" + source = "hashicorp/random" + } + azuread = { + version = ">= 1.5.0" + source = "hashicorp/azuread" + } } } From 18f8d7f7b222e844a030493e949fef3901a76289 Mon Sep 17 00:00:00 2001 From: Giuseppe Iannelli <94362884+g-iannelli@users.noreply.github.com> Date: Tue, 2 May 2023 17:25:46 +0200 Subject: [PATCH 07/25] chore(example,gcp-velero): change required terraform version to >=1.3.0 --- example/gcp-example/main.tf | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/example/gcp-example/main.tf b/example/gcp-example/main.tf index f38efec..a66b98f 100644 --- a/example/gcp-example/main.tf +++ b/example/gcp-example/main.tf @@ -6,9 +6,16 @@ terraform { backend "gcs" {} - required_version = ">= 0.15.4" + required_version = ">= 1.3.0" required_providers { - google = ">= 3.55.0" + google = { + version = "~> 3.63.0" + source = "hashicorp/google" + } + random = { + version = "~> 3.5.1" + source = "hashicorp/random" + } } } From 8509a97c5d4930f5d5f4ad39e82aab686fa336f4 Mon Sep 17 00:00:00 2001 From: omissis Date: Fri, 12 May 2023 16:44:20 +0200 Subject: [PATCH 08/25] chore: rename examples dir, update deps to match the new tf pinning guideliens. --- .drone.yml | 48 +++++++++---------- README.md | 6 +-- {example => examples}/aws-example/main.tf | 7 +-- {example => examples}/azure-example/main.tf | 12 ++--- {example => examples}/gcp-example/main.tf | 12 ++--- .../registry-override/README.md | 0 .../velero-aws/kustomization.yaml | 0 .../velero-azure/kustomization.yaml | 0 .../velero-base/kustomization.yaml | 0 .../velero-gcp/kustomization.yaml | 0 .../velero-on-prem/kustomization.yaml | 0 .../velero-restic/kustomization.yaml | 0 katalog/velero/README.md | 4 +- modules/aws-velero/versions.tf | 7 +-- modules/azure-velero/versions.tf | 12 ++--- modules/gcp-velero/versions.tf | 7 +-- 16 files changed, 44 insertions(+), 71 deletions(-) rename {example => examples}/aws-example/main.tf (88%) rename {example => examples}/azure-example/main.tf (82%) rename {example => examples}/gcp-example/main.tf (85%) rename {example => examples}/registry-override/README.md (100%) rename {example => examples}/registry-override/velero-aws/kustomization.yaml (100%) rename {example => examples}/registry-override/velero-azure/kustomization.yaml (100%) rename {example => examples}/registry-override/velero-base/kustomization.yaml (100%) rename {example => examples}/registry-override/velero-gcp/kustomization.yaml (100%) rename {example => examples}/registry-override/velero-on-prem/kustomization.yaml (100%) rename {example => examples}/registry-override/velero-restic/kustomization.yaml (100%) diff --git a/.drone.yml b/.drone.yml index 3756cb9..521a7fa 100644 --- a/.drone.yml +++ b/.drone.yml @@ -157,7 +157,7 @@ steps: TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: - - cd example/aws-example + - cd examples/aws-example - terraform init --backend=true --backend-config="bucket=$${TERRAFORM_TF_STATES_BUCKET_NAME}" @@ -217,7 +217,7 @@ steps: TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: - - cd example/aws-example + - cd examples/aws-example - terraform init --backend=true --backend-config="bucket=$${TERRAFORM_TF_STATES_BUCKET_NAME}" @@ -250,7 +250,7 @@ steps: commands: - echo $${GCP_CREDENTIALS} > $${GCP_CREDENTIALS_PATH} - export GOOGLE_APPLICATION_CREDENTIALS=$${GCP_CREDENTIALS_PATH} - - cd example/gcp-example + - cd examples/gcp-example - terraform init --backend=true --backend-config="bucket=$${TERRAFORM_TF_STATES_BUCKET_NAME}" @@ -310,7 +310,7 @@ steps: TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: - - cd example/gcp-example + - cd examples/gcp-example - echo $${GCP_CREDENTIALS} > $${GCP_CREDENTIALS_PATH} - export GOOGLE_APPLICATION_CREDENTIALS=$${GCP_CREDENTIALS_PATH} - terraform init @@ -350,7 +350,7 @@ steps: ARM_TENANT_ID: from_secret: arm_tenant_id commands: - - cd example/azure-example + - cd examples/azure-example - terraform init --backend=true --backend-config="storage_account_name=$${STORAGE_ACCOUNT_NAME}" @@ -418,7 +418,7 @@ steps: ARM_TENANT_ID: from_secret: arm_tenant_id commands: - - cd example/azure-example + - cd examples/azure-example - terraform init --backend=true --backend-config="storage_account_name=$${STORAGE_ACCOUNT_NAME}" @@ -565,7 +565,7 @@ steps: TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: - - cd example/aws-example + - cd examples/aws-example - terraform init --backend=true --backend-config="bucket=$${TERRAFORM_TF_STATES_BUCKET_NAME}" @@ -625,7 +625,7 @@ steps: TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: - - cd example/aws-example + - cd examples/aws-example - terraform init --backend=true --backend-config="bucket=$${TERRAFORM_TF_STATES_BUCKET_NAME}" @@ -658,7 +658,7 @@ steps: commands: - echo $${GCP_CREDENTIALS} > $${GCP_CREDENTIALS_PATH} - export GOOGLE_APPLICATION_CREDENTIALS=$${GCP_CREDENTIALS_PATH} - - cd example/gcp-example + - cd examples/gcp-example - terraform init --backend=true --backend-config="bucket=$${TERRAFORM_TF_STATES_BUCKET_NAME}" @@ -718,7 +718,7 @@ steps: TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: - - cd example/gcp-example + - cd examples/gcp-example - echo $${GCP_CREDENTIALS} > $${GCP_CREDENTIALS_PATH} - export GOOGLE_APPLICATION_CREDENTIALS=$${GCP_CREDENTIALS_PATH} - terraform init @@ -758,7 +758,7 @@ steps: ARM_TENANT_ID: from_secret: arm_tenant_id commands: - - cd example/azure-example + - cd examples/azure-example - terraform init --backend=true --backend-config="storage_account_name=$${STORAGE_ACCOUNT_NAME}" @@ -826,7 +826,7 @@ steps: ARM_TENANT_ID: from_secret: arm_tenant_id commands: - - cd example/azure-example + - cd examples/azure-example - terraform init --backend=true --backend-config="storage_account_name=$${STORAGE_ACCOUNT_NAME}" @@ -973,7 +973,7 @@ steps: TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: - - cd example/aws-example + - cd examples/aws-example - terraform init --backend=true --backend-config="bucket=$${TERRAFORM_TF_STATES_BUCKET_NAME}" @@ -1033,7 +1033,7 @@ steps: TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: - - cd example/aws-example + - cd examples/aws-example - terraform init --backend=true --backend-config="bucket=$${TERRAFORM_TF_STATES_BUCKET_NAME}" @@ -1066,7 +1066,7 @@ steps: commands: - echo $${GCP_CREDENTIALS} > $${GCP_CREDENTIALS_PATH} - export GOOGLE_APPLICATION_CREDENTIALS=$${GCP_CREDENTIALS_PATH} - - cd example/gcp-example + - cd examples/gcp-example - terraform init --backend=true --backend-config="bucket=$${TERRAFORM_TF_STATES_BUCKET_NAME}" @@ -1126,7 +1126,7 @@ steps: TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: - - cd example/gcp-example + - cd examples/gcp-example - echo $${GCP_CREDENTIALS} > $${GCP_CREDENTIALS_PATH} - export GOOGLE_APPLICATION_CREDENTIALS=$${GCP_CREDENTIALS_PATH} - terraform init @@ -1166,7 +1166,7 @@ steps: ARM_TENANT_ID: from_secret: arm_tenant_id commands: - - cd example/azure-example + - cd examples/azure-example - terraform init --backend=true --backend-config="storage_account_name=$${STORAGE_ACCOUNT_NAME}" @@ -1234,7 +1234,7 @@ steps: ARM_TENANT_ID: from_secret: arm_tenant_id commands: - - cd example/azure-example + - cd examples/azure-example - terraform init --backend=true --backend-config="storage_account_name=$${STORAGE_ACCOUNT_NAME}" @@ -1382,7 +1382,7 @@ steps: TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: - - cd example/aws-example + - cd examples/aws-example - terraform init --backend=true --backend-config="bucket=$${TERRAFORM_TF_STATES_BUCKET_NAME}" @@ -1442,7 +1442,7 @@ steps: TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: - - cd example/aws-example + - cd examples/aws-example - terraform init --backend=true --backend-config="bucket=$${TERRAFORM_TF_STATES_BUCKET_NAME}" @@ -1475,7 +1475,7 @@ steps: commands: - echo $${GCP_CREDENTIALS} > $${GCP_CREDENTIALS_PATH} - export GOOGLE_APPLICATION_CREDENTIALS=$${GCP_CREDENTIALS_PATH} - - cd example/gcp-example + - cd examples/gcp-example - terraform init --backend=true --backend-config="bucket=$${TERRAFORM_TF_STATES_BUCKET_NAME}" @@ -1535,7 +1535,7 @@ steps: TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: - - cd example/gcp-example + - cd examples/gcp-example - echo $${GCP_CREDENTIALS} > $${GCP_CREDENTIALS_PATH} - export GOOGLE_APPLICATION_CREDENTIALS=$${GCP_CREDENTIALS_PATH} - terraform init @@ -1575,7 +1575,7 @@ steps: ARM_TENANT_ID: from_secret: arm_tenant_id commands: - - cd example/azure-example + - cd examples/azure-example - terraform init --backend=true --backend-config="storage_account_name=$${STORAGE_ACCOUNT_NAME}" @@ -1643,7 +1643,7 @@ steps: ARM_TENANT_ID: from_secret: arm_tenant_id commands: - - cd example/azure-example + - cd examples/azure-example - terraform init --backend=true --backend-config="storage_account_name=$${STORAGE_ACCOUNT_NAME}" diff --git a/README.md b/README.md index f560f1a..345c554 100644 --- a/README.md +++ b/README.md @@ -332,9 +332,9 @@ kustomize build . | kubectl apply -f - [velero-aws-plugin-repo]: https://github.com/vmware-tanzu/velero-plugin-for-aws [velero-azure-plugin-repo]: https://github.com/vmware-tanzu/velero-plugin-for-microsoft-azure [velero-gcp-plugin-repo-permissions]: https://github.com/vmware-tanzu/velero-plugin-for-gcp#set-permissions-for-velero -[kfd-velero-gcp-example]: https://github.com/sighupio/fury-kubernetes-dr/tree/master/example/gcp-example/main.tf -[kfd-velero-aws-example]: https://github.com/sighupio/fury-kubernetes-dr/tree/master/example/aws-example/main.tf -[kfd-velero-azure-example]: https://github.com/sighupio/fury-kubernetes-dr/tree/master/example/azure-example/main.tf +[kfd-velero-gcp-example]: https://github.com/sighupio/fury-kubernetes-dr/tree/master/examples/gcp-examples/main.tf +[kfd-velero-aws-example]: https://github.com/sighupio/fury-kubernetes-dr/tree/master/examples/aws-examples/main.tf +[kfd-velero-azure-example]: https://github.com/sighupio/fury-kubernetes-dr/tree/master/examples/azure-examples/main.tf [kfd-velero-on-prem]: https://github.com/sighupio/fury-kubernetes-dr/tree/master/katalog/velero/velero-on-prem [aws-docs-iam-roles]: https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html [kfd-docs]: https://docs.kubernetesfury.com/docs/distribution/ diff --git a/example/aws-example/main.tf b/examples/aws-example/main.tf similarity index 88% rename from example/aws-example/main.tf rename to examples/aws-example/main.tf index 5741a22..3ce2525 100644 --- a/example/aws-example/main.tf +++ b/examples/aws-example/main.tf @@ -6,12 +6,9 @@ terraform { backend "s3" {} - required_version = ">= 1.3.0" + required_version = "~> 1.4" required_providers { - aws = { - version = "~> 3.37.0" - source = "hashicorp/aws" - } + aws = "~> 3.76.1" } } diff --git a/example/azure-example/main.tf b/examples/azure-example/main.tf similarity index 82% rename from example/azure-example/main.tf rename to examples/azure-example/main.tf index 47f0b71..cb4f305 100644 --- a/example/azure-example/main.tf +++ b/examples/azure-example/main.tf @@ -6,16 +6,10 @@ terraform { backend "azurerm" {} - required_version = ">= 1.3.0" + required_version = "~> 1.4" required_providers { - azurerm = { - version = ">= 2.60.0" - source = "hashicorp/random" - } - azuread = { - version = ">= 1.5.0" - source = "hashicorp/azuread" - } + azuread = "~> 1.6.0" + azurerm = "~> 2.99.0" } } diff --git a/example/gcp-example/main.tf b/examples/gcp-example/main.tf similarity index 85% rename from example/gcp-example/main.tf rename to examples/gcp-example/main.tf index a66b98f..0e3ef3a 100644 --- a/example/gcp-example/main.tf +++ b/examples/gcp-example/main.tf @@ -6,16 +6,10 @@ terraform { backend "gcs" {} - required_version = ">= 1.3.0" + required_version = "~> 1.4" required_providers { - google = { - version = "~> 3.63.0" - source = "hashicorp/google" - } - random = { - version = "~> 3.5.1" - source = "hashicorp/random" - } + google = "~> 3.90.1" + random = "~> 3.5.1" } } diff --git a/example/registry-override/README.md b/examples/registry-override/README.md similarity index 100% rename from example/registry-override/README.md rename to examples/registry-override/README.md diff --git a/example/registry-override/velero-aws/kustomization.yaml b/examples/registry-override/velero-aws/kustomization.yaml similarity index 100% rename from example/registry-override/velero-aws/kustomization.yaml rename to examples/registry-override/velero-aws/kustomization.yaml diff --git a/example/registry-override/velero-azure/kustomization.yaml b/examples/registry-override/velero-azure/kustomization.yaml similarity index 100% rename from example/registry-override/velero-azure/kustomization.yaml rename to examples/registry-override/velero-azure/kustomization.yaml diff --git a/example/registry-override/velero-base/kustomization.yaml b/examples/registry-override/velero-base/kustomization.yaml similarity index 100% rename from example/registry-override/velero-base/kustomization.yaml rename to examples/registry-override/velero-base/kustomization.yaml diff --git a/example/registry-override/velero-gcp/kustomization.yaml b/examples/registry-override/velero-gcp/kustomization.yaml similarity index 100% rename from example/registry-override/velero-gcp/kustomization.yaml rename to examples/registry-override/velero-gcp/kustomization.yaml diff --git a/example/registry-override/velero-on-prem/kustomization.yaml b/examples/registry-override/velero-on-prem/kustomization.yaml similarity index 100% rename from example/registry-override/velero-on-prem/kustomization.yaml rename to examples/registry-override/velero-on-prem/kustomization.yaml diff --git a/example/registry-override/velero-restic/kustomization.yaml b/examples/registry-override/velero-restic/kustomization.yaml similarity index 100% rename from example/registry-override/velero-restic/kustomization.yaml rename to examples/registry-override/velero-restic/kustomization.yaml diff --git a/katalog/velero/README.md b/katalog/velero/README.md index b8f6953..b24bffe 100644 --- a/katalog/velero/README.md +++ b/katalog/velero/README.md @@ -59,10 +59,10 @@ You can find a [terraform module](../../modules/aws-velero) designed to create a to make velero works in AWS. You can find and example terraform project using the [aws-velero](../../modules/aws-velero) terraform module -[here](../../example/aws-example/main.tf) +[here](../../examples/aws-examples/main.tf) ```bash -$ cd example/aws-example +$ cd examples/aws-example $ terraform init # omitted output $ terraform apply --var="my_cluster_name=kubernetes-cluster-and-velero" diff --git a/modules/aws-velero/versions.tf b/modules/aws-velero/versions.tf index 2bf4b88..b1f89d6 100644 --- a/modules/aws-velero/versions.tf +++ b/modules/aws-velero/versions.tf @@ -5,11 +5,8 @@ */ terraform { - required_version = ">= 1.3.0" + required_version = ">= 1.3" required_providers { - aws = { - version = "~> 3.37.0" - source = "hashicorp/aws" - } + aws = "~> 3.76" } } diff --git a/modules/azure-velero/versions.tf b/modules/azure-velero/versions.tf index 59a4259..8d76ecc 100644 --- a/modules/azure-velero/versions.tf +++ b/modules/azure-velero/versions.tf @@ -5,15 +5,9 @@ */ terraform { - required_version = ">= 1.3.0" + required_version = ">= 1.3" required_providers { - azurerm = { - version = ">= 2.60.0" - source = "hashicorp/random" - } - azuread = { - version = ">= 1.5.0" - source = "hashicorp/azuread" - } + azuread = "~> 1.6" + azurerm = "~> 2.99" } } diff --git a/modules/gcp-velero/versions.tf b/modules/gcp-velero/versions.tf index 141a3e6..5b31906 100644 --- a/modules/gcp-velero/versions.tf +++ b/modules/gcp-velero/versions.tf @@ -5,11 +5,8 @@ */ terraform { - required_version = ">= 1.3.0" + required_version = ">= 1.3" required_providers { - google = { - version = "~> 3.63.0" - source = "hashicorp/google" - } + google = "~> 3.90" } } From e9f34939c161e2efc68f0e18f3d1404e91baf47c Mon Sep 17 00:00:00 2001 From: Simone Bruzzese Date: Thu, 1 Jun 2023 10:16:35 +0200 Subject: [PATCH 09/25] chore: update velero to 1.11.0 / plugins to 1.7.0 --- README.md | 4 +- docs/COMPATIBILITY_MATRIX.md | 5 +- docs/releases/v1.12.0.md | 44 + katalog/velero/velero-aws/README.md | 4 +- katalog/velero/velero-aws/kustomization.yaml | 2 +- katalog/velero/velero-azure/README.md | 4 +- .../velero/velero-azure/kustomization.yaml | 2 +- katalog/velero/velero-base/crds.yaml | 4399 +++++++++-------- katalog/velero/velero-gcp/README.md | 4 +- katalog/velero/velero-gcp/kustomization.yaml | 4 +- katalog/velero/velero-on-prem/README.md | 8 +- .../velero/velero-on-prem/kustomization.yaml | 4 +- .../velero-on-prem/minio/kustomization.yaml | 6 +- .../velero/velero-restic/kustomization.yaml | 2 +- 14 files changed, 2350 insertions(+), 2142 deletions(-) create mode 100644 docs/releases/v1.12.0.md diff --git a/README.md b/README.md index 345c554..04cd8a7 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Kubernetes Fury DR provides the following packages: | Package | Version | Description | | ------------------------ | -------- | --------------------------------------------------------------------------------------------------------------- | -| [velero](katalog/velero) | `1.10.1` | Backup and restore, perform disaster recovery, and migrate Kubernetes cluster resources and persistent volumes. | +| [velero](katalog/velero) | `1.11.0` | Backup and restore, perform disaster recovery, and migrate Kubernetes cluster resources and persistent volumes. | The velero package contains the following additional components: @@ -70,10 +70,10 @@ Deploy the necessary infrastructure to persist the backups natively in cloud pro | Kubernetes Version | Compatibility | Notes | | ------------------ | :----------------: | --------------- | -| `1.22.x` | :white_check_mark: | No known issues | | `1.23.x` | :white_check_mark: | No known issues | | `1.24.x` | :white_check_mark: | No known issues | | `1.25.x` | :white_check_mark: | No known issues | +| `1.26.x` | :white_check_mark: | No known issues | Check the [compatibility matrix][compatibility-matrix] for additional information about previous releases of the modules. diff --git a/docs/COMPATIBILITY_MATRIX.md b/docs/COMPATIBILITY_MATRIX.md index 312dbd9..7536da6 100644 --- a/docs/COMPATIBILITY_MATRIX.md +++ b/docs/COMPATIBILITY_MATRIX.md @@ -1,7 +1,7 @@ # Compatibility Matrix -| Module Version / Kubernetes Version | 1.14.X | 1.15.X | 1.16.X | 1.17.X | 1.18.X | 1.19.X | 1.20.X | 1.21.X | 1.22.X | 1.23.X | 1.24.X | 1.25.X | -|-------------------------------------|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:| +| Module Version / Kubernetes Version | 1.14.X | 1.15.X | 1.16.X | 1.17.X | 1.18.X | 1.19.X | 1.20.X | 1.21.X | 1.22.X | 1.23.X | 1.24.X | 1.25.X | 1.26.X | +|-------------------------------------|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:| | v1.3.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | | | | | | | v1.3.1 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | | | | | | | v1.4.0 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | | | | @@ -18,6 +18,7 @@ | v1.10.0 | | | | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | v1.10.1 | | | | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | v1.11.0 | | | | | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| v1.12.0 | | | | | | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: Compatible diff --git a/docs/releases/v1.12.0.md b/docs/releases/v1.12.0.md new file mode 100644 index 0000000..641d10e --- /dev/null +++ b/docs/releases/v1.12.0.md @@ -0,0 +1,44 @@ +# Disaster recovery Core Module Release 1.12.0 + +Welcome to the latest release of the `DR` module of [`Kubernetes Fury Distribution`](https://github.com/sighupio/fury-distribution) maintained by team SIGHUP. + +This latest release upgrades the components in the module to its latest stable release along with adding support for Kubernetes release `v1.26`. + +## Component Images 🚢 + +| Component | Supported Version | Previous Version | +|-------------------------------------|---------------------------------------------------------------------------------------------------|------------------| +| `velero` | [`v1.11.0`](https://github.com/vmware-tanzu/velero/releases/tag/v1.11.0) | `1.10.1` | +| `velero-plugin-for-aws` | [`v1.7.0`](https://github.com/vmware-tanzu/velero-plugin-for-aws/releases/tag/v1.7.0) | `1.6.1` | +| `velero-plugin-for-microsoft-azure` | [`v1.7.0`](https://github.com/vmware-tanzu/velero-plugin-for-microsoft-azure/releases/tag/v1.7.0) | `1.6.1` | +| `velero-plugin-for-gcp` | [`v1.7.0`](https://github.com/vmware-tanzu/velero-plugin-for-gcp/releases/tag/v1.7.0) | `1.6.1` | +| `velero-plugin-for-csi` | [`v0.5.0`](https://github.com/vmware-tanzu/velero-plugin-for-csi/releases/tag/v0.5.0) | `0.4.1` | + +> Please refer to the individual release notes to get a detailed information on each release. + +## Features 💥 + +- Updated Velero to v1.11.0 +- Updated plugins +- Added support for Kubernetes v1.26.x + +## Update Guide 🦮 + +### Process + +To upgrade this core module from `v1.11.x` to `v1.12.0`, you need to download this new version, then apply the `kustomize` project. + +```bash +kubectl apply -f katalog/velero-base/crds.yaml +kustomize build katalog/velero-on-prem | kubectl apply -f - +# or +kustomize build katalog/velero-aws | kubectl apply -f - +# or +kustomize build katalog/velero-gcp | kubectl apply -f - +# or +kustomize build katalog/velero-azure | kubectl apply -f - +# and/or +kustomize build katalog/velero-restic | kubectl apply -f - +``` + +For additional info you can have a look [here](https://velero.io/docs/v1.11/upgrade-to-1.11/) \ No newline at end of file diff --git a/katalog/velero/velero-aws/README.md b/katalog/velero/velero-aws/README.md index 45b3878..9b8359b 100644 --- a/katalog/velero/velero-aws/README.md +++ b/katalog/velero/velero-aws/README.md @@ -1,11 +1,11 @@ # Velero AWS This Velero deployment is ready to be deployed in any AWS cluster as it includes the -[AWS Velero plugin](https://github.com/vmware-tanzu/velero-plugin-for-aws/tree/v1.6.1). +[AWS Velero plugin](https://github.com/vmware-tanzu/velero-plugin-for-aws/tree/v1.7.0). ## Image repository and tag -- Velero AWS Plugin image: `velero/velero-plugin-for-aws:v1.6.1` +- Velero AWS Plugin image: `velero/velero-plugin-for-aws:v1.7.0` - Velero AWS Plugin repository: [https://github.com/vmware-tanzu/velero-plugin-for-aws](https://github.com/vmware-tanzu/velero-plugin-for-aws). diff --git a/katalog/velero/velero-aws/kustomization.yaml b/katalog/velero/velero-aws/kustomization.yaml index 72ff8d6..89caeae 100644 --- a/katalog/velero/velero-aws/kustomization.yaml +++ b/katalog/velero/velero-aws/kustomization.yaml @@ -14,7 +14,7 @@ resources: images: - name: velero/velero-plugin-for-aws newName: registry.sighup.io/fury/velero/velero-plugin-for-aws - newTag: v1.6.1 + newTag: v1.7.0 patchesStrategicMerge: - plugin-patch.yaml diff --git a/katalog/velero/velero-azure/README.md b/katalog/velero/velero-azure/README.md index 1749584..b63e35f 100644 --- a/katalog/velero/velero-azure/README.md +++ b/katalog/velero/velero-azure/README.md @@ -1,11 +1,11 @@ # Velero Azure This Velero deployment is ready to be deployed in any Azure cluster as it includes the -[Azure Velero plugin](https://github.com/vmware-tanzu/velero-plugin-for-microsoft-azure/tree/v1.6.1). +[Azure Velero plugin](https://github.com/vmware-tanzu/velero-plugin-for-microsoft-azure/tree/v1.7.0). ## Image repository and tag -- Velero Azure Plugin image: `velero/velero-plugin-for-microsoft-azure:v1.6.1` +- Velero Azure Plugin image: `velero/velero-plugin-for-microsoft-azure:v1.7.0` - Velero Azure Plugin repository: [https://github.com/vmware-tanzu/velero-plugin-for-microsoft-azure](https://github.com/vmware-tanzu/velero-plugin-for-microsoft-azure). diff --git a/katalog/velero/velero-azure/kustomization.yaml b/katalog/velero/velero-azure/kustomization.yaml index 2e26aa4..7637233 100644 --- a/katalog/velero/velero-azure/kustomization.yaml +++ b/katalog/velero/velero-azure/kustomization.yaml @@ -14,7 +14,7 @@ resources: images: - name: velero/velero-plugin-for-microsoft-azure newName: registry.sighup.io/fury/velero/velero-plugin-for-microsoft-azure - newTag: v1.6.1 + newTag: v1.7.0 patchesStrategicMerge: - plugin-patch.yaml diff --git a/katalog/velero/velero-base/crds.yaml b/katalog/velero/velero-base/crds.yaml index 04867d3..ec71787 100644 --- a/katalog/velero/velero-base/crds.yaml +++ b/katalog/velero/velero-base/crds.yaml @@ -5,1062 +5,1144 @@ --- apiVersion: v1 items: - - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - labels: - component: velero - name: backuprepositories.velero.io - spec: - group: velero.io - names: - kind: BackupRepository - listKind: BackupRepositoryList - plural: backuprepositories - singular: backuprepository - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - jsonPath: .spec.repositoryType - name: Repository Type - type: string - name: v1 - schema: - openAPIV3Schema: - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation +- apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.7.0 + creationTimestamp: null + labels: + component: velero + name: backuprepositories.velero.io + spec: + group: velero.io + names: + kind: BackupRepository + listKind: BackupRepositoryList + plural: backuprepositories + singular: backuprepository + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + - jsonPath: .spec.repositoryType + name: Repository Type + type: string + name: v1 + schema: + openAPIV3Schema: + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: BackupRepositorySpec is the specification for a BackupRepository. + properties: + backupStorageLocation: + description: BackupStorageLocation is the name of the BackupStorageLocation + that should contain this repository. type: string - metadata: - type: object - spec: - description: BackupRepositorySpec is the specification for a BackupRepository. - properties: - backupStorageLocation: - description: BackupStorageLocation is the name of the BackupStorageLocation - that should contain this repository. - type: string - maintenanceFrequency: - description: MaintenanceFrequency is how often maintenance should - be run. - type: string - repositoryType: - description: RepositoryType indicates the type of the backend repository - enum: - - kopia - - restic - - "" - type: string - resticIdentifier: - description: ResticIdentifier is the full restic-compatible string - for identifying this repository. - type: string - volumeNamespace: - description: VolumeNamespace is the namespace this backup repository - contains pod volume backups for. - type: string - required: - - backupStorageLocation - - maintenanceFrequency - - resticIdentifier - - volumeNamespace - type: object - status: - description: BackupRepositoryStatus is the current status of a BackupRepository. - properties: - lastMaintenanceTime: - description: LastMaintenanceTime is the last time maintenance was - run. - format: date-time - nullable: true - type: string - message: - description: Message is a message about the current status of the - BackupRepository. - type: string - phase: - description: Phase is the current state of the BackupRepository. - enum: - - New - - Ready - - NotReady - type: string - type: object + maintenanceFrequency: + description: MaintenanceFrequency is how often maintenance should + be run. + type: string + repositoryType: + description: RepositoryType indicates the type of the backend repository + enum: + - kopia + - restic + - "" + type: string + resticIdentifier: + description: ResticIdentifier is the full restic-compatible string + for identifying this repository. + type: string + volumeNamespace: + description: VolumeNamespace is the namespace this backup repository + contains pod volume backups for. + type: string + required: + - backupStorageLocation + - maintenanceFrequency + - resticIdentifier + - volumeNamespace type: object - served: true - storage: true - subresources: {} - - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - labels: - component: velero - name: backups.velero.io - spec: - group: velero.io - names: - kind: Backup - listKind: BackupList - plural: backups - singular: backup - scope: Namespaced - versions: - - name: v1 - schema: - openAPIV3Schema: - description: Backup is a Velero resource that represents the capture of - Kubernetes cluster state at a point in time (API objects and associated - volume state). + status: + description: BackupRepositoryStatus is the current status of a BackupRepository. properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation + lastMaintenanceTime: + description: LastMaintenanceTime is the last time maintenance was + run. + format: date-time + nullable: true + type: string + message: + description: Message is a message about the current status of the + BackupRepository. + type: string + phase: + description: Phase is the current state of the BackupRepository. + enum: + - New + - Ready + - NotReady + type: string + type: object + type: object + served: true + storage: true + subresources: {} +- apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.7.0 + creationTimestamp: null + labels: + component: velero + name: backups.velero.io + spec: + group: velero.io + names: + kind: Backup + listKind: BackupList + plural: backups + singular: backup + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: Backup is a Velero resource that represents the capture of + Kubernetes cluster state at a point in time (API objects and associated + volume state). + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: BackupSpec defines the specification for a Velero backup. + properties: + csiSnapshotTimeout: + description: CSISnapshotTimeout specifies the time used to wait + for CSI VolumeSnapshot status turns to ReadyToUse during creation, + before returning error as timeout. The default value is 10 minute. type: string - metadata: - type: object - spec: - description: BackupSpec defines the specification for a Velero backup. - properties: - csiSnapshotTimeout: - description: CSISnapshotTimeout specifies the time used to wait - for CSI VolumeSnapshot status turns to ReadyToUse during creation, - before returning error as timeout. The default value is 10 minute. - type: string - defaultVolumesToFsBackup: - description: DefaultVolumesToFsBackup specifies whether pod volume - file system backup should be used for all volumes by default. - nullable: true - type: boolean - defaultVolumesToRestic: - description: "DefaultVolumesToRestic specifies whether restic should + defaultVolumesToFsBackup: + description: DefaultVolumesToFsBackup specifies whether pod volume + file system backup should be used for all volumes by default. + nullable: true + type: boolean + defaultVolumesToRestic: + description: "DefaultVolumesToRestic specifies whether restic should be used to take a backup of all pod volumes by default. \n Deprecated: this field is no longer used and will be removed entirely in future. Use DefaultVolumesToFsBackup instead." - nullable: true - type: boolean - excludedNamespaces: - description: ExcludedNamespaces contains a list of namespaces that - are not included in the backup. - items: - type: string - nullable: true - type: array - excludedResources: - description: ExcludedResources is a slice of resource names that - are not included in the backup. + nullable: true + type: boolean + excludedClusterScopedResources: + description: ExcludedClusterScopedResources is a slice of cluster-scoped + resource type names to exclude from the backup. If set to "*", + all cluster-scoped resource types are excluded. The default value + is empty. + items: + type: string + nullable: true + type: array + excludedNamespaceScopedResources: + description: ExcludedNamespaceScopedResources is a slice of namespace-scoped + resource type names to exclude from the backup. If set to "*", + all namespace-scoped resource types are excluded. The default + value is empty. + items: + type: string + nullable: true + type: array + excludedNamespaces: + description: ExcludedNamespaces contains a list of namespaces that + are not included in the backup. + items: + type: string + nullable: true + type: array + excludedResources: + description: ExcludedResources is a slice of resource names that + are not included in the backup. + items: + type: string + nullable: true + type: array + hooks: + description: Hooks represent custom behaviors that should be executed + at different phases of the backup. + properties: + resources: + description: Resources are hooks that should be executed when + backing up individual instances of a resource. items: - type: string - nullable: true - type: array - hooks: - description: Hooks represent custom behaviors that should be executed - at different phases of the backup. - properties: - resources: - description: Resources are hooks that should be executed when - backing up individual instances of a resource. - items: - description: BackupResourceHookSpec defines one or more BackupResourceHooks - that should be executed based on the rules defined for namespaces, - resources, and label selector. + description: BackupResourceHookSpec defines one or more BackupResourceHooks + that should be executed based on the rules defined for namespaces, + resources, and label selector. + properties: + excludedNamespaces: + description: ExcludedNamespaces specifies the namespaces + to which this hook spec does not apply. + items: + type: string + nullable: true + type: array + excludedResources: + description: ExcludedResources specifies the resources + to which this hook spec does not apply. + items: + type: string + nullable: true + type: array + includedNamespaces: + description: IncludedNamespaces specifies the namespaces + to which this hook spec applies. If empty, it applies + to all namespaces. + items: + type: string + nullable: true + type: array + includedResources: + description: IncludedResources specifies the resources + to which this hook spec applies. If empty, it applies + to all resources. + items: + type: string + nullable: true + type: array + labelSelector: + description: LabelSelector, if specified, filters the + resources to which this hook spec applies. + nullable: true properties: - excludedNamespaces: - description: ExcludedNamespaces specifies the namespaces - to which this hook spec does not apply. - items: - type: string - nullable: true - type: array - excludedResources: - description: ExcludedResources specifies the resources - to which this hook spec does not apply. - items: - type: string - nullable: true - type: array - includedNamespaces: - description: IncludedNamespaces specifies the namespaces - to which this hook spec applies. If empty, it applies - to all namespaces. - items: - type: string - nullable: true - type: array - includedResources: - description: IncludedResources specifies the resources - to which this hook spec applies. If empty, it applies - to all resources. - items: - type: string - nullable: true - type: array - labelSelector: - description: LabelSelector, if specified, filters the - resources to which this hook spec applies. - nullable: true - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator is - Exists or DoesNotExist, the values array must - be empty. This array is replaced during a - strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. - type: object - type: object - name: - description: Name is the name of this hook. - type: string - post: - description: PostHooks is a list of BackupResourceHooks - to execute after storing the item in the backup. These - are executed after all "additional items" from item - actions are processed. - items: - description: BackupResourceHook defines a hook for a - resource. - properties: - exec: - description: Exec defines an exec hook. - properties: - command: - description: Command is the command and arguments - to execute. - items: - type: string - minItems: 1 - type: array - container: - description: Container is the container in the - pod where the command should be executed. - If not specified, the pod's first container - is used. - type: string - onError: - description: OnError specifies how Velero should - behave if it encounters an error executing - this hook. - enum: - - Continue - - Fail - type: string - timeout: - description: Timeout defines the maximum amount - of time Velero should wait for the hook to - complete before considering the execution - a failure. - type: string - required: - - command - type: object - required: - - exec - type: object - type: array - pre: - description: PreHooks is a list of BackupResourceHooks - to execute prior to storing the item in the backup. - These are executed before any "additional items" from - item actions are processed. + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: - description: BackupResourceHook defines a hook for a - resource. + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: - exec: - description: Exec defines an exec hook. - properties: - command: - description: Command is the command and arguments - to execute. - items: - type: string - minItems: 1 - type: array - container: - description: Container is the container in the - pod where the command should be executed. - If not specified, the pod's first container - is used. - type: string - onError: - description: OnError specifies how Velero should - behave if it encounters an error executing - this hook. - enum: - - Continue - - Fail - type: string - timeout: - description: Timeout defines the maximum amount - of time Velero should wait for the hook to - complete before considering the execution - a failure. - type: string - required: - - command - type: object + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. + If the operator is In or NotIn, the values + array must be non-empty. If the operator is + Exists or DoesNotExist, the values array must + be empty. This array is replaced during a + strategic merge patch. + items: + type: string + type: array required: - - exec + - key + - operator type: object type: array - required: - - name - type: object - nullable: true - type: array - type: object - includeClusterResources: - description: IncludeClusterResources specifies whether cluster-scoped - resources should be included for consideration in the backup. - nullable: true - type: boolean - includedNamespaces: - description: IncludedNamespaces is a slice of namespace names to - include objects from. If empty, all namespaces are included. - items: - type: string - nullable: true - type: array - includedResources: - description: IncludedResources is a slice of resource names to include - in the backup. If empty, all resources are included. - items: - type: string - nullable: true - type: array - labelSelector: - description: LabelSelector is a metav1.LabelSelector to filter with - when adding individual objects to the backup. If empty or nil, - all objects are included. Optional. - nullable: true - properties: - matchExpressions: - description: matchExpressions is a list of label selector requirements. - The requirements are ANDed. - items: - description: A label selector requirement is a selector that - contains values, a key, and an operator that relates the - key and values. - properties: - key: - description: key is the label key that the selector applies - to. - type: string - operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, Exists - and DoesNotExist. - type: string - values: - description: values is an array of string values. If the - operator is In or NotIn, the values array must be non-empty. - If the operator is Exists or DoesNotExist, the values - array must be empty. This array is replaced during a - strategic merge patch. - items: + matchLabels: + additionalProperties: type: string - type: array - required: - - key - - operator + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} pairs. A single - {key,value} in the matchLabels map is equivalent to an element - of matchExpressions, whose key field is "key", the operator - is "In", and the values array contains only "value". The requirements - are ANDed. - type: object - type: object - metadata: - properties: - labels: - additionalProperties: + name: + description: Name is the name of this hook. type: string - type: object - type: object - orLabelSelectors: - description: OrLabelSelectors is list of metav1.LabelSelector to - filter with when adding individual objects to the backup. If multiple - provided they will be joined by the OR operator. LabelSelector - as well as OrLabelSelectors cannot co-exist in backup request, - only one of them can be used. - items: - description: A label selector is a label query over a set of resources. - The result of matchLabels and matchExpressions are ANDed. An - empty label selector matches all objects. A null label selector - matches no objects. - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. + post: + description: PostHooks is a list of BackupResourceHooks + to execute after storing the item in the backup. These + are executed after all "additional items" from item + actions are processed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that relates - the key and values. + description: BackupResourceHook defines a hook for a + resource. properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, - Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. If - the operator is In or NotIn, the values array must - be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced - during a strategic merge patch. - items: - type: string - type: array + exec: + description: Exec defines an exec hook. + properties: + command: + description: Command is the command and arguments + to execute. + items: + type: string + minItems: 1 + type: array + container: + description: Container is the container in the + pod where the command should be executed. + If not specified, the pod's first container + is used. + type: string + onError: + description: OnError specifies how Velero should + behave if it encounters an error executing + this hook. + enum: + - Continue + - Fail + type: string + timeout: + description: Timeout defines the maximum amount + of time Velero should wait for the hook to + complete before considering the execution + a failure. + type: string + required: + - command + type: object + required: + - exec + type: object + type: array + pre: + description: PreHooks is a list of BackupResourceHooks + to execute prior to storing the item in the backup. + These are executed before any "additional items" from + item actions are processed. + items: + description: BackupResourceHook defines a hook for a + resource. + properties: + exec: + description: Exec defines an exec hook. + properties: + command: + description: Command is the command and arguments + to execute. + items: + type: string + minItems: 1 + type: array + container: + description: Container is the container in the + pod where the command should be executed. + If not specified, the pod's first container + is used. + type: string + onError: + description: OnError specifies how Velero should + behave if it encounters an error executing + this hook. + enum: + - Continue + - Fail + type: string + timeout: + description: Timeout defines the maximum amount + of time Velero should wait for the hook to + complete before considering the execution + a failure. + type: string + required: + - command + type: object required: - - key - - operator + - exec type: object type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} pairs. A - single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is "key", - the operator is "In", and the values array contains only - "value". The requirements are ANDed. - type: object + required: + - name type: object nullable: true type: array - orderedResources: + type: object + includeClusterResources: + description: IncludeClusterResources specifies whether cluster-scoped + resources should be included for consideration in the backup. + nullable: true + type: boolean + includedClusterScopedResources: + description: IncludedClusterScopedResources is a slice of cluster-scoped + resource type names to include in the backup. If set to "*", all + cluster-scoped resource types are included. The default value + is empty, which means only related cluster-scoped resources are + included. + items: + type: string + nullable: true + type: array + includedNamespaceScopedResources: + description: IncludedNamespaceScopedResources is a slice of namespace-scoped + resource type names to include in the backup. The default value + is "*". + items: + type: string + nullable: true + type: array + includedNamespaces: + description: IncludedNamespaces is a slice of namespace names to + include objects from. If empty, all namespaces are included. + items: + type: string + nullable: true + type: array + includedResources: + description: IncludedResources is a slice of resource names to include + in the backup. If empty, all resources are included. + items: + type: string + nullable: true + type: array + itemOperationTimeout: + description: ItemOperationTimeout specifies the time used to wait + for asynchronous BackupItemAction operations The default value + is 1 hour. + type: string + labelSelector: + description: LabelSelector is a metav1.LabelSelector to filter with + when adding individual objects to the backup. If empty or nil, + all objects are included. Optional. + nullable: true + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. + items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the + key and values. + properties: + key: + description: key is the label key that the selector applies + to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: additionalProperties: type: string - description: OrderedResources specifies the backup order of resources - of specific Kind. The map key is the resource name and value is - a list of object names separated by commas. Each resource name - has format "namespace/objectname". For cluster resources, simply - use "objectname". - nullable: true + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. type: object - snapshotVolumes: - description: SnapshotVolumes specifies whether to take cloud snapshots - of any PV's referenced in the set of objects included in the Backup. - nullable: true - type: boolean - storageLocation: - description: StorageLocation is a string containing the name of - a BackupStorageLocation where the backup should be stored. - type: string - ttl: - description: TTL is a time.Duration-parseable string describing - how long the Backup should be retained for. - type: string - volumeSnapshotLocations: - description: VolumeSnapshotLocations is a list containing names - of VolumeSnapshotLocations associated with this backup. - items: + type: object + metadata: + properties: + labels: + additionalProperties: type: string - type: array + type: object + type: object + orLabelSelectors: + description: OrLabelSelectors is list of metav1.LabelSelector to + filter with when adding individual objects to the backup. If multiple + provided they will be joined by the OR operator. LabelSelector + as well as OrLabelSelectors cannot co-exist in backup request, + only one of them can be used. + items: + description: A label selector is a label query over a set of resources. + The result of matchLabels and matchExpressions are ANDed. An + empty label selector matches all objects. A null label selector + matches no objects. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If + the operator is In or NotIn, the values array must + be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced + during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A + single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field is "key", + the operator is "In", and the values array contains only + "value". The requirements are ANDed. + type: object + type: object + nullable: true + type: array + orderedResources: + additionalProperties: + type: string + description: OrderedResources specifies the backup order of resources + of specific Kind. The map key is the resource name and value is + a list of object names separated by commas. Each resource name + has format "namespace/objectname". For cluster resources, simply + use "objectname". + nullable: true type: object - status: - description: BackupStatus captures the current status of a Velero backup. + resourcePolicy: + description: ResourcePolicy specifies the referenced resource policies + that backup should follow properties: - completionTimestamp: - description: CompletionTimestamp records the time a backup was completed. - Completion time is recorded even on failed backups. Completion - time is recorded before uploading the backup object. The server's - time is used for CompletionTimestamps - format: date-time - nullable: true - type: string - csiVolumeSnapshotsAttempted: - description: CSIVolumeSnapshotsAttempted is the total number of - attempted CSI VolumeSnapshots for this backup. - type: integer - csiVolumeSnapshotsCompleted: - description: CSIVolumeSnapshotsCompleted is the total number of - successfully completed CSI VolumeSnapshots for this backup. - type: integer - errors: - description: Errors is a count of all error messages that were generated - during execution of the backup. The actual errors are in the - backup's log file in object storage. - type: integer - expiration: - description: Expiration is when this Backup is eligible for garbage-collection. - format: date-time - nullable: true - type: string - failureReason: - description: FailureReason is an error that caused the entire backup - to fail. - type: string - formatVersion: - description: FormatVersion is the backup format version, including - major, minor, and patch version. + apiGroup: + description: APIGroup is the group for the resource being referenced. + If APIGroup is not specified, the specified Kind must be in + the core API group. For any other third-party types, APIGroup + is required. type: string - phase: - description: Phase is the current state of the Backup. - enum: - - New - - FailedValidation - - InProgress - - Completed - - PartiallyFailed - - Failed - - Deleting + kind: + description: Kind is the type of resource being referenced type: string - progress: - description: Progress contains information about the backup's execution - progress. Note that this information is best-effort only -- if - Velero fails to update it during a backup for any reason, it may - be inaccurate/stale. - nullable: true - properties: - itemsBackedUp: - description: ItemsBackedUp is the number of items that have - actually been written to the backup tarball so far. - type: integer - totalItems: - description: TotalItems is the total number of items to be backed - up. This number may change throughout the execution of the - backup due to plugins that return additional related items - to back up, the velero.io/exclude-from-backup label, and various - other filters that happen as items are processed. - type: integer - type: object - startTimestamp: - description: StartTimestamp records the time a backup was started. - Separate from CreationTimestamp, since that value changes on restores. - The server's time is used for StartTimestamps - format: date-time - nullable: true + name: + description: Name is the name of resource being referenced type: string - validationErrors: - description: ValidationErrors is a slice of all validation errors - (if applicable). - items: - type: string - nullable: true - type: array - version: - description: 'Version is the backup format major version. Deprecated: - Please see FormatVersion' - type: integer - volumeSnapshotsAttempted: - description: VolumeSnapshotsAttempted is the total number of attempted - volume snapshots for this backup. - type: integer - volumeSnapshotsCompleted: - description: VolumeSnapshotsCompleted is the total number of successfully - completed volume snapshots for this backup. + required: + - kind + - name + type: object + snapshotVolumes: + description: SnapshotVolumes specifies whether to take snapshots + of any PV's referenced in the set of objects included in the Backup. + nullable: true + type: boolean + storageLocation: + description: StorageLocation is a string containing the name of + a BackupStorageLocation where the backup should be stored. + type: string + ttl: + description: TTL is a time.Duration-parseable string describing + how long the Backup should be retained for. + type: string + volumeSnapshotLocations: + description: VolumeSnapshotLocations is a list containing names + of VolumeSnapshotLocations associated with this backup. + items: + type: string + type: array + type: object + status: + description: BackupStatus captures the current status of a Velero backup. + properties: + backupItemOperationsAttempted: + description: BackupItemOperationsAttempted is the total number of + attempted async BackupItemAction operations for this backup. + type: integer + backupItemOperationsCompleted: + description: BackupItemOperationsCompleted is the total number of + successfully completed async BackupItemAction operations for this + backup. + type: integer + backupItemOperationsFailed: + description: BackupItemOperationsFailed is the total number of async + BackupItemAction operations for this backup which ended with an + error. + type: integer + completionTimestamp: + description: CompletionTimestamp records the time a backup was completed. + Completion time is recorded even on failed backups. Completion + time is recorded before uploading the backup object. The server's + time is used for CompletionTimestamps + format: date-time + nullable: true + type: string + csiVolumeSnapshotsAttempted: + description: CSIVolumeSnapshotsAttempted is the total number of + attempted CSI VolumeSnapshots for this backup. + type: integer + csiVolumeSnapshotsCompleted: + description: CSIVolumeSnapshotsCompleted is the total number of + successfully completed CSI VolumeSnapshots for this backup. + type: integer + errors: + description: Errors is a count of all error messages that were generated + during execution of the backup. The actual errors are in the + backup's log file in object storage. + type: integer + expiration: + description: Expiration is when this Backup is eligible for garbage-collection. + format: date-time + nullable: true + type: string + failureReason: + description: FailureReason is an error that caused the entire backup + to fail. + type: string + formatVersion: + description: FormatVersion is the backup format version, including + major, minor, and patch version. + type: string + phase: + description: Phase is the current state of the Backup. + enum: + - New + - FailedValidation + - InProgress + - WaitingForPluginOperations + - WaitingForPluginOperationsPartiallyFailed + - Finalizing + - FinalizingPartiallyFailed + - Completed + - PartiallyFailed + - Failed + - Deleting + type: string + progress: + description: Progress contains information about the backup's execution + progress. Note that this information is best-effort only -- if + Velero fails to update it during a backup for any reason, it may + be inaccurate/stale. + nullable: true + properties: + itemsBackedUp: + description: ItemsBackedUp is the number of items that have + actually been written to the backup tarball so far. type: integer - warnings: - description: Warnings is a count of all warning messages that were - generated during execution of the backup. The actual warnings - are in the backup's log file in object storage. + totalItems: + description: TotalItems is the total number of items to be backed + up. This number may change throughout the execution of the + backup due to plugins that return additional related items + to back up, the velero.io/exclude-from-backup label, and various + other filters that happen as items are processed. type: integer type: object + startTimestamp: + description: StartTimestamp records the time a backup was started. + Separate from CreationTimestamp, since that value changes on restores. + The server's time is used for StartTimestamps + format: date-time + nullable: true + type: string + validationErrors: + description: ValidationErrors is a slice of all validation errors + (if applicable). + items: + type: string + nullable: true + type: array + version: + description: 'Version is the backup format major version. Deprecated: + Please see FormatVersion' + type: integer + volumeSnapshotsAttempted: + description: VolumeSnapshotsAttempted is the total number of attempted + volume snapshots for this backup. + type: integer + volumeSnapshotsCompleted: + description: VolumeSnapshotsCompleted is the total number of successfully + completed volume snapshots for this backup. + type: integer + warnings: + description: Warnings is a count of all warning messages that were + generated during execution of the backup. The actual warnings + are in the backup's log file in object storage. + type: integer type: object - served: true - storage: true - - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - labels: - component: velero - name: backupstoragelocations.velero.io - spec: - group: velero.io - names: - kind: BackupStorageLocation - listKind: BackupStorageLocationList - plural: backupstoragelocations - shortNames: - - bsl - singular: backupstoragelocation - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Backup Storage Location status such as Available/Unavailable - jsonPath: .status.phase - name: Phase - type: string - - description: LastValidationTime is the last time the backup store location - was validated - jsonPath: .status.lastValidationTime - name: Last Validated - type: date - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - description: Default backup storage location - jsonPath: .spec.default - name: Default - type: boolean - name: v1 - schema: - openAPIV3Schema: - description: BackupStorageLocation is a location where Velero stores backup - objects - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation + type: object + served: true + storage: true +- apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.7.0 + creationTimestamp: null + labels: + component: velero + name: backupstoragelocations.velero.io + spec: + group: velero.io + names: + kind: BackupStorageLocation + listKind: BackupStorageLocationList + plural: backupstoragelocations + shortNames: + - bsl + singular: backupstoragelocation + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Backup Storage Location status such as Available/Unavailable + jsonPath: .status.phase + name: Phase + type: string + - description: LastValidationTime is the last time the backup store location + was validated + jsonPath: .status.lastValidationTime + name: Last Validated + type: date + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + - description: Default backup storage location + jsonPath: .spec.default + name: Default + type: boolean + name: v1 + schema: + openAPIV3Schema: + description: BackupStorageLocation is a location where Velero stores backup + objects + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: BackupStorageLocationSpec defines the desired state of + a Velero BackupStorageLocation + properties: + accessMode: + description: AccessMode defines the permissions for the backup storage + location. + enum: + - ReadOnly + - ReadWrite type: string - metadata: + backupSyncPeriod: + description: BackupSyncPeriod defines how frequently to sync backup + API objects from object storage. A value of 0 disables sync. + nullable: true + type: string + config: + additionalProperties: + type: string + description: Config is for provider-specific configuration fields. type: object - spec: - description: BackupStorageLocationSpec defines the desired state of - a Velero BackupStorageLocation + credential: + description: Credential contains the credential information intended + to be used with this location properties: - accessMode: - description: AccessMode defines the permissions for the backup storage - location. - enum: - - ReadOnly - - ReadWrite + key: + description: The key of the secret to select from. Must be + a valid secret key. type: string - backupSyncPeriod: - description: BackupSyncPeriod defines how frequently to sync backup - API objects from object storage. A value of 0 disables sync. - nullable: true - type: string - config: - additionalProperties: - type: string - description: Config is for provider-specific configuration fields. - type: object - credential: - description: Credential contains the credential information intended - to be used with this location - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - default: - description: Default indicates this location is the default backup - storage location. + type: string + optional: + description: Specify whether the Secret or its key must be defined type: boolean - objectStorage: - description: ObjectStorageLocation specifies the settings necessary - to connect to a provider's object storage. - properties: - bucket: - description: Bucket is the bucket to use for object storage. - type: string - caCert: - description: CACert defines a CA bundle to use when verifying - TLS connections to the provider. - format: byte - type: string - prefix: - description: Prefix is the path inside a bucket to use for Velero - storage. Optional. - type: string - required: - - bucket - type: object - provider: - description: Provider is the provider of the backup storage. + required: + - key + type: object + default: + description: Default indicates this location is the default backup + storage location. + type: boolean + objectStorage: + description: ObjectStorageLocation specifies the settings necessary + to connect to a provider's object storage. + properties: + bucket: + description: Bucket is the bucket to use for object storage. type: string - validationFrequency: - description: ValidationFrequency defines how frequently to validate - the corresponding object storage. A value of 0 disables validation. - nullable: true + caCert: + description: CACert defines a CA bundle to use when verifying + TLS connections to the provider. + format: byte + type: string + prefix: + description: Prefix is the path inside a bucket to use for Velero + storage. Optional. type: string required: - - objectStorage - - provider + - bucket type: object - status: - description: BackupStorageLocationStatus defines the observed state - of BackupStorageLocation - properties: - accessMode: - description: "AccessMode is an unused field. \n Deprecated: there + provider: + description: Provider is the provider of the backup storage. + type: string + validationFrequency: + description: ValidationFrequency defines how frequently to validate + the corresponding object storage. A value of 0 disables validation. + nullable: true + type: string + required: + - objectStorage + - provider + type: object + status: + description: BackupStorageLocationStatus defines the observed state + of BackupStorageLocation + properties: + accessMode: + description: "AccessMode is an unused field. \n Deprecated: there is now an AccessMode field on the Spec and this field will be removed entirely as of v2.0." - enum: - - ReadOnly - - ReadWrite - type: string - lastSyncedRevision: - description: "LastSyncedRevision is the value of the `metadata/revision` + enum: + - ReadOnly + - ReadWrite + type: string + lastSyncedRevision: + description: "LastSyncedRevision is the value of the `metadata/revision` file in the backup storage location the last time the BSL's contents were synced into the cluster. \n Deprecated: this field is no longer updated or used for detecting changes to the location's contents and will be removed entirely in v2.0." - type: string - lastSyncedTime: - description: LastSyncedTime is the last time the contents of the - location were synced into the cluster. - format: date-time - nullable: true - type: string - lastValidationTime: - description: LastValidationTime is the last time the backup store - location was validated the cluster. - format: date-time - nullable: true - type: string - message: - description: Message is a message about the backup storage location's - status. - type: string - phase: - description: Phase is the current state of the BackupStorageLocation. - enum: - - Available - - Unavailable - type: string - type: object + type: string + lastSyncedTime: + description: LastSyncedTime is the last time the contents of the + location were synced into the cluster. + format: date-time + nullable: true + type: string + lastValidationTime: + description: LastValidationTime is the last time the backup store + location was validated the cluster. + format: date-time + nullable: true + type: string + message: + description: Message is a message about the backup storage location's + status. + type: string + phase: + description: Phase is the current state of the BackupStorageLocation. + enum: + - Available + - Unavailable + type: string type: object - served: true - storage: true - subresources: {} - - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - labels: - component: velero - name: deletebackuprequests.velero.io - spec: - group: velero.io - names: - kind: DeleteBackupRequest - listKind: DeleteBackupRequestList - plural: deletebackuprequests - singular: deletebackuprequest - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: The name of the backup to be deleted - jsonPath: .spec.backupName - name: BackupName - type: string - - description: The status of the deletion request - jsonPath: .status.phase - name: Status - type: string - name: v1 - schema: - openAPIV3Schema: - description: DeleteBackupRequest is a request to delete one or more backups. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation + type: object + served: true + storage: true + subresources: {} +- apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.7.0 + creationTimestamp: null + labels: + component: velero + name: deletebackuprequests.velero.io + spec: + group: velero.io + names: + kind: DeleteBackupRequest + listKind: DeleteBackupRequestList + plural: deletebackuprequests + singular: deletebackuprequest + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: The name of the backup to be deleted + jsonPath: .spec.backupName + name: BackupName + type: string + - description: The status of the deletion request + jsonPath: .status.phase + name: Status + type: string + name: v1 + schema: + openAPIV3Schema: + description: DeleteBackupRequest is a request to delete one or more backups. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: DeleteBackupRequestSpec is the specification for which + backups to delete. + properties: + backupName: type: string - metadata: - type: object - spec: - description: DeleteBackupRequestSpec is the specification for which - backups to delete. - properties: - backupName: - type: string - required: - - backupName - type: object - status: - description: DeleteBackupRequestStatus is the current status of a DeleteBackupRequest. - properties: - errors: - description: Errors contains any errors that were encountered during - the deletion process. - items: - type: string - nullable: true - type: array - phase: - description: Phase is the current state of the DeleteBackupRequest. - enum: - - New - - InProgress - - Processed - type: string - type: object + required: + - backupName type: object - served: true - storage: true - subresources: {} - - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - labels: - component: velero - name: downloadrequests.velero.io - spec: - group: velero.io - names: - kind: DownloadRequest - listKind: DownloadRequestList - plural: downloadrequests - singular: downloadrequest - scope: Namespaced - versions: - - name: v1 - schema: - openAPIV3Schema: - description: DownloadRequest is a request to download an artifact from backup - object storage, such as a backup log file. + status: + description: DeleteBackupRequestStatus is the current status of a DeleteBackupRequest. properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation + errors: + description: Errors contains any errors that were encountered during + the deletion process. + items: + type: string + nullable: true + type: array + phase: + description: Phase is the current state of the DeleteBackupRequest. + enum: + - New + - InProgress + - Processed + type: string + type: object + type: object + served: true + storage: true + subresources: {} +- apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.7.0 + creationTimestamp: null + labels: + component: velero + name: downloadrequests.velero.io + spec: + group: velero.io + names: + kind: DownloadRequest + listKind: DownloadRequestList + plural: downloadrequests + singular: downloadrequest + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: DownloadRequest is a request to download an artifact from backup + object storage, such as a backup log file. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: DownloadRequestSpec is the specification for a download - request. - properties: - target: - description: Target is what to download (e.g. logs for a backup). - properties: - kind: - description: Kind is the type of file to download. - enum: - - BackupLog - - BackupContents - - BackupVolumeSnapshots - - BackupItemSnapshots - - BackupResourceList - - RestoreLog - - RestoreResults - - CSIBackupVolumeSnapshots - - CSIBackupVolumeSnapshotContents - type: string - name: - description: Name is the name of the kubernetes resource with - which the file is associated. - type: string - required: - - kind - - name - type: object - required: - - target - type: object - status: - description: DownloadRequestStatus is the current status of a DownloadRequest. + type: string + metadata: + type: object + spec: + description: DownloadRequestSpec is the specification for a download + request. + properties: + target: + description: Target is what to download (e.g. logs for a backup). properties: - downloadURL: - description: DownloadURL contains the pre-signed URL for the target - file. - type: string - expiration: - description: Expiration is when this DownloadRequest expires and - can be deleted by the system. - format: date-time - nullable: true - type: string - phase: - description: Phase is the current state of the DownloadRequest. + kind: + description: Kind is the type of file to download. enum: - - New - - Processed + - BackupLog + - BackupContents + - BackupVolumeSnapshots + - BackupItemOperations + - BackupResourceList + - BackupResults + - RestoreLog + - RestoreResults + - RestoreResourceList + - RestoreItemOperations + - CSIBackupVolumeSnapshots + - CSIBackupVolumeSnapshotContents + type: string + name: + description: Name is the name of the kubernetes resource with + which the file is associated. type: string + required: + - kind + - name type: object + required: + - target type: object - served: true - storage: true - - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - labels: - component: velero - name: podvolumebackups.velero.io - spec: - group: velero.io - names: - kind: PodVolumeBackup - listKind: PodVolumeBackupList - plural: podvolumebackups - singular: podvolumebackup - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Pod Volume Backup status such as New/InProgress - jsonPath: .status.phase - name: Status - type: string - - description: Time when this backup was started - jsonPath: .status.startTimestamp - name: Created - type: date - - description: Namespace of the pod containing the volume to be backed up - jsonPath: .spec.pod.namespace - name: Namespace - type: string - - description: Name of the pod containing the volume to be backed up - jsonPath: .spec.pod.name - name: Pod - type: string - - description: Name of the volume to be backed up - jsonPath: .spec.volume - name: Volume - type: string - - description: Backup repository identifier for this backup - jsonPath: .spec.repoIdentifier - name: Repository ID - type: string - - description: The type of the uploader to handle data transfer - jsonPath: .spec.uploaderType - name: Uploader Type - type: string - - description: Name of the Backup Storage Location where this backup should - be stored - jsonPath: .spec.backupStorageLocation - name: Storage Location - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: + status: + description: DownloadRequestStatus is the current status of a DownloadRequest. properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation + downloadURL: + description: DownloadURL contains the pre-signed URL for the target + file. + type: string + expiration: + description: Expiration is when this DownloadRequest expires and + can be deleted by the system. + format: date-time + nullable: true + type: string + phase: + description: Phase is the current state of the DownloadRequest. + enum: + - New + - Processed + type: string + type: object + type: object + served: true + storage: true +- apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.7.0 + creationTimestamp: null + labels: + component: velero + name: podvolumebackups.velero.io + spec: + group: velero.io + names: + kind: PodVolumeBackup + listKind: PodVolumeBackupList + plural: podvolumebackups + singular: podvolumebackup + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Pod Volume Backup status such as New/InProgress + jsonPath: .status.phase + name: Status + type: string + - description: Time when this backup was started + jsonPath: .status.startTimestamp + name: Created + type: date + - description: Namespace of the pod containing the volume to be backed up + jsonPath: .spec.pod.namespace + name: Namespace + type: string + - description: Name of the pod containing the volume to be backed up + jsonPath: .spec.pod.name + name: Pod + type: string + - description: Name of the volume to be backed up + jsonPath: .spec.volume + name: Volume + type: string + - description: Backup repository identifier for this backup + jsonPath: .spec.repoIdentifier + name: Repository ID + type: string + - description: The type of the uploader to handle data transfer + jsonPath: .spec.uploaderType + name: Uploader Type + type: string + - description: Name of the Backup Storage Location where this backup should + be stored + jsonPath: .spec.backupStorageLocation + name: Storage Location + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PodVolumeBackupSpec is the specification for a PodVolumeBackup. + properties: + backupStorageLocation: + description: BackupStorageLocation is the name of the backup storage + location where the backup repository is stored. type: string - metadata: - type: object - spec: - description: PodVolumeBackupSpec is the specification for a PodVolumeBackup. + node: + description: Node is the name of the node that the Pod is running + on. + type: string + pod: + description: Pod is a reference to the pod containing the volume + to be backed up. properties: - backupStorageLocation: - description: BackupStorageLocation is the name of the backup storage - location where the backup repository is stored. + apiVersion: + description: API version of the referent. type: string - node: - description: Node is the name of the node that the Pod is running - on. - type: string - pod: - description: Pod is a reference to the pod containing the volume - to be backed up. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead of + fieldPath: + description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within @@ -1071,192 +1153,192 @@ items: only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - repoIdentifier: - description: RepoIdentifier is the backup repository identifier. - type: string - tags: - additionalProperties: - type: string - description: Tags are a map of key-value pairs that should be applied - to the volume backup as tags. - type: object - uploaderType: - description: UploaderType is the type of the uploader to handle - the data transfer. - enum: - - kopia - - restic - - "" - type: string - volume: - description: Volume is the name of the volume within the Pod to - be backed up. - type: string - required: - - backupStorageLocation - - node - - pod - - repoIdentifier - - volume - type: object - status: - description: PodVolumeBackupStatus is the current status of a PodVolumeBackup. - properties: - completionTimestamp: - description: CompletionTimestamp records the time a backup was completed. - Completion time is recorded even on failed backups. Completion - time is recorded before uploading the backup object. The server's - time is used for CompletionTimestamps - format: date-time - nullable: true type: string - message: - description: Message is a message about the pod volume backup's - status. + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string - path: - description: Path is the full path within the controller pod being - backed up. + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' type: string - phase: - description: Phase is the current state of the PodVolumeBackup. - enum: - - New - - InProgress - - Completed - - Failed + namespace: + description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' type: string - progress: - description: Progress holds the total number of bytes of the volume - and the current number of backed up bytes. This can be used to - display progress information about the backup operation. - properties: - bytesDone: - format: int64 - type: integer - totalBytes: - format: int64 - type: integer - type: object - snapshotID: - description: SnapshotID is the identifier for the snapshot of the - pod volume. + resourceVersion: + description: 'Specific resourceVersion to which this reference + is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' type: string - startTimestamp: - description: StartTimestamp records the time a backup was started. - Separate from CreationTimestamp, since that value changes on restores. - The server's time is used for StartTimestamps - format: date-time - nullable: true + uid: + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' type: string type: object + repoIdentifier: + description: RepoIdentifier is the backup repository identifier. + type: string + tags: + additionalProperties: + type: string + description: Tags are a map of key-value pairs that should be applied + to the volume backup as tags. + type: object + uploaderType: + description: UploaderType is the type of the uploader to handle + the data transfer. + enum: + - kopia + - restic + - "" + type: string + volume: + description: Volume is the name of the volume within the Pod to + be backed up. + type: string + required: + - backupStorageLocation + - node + - pod + - repoIdentifier + - volume + type: object + status: + description: PodVolumeBackupStatus is the current status of a PodVolumeBackup. + properties: + completionTimestamp: + description: CompletionTimestamp records the time a backup was completed. + Completion time is recorded even on failed backups. Completion + time is recorded before uploading the backup object. The server's + time is used for CompletionTimestamps + format: date-time + nullable: true + type: string + message: + description: Message is a message about the pod volume backup's + status. + type: string + path: + description: Path is the full path within the controller pod being + backed up. + type: string + phase: + description: Phase is the current state of the PodVolumeBackup. + enum: + - New + - InProgress + - Completed + - Failed + type: string + progress: + description: Progress holds the total number of bytes of the volume + and the current number of backed up bytes. This can be used to + display progress information about the backup operation. + properties: + bytesDone: + format: int64 + type: integer + totalBytes: + format: int64 + type: integer + type: object + snapshotID: + description: SnapshotID is the identifier for the snapshot of the + pod volume. + type: string + startTimestamp: + description: StartTimestamp records the time a backup was started. + Separate from CreationTimestamp, since that value changes on restores. + The server's time is used for StartTimestamps + format: date-time + nullable: true + type: string type: object - served: true - storage: true - subresources: {} - - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - labels: - component: velero - name: podvolumerestores.velero.io - spec: - group: velero.io - names: - kind: PodVolumeRestore - listKind: PodVolumeRestoreList - plural: podvolumerestores - singular: podvolumerestore - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Namespace of the pod containing the volume to be restored - jsonPath: .spec.pod.namespace - name: Namespace - type: string - - description: Name of the pod containing the volume to be restored - jsonPath: .spec.pod.name - name: Pod - type: string - - description: The type of the uploader to handle data transfer - jsonPath: .spec.uploaderType - name: Uploader Type - type: string - - description: Name of the volume to be restored - jsonPath: .spec.volume - name: Volume - type: string - - description: Pod Volume Restore status such as New/InProgress - jsonPath: .status.phase - name: Status - type: string - - description: Pod Volume Restore status such as New/InProgress - format: int64 - jsonPath: .status.progress.totalBytes - name: TotalBytes - type: integer - - description: Pod Volume Restore status such as New/InProgress - format: int64 - jsonPath: .status.progress.bytesDone - name: BytesDone - type: integer - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation + type: object + served: true + storage: true + subresources: {} +- apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.7.0 + creationTimestamp: null + labels: + component: velero + name: podvolumerestores.velero.io + spec: + group: velero.io + names: + kind: PodVolumeRestore + listKind: PodVolumeRestoreList + plural: podvolumerestores + singular: podvolumerestore + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Namespace of the pod containing the volume to be restored + jsonPath: .spec.pod.namespace + name: Namespace + type: string + - description: Name of the pod containing the volume to be restored + jsonPath: .spec.pod.name + name: Pod + type: string + - description: The type of the uploader to handle data transfer + jsonPath: .spec.uploaderType + name: Uploader Type + type: string + - description: Name of the volume to be restored + jsonPath: .spec.volume + name: Volume + type: string + - description: Pod Volume Restore status such as New/InProgress + jsonPath: .status.phase + name: Status + type: string + - description: Pod Volume Restore status such as New/InProgress + format: int64 + jsonPath: .status.progress.totalBytes + name: TotalBytes + type: integer + - description: Pod Volume Restore status such as New/InProgress + format: int64 + jsonPath: .status.progress.bytesDone + name: BytesDone + type: integer + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: PodVolumeRestoreSpec is the specification for a PodVolumeRestore. + properties: + backupStorageLocation: + description: BackupStorageLocation is the name of the backup storage + location where the backup repository is stored. type: string - metadata: - type: object - spec: - description: PodVolumeRestoreSpec is the specification for a PodVolumeRestore. + pod: + description: Pod is a reference to the pod containing the volume + to be restored. properties: - backupStorageLocation: - description: BackupStorageLocation is the name of the backup storage - location where the backup repository is stored. + apiVersion: + description: API version of the referent. type: string - pod: - description: Pod is a reference to the pod containing the volume - to be restored. - properties: - apiVersion: - description: API version of the referent. - type: string - fieldPath: - description: 'If referring to a piece of an object instead of + fieldPath: + description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within @@ -1267,171 +1349,714 @@ items: only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.' - type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' - type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' - type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' - type: string - type: object - repoIdentifier: - description: RepoIdentifier is the backup repository identifier. type: string - snapshotID: - description: SnapshotID is the ID of the volume snapshot to be restored. + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string - sourceNamespace: - description: SourceNamespace is the original namespace for namaspace - mapping. + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' type: string - uploaderType: - description: UploaderType is the type of the uploader to handle - the data transfer. - enum: - - kopia - - restic - - "" + namespace: + description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + type: string + resourceVersion: + description: 'Specific resourceVersion to which this reference + is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' type: string - volume: - description: Volume is the name of the volume within the Pod to - be restored. + uid: + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' type: string - required: - - backupStorageLocation - - pod - - repoIdentifier - - snapshotID - - sourceNamespace - - volume type: object - status: - description: PodVolumeRestoreStatus is the current status of a PodVolumeRestore. + repoIdentifier: + description: RepoIdentifier is the backup repository identifier. + type: string + snapshotID: + description: SnapshotID is the ID of the volume snapshot to be restored. + type: string + sourceNamespace: + description: SourceNamespace is the original namespace for namaspace + mapping. + type: string + uploaderType: + description: UploaderType is the type of the uploader to handle + the data transfer. + enum: + - kopia + - restic + - "" + type: string + volume: + description: Volume is the name of the volume within the Pod to + be restored. + type: string + required: + - backupStorageLocation + - pod + - repoIdentifier + - snapshotID + - sourceNamespace + - volume + type: object + status: + description: PodVolumeRestoreStatus is the current status of a PodVolumeRestore. + properties: + completionTimestamp: + description: CompletionTimestamp records the time a restore was + completed. Completion time is recorded even on failed restores. + The server's time is used for CompletionTimestamps + format: date-time + nullable: true + type: string + message: + description: Message is a message about the pod volume restore's + status. + type: string + phase: + description: Phase is the current state of the PodVolumeRestore. + enum: + - New + - InProgress + - Completed + - Failed + type: string + progress: + description: Progress holds the total number of bytes of the snapshot + and the current number of restored bytes. This can be used to + display progress information about the restore operation. properties: - completionTimestamp: - description: CompletionTimestamp records the time a restore was - completed. Completion time is recorded even on failed restores. - The server's time is used for CompletionTimestamps - format: date-time - nullable: true - type: string - message: - description: Message is a message about the pod volume restore's - status. - type: string - phase: - description: Phase is the current state of the PodVolumeRestore. - enum: - - New - - InProgress - - Completed - - Failed - type: string - progress: - description: Progress holds the total number of bytes of the snapshot - and the current number of restored bytes. This can be used to - display progress information about the restore operation. - properties: - bytesDone: - format: int64 - type: integer - totalBytes: - format: int64 - type: integer + bytesDone: + format: int64 + type: integer + totalBytes: + format: int64 + type: integer + type: object + startTimestamp: + description: StartTimestamp records the time a restore was started. + The server's time is used for StartTimestamps + format: date-time + nullable: true + type: string + type: object + type: object + served: true + storage: true + subresources: {} +- apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.7.0 + creationTimestamp: null + labels: + component: velero + name: restores.velero.io + spec: + group: velero.io + names: + kind: Restore + listKind: RestoreList + plural: restores + singular: restore + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: Restore is a Velero resource that represents the application + of resources from a Velero backup to a target Kubernetes cluster. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource + this object represents. Servers may infer this from the endpoint the + client submits requests to. Cannot be updated. In CamelCase. More + info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: RestoreSpec defines the specification for a Velero restore. + properties: + backupName: + description: BackupName is the unique name of the Velero backup + to restore from. + type: string + excludedNamespaces: + description: ExcludedNamespaces contains a list of namespaces that + are not included in the restore. + items: + type: string + nullable: true + type: array + excludedResources: + description: ExcludedResources is a slice of resource names that + are not included in the restore. + items: + type: string + nullable: true + type: array + existingResourcePolicy: + description: ExistingResourcePolicy specifies the restore behavior + for the kubernetes resource to be restored + nullable: true + type: string + hooks: + description: Hooks represent custom behaviors that should be executed + during or post restore. + properties: + resources: + items: + description: RestoreResourceHookSpec defines one or more RestoreResrouceHooks + that should be executed based on the rules defined for namespaces, + resources, and label selector. + properties: + excludedNamespaces: + description: ExcludedNamespaces specifies the namespaces + to which this hook spec does not apply. + items: + type: string + nullable: true + type: array + excludedResources: + description: ExcludedResources specifies the resources + to which this hook spec does not apply. + items: + type: string + nullable: true + type: array + includedNamespaces: + description: IncludedNamespaces specifies the namespaces + to which this hook spec applies. If empty, it applies + to all namespaces. + items: + type: string + nullable: true + type: array + includedResources: + description: IncludedResources specifies the resources + to which this hook spec applies. If empty, it applies + to all resources. + items: + type: string + nullable: true + type: array + labelSelector: + description: LabelSelector, if specified, filters the + resources to which this hook spec applies. + nullable: true + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. + If the operator is In or NotIn, the values + array must be non-empty. If the operator is + Exists or DoesNotExist, the values array must + be empty. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object + name: + description: Name is the name of this hook. + type: string + postHooks: + description: PostHooks is a list of RestoreResourceHooks + to execute during and after restoring a resource. + items: + description: RestoreResourceHook defines a restore hook + for a resource. + properties: + exec: + description: Exec defines an exec restore hook. + properties: + command: + description: Command is the command and arguments + to execute from within a container after a + pod has been restored. + items: + type: string + minItems: 1 + type: array + container: + description: Container is the container in the + pod where the command should be executed. + If not specified, the pod's first container + is used. + type: string + execTimeout: + description: ExecTimeout defines the maximum + amount of time Velero should wait for the + hook to complete before considering the execution + a failure. + type: string + onError: + description: OnError specifies how Velero should + behave if it encounters an error executing + this hook. + enum: + - Continue + - Fail + type: string + waitTimeout: + description: WaitTimeout defines the maximum + amount of time Velero should wait for the + container to be Ready before attempting to + run the command. + type: string + required: + - command + type: object + init: + description: Init defines an init restore hook. + properties: + initContainers: + description: InitContainers is list of init + containers to be added to a pod during its + restore. + items: + type: object + type: array + x-kubernetes-preserve-unknown-fields: true + timeout: + description: Timeout defines the maximum amount + of time Velero should wait for the initContainers + to complete. + type: string + type: object + type: object + type: array + required: + - name + type: object + type: array + type: object + includeClusterResources: + description: IncludeClusterResources specifies whether cluster-scoped + resources should be included for consideration in the restore. + If null, defaults to true. + nullable: true + type: boolean + includedNamespaces: + description: IncludedNamespaces is a slice of namespace names to + include objects from. If empty, all namespaces are included. + items: + type: string + nullable: true + type: array + includedResources: + description: IncludedResources is a slice of resource names to include + in the restore. If empty, all resources in the backup are included. + items: + type: string + nullable: true + type: array + itemOperationTimeout: + description: ItemOperationTimeout specifies the time used to wait + for RestoreItemAction operations The default value is 1 hour. + type: string + labelSelector: + description: LabelSelector is a metav1.LabelSelector to filter with + when restoring individual objects from the backup. If empty or + nil, all objects are included. Optional. + nullable: true + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. + items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the + key and values. + properties: + key: + description: key is the label key that the selector applies + to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. type: object - startTimestamp: - description: StartTimestamp records the time a restore was started. - The server's time is used for StartTimestamps - format: date-time + type: object + namespaceMapping: + additionalProperties: + type: string + description: NamespaceMapping is a map of source namespace names + to target namespace names to restore into. Any source namespaces + not included in the map will be restored into namespaces of the + same name. + type: object + orLabelSelectors: + description: OrLabelSelectors is list of metav1.LabelSelector to + filter with when restoring individual objects from the backup. + If multiple provided they will be joined by the OR operator. LabelSelector + as well as OrLabelSelectors cannot co-exist in restore request, + only one of them can be used + items: + description: A label selector is a label query over a set of resources. + The result of matchLabels and matchExpressions are ANDed. An + empty label selector matches all objects. A null label selector + matches no objects. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. + type: string + values: + description: values is an array of string values. If + the operator is In or NotIn, the values array must + be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced + during a strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. A + single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field is "key", + the operator is "In", and the values array contains only + "value". The requirements are ANDed. + type: object + type: object + nullable: true + type: array + preserveNodePorts: + description: PreserveNodePorts specifies whether to restore old + nodePorts from backup. + nullable: true + type: boolean + restorePVs: + description: RestorePVs specifies whether to restore all included + PVs from snapshot + nullable: true + type: boolean + restoreStatus: + description: RestoreStatus specifies which resources we should restore + the status field. If nil, no objects are included. Optional. + nullable: true + properties: + excludedResources: + description: ExcludedResources specifies the resources to which + will not restore the status. + items: + type: string nullable: true - type: string + type: array + includedResources: + description: IncludedResources specifies the resources to which + will restore the status. If empty, it applies to all resources. + items: + type: string + nullable: true + type: array type: object + scheduleName: + description: ScheduleName is the unique name of the Velero schedule + to restore from. If specified, and BackupName is empty, Velero + will restore from the most recent successful backup created from + this schedule. + type: string + required: + - backupName type: object - served: true - storage: true - subresources: {} - - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - labels: - component: velero - name: restores.velero.io - spec: - group: velero.io - names: - kind: Restore - listKind: RestoreList - plural: restores - singular: restore - scope: Namespaced - versions: - - name: v1 - schema: - openAPIV3Schema: - description: Restore is a Velero resource that represents the application - of resources from a Velero backup to a target Kubernetes cluster. + status: + description: RestoreStatus captures the current status of a Velero restore properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation + completionTimestamp: + description: CompletionTimestamp records the time the restore operation + was completed. Completion time is recorded even on failed restore. + The server's time is used for StartTimestamps + format: date-time + nullable: true + type: string + errors: + description: Errors is a count of all error messages that were generated + during execution of the restore. The actual errors are stored + in object storage. + type: integer + failureReason: + description: FailureReason is an error that caused the entire restore + to fail. + type: string + phase: + description: Phase is the current state of the Restore + enum: + - New + - FailedValidation + - InProgress + - WaitingForPluginOperations + - WaitingForPluginOperationsPartiallyFailed + - Completed + - PartiallyFailed + - Failed + type: string + progress: + description: Progress contains information about the restore's execution + progress. Note that this information is best-effort only -- if + Velero fails to update it during a restore for any reason, it + may be inaccurate/stale. + nullable: true + properties: + itemsRestored: + description: ItemsRestored is the number of items that have + actually been restored so far + type: integer + totalItems: + description: TotalItems is the total number of items to be restored. + This number may change throughout the execution of the restore + due to plugins that return additional related items to restore + type: integer + type: object + restoreItemOperationsAttempted: + description: RestoreItemOperationsAttempted is the total number + of attempted async RestoreItemAction operations for this restore. + type: integer + restoreItemOperationsCompleted: + description: RestoreItemOperationsCompleted is the total number + of successfully completed async RestoreItemAction operations for + this restore. + type: integer + restoreItemOperationsFailed: + description: RestoreItemOperationsFailed is the total number of + async RestoreItemAction operations for this restore which ended + with an error. + type: integer + startTimestamp: + description: StartTimestamp records the time the restore operation + was started. The server's time is used for StartTimestamps + format: date-time + nullable: true + type: string + validationErrors: + description: ValidationErrors is a slice of all validation errors + (if applicable) + items: + type: string + nullable: true + type: array + warnings: + description: Warnings is a count of all warning messages that were + generated during execution of the restore. The actual warnings + are stored in object storage. + type: integer + type: object + type: object + served: true + storage: true +- apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.7.0 + creationTimestamp: null + labels: + component: velero + name: schedules.velero.io + spec: + group: velero.io + names: + kind: Schedule + listKind: ScheduleList + plural: schedules + singular: schedule + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Status of the schedule + jsonPath: .status.phase + name: Status + type: string + - description: A Cron expression defining when to run the Backup + jsonPath: .spec.schedule + name: Schedule + type: string + - description: The last time a Backup was run for this schedule + jsonPath: .status.lastBackup + name: LastBackup + type: date + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + - jsonPath: .spec.paused + name: Paused + type: boolean + name: v1 + schema: + openAPIV3Schema: + description: Schedule is a Velero resource that represents a pre-scheduled + or periodic Backup that should be run. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ScheduleSpec defines the specification for a Velero schedule + properties: + paused: + description: Paused specifies whether the schedule is paused or + not + type: boolean + schedule: + description: Schedule is a Cron expression defining when to run + the Backup. type: string - metadata: - type: object - spec: - description: RestoreSpec defines the specification for a Velero restore. + template: + description: Template is the definition of the Backup to be run + on the provided schedule properties: - backupName: - description: BackupName is the unique name of the Velero backup - to restore from. + csiSnapshotTimeout: + description: CSISnapshotTimeout specifies the time used to wait + for CSI VolumeSnapshot status turns to ReadyToUse during creation, + before returning error as timeout. The default value is 10 + minute. type: string + defaultVolumesToFsBackup: + description: DefaultVolumesToFsBackup specifies whether pod + volume file system backup should be used for all volumes by + default. + nullable: true + type: boolean + defaultVolumesToRestic: + description: "DefaultVolumesToRestic specifies whether restic + should be used to take a backup of all pod volumes by default. + \n Deprecated: this field is no longer used and will be removed + entirely in future. Use DefaultVolumesToFsBackup instead." + nullable: true + type: boolean + excludedClusterScopedResources: + description: ExcludedClusterScopedResources is a slice of cluster-scoped + resource type names to exclude from the backup. If set to + "*", all cluster-scoped resource types are excluded. The default + value is empty. + items: + type: string + nullable: true + type: array + excludedNamespaceScopedResources: + description: ExcludedNamespaceScopedResources is a slice of + namespace-scoped resource type names to exclude from the backup. + If set to "*", all namespace-scoped resource types are excluded. + The default value is empty. + items: + type: string + nullable: true + type: array excludedNamespaces: - description: ExcludedNamespaces contains a list of namespaces that - are not included in the restore. + description: ExcludedNamespaces contains a list of namespaces + that are not included in the backup. items: type: string nullable: true type: array excludedResources: - description: ExcludedResources is a slice of resource names that - are not included in the restore. + description: ExcludedResources is a slice of resource names + that are not included in the backup. items: type: string nullable: true type: array - existingResourcePolicy: - description: ExistingResourcePolicy specifies the restore behaviour - for the kubernetes resource to be restored - nullable: true - type: string hooks: - description: Hooks represent custom behaviors that should be executed - during or post restore. + description: Hooks represent custom behaviors that should be + executed at different phases of the backup. properties: resources: + description: Resources are hooks that should be executed + when backing up individual instances of a resource. items: - description: RestoreResourceHookSpec defines one or more RestoreResrouceHooks - that should be executed based on the rules defined for namespaces, - resources, and label selector. + description: BackupResourceHookSpec defines one or more + BackupResourceHooks that should be executed based on + the rules defined for namespaces, resources, and label + selector. properties: excludedNamespaces: description: ExcludedNamespaces specifies the namespaces @@ -1464,220 +2089,270 @@ items: nullable: true type: array labelSelector: - description: LabelSelector, if specified, filters the - resources to which this hook spec applies. + description: LabelSelector, if specified, filters + the resources to which this hook spec applies. nullable: true properties: matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. + description: A label selector requirement is + a selector that contains values, a key, and + an operator that relates the key and values. properties: key: - description: key is the label key that the selector - applies to. + description: key is the label key that the + selector applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator is - Exists or DoesNotExist, the values array must - be empty. This array is replaced during a - strategic merge patch. + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. This array + is replaced during a strategic merge patch. items: type: string type: array required: - - key - - operator + - key + - operator type: object type: array matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is "In", + and the values array contains only "value". + The requirements are ANDed. type: object type: object name: description: Name is the name of this hook. type: string - postHooks: - description: PostHooks is a list of RestoreResourceHooks - to execute during and after restoring a resource. + post: + description: PostHooks is a list of BackupResourceHooks + to execute after storing the item in the backup. + These are executed after all "additional items" + from item actions are processed. items: - description: RestoreResourceHook defines a restore hook - for a resource. + description: BackupResourceHook defines a hook for + a resource. properties: exec: - description: Exec defines an exec restore hook. + description: Exec defines an exec hook. properties: command: - description: Command is the command and arguments - to execute from within a container after a - pod has been restored. + description: Command is the command and + arguments to execute. items: type: string minItems: 1 type: array container: - description: Container is the container in the - pod where the command should be executed. - If not specified, the pod's first container - is used. - type: string - execTimeout: - description: ExecTimeout defines the maximum - amount of time Velero should wait for the - hook to complete before considering the execution - a failure. + description: Container is the container + in the pod where the command should be + executed. If not specified, the pod's + first container is used. type: string onError: - description: OnError specifies how Velero should - behave if it encounters an error executing - this hook. + description: OnError specifies how Velero + should behave if it encounters an error + executing this hook. enum: - - Continue - - Fail + - Continue + - Fail type: string - waitTimeout: - description: WaitTimeout defines the maximum - amount of time Velero should wait for the - container to be Ready before attempting to - run the command. + timeout: + description: Timeout defines the maximum + amount of time Velero should wait for + the hook to complete before considering + the execution a failure. type: string required: - - command + - command type: object - init: - description: Init defines an init restore hook. + required: + - exec + type: object + type: array + pre: + description: PreHooks is a list of BackupResourceHooks + to execute prior to storing the item in the backup. + These are executed before any "additional items" + from item actions are processed. + items: + description: BackupResourceHook defines a hook for + a resource. + properties: + exec: + description: Exec defines an exec hook. properties: - initContainers: - description: InitContainers is list of init - containers to be added to a pod during its - restore. + command: + description: Command is the command and + arguments to execute. items: - type: object + type: string + minItems: 1 type: array - x-kubernetes-preserve-unknown-fields: true + container: + description: Container is the container + in the pod where the command should be + executed. If not specified, the pod's + first container is used. + type: string + onError: + description: OnError specifies how Velero + should behave if it encounters an error + executing this hook. + enum: + - Continue + - Fail + type: string timeout: - description: Timeout defines the maximum amount - of time Velero should wait for the initContainers - to complete. + description: Timeout defines the maximum + amount of time Velero should wait for + the hook to complete before considering + the execution a failure. type: string + required: + - command type: object + required: + - exec type: object type: array required: - - name + - name type: object + nullable: true type: array type: object includeClusterResources: description: IncludeClusterResources specifies whether cluster-scoped - resources should be included for consideration in the restore. - If null, defaults to true. + resources should be included for consideration in the backup. nullable: true type: boolean + includedClusterScopedResources: + description: IncludedClusterScopedResources is a slice of cluster-scoped + resource type names to include in the backup. If set to "*", + all cluster-scoped resource types are included. The default + value is empty, which means only related cluster-scoped resources + are included. + items: + type: string + nullable: true + type: array + includedNamespaceScopedResources: + description: IncludedNamespaceScopedResources is a slice of + namespace-scoped resource type names to include in the backup. + The default value is "*". + items: + type: string + nullable: true + type: array includedNamespaces: - description: IncludedNamespaces is a slice of namespace names to - include objects from. If empty, all namespaces are included. + description: IncludedNamespaces is a slice of namespace names + to include objects from. If empty, all namespaces are included. items: type: string nullable: true type: array includedResources: - description: IncludedResources is a slice of resource names to include - in the restore. If empty, all resources in the backup are included. + description: IncludedResources is a slice of resource names + to include in the backup. If empty, all resources are included. items: type: string nullable: true type: array + itemOperationTimeout: + description: ItemOperationTimeout specifies the time used to + wait for asynchronous BackupItemAction operations The default + value is 1 hour. + type: string labelSelector: - description: LabelSelector is a metav1.LabelSelector to filter with - when restoring individual objects from the backup. If empty or - nil, all objects are included. Optional. + description: LabelSelector is a metav1.LabelSelector to filter + with when adding individual objects to the backup. If empty + or nil, all objects are included. Optional. nullable: true properties: matchExpressions: - description: matchExpressions is a list of label selector requirements. - The requirements are ANDed. + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector that - contains values, a key, and an operator that relates the - key and values. + description: A label selector requirement is a selector + that contains values, a key, and an operator that relates + the key and values. properties: key: - description: key is the label key that the selector applies - to. + description: key is the label key that the selector + applies to. type: string operator: description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, Exists - and DoesNotExist. + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. type: string values: - description: values is an array of string values. If the - operator is In or NotIn, the values array must be non-empty. - If the operator is Exists or DoesNotExist, the values - array must be empty. This array is replaced during a - strategic merge patch. + description: values is an array of string values. + If the operator is In or NotIn, the values array + must be non-empty. If the operator is Exists or + DoesNotExist, the values array must be empty. This + array is replaced during a strategic merge patch. items: type: string type: array - required: - - key - - operator + required: + - key + - operator type: object type: array matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. A single - {key,value} in the matchLabels map is equivalent to an element - of matchExpressions, whose key field is "key", the operator - is "In", and the values array contains only "value". The requirements - are ANDed. + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field is + "key", the operator is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object - namespaceMapping: - additionalProperties: - type: string - description: NamespaceMapping is a map of source namespace names - to target namespace names to restore into. Any source namespaces - not included in the map will be restored into namespaces of the - same name. + metadata: + properties: + labels: + additionalProperties: + type: string + type: object type: object orLabelSelectors: - description: OrLabelSelectors is list of metav1.LabelSelector to - filter with when restoring individual objects from the backup. - If multiple provided they will be joined by the OR operator. LabelSelector - as well as OrLabelSelectors cannot co-exist in restore request, - only one of them can be used + description: OrLabelSelectors is list of metav1.LabelSelector + to filter with when adding individual objects to the backup. + If multiple provided they will be joined by the OR operator. + LabelSelector as well as OrLabelSelectors cannot co-exist + in backup request, only one of them can be used. items: - description: A label selector is a label query over a set of resources. - The result of matchLabels and matchExpressions are ANDed. An - empty label selector matches all objects. A null label selector - matches no objects. + description: A label selector is a label query over a set + of resources. The result of matchLabels and matchExpressions + are ANDed. An empty label selector matches all objects. + A null label selector matches no objects. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: A label selector requirement is a selector - that contains values, a key, and an operator that relates - the key and values. + that contains values, a key, and an operator that + relates the key and values. properties: key: description: key is the label key that the selector @@ -1689,797 +2364,285 @@ items: Exists and DoesNotExist. type: string values: - description: values is an array of string values. If - the operator is In or NotIn, the values array must - be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced - during a strategic merge patch. + description: values is an array of string values. + If the operator is In or NotIn, the values array + must be non-empty. If the operator is Exists or + DoesNotExist, the values array must be empty. + This array is replaced during a strategic merge + patch. items: type: string type: array required: - - key - - operator + - key + - operator type: object type: array matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. A - single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is "key", - the operator is "In", and the values array contains only - "value". The requirements are ANDed. + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field is + "key", the operator is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object nullable: true type: array - preserveNodePorts: - description: PreserveNodePorts specifies whether to restore old - nodePorts from backup. - nullable: true - type: boolean - restorePVs: - description: RestorePVs specifies whether to restore all included - PVs from snapshot (via the cloudprovider). - nullable: true - type: boolean - restoreStatus: - description: RestoreStatus specifies which resources we should restore - the status field. If nil, no objects are included. Optional. - nullable: true - properties: - excludedResources: - description: ExcludedResources specifies the resources to which - will not restore the status. - items: - type: string - nullable: true - type: array - includedResources: - description: IncludedResources specifies the resources to which - will restore the status. If empty, it applies to all resources. - items: - type: string - nullable: true - type: array - type: object - scheduleName: - description: ScheduleName is the unique name of the Velero schedule - to restore from. If specified, and BackupName is empty, Velero - will restore from the most recent successful backup created from - this schedule. - type: string - required: - - backupName - type: object - status: - description: RestoreStatus captures the current status of a Velero restore - properties: - completionTimestamp: - description: CompletionTimestamp records the time the restore operation - was completed. Completion time is recorded even on failed restore. - The server's time is used for StartTimestamps - format: date-time - nullable: true - type: string - errors: - description: Errors is a count of all error messages that were generated - during execution of the restore. The actual errors are stored - in object storage. - type: integer - failureReason: - description: FailureReason is an error that caused the entire restore - to fail. - type: string - phase: - description: Phase is the current state of the Restore - enum: - - New - - FailedValidation - - InProgress - - Completed - - PartiallyFailed - - Failed - type: string - progress: - description: Progress contains information about the restore's execution - progress. Note that this information is best-effort only -- if - Velero fails to update it during a restore for any reason, it - may be inaccurate/stale. - nullable: true - properties: - itemsRestored: - description: ItemsRestored is the number of items that have - actually been restored so far - type: integer - totalItems: - description: TotalItems is the total number of items to be restored. - This number may change throughout the execution of the restore - due to plugins that return additional related items to restore - type: integer - type: object - startTimestamp: - description: StartTimestamp records the time the restore operation - was started. The server's time is used for StartTimestamps - format: date-time - nullable: true - type: string - validationErrors: - description: ValidationErrors is a slice of all validation errors - (if applicable) - items: + orderedResources: + additionalProperties: type: string + description: OrderedResources specifies the backup order of + resources of specific Kind. The map key is the resource name + and value is a list of object names separated by commas. Each + resource name has format "namespace/objectname". For cluster + resources, simply use "objectname". nullable: true - type: array - warnings: - description: Warnings is a count of all warning messages that were - generated during execution of the restore. The actual warnings - are stored in object storage. - type: integer - type: object - type: object - served: true - storage: true - - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - labels: - component: velero - name: schedules.velero.io - spec: - group: velero.io - names: - kind: Schedule - listKind: ScheduleList - plural: schedules - singular: schedule - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Status of the schedule - jsonPath: .status.phase - name: Status - type: string - - description: A Cron expression defining when to run the Backup - jsonPath: .spec.schedule - name: Schedule - type: string - - description: The last time a Backup was run for this schedule - jsonPath: .status.lastBackup - name: LastBackup - type: date - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - - jsonPath: .spec.paused - name: Paused - type: boolean - name: v1 - schema: - openAPIV3Schema: - description: Schedule is a Velero resource that represents a pre-scheduled - or periodic Backup that should be run. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ScheduleSpec defines the specification for a Velero schedule - properties: - paused: - description: Paused specifies whether the schedule is paused or - not - type: boolean - schedule: - description: Schedule is a Cron expression defining when to run - the Backup. - type: string - template: - description: Template is the definition of the Backup to be run - on the provided schedule + type: object + resourcePolicy: + description: ResourcePolicy specifies the referenced resource + policies that backup should follow properties: - csiSnapshotTimeout: - description: CSISnapshotTimeout specifies the time used to wait - for CSI VolumeSnapshot status turns to ReadyToUse during creation, - before returning error as timeout. The default value is 10 - minute. + apiGroup: + description: APIGroup is the group for the resource being + referenced. If APIGroup is not specified, the specified + Kind must be in the core API group. For any other third-party + types, APIGroup is required. type: string - defaultVolumesToFsBackup: - description: DefaultVolumesToFsBackup specifies whether pod - volume file system backup should be used for all volumes by - default. - nullable: true - type: boolean - defaultVolumesToRestic: - description: "DefaultVolumesToRestic specifies whether restic - should be used to take a backup of all pod volumes by default. - \n Deprecated: this field is no longer used and will be removed - entirely in future. Use DefaultVolumesToFsBackup instead." - nullable: true - type: boolean - excludedNamespaces: - description: ExcludedNamespaces contains a list of namespaces - that are not included in the backup. - items: - type: string - nullable: true - type: array - excludedResources: - description: ExcludedResources is a slice of resource names - that are not included in the backup. - items: - type: string - nullable: true - type: array - hooks: - description: Hooks represent custom behaviors that should be - executed at different phases of the backup. - properties: - resources: - description: Resources are hooks that should be executed - when backing up individual instances of a resource. - items: - description: BackupResourceHookSpec defines one or more - BackupResourceHooks that should be executed based on - the rules defined for namespaces, resources, and label - selector. - properties: - excludedNamespaces: - description: ExcludedNamespaces specifies the namespaces - to which this hook spec does not apply. - items: - type: string - nullable: true - type: array - excludedResources: - description: ExcludedResources specifies the resources - to which this hook spec does not apply. - items: - type: string - nullable: true - type: array - includedNamespaces: - description: IncludedNamespaces specifies the namespaces - to which this hook spec applies. If empty, it applies - to all namespaces. - items: - type: string - nullable: true - type: array - includedResources: - description: IncludedResources specifies the resources - to which this hook spec applies. If empty, it applies - to all resources. - items: - type: string - nullable: true - type: array - labelSelector: - description: LabelSelector, if specified, filters - the resources to which this hook spec applies. - nullable: true - properties: - matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. - items: - description: A label selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. - properties: - key: - description: key is the label key that the - selector applies to. - type: string - operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. - type: string - values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. This array - is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. - type: object - type: object - name: - description: Name is the name of this hook. - type: string - post: - description: PostHooks is a list of BackupResourceHooks - to execute after storing the item in the backup. - These are executed after all "additional items" - from item actions are processed. - items: - description: BackupResourceHook defines a hook for - a resource. - properties: - exec: - description: Exec defines an exec hook. - properties: - command: - description: Command is the command and - arguments to execute. - items: - type: string - minItems: 1 - type: array - container: - description: Container is the container - in the pod where the command should be - executed. If not specified, the pod's - first container is used. - type: string - onError: - description: OnError specifies how Velero - should behave if it encounters an error - executing this hook. - enum: - - Continue - - Fail - type: string - timeout: - description: Timeout defines the maximum - amount of time Velero should wait for - the hook to complete before considering - the execution a failure. - type: string - required: - - command - type: object - required: - - exec - type: object - type: array - pre: - description: PreHooks is a list of BackupResourceHooks - to execute prior to storing the item in the backup. - These are executed before any "additional items" - from item actions are processed. - items: - description: BackupResourceHook defines a hook for - a resource. - properties: - exec: - description: Exec defines an exec hook. - properties: - command: - description: Command is the command and - arguments to execute. - items: - type: string - minItems: 1 - type: array - container: - description: Container is the container - in the pod where the command should be - executed. If not specified, the pod's - first container is used. - type: string - onError: - description: OnError specifies how Velero - should behave if it encounters an error - executing this hook. - enum: - - Continue - - Fail - type: string - timeout: - description: Timeout defines the maximum - amount of time Velero should wait for - the hook to complete before considering - the execution a failure. - type: string - required: - - command - type: object - required: - - exec - type: object - type: array - required: - - name - type: object - nullable: true - type: array - type: object - includeClusterResources: - description: IncludeClusterResources specifies whether cluster-scoped - resources should be included for consideration in the backup. - nullable: true - type: boolean - includedNamespaces: - description: IncludedNamespaces is a slice of namespace names - to include objects from. If empty, all namespaces are included. - items: - type: string - nullable: true - type: array - includedResources: - description: IncludedResources is a slice of resource names - to include in the backup. If empty, all resources are included. - items: - type: string - nullable: true - type: array - labelSelector: - description: LabelSelector is a metav1.LabelSelector to filter - with when adding individual objects to the backup. If empty - or nil, all objects are included. Optional. - nullable: true - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that relates - the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, - Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists or - DoesNotExist, the values array must be empty. This - array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - metadata: - properties: - labels: - additionalProperties: - type: string - type: object - type: object - orLabelSelectors: - description: OrLabelSelectors is list of metav1.LabelSelector - to filter with when adding individual objects to the backup. - If multiple provided they will be joined by the OR operator. - LabelSelector as well as OrLabelSelectors cannot co-exist - in backup request, only one of them can be used. - items: - description: A label selector is a label query over a set - of resources. The result of matchLabels and matchExpressions - are ANDed. An empty label selector matches all objects. - A null label selector matches no objects. - properties: - matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. - items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: key is the label key that the selector - applies to. - type: string - operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, - Exists and DoesNotExist. - type: string - values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists or - DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. - type: object - type: object - nullable: true - type: array - orderedResources: - additionalProperties: - type: string - description: OrderedResources specifies the backup order of - resources of specific Kind. The map key is the resource name - and value is a list of object names separated by commas. Each - resource name has format "namespace/objectname". For cluster - resources, simply use "objectname". - nullable: true - type: object - snapshotVolumes: - description: SnapshotVolumes specifies whether to take cloud - snapshots of any PV's referenced in the set of objects included - in the Backup. - nullable: true - type: boolean - storageLocation: - description: StorageLocation is a string containing the name - of a BackupStorageLocation where the backup should be stored. + kind: + description: Kind is the type of resource being referenced type: string - ttl: - description: TTL is a time.Duration-parseable string describing - how long the Backup should be retained for. + name: + description: Name is the name of resource being referenced type: string - volumeSnapshotLocations: - description: VolumeSnapshotLocations is a list containing names - of VolumeSnapshotLocations associated with this backup. - items: - type: string - type: array + required: + - kind + - name type: object - useOwnerReferencesInBackup: - description: UseOwnerReferencesBackup specifies whether to use OwnerReferences - on backups created by this Schedule. + snapshotVolumes: + description: SnapshotVolumes specifies whether to take snapshots + of any PV's referenced in the set of objects included in the + Backup. nullable: true type: boolean - required: - - schedule - - template - type: object - status: - description: ScheduleStatus captures the current state of a Velero schedule - properties: - lastBackup: - description: LastBackup is the last time a Backup was run for this - Schedule schedule - format: date-time - nullable: true + storageLocation: + description: StorageLocation is a string containing the name + of a BackupStorageLocation where the backup should be stored. type: string - phase: - description: Phase is the current phase of the Schedule - enum: - - New - - Enabled - - FailedValidation + ttl: + description: TTL is a time.Duration-parseable string describing + how long the Backup should be retained for. type: string - validationErrors: - description: ValidationErrors is a slice of all validation errors - (if applicable) + volumeSnapshotLocations: + description: VolumeSnapshotLocations is a list containing names + of VolumeSnapshotLocations associated with this backup. items: type: string type: array type: object + useOwnerReferencesInBackup: + description: UseOwnerReferencesBackup specifies whether to use OwnerReferences + on backups created by this Schedule. + nullable: true + type: boolean + required: + - schedule + - template type: object - served: true - storage: true - subresources: {} - - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - labels: - component: velero - name: serverstatusrequests.velero.io - spec: - group: velero.io - names: - kind: ServerStatusRequest - listKind: ServerStatusRequestList - plural: serverstatusrequests - shortNames: - - ssr - singular: serverstatusrequest - scope: Namespaced - versions: - - name: v1 - schema: - openAPIV3Schema: - description: ServerStatusRequest is a request to access current status information - about the Velero server. + status: + description: ScheduleStatus captures the current state of a Velero schedule properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation + lastBackup: + description: LastBackup is the last time a Backup was run for this + Schedule schedule + format: date-time + nullable: true + type: string + phase: + description: Phase is the current phase of the Schedule + enum: + - New + - Enabled + - FailedValidation + type: string + validationErrors: + description: ValidationErrors is a slice of all validation errors + (if applicable) + items: + type: string + type: array + type: object + type: object + served: true + storage: true + subresources: {} +- apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.7.0 + creationTimestamp: null + labels: + component: velero + name: serverstatusrequests.velero.io + spec: + group: velero.io + names: + kind: ServerStatusRequest + listKind: ServerStatusRequestList + plural: serverstatusrequests + shortNames: + - ssr + singular: serverstatusrequest + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: ServerStatusRequest is a request to access current status information + about the Velero server. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: ServerStatusRequestSpec is the specification for a ServerStatusRequest. - type: object - status: - description: ServerStatusRequestStatus is the current status of a ServerStatusRequest. - properties: - phase: - description: Phase is the current lifecycle phase of the ServerStatusRequest. - enum: - - New - - Processed - type: string - plugins: - description: Plugins list information about the plugins running - on the Velero server - items: - description: PluginInfo contains attributes of a Velero plugin - properties: - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - nullable: true - type: array - processedTimestamp: - description: ProcessedTimestamp is when the ServerStatusRequest - was processed by the ServerStatusRequestController. - format: date-time - nullable: true - type: string - serverVersion: - description: ServerVersion is the Velero server version. - type: string - type: object + type: string + metadata: type: object - served: true - storage: true - - apiVersion: apiextensions.k8s.io/v1 - kind: CustomResourceDefinition - metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - labels: - component: velero - name: volumesnapshotlocations.velero.io - spec: - group: velero.io - names: - kind: VolumeSnapshotLocation - listKind: VolumeSnapshotLocationList - plural: volumesnapshotlocations - shortNames: - - vsl - singular: volumesnapshotlocation - scope: Namespaced - versions: - - name: v1 - schema: - openAPIV3Schema: - description: VolumeSnapshotLocation is a location where Velero stores volume - snapshots. + spec: + description: ServerStatusRequestSpec is the specification for a ServerStatusRequest. + type: object + status: + description: ServerStatusRequestStatus is the current status of a ServerStatusRequest. properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation + phase: + description: Phase is the current lifecycle phase of the ServerStatusRequest. + enum: + - New + - Processed + type: string + plugins: + description: Plugins list information about the plugins running + on the Velero server + items: + description: PluginInfo contains attributes of a Velero plugin + properties: + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + nullable: true + type: array + processedTimestamp: + description: ProcessedTimestamp is when the ServerStatusRequest + was processed by the ServerStatusRequestController. + format: date-time + nullable: true + type: string + serverVersion: + description: ServerVersion is the Velero server version. + type: string + type: object + type: object + served: true + storage: true +- apiVersion: apiextensions.k8s.io/v1 + kind: CustomResourceDefinition + metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.7.0 + creationTimestamp: null + labels: + component: velero + name: volumesnapshotlocations.velero.io + spec: + group: velero.io + names: + kind: VolumeSnapshotLocation + listKind: VolumeSnapshotLocationList + plural: volumesnapshotlocations + shortNames: + - vsl + singular: volumesnapshotlocation + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: VolumeSnapshotLocation is a location where Velero stores volume + snapshots. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: + type: string + metadata: + type: object + spec: + description: VolumeSnapshotLocationSpec defines the specification for + a Velero VolumeSnapshotLocation. + properties: + config: + additionalProperties: + type: string + description: Config is for provider-specific configuration fields. type: object - spec: - description: VolumeSnapshotLocationSpec defines the specification for - a Velero VolumeSnapshotLocation. + credential: + description: Credential contains the credential information intended + to be used with this location properties: - config: - additionalProperties: - type: string - description: Config is for provider-specific configuration fields. - type: object - credential: - description: Credential contains the credential information intended - to be used with this location - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + key: + description: The key of the secret to select from. Must be + a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - provider: - description: Provider is the provider of the volume storage. type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean required: - - provider + - key type: object - status: - description: VolumeSnapshotLocationStatus describes the current status + provider: + description: Provider is the provider of the volume storage. + type: string + required: + - provider + type: object + status: + description: VolumeSnapshotLocationStatus describes the current status + of a Velero VolumeSnapshotLocation. + properties: + phase: + description: VolumeSnapshotLocationPhase is the lifecycle phase of a Velero VolumeSnapshotLocation. - properties: - phase: - description: VolumeSnapshotLocationPhase is the lifecycle phase - of a Velero VolumeSnapshotLocation. - enum: - - Available - - Unavailable - type: string - type: object + enum: + - Available + - Unavailable + type: string type: object - served: true - storage: true + type: object + served: true + storage: true kind: List diff --git a/katalog/velero/velero-gcp/README.md b/katalog/velero/velero-gcp/README.md index 69f4e6d..0e31569 100644 --- a/katalog/velero/velero-gcp/README.md +++ b/katalog/velero/velero-gcp/README.md @@ -1,11 +1,11 @@ # Velero GCP This Velero deployment is ready to be deployed in any GCP cluster as it includes the -[GCP Velero plugin](https://github.com/vmware-tanzu/velero-plugin-for-gcp/tree/v1.6.1). +[GCP Velero plugin](https://github.com/vmware-tanzu/velero-plugin-for-gcp/tree/v1.7.0). ## Image repository and tag -- Velero GCP Plugin image: `velero/velero-plugin-for-gcp:v1.6.1` +- Velero GCP Plugin image: `velero/velero-plugin-for-gcp:v1.7.0` - Velero GCP Plugin repository: [https://github.com/vmware-tanzu/velero-plugin-for-gcp](https://github.com/vmware-tanzu/velero-plugin-for-gcp). diff --git a/katalog/velero/velero-gcp/kustomization.yaml b/katalog/velero/velero-gcp/kustomization.yaml index ea06d53..2f791ee 100644 --- a/katalog/velero/velero-gcp/kustomization.yaml +++ b/katalog/velero/velero-gcp/kustomization.yaml @@ -13,10 +13,10 @@ resources: images: - name: velero/velero-plugin-for-gcp newName: registry.sighup.io/fury/velero/velero-plugin-for-gcp - newTag: v1.6.1 + newTag: v1.7.0 - name: velero/velero-plugin-for-csi newName: registry.sighup.io/fury/velero/velero-plugin-for-csi - newTag: v0.4.1 + newTag: v0.5.0 patchesStrategicMerge: - plugin-patch.yaml diff --git a/katalog/velero/velero-on-prem/README.md b/katalog/velero/velero-on-prem/README.md index 6428a64..fe806cd 100644 --- a/katalog/velero/velero-on-prem/README.md +++ b/katalog/velero/velero-on-prem/README.md @@ -1,15 +1,15 @@ # Velero on Premises This Velero deployment is ready to be deployed in any Kubernetes cluster as it includes a MinIO instance compatible with -the [AWS Velero plugin](https://github.com/vmware-tanzu/velero-plugin-for-aws/tree/v1.6.1). +the [AWS Velero plugin](https://github.com/vmware-tanzu/velero-plugin-for-aws/tree/v1.7.0). ## Image repository and tag -- Velero AWS Plugin image: `velero/velero-plugin-for-aws:v1.6.1` +- Velero AWS Plugin image: `velero/velero-plugin-for-aws:v1.7.0` - Velero AWS Plugin repository: [https://github.com/vmware-tanzu/velero-plugin-for-aws](https://github.com/vmware-tanzu/velero-plugin-for-aws). -- MinIO image: `minio/minio:RELEASE.2021-05-26T00-22-46Z` -- MinIO client image: `minio/mc:RELEASE.2021-05-18T03-39-44Z` +- MinIO image: `minio/minio:RELEASE.2023-01-31T02-24-19Z` +- MinIO client image: `minio/mc:RELEASE.2023-01-28T20-29-38Z` - MinIO repository: [https://github.com/minio/minio](https://github.com/minio/minio) diff --git a/katalog/velero/velero-on-prem/kustomization.yaml b/katalog/velero/velero-on-prem/kustomization.yaml index 5ec7bf0..0d29145 100644 --- a/katalog/velero/velero-on-prem/kustomization.yaml +++ b/katalog/velero/velero-on-prem/kustomization.yaml @@ -14,10 +14,10 @@ configurations: images: - name: velero/velero-plugin-for-aws newName: registry.sighup.io/fury/velero/velero-plugin-for-aws - newTag: v1.6.1 + newTag: v1.7.0 - name: groundnuty/k8s-wait-for newName: registry.sighup.io/fury/groundnuty/k8s-wait-for - newTag: v1.7 + newTag: v2.0 patchesStrategicMerge: diff --git a/katalog/velero/velero-on-prem/minio/kustomization.yaml b/katalog/velero/velero-on-prem/minio/kustomization.yaml index d649f9d..8988011 100644 --- a/katalog/velero/velero-on-prem/minio/kustomization.yaml +++ b/katalog/velero/velero-on-prem/minio/kustomization.yaml @@ -47,13 +47,13 @@ vars: images: - name: minio/minio newName: registry.sighup.io/fury/minio - newTag: RELEASE.2021-05-26T00-22-46Z + newTag: RELEASE.2023-01-31T02-24-19Z - name: minio/mc newName: registry.sighup.io/fury/minio/mc - newTag: RELEASE.2021-05-18T03-39-44Z + newTag: RELEASE.2023-01-28T20-29-38Z - name: groundnuty/k8s-wait-for newName: registry.sighup.io/fury/groundnuty/k8s-wait-for - newTag: v1.7 + newTag: v2.0 generatorOptions: disableNameSuffixHash: true diff --git a/katalog/velero/velero-restic/kustomization.yaml b/katalog/velero/velero-restic/kustomization.yaml index e9cc57d..b6f590e 100644 --- a/katalog/velero/velero-restic/kustomization.yaml +++ b/katalog/velero/velero-restic/kustomization.yaml @@ -11,7 +11,7 @@ namespace: kube-system images: - name: velero/velero newName: registry.sighup.io/fury/velero/velero - newTag: v1.10.1 + newTag: v1.11.0 resources: - daemonset.yml From 486d94f5f81639caac08bf04185326c0114f689d Mon Sep 17 00:00:00 2001 From: Simone Bruzzese <79833334+sbruzzese902@users.noreply.github.com> Date: Thu, 1 Jun 2023 11:31:04 +0200 Subject: [PATCH 10/25] Change master reference to main Co-authored-by: Samuele Chiocca --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 04cd8a7..bd77135 100644 --- a/README.md +++ b/README.md @@ -332,9 +332,9 @@ kustomize build . | kubectl apply -f - [velero-aws-plugin-repo]: https://github.com/vmware-tanzu/velero-plugin-for-aws [velero-azure-plugin-repo]: https://github.com/vmware-tanzu/velero-plugin-for-microsoft-azure [velero-gcp-plugin-repo-permissions]: https://github.com/vmware-tanzu/velero-plugin-for-gcp#set-permissions-for-velero -[kfd-velero-gcp-example]: https://github.com/sighupio/fury-kubernetes-dr/tree/master/examples/gcp-examples/main.tf -[kfd-velero-aws-example]: https://github.com/sighupio/fury-kubernetes-dr/tree/master/examples/aws-examples/main.tf -[kfd-velero-azure-example]: https://github.com/sighupio/fury-kubernetes-dr/tree/master/examples/azure-examples/main.tf +[kfd-velero-gcp-example]: https://github.com/sighupio/fury-kubernetes-dr/tree/main/examples/gcp-examples/main.tf +[kfd-velero-aws-example]: https://github.com/sighupio/fury-kubernetes-dr/tree/main/examples/aws-examples/main.tf +[kfd-velero-azure-example]: https://github.com/sighupio/fury-kubernetes-dr/tree/main/examples/azure-examples/main.tf [kfd-velero-on-prem]: https://github.com/sighupio/fury-kubernetes-dr/tree/master/katalog/velero/velero-on-prem [aws-docs-iam-roles]: https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html [kfd-docs]: https://docs.kubernetesfury.com/docs/distribution/ From a1832b197d4ecd0087d719304350a3fc20c648b7 Mon Sep 17 00:00:00 2001 From: Simone Bruzzese <79833334+sbruzzese902@users.noreply.github.com> Date: Thu, 1 Jun 2023 11:31:11 +0200 Subject: [PATCH 11/25] Change master reference to main Co-authored-by: Samuele Chiocca --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bd77135..e4731bf 100644 --- a/README.md +++ b/README.md @@ -335,7 +335,7 @@ kustomize build . | kubectl apply -f - [kfd-velero-gcp-example]: https://github.com/sighupio/fury-kubernetes-dr/tree/main/examples/gcp-examples/main.tf [kfd-velero-aws-example]: https://github.com/sighupio/fury-kubernetes-dr/tree/main/examples/aws-examples/main.tf [kfd-velero-azure-example]: https://github.com/sighupio/fury-kubernetes-dr/tree/main/examples/azure-examples/main.tf -[kfd-velero-on-prem]: https://github.com/sighupio/fury-kubernetes-dr/tree/master/katalog/velero/velero-on-prem +[kfd-velero-on-prem]: https://github.com/sighupio/fury-kubernetes-dr/tree/main/katalog/velero/velero-on-prem [aws-docs-iam-roles]: https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html [kfd-docs]: https://docs.kubernetesfury.com/docs/distribution/ [compatibility-matrix]: https://github.com/sighupio/fury-kubernetes-dr/blob/master/docs/COMPATIBILITY_MATRIX.md From 0b186a6726ee1ca70293ca7672bfeee5e4f578bd Mon Sep 17 00:00:00 2001 From: Simone Bruzzese Date: Thu, 1 Jun 2023 11:46:54 +0200 Subject: [PATCH 12/25] Update release note 1.12.0 --- docs/releases/v1.12.0.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/releases/v1.12.0.md b/docs/releases/v1.12.0.md index 641d10e..cad05fe 100644 --- a/docs/releases/v1.12.0.md +++ b/docs/releases/v1.12.0.md @@ -26,6 +26,8 @@ This latest release upgrades the components in the module to its latest stable r ### Process +#### Kustomize + To upgrade this core module from `v1.11.x` to `v1.12.0`, you need to download this new version, then apply the `kustomize` project. ```bash @@ -41,4 +43,13 @@ kustomize build katalog/velero-azure | kubectl apply -f - kustomize build katalog/velero-restic | kubectl apply -f - ``` -For additional info you can have a look [here](https://velero.io/docs/v1.11/upgrade-to-1.11/) \ No newline at end of file +For additional info you can have a look [here](https://velero.io/docs/v1.11/upgrade-to-1.11/) + +#### Terraform + +To upgrade the terraform module from `v1.11.x` to `v1.12.0` you need to upgrade terraform to `v1.3.0` at least. +Then you have to launch the following command to update the reference in your terraform project: + +```bash +terraform init -upgrade +``` \ No newline at end of file From dd4210d06d036065769a9177fd22c1051cdba5fd Mon Sep 17 00:00:00 2001 From: Simone Bruzzese Date: Thu, 1 Jun 2023 12:00:34 +0200 Subject: [PATCH 13/25] Update drone CI --- .drone.yml | 266 ++++++++++++++++++++++++++--------------------------- 1 file changed, 133 insertions(+), 133 deletions(-) diff --git a/.drone.yml b/.drone.yml index 521a7fa..0ff0626 100644 --- a/.drone.yml +++ b/.drone.yml @@ -60,7 +60,7 @@ steps: - /pluto detect velero.yml --target-versions=k8s=v1.25.0 --ignore-deprecations --- -name: e2e-kubernetes-1.22 +name: e2e-kubernetes-1.23 kind: pipeline type: docker @@ -91,8 +91,8 @@ steps: path: /shared depends_on: [ clone ] settings: - action: cluster-122 - pipeline_id: cluster-122 + action: cluster-123 + pipeline_id: cluster-123 instance_path: /shared aws_default_region: from_secret: aws_region @@ -114,25 +114,25 @@ steps: from_secret: dockerhub_password - name: test-install - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.22.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 pull: always volumes: - name: shared path: /shared depends_on: [ init ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-122 + - export KUBECONFIG=/shared/kube/kubeconfig-123 - bats -t katalog/tests/velero/velero-install.sh - name: test-backup-restore - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.22.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 pull: always volumes: - name: shared path: /shared depends_on: [ test-install ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-122 + - export KUBECONFIG=/shared/kube/kubeconfig-123 - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero @@ -140,14 +140,14 @@ steps: - bats -t katalog/tests/velero/velero-backup-with-restic-test.sh - name: init-aws - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore ] environment: - CI_PIPELINE_NUMBER: dr-122-aws + CI_PIPELINE_NUMBER: dr-123-aws AWS_DEFAULT_REGION: from_secret: aws_region AWS_ACCESS_KEY_ID: @@ -171,14 +171,14 @@ steps: - terraform output -raw backup_storage_location > /shared/backup_storage_location.yaml - name: apply-aws-configuration - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.22.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 pull: always volumes: - name: shared path: /shared depends_on: [ init-aws ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-122 + - export KUBECONFIG=/shared/kube/kubeconfig-123 - kubectl apply -f /shared/cloud_credentials.yaml -n kube-system - kubectl apply -f /shared/backup_storage_location.yaml -n kube-system - kubectl rollout restart deploy velero -n kube-system @@ -186,28 +186,28 @@ steps: - kubectl get pods -n kube-system - name: test-backup-restore-aws - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.22.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 pull: always volumes: - name: shared path: /shared depends_on: [ apply-aws-configuration ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-122 + - export KUBECONFIG=/shared/kube/kubeconfig-123 - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-aws - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore-aws ] environment: - CI_PIPELINE_NUMBER: dr-122-aws + CI_PIPELINE_NUMBER: dr-123-aws AWS_DEFAULT_REGION: from_secret: aws_region AWS_ACCESS_KEY_ID: @@ -232,7 +232,7 @@ steps: - failure - name: init-gcp - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared @@ -244,7 +244,7 @@ steps: GCP_CREDENTIALS: from_secret: gcp_credentials GCP_CREDENTIALS_PATH: /shared/terraform-credentials.json - CI_PIPELINE_NUMBER: dr-122-gcp + CI_PIPELINE_NUMBER: dr-123-gcp TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: @@ -264,14 +264,14 @@ steps: - terraform output -raw backup_storage_location > /shared/backup_storage_location.yaml - name: apply-gcp-configuration - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.22.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 pull: always volumes: - name: shared path: /shared depends_on: [ init-gcp ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-122 + - export KUBECONFIG=/shared/kube/kubeconfig-123 - kubectl apply -f /shared/cloud_credentials.yaml -n kube-system - kubectl apply -f /shared/backup_storage_location.yaml -n kube-system - kustomize build katalog/velero/velero-gcp | kubectl apply -f - -n kube-system @@ -280,21 +280,21 @@ steps: - kubectl get pods -n kube-system - name: test-backup-restore-gcp - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.22.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 pull: always volumes: - name: shared path: /shared depends_on: [ apply-gcp-configuration ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-122 + - export KUBECONFIG=/shared/kube/kubeconfig-123 - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-gcp - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared @@ -306,7 +306,7 @@ steps: GCP_CREDENTIALS: from_secret: gcp_credentials GCP_CREDENTIALS_PATH: /shared/terraform-credentials.json - CI_PIPELINE_NUMBER: dr-122-gcp + CI_PIPELINE_NUMBER: dr-123-gcp TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: @@ -327,14 +327,14 @@ steps: - failure - name: init-azure - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore-gcp ] environment: - CI_PIPELINE_NUMBER: k122a + CI_PIPELINE_NUMBER: k123a TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name STORAGE_ACCOUNT_NAME: @@ -365,14 +365,14 @@ steps: - terraform output -raw backup_storage_location > /shared/backup_storage_location.yaml - name: apply-azure-configuration - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.22.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 pull: always volumes: - name: shared path: /shared depends_on: [ init-azure ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-122 + - export KUBECONFIG=/shared/kube/kubeconfig-123 - kubectl apply -f /shared/cloud_credentials.yaml -n kube-system - kubectl apply -f /shared/backup_storage_location.yaml -n kube-system - kustomize build katalog/velero/velero-azure | kubectl apply -f - -n kube-system @@ -381,28 +381,28 @@ steps: - kubectl get pods -n kube-system - name: test-backup-restore-azure - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.22.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 pull: always volumes: - name: shared path: /shared depends_on: [ apply-azure-configuration ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-122 + - export KUBECONFIG=/shared/kube/kubeconfig-123 - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-azure - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore-azure ] environment: - CI_PIPELINE_NUMBER: k122a + CI_PIPELINE_NUMBER: k123a TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name STORAGE_ACCOUNT_NAME: @@ -439,7 +439,7 @@ steps: depends_on: [ test-backup-restore-azure ] settings: action: destroy - pipeline_id: cluster-122 + pipeline_id: cluster-123 aws_default_region: from_secret: aws_region aws_access_key_id: @@ -468,7 +468,7 @@ volumes: temp: {} --- -name: e2e-kubernetes-1.23 +name: e2e-kubernetes-1.24 kind: pipeline type: docker @@ -499,8 +499,8 @@ steps: path: /shared depends_on: [ clone ] settings: - action: cluster-123 - pipeline_id: cluster-123 + action: cluster-124 + pipeline_id: cluster-124 instance_path: /shared aws_default_region: from_secret: aws_region @@ -522,25 +522,25 @@ steps: from_secret: dockerhub_password - name: test-install - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ init ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-123 + - export KUBECONFIG=/shared/kube/kubeconfig-124 - bats -t katalog/tests/velero/velero-install.sh - name: test-backup-restore - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ test-install ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-123 + - export KUBECONFIG=/shared/kube/kubeconfig-124 - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero @@ -548,14 +548,14 @@ steps: - bats -t katalog/tests/velero/velero-backup-with-restic-test.sh - name: init-aws - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore ] environment: - CI_PIPELINE_NUMBER: dr-123-aws + CI_PIPELINE_NUMBER: dr-124-aws AWS_DEFAULT_REGION: from_secret: aws_region AWS_ACCESS_KEY_ID: @@ -579,14 +579,14 @@ steps: - terraform output -raw backup_storage_location > /shared/backup_storage_location.yaml - name: apply-aws-configuration - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ init-aws ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-123 + - export KUBECONFIG=/shared/kube/kubeconfig-124 - kubectl apply -f /shared/cloud_credentials.yaml -n kube-system - kubectl apply -f /shared/backup_storage_location.yaml -n kube-system - kubectl rollout restart deploy velero -n kube-system @@ -594,28 +594,28 @@ steps: - kubectl get pods -n kube-system - name: test-backup-restore-aws - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ apply-aws-configuration ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-123 + - export KUBECONFIG=/shared/kube/kubeconfig-124 - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-aws - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore-aws ] environment: - CI_PIPELINE_NUMBER: dr-123-aws + CI_PIPELINE_NUMBER: dr-124-aws AWS_DEFAULT_REGION: from_secret: aws_region AWS_ACCESS_KEY_ID: @@ -640,7 +640,7 @@ steps: - failure - name: init-gcp - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared @@ -652,7 +652,7 @@ steps: GCP_CREDENTIALS: from_secret: gcp_credentials GCP_CREDENTIALS_PATH: /shared/terraform-credentials.json - CI_PIPELINE_NUMBER: dr-123-gcp + CI_PIPELINE_NUMBER: dr-124-gcp TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: @@ -672,14 +672,14 @@ steps: - terraform output -raw backup_storage_location > /shared/backup_storage_location.yaml - name: apply-gcp-configuration - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ init-gcp ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-123 + - export KUBECONFIG=/shared/kube/kubeconfig-124 - kubectl apply -f /shared/cloud_credentials.yaml -n kube-system - kubectl apply -f /shared/backup_storage_location.yaml -n kube-system - kustomize build katalog/velero/velero-gcp | kubectl apply -f - -n kube-system @@ -688,21 +688,21 @@ steps: - kubectl get pods -n kube-system - name: test-backup-restore-gcp - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ apply-gcp-configuration ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-123 + - export KUBECONFIG=/shared/kube/kubeconfig-124 - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-gcp - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared @@ -714,7 +714,7 @@ steps: GCP_CREDENTIALS: from_secret: gcp_credentials GCP_CREDENTIALS_PATH: /shared/terraform-credentials.json - CI_PIPELINE_NUMBER: dr-123-gcp + CI_PIPELINE_NUMBER: dr-124-gcp TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: @@ -735,14 +735,14 @@ steps: - failure - name: init-azure - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore-gcp ] environment: - CI_PIPELINE_NUMBER: k123a + CI_PIPELINE_NUMBER: k124a TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name STORAGE_ACCOUNT_NAME: @@ -773,14 +773,14 @@ steps: - terraform output -raw backup_storage_location > /shared/backup_storage_location.yaml - name: apply-azure-configuration - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ init-azure ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-123 + - export KUBECONFIG=/shared/kube/kubeconfig-124 - kubectl apply -f /shared/cloud_credentials.yaml -n kube-system - kubectl apply -f /shared/backup_storage_location.yaml -n kube-system - kustomize build katalog/velero/velero-azure | kubectl apply -f - -n kube-system @@ -789,28 +789,28 @@ steps: - kubectl get pods -n kube-system - name: test-backup-restore-azure - image: quay.io/sighup/e2e-testing:1.1.0_0.2.2_2.16.1_1.9.4_1.23.0_3.8.7_2.4.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ apply-azure-configuration ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-123 + - export KUBECONFIG=/shared/kube/kubeconfig-124 - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-azure - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore-azure ] environment: - CI_PIPELINE_NUMBER: k123a + CI_PIPELINE_NUMBER: k124a TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name STORAGE_ACCOUNT_NAME: @@ -847,7 +847,7 @@ steps: depends_on: [ test-backup-restore-azure ] settings: action: destroy - pipeline_id: cluster-123 + pipeline_id: cluster-124 aws_default_region: from_secret: aws_region aws_access_key_id: @@ -876,7 +876,7 @@ volumes: temp: {} --- -name: e2e-kubernetes-1.24 +name: e2e-kubernetes-1.25 kind: pipeline type: docker @@ -900,15 +900,15 @@ trigger: steps: - name: init - image: quay.io/sighup/e2e-testing-drone-plugin:v1.24.1 + image: quay.io/sighup/e2e-testing-drone-plugin:v1.25.3 pull: always volumes: - name: shared path: /shared depends_on: [ clone ] settings: - action: cluster-124 - pipeline_id: cluster-124 + action: cluster-125 + pipeline_id: cluster-125 instance_path: /shared aws_default_region: from_secret: aws_region @@ -930,25 +930,26 @@ steps: from_secret: dockerhub_password - name: test-install - image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 + # KUBECTL 1.25.3 - KUSTOMIZE 3.5.3 - HELM 3.1.1 - YQ 4.21.1 - ISTIOCTL 1.9.4 - FURYCTL 0.9.0 - BATS 1.1.0 + image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ init ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-124 + - export KUBECONFIG=/shared/kube/kubeconfig-125 - bats -t katalog/tests/velero/velero-install.sh - name: test-backup-restore - image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ test-install ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-124 + - export KUBECONFIG=/shared/kube/kubeconfig-125 - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero @@ -956,14 +957,14 @@ steps: - bats -t katalog/tests/velero/velero-backup-with-restic-test.sh - name: init-aws - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore ] environment: - CI_PIPELINE_NUMBER: dr-124-aws + CI_PIPELINE_NUMBER: dr-125-aws AWS_DEFAULT_REGION: from_secret: aws_region AWS_ACCESS_KEY_ID: @@ -987,14 +988,14 @@ steps: - terraform output -raw backup_storage_location > /shared/backup_storage_location.yaml - name: apply-aws-configuration - image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ init-aws ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-124 + - export KUBECONFIG=/shared/kube/kubeconfig-125 - kubectl apply -f /shared/cloud_credentials.yaml -n kube-system - kubectl apply -f /shared/backup_storage_location.yaml -n kube-system - kubectl rollout restart deploy velero -n kube-system @@ -1002,28 +1003,28 @@ steps: - kubectl get pods -n kube-system - name: test-backup-restore-aws - image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ apply-aws-configuration ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-124 + - export KUBECONFIG=/shared/kube/kubeconfig-125 - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-aws - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore-aws ] environment: - CI_PIPELINE_NUMBER: dr-124-aws + CI_PIPELINE_NUMBER: dr-125-aws AWS_DEFAULT_REGION: from_secret: aws_region AWS_ACCESS_KEY_ID: @@ -1048,7 +1049,7 @@ steps: - failure - name: init-gcp - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared @@ -1060,7 +1061,7 @@ steps: GCP_CREDENTIALS: from_secret: gcp_credentials GCP_CREDENTIALS_PATH: /shared/terraform-credentials.json - CI_PIPELINE_NUMBER: dr-124-gcp + CI_PIPELINE_NUMBER: dr-125-gcp TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: @@ -1080,14 +1081,14 @@ steps: - terraform output -raw backup_storage_location > /shared/backup_storage_location.yaml - name: apply-gcp-configuration - image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ init-gcp ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-124 + - export KUBECONFIG=/shared/kube/kubeconfig-125 - kubectl apply -f /shared/cloud_credentials.yaml -n kube-system - kubectl apply -f /shared/backup_storage_location.yaml -n kube-system - kustomize build katalog/velero/velero-gcp | kubectl apply -f - -n kube-system @@ -1096,21 +1097,21 @@ steps: - kubectl get pods -n kube-system - name: test-backup-restore-gcp - image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ apply-gcp-configuration ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-124 + - export KUBECONFIG=/shared/kube/kubeconfig-125 - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-gcp - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared @@ -1122,7 +1123,7 @@ steps: GCP_CREDENTIALS: from_secret: gcp_credentials GCP_CREDENTIALS_PATH: /shared/terraform-credentials.json - CI_PIPELINE_NUMBER: dr-124-gcp + CI_PIPELINE_NUMBER: dr-125-gcp TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: @@ -1143,14 +1144,14 @@ steps: - failure - name: init-azure - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore-gcp ] environment: - CI_PIPELINE_NUMBER: k124a + CI_PIPELINE_NUMBER: k125a TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name STORAGE_ACCOUNT_NAME: @@ -1181,14 +1182,14 @@ steps: - terraform output -raw backup_storage_location > /shared/backup_storage_location.yaml - name: apply-azure-configuration - image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ init-azure ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-124 + - export KUBECONFIG=/shared/kube/kubeconfig-125 - kubectl apply -f /shared/cloud_credentials.yaml -n kube-system - kubectl apply -f /shared/backup_storage_location.yaml -n kube-system - kustomize build katalog/velero/velero-azure | kubectl apply -f - -n kube-system @@ -1197,28 +1198,28 @@ steps: - kubectl get pods -n kube-system - name: test-backup-restore-azure - image: quay.io/sighup/e2e-testing:1.1.0_0.7.0_3.1.1_1.9.4_1.24.1_3.8.7_4.21.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 pull: always volumes: - name: shared path: /shared depends_on: [ apply-azure-configuration ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-124 + - export KUBECONFIG=/shared/kube/kubeconfig-125 - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-azure - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore-azure ] environment: - CI_PIPELINE_NUMBER: k124a + CI_PIPELINE_NUMBER: k125a TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name STORAGE_ACCOUNT_NAME: @@ -1255,7 +1256,7 @@ steps: depends_on: [ test-backup-restore-azure ] settings: action: destroy - pipeline_id: cluster-124 + pipeline_id: cluster-125 aws_default_region: from_secret: aws_region aws_access_key_id: @@ -1284,7 +1285,7 @@ volumes: temp: {} --- -name: e2e-kubernetes-1.25 +name: e2e-kubernetes-1.26 kind: pipeline type: docker @@ -1308,15 +1309,15 @@ trigger: steps: - name: init - image: quay.io/sighup/e2e-testing-drone-plugin:v1.25.3 + image: quay.io/sighup/e2e-testing-drone-plugin:v1.24.1 pull: always volumes: - name: shared path: /shared depends_on: [ clone ] settings: - action: cluster-125 - pipeline_id: cluster-125 + action: cluster-126 + pipeline_id: cluster-126 instance_path: /shared aws_default_region: from_secret: aws_region @@ -1338,41 +1339,40 @@ steps: from_secret: dockerhub_password - name: test-install - # KUBECTL 1.25.3 - KUSTOMIZE 3.5.3 - HELM 3.1.1 - YQ 4.21.1 - ISTIOCTL 1.9.4 - FURYCTL 0.9.0 - BATS 1.1.0 - image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.11.0_3.12.0_1.9.4_1.26.3_3.5.3_4.33.3 pull: always volumes: - name: shared path: /shared depends_on: [ init ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-125 + - export KUBECONFIG=/shared/kube/kubeconfig-126 - bats -t katalog/tests/velero/velero-install.sh - name: test-backup-restore - image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.11.0_3.12.0_1.9.4_1.26.3_3.5.3_4.33.3 pull: always volumes: - name: shared path: /shared depends_on: [ test-install ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-125 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - export KUBECONFIG=/shared/kube/kubeconfig-126 + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh - bats -t katalog/tests/velero/velero-backup-with-restic-test.sh - name: init-aws - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore ] environment: - CI_PIPELINE_NUMBER: dr-125-aws + CI_PIPELINE_NUMBER: dr-126-aws AWS_DEFAULT_REGION: from_secret: aws_region AWS_ACCESS_KEY_ID: @@ -1396,14 +1396,14 @@ steps: - terraform output -raw backup_storage_location > /shared/backup_storage_location.yaml - name: apply-aws-configuration - image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.11.0_3.12.0_1.9.4_1.26.3_3.5.3_4.33.3 pull: always volumes: - name: shared path: /shared depends_on: [ init-aws ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-125 + - export KUBECONFIG=/shared/kube/kubeconfig-126 - kubectl apply -f /shared/cloud_credentials.yaml -n kube-system - kubectl apply -f /shared/backup_storage_location.yaml -n kube-system - kubectl rollout restart deploy velero -n kube-system @@ -1411,28 +1411,28 @@ steps: - kubectl get pods -n kube-system - name: test-backup-restore-aws - image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.11.0_3.12.0_1.9.4_1.26.3_3.5.3_4.33.3 pull: always volumes: - name: shared path: /shared depends_on: [ apply-aws-configuration ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-125 + - export KUBECONFIG=/shared/kube/kubeconfig-126 - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-aws - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore-aws ] environment: - CI_PIPELINE_NUMBER: dr-125-aws + CI_PIPELINE_NUMBER: dr-126-aws AWS_DEFAULT_REGION: from_secret: aws_region AWS_ACCESS_KEY_ID: @@ -1457,7 +1457,7 @@ steps: - failure - name: init-gcp - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared @@ -1469,7 +1469,7 @@ steps: GCP_CREDENTIALS: from_secret: gcp_credentials GCP_CREDENTIALS_PATH: /shared/terraform-credentials.json - CI_PIPELINE_NUMBER: dr-125-gcp + CI_PIPELINE_NUMBER: dr-126-gcp TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: @@ -1489,14 +1489,14 @@ steps: - terraform output -raw backup_storage_location > /shared/backup_storage_location.yaml - name: apply-gcp-configuration - image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.11.0_3.12.0_1.9.4_1.26.3_3.5.3_4.33.3 pull: always volumes: - name: shared path: /shared depends_on: [ init-gcp ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-125 + - export KUBECONFIG=/shared/kube/kubeconfig-126 - kubectl apply -f /shared/cloud_credentials.yaml -n kube-system - kubectl apply -f /shared/backup_storage_location.yaml -n kube-system - kustomize build katalog/velero/velero-gcp | kubectl apply -f - -n kube-system @@ -1505,21 +1505,21 @@ steps: - kubectl get pods -n kube-system - name: test-backup-restore-gcp - image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.11.0_3.12.0_1.9.4_1.26.3_3.5.3_4.33.3 pull: always volumes: - name: shared path: /shared depends_on: [ apply-gcp-configuration ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-125 + - export KUBECONFIG=/shared/kube/kubeconfig-126 - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-gcp - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared @@ -1531,7 +1531,7 @@ steps: GCP_CREDENTIALS: from_secret: gcp_credentials GCP_CREDENTIALS_PATH: /shared/terraform-credentials.json - CI_PIPELINE_NUMBER: dr-125-gcp + CI_PIPELINE_NUMBER: dr-126-gcp TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name commands: @@ -1552,14 +1552,14 @@ steps: - failure - name: init-azure - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore-gcp ] environment: - CI_PIPELINE_NUMBER: k125a + CI_PIPELINE_NUMBER: k126a TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name STORAGE_ACCOUNT_NAME: @@ -1590,14 +1590,14 @@ steps: - terraform output -raw backup_storage_location > /shared/backup_storage_location.yaml - name: apply-azure-configuration - image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.11.0_3.12.0_1.9.4_1.26.3_3.5.3_4.33.3 pull: always volumes: - name: shared path: /shared depends_on: [ init-azure ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-125 + - export KUBECONFIG=/shared/kube/kubeconfig-126 - kubectl apply -f /shared/cloud_credentials.yaml -n kube-system - kubectl apply -f /shared/backup_storage_location.yaml -n kube-system - kustomize build katalog/velero/velero-azure | kubectl apply -f - -n kube-system @@ -1606,28 +1606,28 @@ steps: - kubectl get pods -n kube-system - name: test-backup-restore-azure - image: quay.io/sighup/e2e-testing:1.1.0_0.9.0_3.1.1_1.9.4_1.25.3_3.5.3_4.21.1 + image: quay.io/sighup/e2e-testing:1.1.0_0.11.0_3.12.0_1.9.4_1.26.3_3.5.3_4.33.3 pull: always volumes: - name: shared path: /shared depends_on: [ apply-azure-configuration ] commands: - - export KUBECONFIG=/shared/kube/kubeconfig-125 + - export KUBECONFIG=/shared/kube/kubeconfig-126 - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-azure - image: hashicorp/terraform:0.15.4 + image: hashicorp/terraform:1.3.0 pull: always volumes: - name: shared path: /shared depends_on: [ test-backup-restore-azure ] environment: - CI_PIPELINE_NUMBER: k125a + CI_PIPELINE_NUMBER: k126a TERRAFORM_TF_STATES_BUCKET_NAME: from_secret: terraform_tf_states_bucket_name STORAGE_ACCOUNT_NAME: @@ -1664,7 +1664,7 @@ steps: depends_on: [ test-backup-restore-azure ] settings: action: destroy - pipeline_id: cluster-125 + pipeline_id: cluster-126 aws_default_region: from_secret: aws_region aws_access_key_id: @@ -1698,10 +1698,10 @@ kind: pipeline type: docker depends_on: - - e2e-kubernetes-1.22 - e2e-kubernetes-1.23 - e2e-kubernetes-1.24 - e2e-kubernetes-1.25 + - e2e-kubernetes-1.26 platform: os: linux From 2fd51621060039c091b43e910dbd1f54d7dcb501 Mon Sep 17 00:00:00 2001 From: Simone Bruzzese Date: Thu, 1 Jun 2023 12:43:44 +0200 Subject: [PATCH 14/25] Upgrade terraform in drone CI --- .drone.yml | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/.drone.yml b/.drone.yml index 0ff0626..45ff960 100644 --- a/.drone.yml +++ b/.drone.yml @@ -140,7 +140,7 @@ steps: - bats -t katalog/tests/velero/velero-backup-with-restic-test.sh - name: init-aws - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -200,7 +200,7 @@ steps: - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-aws - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -232,7 +232,7 @@ steps: - failure - name: init-gcp - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -294,7 +294,7 @@ steps: - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-gcp - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -327,7 +327,7 @@ steps: - failure - name: init-azure - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -395,7 +395,7 @@ steps: - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-azure - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -548,7 +548,7 @@ steps: - bats -t katalog/tests/velero/velero-backup-with-restic-test.sh - name: init-aws - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -608,7 +608,7 @@ steps: - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-aws - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -640,7 +640,7 @@ steps: - failure - name: init-gcp - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -702,7 +702,7 @@ steps: - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-gcp - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -735,7 +735,7 @@ steps: - failure - name: init-azure - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -803,7 +803,7 @@ steps: - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-azure - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -957,7 +957,7 @@ steps: - bats -t katalog/tests/velero/velero-backup-with-restic-test.sh - name: init-aws - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -1017,7 +1017,7 @@ steps: - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-aws - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -1049,7 +1049,7 @@ steps: - failure - name: init-gcp - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -1111,7 +1111,7 @@ steps: - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-gcp - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -1144,7 +1144,7 @@ steps: - failure - name: init-azure - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -1212,7 +1212,7 @@ steps: - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-azure - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -1365,7 +1365,7 @@ steps: - bats -t katalog/tests/velero/velero-backup-with-restic-test.sh - name: init-aws - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -1425,7 +1425,7 @@ steps: - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-aws - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -1457,7 +1457,7 @@ steps: - failure - name: init-gcp - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -1519,7 +1519,7 @@ steps: - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-gcp - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -1552,7 +1552,7 @@ steps: - failure - name: init-azure - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared @@ -1620,7 +1620,7 @@ steps: - bats -t katalog/tests/velero/velero-backup.sh - name: destroy-azure - image: hashicorp/terraform:1.3.0 + image: hashicorp/terraform:1.4.6 pull: always volumes: - name: shared From b44e2fc6ebd8c046f2fd8a4879fc45954f500dee Mon Sep 17 00:00:00 2001 From: Simone Bruzzese Date: Thu, 1 Jun 2023 14:34:22 +0200 Subject: [PATCH 15/25] Fix velero cli in CI --- .drone.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.drone.yml b/.drone.yml index 45ff960..be58a4f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -133,7 +133,7 @@ steps: depends_on: [ test-install ] commands: - export KUBECONFIG=/shared/kube/kubeconfig-123 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh @@ -194,7 +194,7 @@ steps: depends_on: [ apply-aws-configuration ] commands: - export KUBECONFIG=/shared/kube/kubeconfig-123 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh @@ -288,7 +288,7 @@ steps: depends_on: [ apply-gcp-configuration ] commands: - export KUBECONFIG=/shared/kube/kubeconfig-123 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh @@ -389,7 +389,7 @@ steps: depends_on: [ apply-azure-configuration ] commands: - export KUBECONFIG=/shared/kube/kubeconfig-123 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh @@ -541,7 +541,7 @@ steps: depends_on: [ test-install ] commands: - export KUBECONFIG=/shared/kube/kubeconfig-124 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh @@ -602,7 +602,7 @@ steps: depends_on: [ apply-aws-configuration ] commands: - export KUBECONFIG=/shared/kube/kubeconfig-124 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh @@ -696,7 +696,7 @@ steps: depends_on: [ apply-gcp-configuration ] commands: - export KUBECONFIG=/shared/kube/kubeconfig-124 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh @@ -797,7 +797,7 @@ steps: depends_on: [ apply-azure-configuration ] commands: - export KUBECONFIG=/shared/kube/kubeconfig-124 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh @@ -950,7 +950,7 @@ steps: depends_on: [ test-install ] commands: - export KUBECONFIG=/shared/kube/kubeconfig-125 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh @@ -1011,7 +1011,7 @@ steps: depends_on: [ apply-aws-configuration ] commands: - export KUBECONFIG=/shared/kube/kubeconfig-125 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh @@ -1105,7 +1105,7 @@ steps: depends_on: [ apply-gcp-configuration ] commands: - export KUBECONFIG=/shared/kube/kubeconfig-125 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh @@ -1206,7 +1206,7 @@ steps: depends_on: [ apply-azure-configuration ] commands: - export KUBECONFIG=/shared/kube/kubeconfig-125 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh @@ -1419,7 +1419,7 @@ steps: depends_on: [ apply-aws-configuration ] commands: - export KUBECONFIG=/shared/kube/kubeconfig-126 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh @@ -1513,7 +1513,7 @@ steps: depends_on: [ apply-gcp-configuration ] commands: - export KUBECONFIG=/shared/kube/kubeconfig-126 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh @@ -1614,7 +1614,7 @@ steps: depends_on: [ apply-azure-configuration ] commands: - export KUBECONFIG=/shared/kube/kubeconfig-126 - - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.10.1/velero-v1.10.1-linux-amd64.tar.gz + - curl -Ls -o velero.tar.gz https://github.com/vmware-tanzu/velero/releases/download/v1.11.0/velero-v1.11.0-linux-amd64.tar.gz - tar -zxf velero.tar.gz - mv velero*/velero /usr/local/bin/velero - bats -t katalog/tests/velero/velero-backup.sh From 76a29c918e79fa3184e42f46e183e5b92c9d68f6 Mon Sep 17 00:00:00 2001 From: Simone Bruzzese Date: Thu, 1 Jun 2023 19:25:33 +0200 Subject: [PATCH 16/25] Fix Azure permissions --- modules/azure-velero/iam.tf | 43 ++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/modules/azure-velero/iam.tf b/modules/azure-velero/iam.tf index 696a255..b08c4c1 100644 --- a/modules/azure-velero/iam.tf +++ b/modules/azure-velero/iam.tf @@ -24,23 +24,50 @@ resource "azuread_service_principal_password" "main" { } } +resource "azurerm_role_definition" "velero" { + name = "Velero" + scope = data.azurerm_resource_group.aks.id + permissions { + actions = [ + "Microsoft.Compute/disks/read", + "Microsoft.Compute/disks/write", + "Microsoft.Compute/disks/endGetAccess/action", + "Microsoft.Compute/disks/beginGetAccess/action", + "Microsoft.Compute/snapshots/read", + "Microsoft.Compute/snapshots/write", + "Microsoft.Compute/snapshots/delete", + "Microsoft.Storage/storageAccounts/listkeys/action", + "Microsoft.Storage/storageAccounts/regeneratekey/action", + "Microsoft.Storage/storageAccounts/blobServices/containers/delete", + "Microsoft.Storage/storageAccounts/blobServices/containers/read", + "Microsoft.Storage/storageAccounts/blobServices/containers/write", + "Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action", + ] + data_actions = [ + "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete", + "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read", + "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write", + "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action", + "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action" + ] + } + assignable_scopes = [ + data.azurerm_resource_group.aks.id, + data.azurerm_resource_group.velero.id + ] +} + resource "azurerm_role_assignment" "aks" { scope = data.azurerm_resource_group.aks.id - role_definition_name = "Contributor" + role_definition_id = azurerm_role_definition.velero.role_definition_resource_id principal_id = azuread_service_principal.main.id skip_service_principal_aad_check = true } resource "azurerm_role_assignment" "snapshot" { scope = data.azurerm_resource_group.velero.id - role_definition_name = "Contributor" + role_definition_id = azurerm_role_definition.velero.role_definition_resource_id principal_id = azuread_service_principal.main.id skip_service_principal_aad_check = true } -resource "azurerm_role_assignment" "velero" { - scope = azurerm_storage_account.main.id - role_definition_name = "Contributor" - principal_id = azuread_service_principal.main.id - skip_service_principal_aad_check = true -} From 4dd9e69a5f407c285f18e90e942ed5c559585c2a Mon Sep 17 00:00:00 2001 From: Simone Bruzzese Date: Thu, 1 Jun 2023 20:38:04 +0200 Subject: [PATCH 17/25] Fix Azure permissions --- modules/azure-velero/iam.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/azure-velero/iam.tf b/modules/azure-velero/iam.tf index b08c4c1..575609a 100644 --- a/modules/azure-velero/iam.tf +++ b/modules/azure-velero/iam.tf @@ -26,7 +26,7 @@ resource "azuread_service_principal_password" "main" { resource "azurerm_role_definition" "velero" { name = "Velero" - scope = data.azurerm_resource_group.aks.id + scope = data.azurerm_resource_group.velero.id permissions { actions = [ "Microsoft.Compute/disks/read", From 1f417ea210002fc6fb77f1b12adb719a9021346c Mon Sep 17 00:00:00 2001 From: Simone Bruzzese Date: Thu, 1 Jun 2023 21:48:22 +0200 Subject: [PATCH 18/25] Make azure role unique --- modules/azure-velero/iam.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/azure-velero/iam.tf b/modules/azure-velero/iam.tf index 575609a..929e777 100644 --- a/modules/azure-velero/iam.tf +++ b/modules/azure-velero/iam.tf @@ -25,7 +25,7 @@ resource "azuread_service_principal_password" "main" { } resource "azurerm_role_definition" "velero" { - name = "Velero" + name = "${var.backup_bucket_name}-velero" scope = data.azurerm_resource_group.velero.id permissions { actions = [ From 3ef17f166be6c98e427b14a5008f15c5049ced26 Mon Sep 17 00:00:00 2001 From: Simone Bruzzese Date: Thu, 1 Jun 2023 21:57:11 +0200 Subject: [PATCH 19/25] Upgrade image in drone CI --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index be58a4f..47b767d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1309,7 +1309,7 @@ trigger: steps: - name: init - image: quay.io/sighup/e2e-testing-drone-plugin:v1.24.1 + image: quay.io/sighup/e2e-testing-drone-plugin:v1.26.3 pull: always volumes: - name: shared From 04bad2298cc92b2aeda54b51aeda8be41ae7875c Mon Sep 17 00:00:00 2001 From: Samuele Chiocca Date: Mon, 28 Aug 2023 14:42:24 +0200 Subject: [PATCH 20/25] feat: update ci with newer image for 1.26 --- .tool-versions | 1 + 1 file changed, 1 insertion(+) create mode 100644 .tool-versions diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..0b5c908 --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +terraform 0.15.4 \ No newline at end of file From 10897e1d14964e945a0e19a8650dab9b8f6411ed Mon Sep 17 00:00:00 2001 From: Samuele Chiocca Date: Mon, 28 Aug 2023 14:42:41 +0200 Subject: [PATCH 21/25] docs: update readme and compatibility matrix with 1.12.0 version --- README.md | 32 +++++++++++++-------------- docs/COMPATIBILITY_MATRIX.md | 43 ++++++++++++++++++++---------------- 2 files changed, 40 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index e4731bf..bea712a 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ -![Release](https://img.shields.io/badge/Latest%20Release-v1.11.0-blue) +![Release](https://img.shields.io/badge/Latest%20Release-v1.12.0-blue) ![License](https://img.shields.io/github/license/sighupio/fury-kubernetes-dr?label=License) [![Slack](https://img.shields.io/badge/slack-@kubernetes/fury-yellow.svg?logo=slack&label=Slack)](https://kubernetes.slack.com/archives/C0154HYTAQH) @@ -110,15 +110,15 @@ To deploy Velero on AWS: ```yaml bases: - name: dr/velero/velero-aws - version: "v1.11.0" + version: "v1.12.0" - name: dr/velero/velero-restic - version: "v1.11.0" + version: "v1.12.0" - name: dr/velero/velero-schedules - version: "v1.11.0" + version: "v1.12.0" modules: - name: dr/aws-velero - version: "v1.11.0" + version: "v1.12.0" ``` > See `furyctl` [documentation][furyctl-repo] for additional details about `Furyfile.yml` format. @@ -172,15 +172,15 @@ To deploy Velero on GCP: ```yaml bases: - name: dr/velero/velero-gcp - version: "v1.11.0" + version: "v1.12.0" - name: dr/velero/velero-restic - version: "v1.11.0" + version: "v1.12.0" - name: dr/velero/velero-schedules - version: "v1.11.0" + version: "v1.12.0" modules: - name: dr/gcp-velero - version: "v1.11.0" + version: "v1.12.0" ``` > See `furyctl` [documentation][furyctl-repo] for additional details about `Furyfile.yml` format. @@ -231,15 +231,15 @@ To deploy Velero on Azure: ```yaml bases: - name: dr/velero/velero-azure - version: "v1.11.0" + version: "v1.12.0" - name: dr/velero/velero-restic - version: "v1.11.0" + version: "v1.12.0" - name: dr/velero/velero-schedules - version: "v1.11.0" + version: "v1.12.0" modules: - name: dr/azure-velero - version: "v1.11.0" + version: "v1.12.0" ``` > See `furyctl` [documentation][furyctl-repo] for additional details about `Furyfile.yml` format. @@ -290,11 +290,11 @@ To deploy `velero on-prem`: ```yaml bases: - name: velero/velero-on-prem - version: "v1.11.0" + version: "v1.12.0" - name: velero/velero-restic - version: "v1.11.0" + version: "v1.12.0" - name: velero/velero-schedules - version: "v1.11.0" + version: "v1.12.0" ``` > See `furyctl` [documentation][furyctl-repo] for additional details about `Furyfile.yml` format. diff --git a/docs/COMPATIBILITY_MATRIX.md b/docs/COMPATIBILITY_MATRIX.md index 7536da6..2fec203 100644 --- a/docs/COMPATIBILITY_MATRIX.md +++ b/docs/COMPATIBILITY_MATRIX.md @@ -1,24 +1,13 @@ # Compatibility Matrix -| Module Version / Kubernetes Version | 1.14.X | 1.15.X | 1.16.X | 1.17.X | 1.18.X | 1.19.X | 1.20.X | 1.21.X | 1.22.X | 1.23.X | 1.24.X | 1.25.X | 1.26.X | -|-------------------------------------|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:| -| v1.3.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | | | | | | -| v1.3.1 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | | | | | | -| v1.4.0 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | | | | -| v1.5.0 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | | | | -| v1.5.1 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | | | | -| v1.6.0 | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | | | -| v1.6.1 | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | | | -| v1.7.0 | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | | -| v1.8.0 | | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | -| v1.9.0 | | | | | | | :x: | :x: | :x: | :x: | | | -| v1.9.1 | | | | | | | :x: | :x: | :x: | :x: | | | -| v1.9.2 | | | | | | | :warning: | :warning: | :warning: | :warning: | | | -| v1.9.3 | | | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | -| v1.10.0 | | | | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | -| v1.10.1 | | | | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | -| v1.11.0 | | | | | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| v1.12.0 | | | | | | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Module Version / Kubernetes Version | 1.20.X | 1.21.X | 1.22.X | 1.23.X | 1.24.X | 1.25.X | 1.26.X | +| ----------------------------------- | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | +| v1.9.2 | :warning: | :warning: | :warning: | :warning: | | | | +| v1.9.3 | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | +| v1.10.0 | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | +| v1.10.1 | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | +| v1.11.0 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | +| v1.12.0 | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: Compatible @@ -31,3 +20,19 @@ - :x:: module version: v1.9.0 has a known bug breaking upgrades. Please do not use. - :x:: module version: v1.9.1 has a known bug breaking upgrades. Please do not use. + +## Legacy versions + +| Module Version / Kubernetes Version | 1.14.X | 1.15.X | 1.16.X | 1.17.X | 1.18.X | 1.19.X | 1.20.X | 1.21.X | 1.22.X | 1.23.X | +| ----------------------------------- | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :-------: | :----: | +| v1.3.0 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | | | | +| v1.3.1 | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | | | | +| v1.4.0 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | | | | +| v1.5.0 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | | +| v1.5.1 | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | | +| v1.6.0 | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | +| v1.6.1 | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | | +| v1.7.0 | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | | +| v1.8.0 | | | | | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | | +| v1.9.0 | | | | | | | :x: | :x: | :x: | :x: | +| v1.9.1 | | | | | | | :x: | :x: | :x: | :x: | \ No newline at end of file From c55b7deb68f587de76ba76f8c6c73686414b9d10 Mon Sep 17 00:00:00 2001 From: Samuele Chiocca Date: Mon, 28 Aug 2023 14:51:15 +0200 Subject: [PATCH 22/25] docs: correct 2.1.0 version --- docs/releases/{v1.12.0.md => v2.1.0.md} | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) rename docs/releases/{v1.12.0.md => v2.1.0.md} (83%) diff --git a/docs/releases/v1.12.0.md b/docs/releases/v2.1.0.md similarity index 83% rename from docs/releases/v1.12.0.md rename to docs/releases/v2.1.0.md index cad05fe..cca7c3c 100644 --- a/docs/releases/v1.12.0.md +++ b/docs/releases/v2.1.0.md @@ -1,4 +1,4 @@ -# Disaster recovery Core Module Release 1.12.0 +# Disaster recovery Core Module Release 2.1.0 Welcome to the latest release of the `DR` module of [`Kubernetes Fury Distribution`](https://github.com/sighupio/fury-distribution) maintained by team SIGHUP. @@ -28,7 +28,7 @@ This latest release upgrades the components in the module to its latest stable r #### Kustomize -To upgrade this core module from `v1.11.x` to `v1.12.0`, you need to download this new version, then apply the `kustomize` project. +To upgrade this core module from `v2.0.x` to `v2.1.0`, you need to download this new version, then apply the `kustomize` project. ```bash kubectl apply -f katalog/velero-base/crds.yaml @@ -44,12 +44,3 @@ kustomize build katalog/velero-restic | kubectl apply -f - ``` For additional info you can have a look [here](https://velero.io/docs/v1.11/upgrade-to-1.11/) - -#### Terraform - -To upgrade the terraform module from `v1.11.x` to `v1.12.0` you need to upgrade terraform to `v1.3.0` at least. -Then you have to launch the following command to update the reference in your terraform project: - -```bash -terraform init -upgrade -``` \ No newline at end of file From b83e293a5ed8aa27f8e573e968c69b129deb5170 Mon Sep 17 00:00:00 2001 From: Samuele Chiocca Date: Mon, 28 Aug 2023 14:52:47 +0200 Subject: [PATCH 23/25] chores: fix linting --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5da1cef..c7a4d92 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,7 @@ Check the [compatibility matrix][compatibility-matrix] for additional informatio | Tool | Version | Description | | --------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [furyctl][furyctl-repo] | `>=0.6.0` | The recommended tool to download and manage KFD modules and their packages. To learn more about `furyctl` read the [official documentation][furyctl-repo]. | -| [kustomize][kustomize-repo] | `>=3.5.0` | Packages are customized using `kustomize`. To learn how to create your customization layer with `kustomize`, please refer to the [repository][kustomize-repo]. | +| [kustomize][kustomize-repo] | `>=3.5.0` | Packages are customized using `kustomize`. To learn how to create your customization layer with `kustomize`, please refer to the [repository][kustomize-repo]. | | [terraform][terraform-page] | `>=1.3` | Additional infrastructure is deployed using `terraform`. | ### Velero on AWS From 4743abc3e24469f2e8609278201fe20e0841eaf4 Mon Sep 17 00:00:00 2001 From: Simone Bruzzese Date: Tue, 29 Aug 2023 14:50:59 +0200 Subject: [PATCH 24/25] feat(aws-velero): support terraform v4 --- modules/aws-velero/versions.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/aws-velero/versions.tf b/modules/aws-velero/versions.tf index b1f89d6..96ff83f 100644 --- a/modules/aws-velero/versions.tf +++ b/modules/aws-velero/versions.tf @@ -7,6 +7,6 @@ terraform { required_version = ">= 1.3" required_providers { - aws = "~> 3.76" + aws = ">= 3.76" } } From e6633a7fa697a60e4e0616d90d59073b81748d80 Mon Sep 17 00:00:00 2001 From: Samuele Chiocca Date: Mon, 18 Sep 2023 15:17:07 +0200 Subject: [PATCH 25/25] docs: update and finalize docs for v2.1.0 --- README.md | 18 +++++++++--------- docs/releases/v2.1.0.md | 5 ++--- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index c7a4d92..2415997 100644 --- a/README.md +++ b/README.md @@ -90,11 +90,11 @@ Check the [compatibility matrix][compatibility-matrix] for additional informatio ### Prerequisites -| Tool | Version | Description | -| --------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [furyctl][furyctl-repo] | `>=0.6.0` | The recommended tool to download and manage KFD modules and their packages. To learn more about `furyctl` read the [official documentation][furyctl-repo]. | -| [kustomize][kustomize-repo] | `>=3.5.0` | Packages are customized using `kustomize`. To learn how to create your customization layer with `kustomize`, please refer to the [repository][kustomize-repo]. | -| [terraform][terraform-page] | `>=1.3` | Additional infrastructure is deployed using `terraform`. | +| Tool | Version | Description | +| --------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [furyctl][furyctl-repo] | `>=0.25.0` | The recommended tool to download and manage KFD modules and their packages. To learn more about `furyctl` read the [official documentation][furyctl-repo]. | +| [kustomize][kustomize-repo] | `>=3.5.3` | Packages are customized using `kustomize`. To learn how to create your customization layer with `kustomize`, please refer to the [repository][kustomize-repo]. | +| [terraform][terraform-page] | `>=1.3` | Additional infrastructure is deployed using `terraform`. | ### Velero on AWS Velero on AWS is based on the [AWS Velero Plugin][velero-aws-plugin-repo]. @@ -122,7 +122,7 @@ modules: > See `furyctl` [documentation][furyctl-repo] for additional details about `Furyfile.yml` format. -2. Execute `furyctl vendor -H` to download the packages +2. Execute `furyctl legacy vendor -H` to download the packages 3. Inspect the downloaded packages under `./vendor/katalog/velero`. @@ -184,7 +184,7 @@ modules: > See `furyctl` [documentation][furyctl-repo] for additional details about `Furyfile.yml` format. -2. Execute `furyctl vendor -H` to download the packages +2. Execute `furyctl legacy vendor -H` to download the packages 3. Inspect the downloaded packages under `./vendor/katalog/velero`. @@ -243,7 +243,7 @@ modules: > See `furyctl` [documentation][furyctl-repo] for additional details about `Furyfile.yml` format. -2. Execute `furyctl vendor -H` to download the packages +2. Execute `furyctl legacy vendor -H` to download the packages 3. Inspect the downloaded packages under `./vendor/katalog/velero`. @@ -298,7 +298,7 @@ bases: > See `furyctl` [documentation][furyctl-repo] for additional details about `Furyfile.yml` format. -2. Execute `furyctl vendor -H` to download the packages +2. Execute `furyctl legacy vendor -H` to download the packages 3. Inspect the downloaded packages under `./vendor/katalog/velero`. diff --git a/docs/releases/v2.1.0.md b/docs/releases/v2.1.0.md index cca7c3c..ddf19e4 100644 --- a/docs/releases/v2.1.0.md +++ b/docs/releases/v2.1.0.md @@ -26,8 +26,6 @@ This latest release upgrades the components in the module to its latest stable r ### Process -#### Kustomize - To upgrade this core module from `v2.0.x` to `v2.1.0`, you need to download this new version, then apply the `kustomize` project. ```bash @@ -43,4 +41,5 @@ kustomize build katalog/velero-azure | kubectl apply -f - kustomize build katalog/velero-restic | kubectl apply -f - ``` -For additional info you can have a look [here](https://velero.io/docs/v1.11/upgrade-to-1.11/) + +Also for the terraform modules, run `terraform init -upgrade` , then apply the new version. \ No newline at end of file