Giter Club home page Giter Club logo

hydroform's Introduction

REUSE status

Hydroform

Overview

Hydroform is the Kyma Go SDK. It bundles together different Go modules that provide libraries and APIs to create and manage Kyma clusters and its resources.

Hydroform consists of the following modules:

  • Provision - provides an API to create, access, and delete Kubernetes clusters.

hydroform's People

Contributors

a-thaler avatar anoipm avatar bszwarc avatar clebs avatar colunira avatar cortey avatar dbadura avatar dependabot[bot] avatar elchead avatar fourthisle avatar halamix2 avatar jeremyharisch avatar kavyakat avatar kfurgol avatar kwiatekus avatar m00g3n avatar michalkalke avatar mjakobczyk avatar moelsayed avatar nesmabadr avatar pprecel avatar rakesh-garimella avatar rjankowski93 avatar ruanxin avatar shorim avatar skhalash avatar strekm avatar szymongib avatar tobiscr avatar tomasz-smelcerz-sap avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hydroform's Issues

Hydroform finishes cluster provisioning without an error when cluster is not yet provisioned

Description

While provisioning Gardener cluster on Azure I encountered an issue that the Provision method returned without an error and the cluster status after running Status was equal to Provisioned, yet the cluster was not yet provisioned and Credentials function returned an error secrets \"{CLUSTER_NAME}.kubeconfig\" not found.
I observed that similar behavior happens sometimes on Deprovision operation.

Expected result

Provision method returns only if the cluster is properly provisioned or when an error occurred.

Actual result

Provision method returns without an error and the cluster status returned from Hydrofrom is equal to Provisioned, even though the cluster is still provisioning.

Provisioning fails with "open /app/.../terraform.tfstate: no such file or directory" error

Description

While performing tests on Compass Provisioner component (Gardener on Azure, Gardener on GCP) I noticed the following error returned from Hydroform: "open /app/.hydroform/clusters/gardener/.../terraform.tfstate: no such file or directory" occurring once in a while (3 out of 12 runs on Azure, 1 out of 5 runs on GCP). The error occurs when provisioning Azure clusters with Gardener. After checking Gardener project it turned out that cluster has been provisioned so that the state stored by Provisioner is inconsistent.

Expected result

Provision method should properly manage terraform state file.

Actual result

Provision method fails with error but Gardener keeps retrying cluster creation.

Steps to reproduce

The issue is random. The following setting were used for provisioning on Azure:

"clusterConfig": {
                    "name": "<name>",
                    "projectName": "<project_name>",
                    "kubernetesVersion": "1.15.4",
                    "nodeCount": 3,
                    "volumeSizeGB": 35,
                    "machineType": "Standard_D2_v3",
                    "region": "westeurope",
                    "provider": "azure",
                    "seed": "az-eu1",
                    "targetSecret": "<target secret>",
                    "diskType": "Standard_LRS",
                    "workerCidr": "10.250.0.0/19",
                    "autoScalerMin": 2,
                    "autoScalerMax": 4,
                    "maxSurge": 4,
                    "maxUnavailable": 1,
                    "providerSpecificConfig": {
                        "vnetCidr": "10.250.0.0/19"
                    }
                }

The following settings were used for provisioning on GCP:

gardenerConfig: {
          name: "<name>" 
          projectName: "<project name>" 
          kubernetesVersion: "1.15.4"
          diskType: "pd-standard"
          volumeSizeGB: 30
          nodeCount: 3
          machineType: "n1-standard-4"
          region: "europe-west4"
          provider: "gcp"
          seed: "gcp-eu1"
          targetSecret: "<target secret>"
          workerCidr: "10.250.0.0/19"
          autoScalerMin: 2
          autoScalerMax: 4
          maxSurge: 4
          maxUnavailable: 1
          providerSpecificConfig: { gcpConfig: { zone: "europe-west4-a" } }
        }
      }

Support for gardener domain management

Description
Hydroform is supporting the provisioning of clusters based on gardener and installation of kyma on top. Gardener provides an out-of-the-box domain for the cluster which can be used as domain for the istio ingress of kyma. Unfortunately, it requires some few steps to provide the gardener-specific domain name and a related certificate to the kyma installer as well as configuring the DNS server accordingly.

Goal is to provide prepared actions in hydroform, so that clients of hydroform just need to call the actions in a pre/post-command way to get a kyma installation based on gardener domains.

Reasons
When being based on a gardener cluster it is simple and for free to re-use the related domain, so we should offer that by default instead of using self-signed certificates based on xip.io

Attachments

Error messages are difficult to read

Description
Here is an exemplary error message returned from Provision method:

