From 068e9d97c4bdfedd80e3fcc08d00190051ab36ee Mon Sep 17 00:00:00 2001 From: Zheng Xi Zhou Date: Mon, 30 Aug 2021 14:49:57 +0800 Subject: [PATCH] Fix: move Terraform defintions charts/vela-core/templates/definitions (#2176) Make all Terraform definitions to install when vela-core is installing --- .../definitions/terraform-alibaba-ack.yaml | 208 ++++++++++++++++++ .../definitions/terraform-alibaba-oss.yaml | 33 +++ .../definitions/terraform-alibaba-rds.yaml | 1 + .../TraitDefinition-service-binding.yaml | 42 ---- 4 files changed, 242 insertions(+), 42 deletions(-) create mode 100644 charts/vela-core/templates/definitions/terraform-alibaba-ack.yaml create mode 100644 charts/vela-core/templates/definitions/terraform-alibaba-oss.yaml rename docs/examples/terraform/cloud-resource-provision-and-consume/ComponentDefinition-alibaba-rds.yaml => charts/vela-core/templates/definitions/terraform-alibaba-rds.yaml (96%) delete mode 100644 docs/examples/terraform/cloud-resource-provision-and-consume/TraitDefinition-service-binding.yaml diff --git a/charts/vela-core/templates/definitions/terraform-alibaba-ack.yaml b/charts/vela-core/templates/definitions/terraform-alibaba-ack.yaml new file mode 100644 index 000000000..75f89d228 --- /dev/null +++ b/charts/vela-core/templates/definitions/terraform-alibaba-ack.yaml @@ -0,0 +1,208 @@ +apiVersion: core.oam.dev/v1beta1 +kind: ComponentDefinition +metadata: + name: alibaba-ack + namespace: {{.Values.systemDefinitionNamespace}} + annotations: + definition.oam.dev/description: Terraform configuration for Alibaba Cloud ACK cluster + type: terraform +spec: + workload: + definition: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Configuration + schematic: + terraform: + configuration: | + module "kubernetes" { + source = "github.com/zzxwill/terraform-alicloud-kubernetes" + new_nat_gateway = true + vpc_name = var.vpc_name + vpc_cidr = var.vpc_cidr + vswitch_name_prefix = var.vswitch_name_prefix + vswitch_cidrs = var.vswitch_cidrs + master_instance_types = var.master_instance_types + worker_instance_types = var.worker_instance_types + k8s_pod_cidr = var.k8s_pod_cidr + k8s_service_cidr = var.k8s_service_cidr + k8s_worker_number = var.k8s_worker_number + cpu_core_count = var.cpu_core_count + memory_size = var.memory_size + zone_id = var.zone_id + k8s_version = var.k8s_version + k8s_name_prefix = var.k8s_name_prefix + } + ###################### + # Instance types variables + ###################### + variable "cpu_core_count" { + description = "CPU core count is used to fetch instance types." + type = number + default = 4 + } + variable "memory_size" { + description = "Memory size used to fetch instance types." + type = number + default = 8 + } + ###################### + # VPC variables + ###################### + variable "vpc_name" { + description = "The vpc name used to create a new vpc when 'vpc_id' is not specified. Default to variable `example_name`" + type = string + default = "tf-k8s-vpc" + } + variable "vpc_cidr" { + description = "The cidr block used to launch a new vpc when 'vpc_id' is not specified." + type = string + default = "10.0.0.0/8" + } + ###################### + # VSwitch variables + ###################### + variable "vswitch_name_prefix" { + type = string + description = "The vswitch name prefix used to create several new vswitches. Default to variable 'example_name'." + default = "tf-k8s-vsw" + } + variable "number_format" { + description = "The number format used to output." + type = string + default = "%02d" + } + variable "vswitch_ids" { + description = "List of existing vswitch id." + type = list + default = [] + } + variable "vswitch_cidrs" { + description = "List of cidr blocks used to create several new vswitches when 'vswitch_ids' is not specified." + type = list + default = [ + "10.1.0.0/16", + "10.2.0.0/16", + "10.3.0.0/16"] + } + variable "k8s_name_prefix" { + description = "The name prefix used to create several kubernetes clusters. Default to variable `example_name`" + type = string + default = "poc" + } + variable "new_nat_gateway" { + type = bool + description = "Whether to create a new nat gateway. In this template, a new nat gateway will create a nat gateway, eip and server snat entries." + default = true + } + variable "master_instance_types" { + description = "The ecs instance types used to launch master nodes." + type = list + default = [ + # hongkong + "ecs.sn1ne.xlarge", + # hongkong + "ecs.c6.xlarge", + # hongkong + "ecs.c4.xlarge", + # hongkong + "ecs.c5.xlarge", + "ecs.n4.xlarge", + # "ecs.n1.large", + # "ecs.sn1.large", + # "ecs.s6-c1m2.xlarge", + # "ecs.c6e.xlarge" + ] + } + variable "worker_instance_types" { + description = "The ecs instance types used to launch worker nodes." + type = list + default = [ + # hongkong + "ecs.sn1ne.xlarge", + # hongkong + "ecs.c6.xlarge", + # hongkong + "ecs.c4.xlarge", + # hongkong + "ecs.c6e.xlarge", + "ecs.n4.xlarge", + // "ecs.n1.large", + // "ecs.sn1.large", + // "ecs.s6-c1m2.xlarge" + ] + } + variable "node_cidr_mask" { + type = number + description = "The node cidr block to specific how many pods can run on single node. Valid values: [24-28]." + default = 24 + } + variable "enable_ssh" { + description = "Enable login to the node through SSH." + type = bool + default = true + } + variable "install_cloud_monitor" { + description = "Install cloud monitor agent on ECS." + type = bool + default = true + } + variable "cpu_policy" { + type = string + description = "kubelet cpu policy. Valid values: 'none','static'. Default to 'none'." + default = "none" + } + variable "proxy_mode" { + description = "Proxy mode is option of kube-proxy. Valid values: 'ipvs','iptables'. Default to 'iptables'." + type = string + default = "iptables" + } + variable "password" { + description = "The password of ECS instance." + type = string + default = "Just4Test" + } + variable "k8s_worker_number" { + description = "The number of worker nodes in kubernetes cluster." + type = number + default = 2 + } + # k8s_pod_cidr is only for flannel network + variable "k8s_pod_cidr" { + description = "The kubernetes pod cidr block. It cannot be equals to vpc's or vswitch's and cannot be in them." + type = string + default = "172.20.0.0/16" + } + variable "k8s_service_cidr" { + description = "The kubernetes service cidr block. It cannot be equals to vpc's or vswitch's or pod's and cannot be in them." + type = string + default = "192.168.0.0/16" + } + variable "k8s_version" { + description = "The version of the kubernetes version. Valid values: '1.16.6-aliyun.1','1.14.8-aliyun.1'. Default to '1.16.6-aliyun.1'." + type = string + default = "1.20.4-aliyun.1" + } + variable "zone_id" { + description = "Availability Zone ID" + type = string + default = "cn-hongkong-b" + # "cn-beijing-a" + } + output "name" { + value = module.kubernetes.name + } + output "kubeconfig" { + value = module.kubernetes.kubeconfig + } + output "cluster_ca_cert" { + value = module.kubernetes.cluster_ca_cert + } + output "client_cert" { + value = module.kubernetes.client_cert + } + output "client_key" { + value = module.kubernetes.client_key + } + output "api_server_internet" { + value = module.kubernetes.api_server_internet + } diff --git a/charts/vela-core/templates/definitions/terraform-alibaba-oss.yaml b/charts/vela-core/templates/definitions/terraform-alibaba-oss.yaml new file mode 100644 index 000000000..170bc9387 --- /dev/null +++ b/charts/vela-core/templates/definitions/terraform-alibaba-oss.yaml @@ -0,0 +1,33 @@ +apiVersion: core.oam.dev/v1alpha2 +kind: ComponentDefinition +metadata: + name: alibaba-oss + namespace: {{.Values.systemDefinitionNamespace}} + annotations: + definition.oam.dev/description: Terraform configuration for Alibaba Cloud OSS object + type: terraform +spec: + workload: + definition: + apiVersion: terraform.core.oam.dev/v1beta1 + kind: Configuration + schematic: + terraform: + configuration: | + resource "alicloud_oss_bucket" "bucket-acl" { + bucket = var.bucket + acl = var.acl + } + output "BUCKET_NAME" { + value = "${alicloud_oss_bucket.bucket-acl.bucket}.${alicloud_oss_bucket.bucket-acl.extranet_endpoint}" + } + variable "bucket" { + description = "OSS bucket name" + default = "vela-website" + type = string + } + variable "acl" { + description = "OSS bucket ACL, supported 'private', 'public-read', 'public-read-write'" + default = "private" + type = string + } \ No newline at end of file diff --git a/docs/examples/terraform/cloud-resource-provision-and-consume/ComponentDefinition-alibaba-rds.yaml b/charts/vela-core/templates/definitions/terraform-alibaba-rds.yaml similarity index 96% rename from docs/examples/terraform/cloud-resource-provision-and-consume/ComponentDefinition-alibaba-rds.yaml rename to charts/vela-core/templates/definitions/terraform-alibaba-rds.yaml index b6764d759..5339e5d74 100644 --- a/docs/examples/terraform/cloud-resource-provision-and-consume/ComponentDefinition-alibaba-rds.yaml +++ b/charts/vela-core/templates/definitions/terraform-alibaba-rds.yaml @@ -2,6 +2,7 @@ apiVersion: core.oam.dev/v1alpha2 kind: ComponentDefinition metadata: name: alibaba-rds + namespace: {{.Values.systemDefinitionNamespace}} annotations: definition.oam.dev/description: Terraform configuration for Alibaba Cloud RDS object type: terraform diff --git a/docs/examples/terraform/cloud-resource-provision-and-consume/TraitDefinition-service-binding.yaml b/docs/examples/terraform/cloud-resource-provision-and-consume/TraitDefinition-service-binding.yaml deleted file mode 100644 index c859c7fa3..000000000 --- a/docs/examples/terraform/cloud-resource-provision-and-consume/TraitDefinition-service-binding.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: core.oam.dev/v1beta1 -kind: TraitDefinition -metadata: - annotations: - definition.oam.dev/description: "binding cloud resource secrets to pod env" - name: service-binding -spec: - appliesToWorkloads: - - deployments.apps - schematic: - cue: - template: | - patch: { - spec: template: spec: { - // +patchKey=name - containers: [{ - name: context.name - // +patchKey=name - env: [ - for envName, v in parameter.envMappings { - name: envName - valueFrom: { - secretKeyRef: { - name: v.secret - if v["key"] != _|_ { - key: v.key - } - if v["key"] == _|_ { - key: envName - } - } - } - }, - ] - }] - } - } - - parameter: { - // +usage=The mapping of environment variables to secret - envMappings: [string]: [string]: string - }