kyma-project / hydroform Goto Github PK
View Code? Open in Web Editor NEWInfrastructure SDK for provisioning and managing Kubernetes cluster based on Terraform
License: Apache License 2.0
Infrastructure SDK for provisioning and managing Kubernetes cluster based on Terraform
License: Apache License 2.0
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.
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.
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
.exe
extension so that they can be executed.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
Troubleshooting
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
Description
When there is an available gardener terraform module, integrate it into Hydroform and get rid of the hardcoded template.
Acceptance criteria
Extra info
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:
evaluation
or production
Attachments
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
Description
Implement mechanism giving possibility to report errors. This should be consistent with the progress reporting mechanism.
AC:
Reasons
Having a consistent way for retrieving errors.
Description
The Kyma installer lib created several namespaces in Kubernetes. These namespaces have to be removed as part of the Kyma uninstallation.
AC:
Reasons
Removing Kyma from a cluster should also remove empty namespaces which were created by the Kyma installer.
Attachments
Description
The installation library should accept kyma metadata and preserve it on a cluster after successful kyma deployment.
Reasons
AC:
Attachments
Description
Hydroform has a special discovery handling for gardener's plugin since it is not in the official terraform registry.
This custom mechanism fails to download the file when the plugin destination path does not exist.
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:
Reasons
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
kyma sync function
Troubleshooting
Description
As a developer / user i want to have clean meaningful logs per default and verbose logs for debugging / troubleshooting.
Reasons
AC:
Attachments
Description
Same as in the Kyma CLI on kyma-project/cli#363, we are using ioutil.ReadAll()
to read a file on hydroform.
Please replace with io.Copy()
the same way as done on the CLI.
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"
}
}
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
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
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
Description
When we dont pass a value for the service endpoints from cli the azure on gardener cluster creation fails there is no value set for service endpoints in terraform tfvars file. In such a scenario have a default value.
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.
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.
Description
Follow-up of
#36 to make results of provider decoupling user-friendly.
That includes:
Reasons
Usability
Create a readme file for Hydroform.
The content should include:
** Related issues
kyma-project/kyma#5492
Description
When attempting to create a cluster and failing, the reattach mechanism is not always returning all error information.
For example here the previous errors are swallowed when returning the new one:
https://github.com/kyma-incubator/hydroform/blob/3f3b00d9799c0b7a705fa7fba2cbd2329beace71/provision/internal/operator/terraform/tfcmd.go#L109-L119
We need to wrap previous errors to not loose information when provisioning fails.
Description
Expected result
Actual result
Steps to reproduce
Troubleshooting
Description
Change the uninstallation method to undeploy. Improve existing mechanism by deleting finalizers & force deleting ns.
AC:
Reasons
Having consistent API.
Attachments
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
kyma alpha deploy
./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...
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
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
CheckInstallation
and TriggerUninstall
methods.Attachments
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
0.13.0
on Hydroform.provision
command works in the CLI after upgrading terraform on Hydroform.Extra info
require github.com/Azure/go-autorest v12.2.0+incompatible
in the go.mod
should fix it as suggested here kubernetes/client-go#628Description
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
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"
}
}
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
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:
Reasons
Having an easy and stable way of installing CRDs
Description
Use logging API instead of passing log function around.
AC:
Reasons
Having clean, consistent API across the 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
helm upgrade --install
.Scope for kyma 1.20
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" } }
}
}
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
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.
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()
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
kubectl get pods
Troubleshooting
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
git
type function e.gkyma init function --name=nodejsgit --url=https://github.com/m00g3n/public-gitops.git
kyma apply function
Troubleshooting
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.
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:
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
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.
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
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
Description
When provisioning an aks cluster it will use the default subscription/tenant/environment of your account. That settings must be configurable as well, see also https://www.terraform.io/docs/providers/azurerm/index.html#argument-reference
Reasons
I don't want to change my default subscriptions in order to provision a cluster
Attachments
Our Hydroform documentation needs some improvements so that it explains the examples better.
What needs to be done:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.