unable to provision gardener cluster: \nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 31, in provider \"gardener\":\n 31: \tkube_file = \"${file(\"${var.credentials_file_path}\")}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 36, in resource \"gardener_shoot\" \"test_cluster\":\n 36: \t name = \"${var.cluster_name}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 37, in resource \"gardener_shoot\" \"test_cluster\":\n 37: \t namespace = \"${var.namespace}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 42, in resource \"gardener_shoot\" \"test_cluster\":\n 42: \t\tcreate = \"${var.create_timeout}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 43, in resource \"gardener_shoot\" \"test_cluster\":\n 43: \t\tupdate = \"${var.update_timeout}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 44, in resource \"gardener_shoot\" \"test_cluster\":\n 44: \t\tdelete = \"${var.delete_timeout}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 49, in resource \"gardener_shoot\" \"test_cluster\":\n 49: \t\tprofile = \"${var.target_profile}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 50, in resource \"gardener_shoot\" \"test_cluster\":\n 50: \t\tregion = \"${var.location}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 51, in resource \"gardener_shoot\" \"test_cluster\":\n 51: \t\tseed = \"${var.target_seed}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 53, in resource \"gardener_shoot\" \"test_cluster\":\n 53: \t\t name = \"${var.target_secret}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 62, in resource \"gardener_shoot\" \"test_cluster\":\n 62: \t\t\t\tcidr = \"${var.vnetcidr}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 64, in resource \"gardener_shoot\" \"test_cluster\":\n 64: \t\t\tworkers = \"${var.workercidr}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 73, in resource \"gardener_shoot\" \"test_cluster\":\n 73: \t\t\t machine_type = \"${var.machine_type}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 74, in resource \"gardener_shoot\" \"test_cluster\":\n 74: \t\t\t auto_scaler_min = \"${var.autoscaler_min}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 75, in resource \"gardener_shoot\" \"test_cluster\":\n 75: \t\t\t auto_scaler_max = \"${var.autoscaler_max}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 76, in resource \"gardener_shoot\" \"test_cluster\":\n 76: \t\t\t max_surge = \"${var.max_surge}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 77, in resource \"gardener_shoot\" \"test_cluster\":\n 77: \t\t\t max_unavailable = \"${var.max_unavailable}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 79, in resource \"gardener_shoot\" \"test_cluster\":\n 79: \t\t\t volume_type = \"${var.disk_type}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 84, in resource \"gardener_shoot\" \"test_cluster\":\n 84: \t\t\t machine_type = \"${var.machine_type}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 85, in resource \"gardener_shoot\" \"test_cluster\":\n 85: \t\t\t auto_scaler_min = \"${var.autoscaler_min}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 86, in resource \"gardener_shoot\" \"test_cluster\":\n 86: \t\t\t auto_scaler_max = \"${var.autoscaler_max}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 87, in resource \"gardener_shoot\" \"test_cluster\":\n 87: \t\t\t max_surge = \"${var.max_surge}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 88, in resource \"gardener_shoot\" \"test_cluster\":\n 88: \t\t\t max_unavailable = \"${var.max_unavailable}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 90, in resource \"gardener_shoot\" \"test_cluster\":\n 90: \t\t\t volume_type = \"${var.disk_type}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 95, in resource \"gardener_shoot\" \"test_cluster\":\n 95: \t\t\t machine_type = \"${var.machine_type}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 96, in resource \"gardener_shoot\" \"test_cluster\":\n 96: \t\t\t auto_scaler_min = \"${var.autoscaler_min}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 97, in resource \"gardener_shoot\" \"test_cluster\":\n 97: \t\t\t auto_scaler_max = \"${var.autoscaler_max}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 98, in resource \"gardener_shoot\" \"test_cluster\":\n 98: \t\t\t max_surge = \"${var.max_surge}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 99, in resource \"gardener_shoot\" \"test_cluster\":\n 99: \t\t\t max_unavailable = \"${var.max_unavailable}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 101, in resource \"gardener_shoot\" \"test_cluster\":\n 101: \t\t\t volume_type = \"${var.disk_type}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 110, in resource \"gardener_shoot\" \"test_cluster\":\n 110: \t\tversion = \"${var.kubernetes_version}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 31, in provider \"gardener\":\n 31: \tkube_file = \"${file(\"${var.credentials_file_path}\")}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 36, in resource \"gardener_shoot\" \"test_cluster\":\n 36: \t name = \"${var.cluster_name}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 37, in resource \"gardener_shoot\" \"test_cluster\":\n 37: \t namespace = \"${var.namespace}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 42, in resource \"gardener_shoot\" \"test_cluster\":\n 42: \t\tcreate = \"${var.create_timeout}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 43, in resource \"gardener_shoot\" \"test_cluster\":\n 43: \t\tupdate = \"${var.update_timeout}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 44, in resource \"gardener_shoot\" \"test_cluster\":\n 44: \t\tdelete = \"${var.delete_timeout}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 49, in resource \"gardener_shoot\" \"test_cluster\":\n 49: \t\tprofile = \"${var.target_profile}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 50, in resource \"gardener_shoot\" \"test_cluster\":\n 50: \t\tregion = \"${var.location}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 51, in resource \"gardener_shoot\" \"test_cluster\":\n 51: \t\tseed = \"${var.target_seed}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 53, in resource \"gardener_shoot\" \"test_cluster\":\n 53: \t\t name = \"${var.target_secret}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 62, in resource \"gardener_shoot\" \"test_cluster\":\n 62: \t\t\t\tcidr = \"${var.vnetcidr}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 64, in resource \"gardener_shoot\" \"test_cluster\":\n 64: \t\t\tworkers = \"${var.workercidr}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 73, in resource \"gardener_shoot\" \"test_cluster\":\n 73: \t\t\t machine_type = \"${var.machine_type}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 74, in resource \"gardener_shoot\" \"test_cluster\":\n 74: \t\t\t auto_scaler_min = \"${var.autoscaler_min}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 75, in resource \"gardener_shoot\" \"test_cluster\":\n 75: \t\t\t auto_scaler_max = \"${var.autoscaler_max}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 76, in resource \"gardener_shoot\" \"test_cluster\":\n 76: \t\t\t max_surge = \"${var.max_surge}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 77, in resource \"gardener_shoot\" \"test_cluster\":\n 77: \t\t\t max_unavailable = \"${var.max_unavailable}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 79, in resource \"gardener_shoot\" \"test_cluster\":\n 79: \t\t\t volume_type = \"${var.disk_type}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 84, in resource \"gardener_shoot\" \"test_cluster\":\n 84: \t\t\t machine_type = \"${var.machine_type}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 85, in resource \"gardener_shoot\" \"test_cluster\":\n 85: \t\t\t auto_scaler_min = \"${var.autoscaler_min}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 86, in resource \"gardener_shoot\" \"test_cluster\":\n 86: \t\t\t auto_scaler_max = \"${var.autoscaler_max}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 87, in resource \"gardener_shoot\" \"test_cluster\":\n 87: \t\t\t max_surge = \"${var.max_surge}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 88, in resource \"gardener_shoot\" \"test_cluster\":\n 88: \t\t\t max_unavailable = \"${var.max_unavailable}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 90, in resource \"gardener_shoot\" \"test_cluster\":\n 90: \t\t\t volume_type = \"${var.disk_type}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 95, in resource \"gardener_shoot\" \"test_cluster\":\n 95: \t\t\t machine_type = \"${var.machine_type}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 96, in resource \"gardener_shoot\" \"test_cluster\":\n 96: \t\t\t auto_scaler_min = \"${var.autoscaler_min}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 97, in resource \"gardener_shoot\" \"test_cluster\":\n 97: \t\t\t auto_scaler_max = \"${var.autoscaler_max}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 98, in resource \"gardener_shoot\" \"test_cluster\":\n 98: \t\t\t max_surge = \"${var.max_surge}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 99, in resource \"gardener_shoot\" \"test_cluster\":\n 99: \t\t\t max_unavailable = \"${var.max_unavailable}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 101, in resource \"gardener_shoot\" \"test_cluster\":\n 101: \t\t\t volume_type = \"${var.disk_type}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nWarning: Interpolation-only expressions are deprecated\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 110, in resource \"gardener_shoot\" \"test_cluster\":\n 110: \t\tversion = \"${var.kubernetes_version}\"\n\nTerraform 0.11 and earlier required all non-constant expressions to be\nprovided via interpolation syntax, but this pattern is now deprecated. To\nsilence this warning, remove the \"${ sequence from the start and the }\"\nsequence from the end of this expression, leaving just the inner expression.\n\nTemplate interpolation syntax is still used to construct strings from\nexpressions when the template includes multiple interpolation sequences or a\nmixture of literal strings and interpolations. This deprecation applies only\nto templates that consist entirely of a single interpolation sequence.\n\nError: Waiting for shoot condition to finish: ControlPlaneHealthy\n\n on .hydroform/clusters/gardener/test-ag/azuretest-1-5/terraform.tf line 34, in resource \"gardener_shoot\" \"test_cluster\":\n 34: resource \"gardener_shoot\" \"test_cluster\" {\n\n

The most important part of the message is on the very end (Error: Waiting for shoot condition to finish: ControlPlaneHealthy), but it is difficult to notice.

Expected result

Error messages should be short and readable.

Actual result

Error message contains a lot of irrelevant information and leaks implementation details.

Steps to reproduce

You could try to provision Gardener cluster with existing name to get an error.

Upgrading Terraform to version "0.13.0"

Description
As per a bug in terraform (hashicorp/terraform#14847) modules having sub-modules to be initialise, do not work. This issue was fixed in terraform 0.12.18.

Another bug in terraform (hashicorp/terraform#24287) is causing the cli to panic on macOS High Sierra / Mojave (kyma-project/cli#557). This issue was fixed in terraform 0.13.0.

Unfortunately upgrading Hydroform to terraform version 0.13.0 causes dependency issues and breaks the provision command in the cli.

Acceptance Criteria

Extra info

  • For an implementation example, please see azure module integration: #78
  • For fixing the dependecy issues, adding require github.com/Azure/go-autorest v12.2.0+incompatible in the go.mod should fix it as suggested here kubernetes/client-go#628

Integrate gardener terraform module

Description
When there is an available gardener terraform module, integrate it into Hydroform and get rid of the hardcoded template.

Acceptance criteria

  • Gardener module is integrated and all target providers supported.
  • Old template is removed and not needed anymore.

Extra info

  • This issue needs to be done after #92
  • For an implementation example, please see azure module integration: #78

parallel-installation lib error reporting mechanism

Description

Implement mechanism giving possibility to report errors. This should be consistent with the progress reporting mechanism.

AC:

  • client is able to retrieve deploy/uninstallation errors

Reasons

Having a consistent way for retrieving errors.

parallel-installation CRDs installation improvement

Description

At the moment we have a job in the cluster-essentials component, which is applying CRDs. Move this logic directly to the library and implement retries.

AC:

  • CRDs installed via k83 client
  • retries implemented
  • if pod-preset is still present in the cluster-essentials install only this sub-chart

Reasons

Having an easy and stable way of installing CRDs

parallel-installation lib uninstallation should be consistent with deploy

Description

Change the uninstallation method to undeploy. Improve existing mechanism by deleting finalizers & force deleting ns.

AC:

  • API exposes undeploy method
  • after uninstallation all kyma specific ns are removed
  • kyma deploys after it was undeployed

Reasons

Having consistent API.

Attachments

User friendly provision command

Description
Follow-up of
#36 to make results of provider decoupling user-friendly.

That includes:

  • After usage, there is nothing left on the file system in regards to terraform plugins
  • After usage, there is nothing left on the file system in regards to terraform state management
  • Assure that the full execution is non-interactive and that the log messages are meaningful for the API user (not having the terraform background)

Reasons
Usability

Add possibility to modify the cluster state without Terraform state

Description

Currently, to fetch the status of the Cluster or deprovision it, the Terraform state is required. When the user losses Terraform state or the Provisioning fails it is impossible to deprovision the cluster or check its status.

Reasons

There are many possible scenarios in which the Provisioning fails or is interrupted, which results in the resources being created without any possibility to remove them (through Hydroform).

The cluster information and credentials should be enough to modify the state of the cluster.

Attachments

Provisioning method ends while provisioning cluster is still in progress on Gardener

Description

Provisioning is blocking operation but it immediately stops without returning any error when Gardener reports error on its side. Gardener is able to recover, retry and usually provisions cluster successfully.

Expected result

Provisioning method should be able to handle Gardener errors by itself and continue when Gardener recovered and is still provisioning cluster.

Actual result

Provisioning method ends without returning any error, but provisioning on Gardener continues as a non-blocking operation, which status can be checked only by using Status method.

Steps to reproduce

Problem occurs randomly while provisioning Azure and GCP clusters via Gardener (much more often on Azure).

Troubleshooting

Prepare Hydroform repo to cover general Kyma SDK

Description
Hydroform currently focus on provisioning only. Instead it should provide libraries for all aspects which are used in the tooling area, like from prow, the CLI, the provisioning API.

That mainly includes provisioning, installation, testing, debugging.

For that different aspects independent go modules should be provided which can be imported to clients independently even from version aspects.
As preparation the repository needs to be adjusted to that new structure, being a multi-go-module project with common readme and build system.

Actions:

  • move provisioning library into a dedicated folder
  • Have a general readme
  • Have a common makefile calling the sub-makefiles
  • adjust current usage of provisioning
  • adjust CI jobs

Reasons

Application Connector Client Library

Description

The aim here is to provide a library as a part of hydroform for integration of the Application Connector (AC) with third-party applications. Currently, such applications have to make their own implementations in order to integrate AC into their code. Providing a library to perform basic functions would make it easier for the AC to be integrated.

We also plan on providing a generic platform where the applications can use multiple types of storage solutions as per their convenience.

Reasons

  • As of now, we do not provide code to help third-party applications integrate the Application Connector and use it for Events/API calls. Instead, it is up to the application developers to use the Kubernetes CLI to establish a secure connection, register the service/API as well as sending events using the Application Connector, which in turn trigger lambda functions.

Using the CLI here can be a cumbersome process with a lot of steps involved. For instance, for establishing a secure connection, the client needs to have a valid client certificate. In order to obtain this certificate, currently, the following steps are required:

  • Get CSR info / config details from Kyma -

      curl {CONFIGURATION_URL_WITH_TOKEN}
    

    ^ returns csr signing url with token, subject

  • Use subject to generate CSR and send it to Kyma as a post request
    ^ response contains client certificate (base64 encoded)

Instead of having the third party developers do the above steps, we can, instead, provide a method in our library which takes the configuration URL as an input parameter, generate and then return the valid encoded certificate to the client.

  • Another issue that comes up is that currently, we use files for storing details such as client certificates, configurations etc. Instead, it would be better to provide users the options to use whichever storage solutions they prefer. This would help cloud based services, for instance, which prefer to not use file systems.

Attachments

Our library can implement some basic functions such as the following:

  • connect() - Called by the application to establish a secure connection to the Kyma AC. This can generate/check for validity of certificates, establish a connection and return a valid certificate.

  • createService() - Can register a service of a third-party solution in Kyma. This service could include events/APIs.

  • updateService() - Updates an already registered service by the service ID.

  • sendEvent() - Used by the service (which is registered) to send an event, which can, in turn, trigger subscribed lambda functions.

  • getSubscribedEvents() - Returns a list of all active events for the application. This can be useful to make sure that we're not sending notifications regarding inactive events.

  • renewCertificate()

  • revokeCertificate()

parallel-installation lib metadata implementation

Description

The installation library should accept kyma metadata and preserve it on a cluster after successful kyma deployment.

Reasons

AC:

  • deployment metadata is preserved on a cluster after kyma deployment.
  • it is possible to query deployment metadata
  • metadata contains kyma version

Attachments

Provisioning fails with "Waiting for shoot condition to finish" error message

Description

While performing tests on Compass Provisioner component (Azure on Gardener) I noticed the following error returned from Hydroform: "Waiting for shoot condition to finish: ControlPlaneHealthy" occurring once in a while (4 out of 12 runs). After checking Gardener project it turned out that cluster has been provisioned so that the state stored by Provisioner is inconsistent.

Expected result

Hydroform provides blocking, synchronous operations. Provision method call shouldn't finish before Gardener completed cluster provisioning. It may be a matter of incorrect handling of Gardener Shoot resource statuses.

Actual result

Provision method fails with error but Gardener keeps retrying cluster creation.

Steps to reproduce

The issue is random. The issue is random. The following setting were used for provisioning:

"clusterConfig": {
                    "name": "<name>",
                    "projectName": "<project_name>",
                    "kubernetesVersion": "1.15.4",
                    "nodeCount": 3,
                    "volumeSizeGB": 35,
                    "machineType": "Standard_D2_v3",
                    "region": "westeurope",
                    "provider": "azure",
                    "seed": "az-eu1",
                    "targetSecret": "<target secret>",
                    "diskType": "Standard_LRS",
                    "workerCidr": "10.250.0.0/19",
                    "autoScalerMin": 2,
                    "autoScalerMax": 4,
                    "maxSurge": 4,
                    "maxUnavailable": 1,
                    "providerSpecificConfig": {
                        "vnetCidr": "10.250.0.0/19"
                    }
                }

Support passing inline credentials to the Provider struct

Description

The only way to pass credentials to the Provider struct is by using CredentialsFilePath field. This makes it really inconvenient to use when operating on just the file contents.

Reasons

Passing path to the credentials is very inconvenient to use when working with only the contents of such file. It requires the library user to create some file only for a time of provisioning.

There should be the ability to pass credentials in the form of credentials file content as a byte array.

Attachments

Function synchronisation should work for functions that were not created using function API

Description

In current implementation the trigger-to-function relation (used in sync and apply commands) is based on ownerID label. This may lead to incorrect sync command behavior (missing triggers) when the function that was synchronised was not create with the function API (the ownerID label is missing).

Expected result

Function synchronisation should work for functions that were not created using function API.

Actual result

Function synchronisation skips triggers for functions that were not created using function API.

Steps to reproduce

  1. create function with trigger without using function API;
  2. synchronise function using kyma sync function

Troubleshooting

Hydroform creates wrong number of nodes

Description

When I specify the node count from CLI (kyma provision gardener --target-provider azure --nodes 3), hydroform creates 3 workers, which results in 6 nodes.

Screenshot 2020-02-17 at 15 26 49

When I create a cluster through Gardener UI, it creates 1 worker with 3 nodes.

Screenshot 2020-02-17 at 15 26 59

Unable to access cluster with credentials fetched from Hydroform

Description

Kubeconfig fetched for provisioned GCP cluster, does not allow access to the cluster. Connection to cluster failes with the following error message:

error: cannot construct google default token source: google: could not find default credentials.

Expected result

Fetched Kubeconfig is sufficient to access the cluster.

Actual result

Steps to reproduce

  • Provision the GCP cluster
  • Fetch kubeconfig
  • Save it to file
  • export KUBECONFIG={created_file}
  • run: kubectl get pods

Troubleshooting

Endpoint to provision from file

Description
As a developer I want to just pass a valid operator (terraform) file to hydroform and it should parse it and provision a cluster based on it.

Reasons

  • Improve compatibility with users already using terraform or other supported operators.
  • Make automation easier.

Downloaded terraform providers can't be executed on windows

Description
Terraform providers can't be executed on windows because they are downloaded as terraform-xxx-provider, but windows needs executable files to have the .exe extension.

Proposed solution

  • After downloading providers, hydroform will check all downloaded files and create a copy with the .exe extension so that they can be executed.

More info
https://stackoverflow.com/questions/58368136/how-to-fix-failed-to-instantiate-provider-example-to-obtain-schema-file

New installation: Interrupting the cluster-essentials let later deployments stuck

Description

If a deployment is interrupted during the installation of the cluster-essentials, following deployments are failing during the cluster-essentials installation.

Expected result

Deployment has to behave idempotent and re-deployments should always be possible. Components have to be able to deal with "unfinished" work from previous deployments.

Actual result

Interrupting the cluster-essential deployment blocks later re-deployments (they stuck in an endless-loop and fail with an timeout).

Steps to reproduce

  1. Start the Kyma deploymemt: kyma alpha deploy
  2. Interrupt the deployment with CTR-C during the cluster-essential deployment. E.g.
./bin/kyma-darwin  alpha deploy -f overrides.yaml -v
2021/01/15 15:55:33 Configure Kubernetes DNS to support Kyma local dev domain
2021/01/15 15:55:33 Configure Kubernetes DNS to support Kyma local dev domain finished successfully: false
2021/01/15 15:55:33 Kyma prerequisites deployment
2021/01/15 15:55:33 [overrides/overrides.go] Reading the overrides from the cluster completed successfully!
2021/01/15 15:55:33 Deploying kyma-installer namespace
2021/01/15 15:55:33 [prerequisites/prerequisites.go] Installing component cluster-essentials
2021/01/15 15:55:33 [components/component.go] Deploying cluster-essentials in kyma-system from workspace/kyma/resources/cluster-essentials
2021/01/15 15:55:33 [overrides/overrides.go] Overrides for cluster-essentials: map[...]
2021/01/15 15:55:33 getting history for release cluster-essentials
2021/01/15 15:55:33 [helm/client.go] Starting install for release cluster-essentials in namespace kyma-system
2021/01/15 15:55:36 creating 1 resource(s)
2021/01/15 15:55:37 Starting delete for "cluster-essentials-crd-install" ServiceAccount
2021/01/15 15:55:37 serviceaccounts "cluster-essentials-crd-install" not found
2021/01/15 15:55:37 creating 1 resource(s)
2021/01/15 15:55:37 Starting delete for "cluster-essentials-crd-install" ClusterRole
2021/01/15 15:55:37 clusterroles.rbac.authorization.k8s.io "cluster-essentials-crd-install" not found
2021/01/15 15:55:37 creating 1 resource(s)
2021/01/15 15:55:37 Starting delete for "cluster-essentials-crd-install" ClusterRoleBinding
2021/01/15 15:55:37 clusterrolebindings.rbac.authorization.k8s.io "cluster-essentials-crd-install" not found
2021/01/15 15:55:38 creating 1 resource(s)
2021/01/15 15:55:38 Starting delete for "cluster-essentials-crd-0" ConfigMap
2021/01/15 15:55:38 configmaps "cluster-essentials-crd-0" not found
- Signal 'interrupt' received from Terminal. Exiting...
  1. Trigger the deployment again. The cluster-essentials deployment ends in an endless-loop:
2021/01/15 15:55:49 [helm/client.go] Starting upgrade for release cluster-essentials in namespace kyma-system
2021/01/15 15:55:49 preparing upgrade for cluster-essentials
2021/01/15 15:55:49 [helm/client.go] Error: "cluster-essentials" has no deployed releases
2021/01/15 15:55:52 getting history for release cluster-essentials
2021/01/15 15:55:53 [helm/client.go] Starting upgrade for release cluster-essentials in namespace kyma-system
2021/01/15 15:55:53 preparing upgrade for cluster-essentials
2021/01/15 15:55:53 [helm/client.go] Error: "cluster-essentials" has no deployed releases
2021/01/15 15:55:59 getting history for release cluster-essentials
2021/01/15 15:55:59 [helm/client.go] Starting upgrade for release cluster-essentials in namespace kyma-system
2021/01/15 15:55:59 preparing upgrade for cluster-essentials
2021/01/15 15:55:59 [helm/client.go] Error: "cluster-essentials" has no deployed releases
2021/01/15 15:56:07 getting history for release cluster-essentials
2021/01/15 15:56:07 [helm/client.go] Starting upgrade for release cluster-essentials in namespace kyma-system
2021/01/15 15:56:07 preparing upgrade for cluster-essentials
2021/01/15 15:56:07 [helm/client.go] Error: "cluster-essentials" has no deployed releases
...
2021/01/15 16:19:26 [prerequisites/prerequisites.go] Error installing prerequisite cluster-essentials: Error: Failed to deploy cluster-essentials within the configured time. Error: "cluster-essentials" has no deployed releases (The installation will not continue)

Troubleshooting

parallel-installation lib logs improvement

Description

As a developer / user i want to have clean meaningful logs per default and verbose logs for debugging / troubleshooting.

Reasons

AC:

  • clean, meaningful logs
  • configuration for enabling verbose logs

Attachments

Test issue

Description

Expected result

Actual result

Steps to reproduce

Troubleshooting

Further improvements in parallel-install library

Description

The first implementation of the parallel-install library is done and is now able to install and uninstall Kyma on a Gardener cluster using parallel execution.

Here we collect all the further improvements that we would like to achieve in the future releases:

Scope for kyma 1.19

  • Installation/uninstallation should work on a K3s cluster.
  • Support Kyma installation with evaluation and production profiles.
  • Support Kyma upgrades.
  • Support upgrade and install option like helm upgrade --install.
  • Support installing Kyma from releases and master versions.
  • Support installation even when the component exists (can be achieved via upgrade --install).

Scope for kyma 1.20

  • Support component list like this instead of parsing the component list from installation CR.
  • Uninstallation should try to uninstall a component only if found.
  • Uninstallation should not require passing overrides and resource path, but only a component list.
  • Support installing/uninstalling only a single component.
  • Support deleting old components while upgrade.

Use terraform modules instead of hardcoded resources

Description
The actual resource definition to provision a cluster should not be part of hydroform itself. Instead, they should be provided by well-defined terraform modules written and maintained by operations experts.

Reasons
Don't require code changes anytime the resources for provisioning a cluster are changing.
Separation of concern, hydroform takes care of terraform integration, modules take care of provisioning a cluster on a specific provider
Decoupling, no provider specific knowledge required inside hydroform.

Criterias

New Installation: Istio installation failes in K3s when patching MutatingWebhookConfiguration

Description
The alpha deploy command on K3s fails during the installation of the istio component. The kubectl patch applied for the MutatingWebhookConfiguration fails consistently.

Tested on K3s cluster, deployed with alpha provision k3s command.

Expected result

Installation of Istio component using the Kyma Istio HELM chart should not fail on K3s.

Actual result

Execution of the istio-install.sh and istio-upgrade.sh script fails when the patch for MutatingWebhookConfiguration is applied. Error message is:

    + echo 'Apply Kyma related checks and patches'
    + kubectl patch MutatingWebhookConfiguration istio-sidecar-injector --type json -p '[{"op":"add","path":"/webhooks/0/namespaceSelector/matchExpressions/-","value":{"key":"gardener.cloud/purpose","operator":"NotIn","values":["kube-system"]}}]'
    Apply Kyma related checks and patches
    The request is invalid

Steps to reproduce

After removing the patch command, Istio could be installed on K3s using the Istio HELM chart.

Troubleshooting

Create Installation SDK for Kyma

Description

Create SDK for installing Kyma. It should be designed considering that it will be used by Kyma CLI, Compass Provisioner (and maybe pipelines in the future).

Acceptance:

  • Platform agnostic Kyma installation (any cloud provider, Minikube)
  • Easy to integrate with Kyma CLI
  • Easy to integrate with Compass Provisioner

parallel-installation lib wrong kubeconfig configuration

Description

Kubernetes client is configured in 2 places in the library: one is a client used in prerequisites and another one is a client used in helm client. The first client is created using kubeconfig provided by user via kubeconfig flag, the second one is created with exported KUBECONFIG environment variable. This can lead to confusion.

Expected result

Both kubernetes clients are created with the same kubeconfig file.

Actual result

Two different kubeconfig files are used for deploying kyma.

Steps to reproduce

  1. export KUBECONFIG=file_1.yaml
  2. go run example.go --kubeconfig file_2.yaml

Troubleshooting

palarell-installation lib support for profiles

Description

It should be possible to deploy kyma using profiles.

Reasons

with kyma-installer it is possible to install / upgrade kyma in given profile: evaluation & production. Similar functionality should be provided by installation library.
AC:

  • it is possible to deploy kyma using one of 2 pre-defined profiles: evaluation or production
  • it is possible to provide user overrides which will be put on top of a profile

Attachments

Hydroform custom data path not working on windows

Description
When setting a custom path for the hydroform files on windows, it does not work and the following error is shown:

Error: unable to provision gardener cluster:
Error: No configuration files
Apply requires configuration to be present. Applying without a configuration
would mark everything for destruction, which is normally not what is desired.
If you would like to destroy everything, run 'terraform destroy' instead.

Expected result
Terraform finds the files in the given path

Actual result
Terraform returns the same error as when running on an empty directory, meaning that the given custom path is not handled properly on windows.

parallel-installation lib proper handling of helm release statuses

Description

Atm parallel-installation library does not investigate what is the status of helm release to be upgraded. It is only checked if helm release exists to distinguish between installation & upgrade. This can lead to a dangerous situation when an operator can start installation on pending-install helm release. Other helm release statuses should be considered as well.

Reasons

Parallel-installation library should investigate other statuses e.g. pending-install, pending-upgrade.

Attachments

New Installation: namespaces created during the installation have to be removed when uninstalling Kyma

Description

The Kyma installer lib created several namespaces in Kubernetes. These namespaces have to be removed as part of the Kyma uninstallation.

AC:

  • The namespaces which are created during the installation are defined in the components-list file. The installer-lib has to retrieve them (from HELM release secrets) which were used for the installation (stored as part of the metadata CM). No static list of namespaces should be used anymore.
  • If a namespace still contains resources after the uninstallation, it's not allowed to delete it as these resources could be created by the user.

Reasons

Removing Kyma from a cluster should also remove empty namespaces which were created by the Kyma installer.

Attachments

Git function creation fails due to missing GitRepository CR

Description

Function creation fails due to missing GitRepository CR.

Expected result

Function should be created.

Actual result

Name:         nodejsgit
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  serverless.kyma-project.io/v1alpha1
Kind:         Function
Metadata:
  Creation Timestamp:  2020-11-12T09:13:28Z
  Generation:          1
  Resource Version:    2816854
  Self Link:           /apis/serverless.kyma-project.io/v1alpha1/namespaces/default/functions/nodejsgit
  UID:                 3c401911-53f5-4b79-a574-e46e84e24fbd
Spec:
  Base Dir:  /
  Build Resources:
    Limits:
      Cpu:     700m
      Memory:  700Mi
    Requests:
      Cpu:       200m
      Memory:    200Mi
  Max Replicas:  1
  Min Replicas:  1
  Reference:     master
  Resources:
    Limits:
      Cpu:     100m
      Memory:  128Mi
    Requests:
      Cpu:     50m
      Memory:  64Mi
  Runtime:     nodejs12
  Source:      nodejsgit
  Type:        git
Status:
  Conditions:
    Last Transition Time:  2020-11-12T09:13:28Z
    Message:               Sources update failed: GitRepository.serverless.kyma-project.io "nodejsgit" not found
    Reason:                SourceUpdateFailed
    Status:                False
    Type:                  ConfigurationReady
  Runtime:                 nodejs12
  Source:                  nodejsgit
Events:                    <none>

Steps to reproduce

  • Create git type function e.g
kyma init function --name=nodejsgit --url=https://github.com/m00g3n/public-gitops.git
  • Apply function using function CLI
kyma apply function

Troubleshooting

Provisioning fails with with "Shoot condition failed: Missing required deployments: [cluster-autoscaler]" error.

Description

While performing tests on Compass Provisioner component (Gardener on Azure) I noticed the following error returned from Hydroform: "Shoot condition failed: Missing required deployments: [cluster-autoscaler]" that occurred once in 12 runs. After checking Gardener project it turned out that cluster has been provisioned so that the state stored by Provisioner is inconsistent.

Expected result

Hydroform provides blocking, synchronous operations. Provision method call shouldn't finish before Gardener completed cluster provisioning. It may be a matter of incorrect handling of Gardener Shoot resource statuses.

Actual result

Provision method fails with error but Gardener keeps retrying cluster creation.

Steps to reproduce

The issue is random. The following setting were used for provisioning:

"clusterConfig": {
                    "name": "<name>",
                    "projectName": "<project_name>",
                    "kubernetesVersion": "1.15.4",
                    "nodeCount": 3,
                    "volumeSizeGB": 35,
                    "machineType": "Standard_D2_v3",
                    "region": "westeurope",
                    "provider": "azure",
                    "seed": "az-eu1",
                    "targetSecret": "<target secret>",
                    "diskType": "Standard_LRS",
                    "workerCidr": "10.250.0.0/19",
                    "autoScalerMin": 2,
                    "autoScalerMax": 4,
                    "maxSurge": 4,
                    "maxUnavailable": 1,
                    "providerSpecificConfig": {
                        "vnetCidr": "10.250.0.0/19"
                    }
                }

Decoupling provider specific libraries

Description
At the moment hydroform imports the terraform-provider libraries in order to support them. That should be improved by staying provider library neutral. Use the terraform specific discovery and dynamic loading mechanism to provision provider specific, that is one big benefit of terraform which should not be lost.
Goal: add a new provider without the need of touching code at all, it can be all done by configuration only.
This is a follow up of: #29

It will leave the user-friendly aspects open for #35
Wit htat it probably cannot be merged to master and needs to stay in a dedicated branch until llinked issue is finished.

Reasons
Small binary footprint
No transitive dependency hell
Only generic code -> no code increase for new provider -> less code
No need to touch code for security vulnerability in provider library

Make CheckInstallation and TriggerUninstall methods part of the KymaInstaller struct

Description

To make it easier to work with CheckInstallation and TriggerUninstall methods we should make them part of KymaInstaller struct. We would like to also preserve the standalone nature of those methods as they do not require initialization of full KymaInstaller.

The proposed approach is to have two sets of those methods, one as part of KymaInstaller and one standalone or wrapped in some lighter interface. Both sets should share the same business logic.

Reasons

  • Make it easier to mock CheckInstallation and TriggerUninstall methods.
  • Make those methods part of an Installation SDK API

Attachments

Gardener AWS: Incorrect "zone" property is used

Description
The gardener AWS terraform template is using a variable aws_zone to set the zone which is never set, since hydroform sets the zone variable for all providers in gardener.
We need to use the zone variable aslo for AWS like the others.

Expected result
When setting the zone flag the Gardener AWS cluster uses that value in provisioning

Actual result
Validation is passed sucessfully but later terraform prompts to set the aws_zone variable and provisioning can't be done.

Verbose provisioning

Description
The provision call of the provision library is a blocking call giving no further in-between status. In case of strange behavior, it will be great to have a way of retrieving the internal logs of the command to be used as verbose logs. Maybe improve the interface to attach a log stream to the stdout of the client in case verbose logging is wanted.

Reasons
Often the provisioning call just executes giving no details on whats happening and even on the cloud provider side nothing is happening. So having a verbose mode indicating that a terraform-provider gets downloaded will help to understand whats going on.

Attachments

PoC: Decoupling provider specific libraries

Description
At the moment hydroform imports the terraform-provider libraries in order to support them. That should be improved by staying provider library neutral. Use the terraform specific discovery and dynamic loading mechanism to provision provider specific, that is one big benefit of terraform which should not be lost.
Goal: add a new provider without the need of touching code at all, it can be all done by configuration only.

Reasons
Small binary footprint
No transitive dependency hell
Only generic code -> no code increase for new provider -> less code
No need to touch code for security vulnerability in provider library

Gardener on Azure example doesn't work

Description

I tried to run Gardener on Azure example using information from examples/gardener/README.md.
When running the following command:
go run ./examples/gardener/main.go -p {project_name} -c {/path/to/gardener/kubeconfig} -s {Azure-secret-name} --persist

I got the following error:

stat ./examples/gardener/main.go: no such file or directory

After adjusting the path and executing the command:
go run ./examples/gardener/azure/main.go -p {project_name} -c {/path/to/gardener/kubeconfig} -s {Azure-secret-name} --persist

I got the following:

Provisioning hydro-azure on gardener...
Error unable to provision gardener cluster: 
Error: shoots.garden.sapcloud.io "hydro-azure" is forbidden: [spec.cloud.azure.workers[0].volume.type: Unsupported value: garden.Volume{Type:(*string)(0xc00570b220), Size:"35Gi"}: supported values: "Standard_LRS", "StandardSSD_LRS", "Premium_LRS" spec.cloud.azure.workers[1].volume.type: Unsupported value: garden.Volume{Type:(*string)(0xc00570b240), Size:"35Gi"}: supported values: "Standard_LRS", "StandardSSD_LRS", "Premium_LRS" spec.provider.workers[0].volume.type: Unsupported value: garden.Volume{Type:(*string)(0xc00570b220), Size:"35Gi"}: supported values: "Standard_LRS", "StandardSSD_LRS", "Premium_LRS" spec.provider.workers[1].volume.type: Unsupported value: garden.Volume{Type:(*string)(0xc00570b240), Size:"35Gi"}: supported values: "Standard_LRS", "StandardSSD_LRS", "Premium_LRS"]

  on .hydroform/clusters/gardener/test-ag/hydro-azure/terraform.tf line 34, in resource "gardener_shoot" "test_cluster":
  34: resource "gardener_shoot" "test_cluster" {

Expected result

Examples should work out of the box.

Actual result
Examples need some minor adjustments to work.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.