Skip to content

Commit 66b586b

Browse files
committed
add eshop-service
1 parent a86bd25 commit 66b586b

File tree

4 files changed

+215
-0
lines changed

4 files changed

+215
-0
lines changed

eshop-service/0.0.1/README.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<!-- BEGIN_TF_DOCS -->
2+
## Requirements
3+
4+
| Name | Version |
5+
|------|---------|
6+
| <a name="requirement_kubectl"></a> [kubectl](#requirement\_kubectl) | 1.14.0 |
7+
8+
## Providers
9+
10+
| Name | Version |
11+
|------|---------|
12+
| <a name="provider_kubectl"></a> [kubectl](#provider\_kubectl) | 1.14.0 |
13+
| <a name="provider_kubernetes"></a> [kubernetes](#provider\_kubernetes) | n/a |
14+
15+
## Modules
16+
17+
| Name | Source | Version |
18+
|------|--------|---------|
19+
| <a name="module_deployment"></a> [deployment](#module\_deployment) | terraform-iaac/deployment/kubernetes | 1.4.2 |
20+
| <a name="module_service"></a> [service](#module\_service) | terraform-iaac/service/kubernetes | 1.0.4 |
21+
22+
## Resources
23+
24+
| Name | Type |
25+
|------|------|
26+
| [kubectl_manifest.ns](https://registry.terraform.io/providers/gavinbunney/kubectl/1.14.0/docs/resources/manifest) | resource |
27+
| [kubernetes_service.service](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/data-sources/service) | data source |
28+
29+
## Inputs
30+
31+
| Name | Description | Type | Default | Required |
32+
|------|-------------|------|---------|:--------:|
33+
| <a name="input_env"></a> [env](#input\_env) | Name and value pairs to set as the environment variables | `map(string)` | `{}` | no |
34+
| <a name="input_image_version"></a> [image\_version](#input\_image\_version) | Docker image tag | `string` | `"1.23"` | no |
35+
| <a name="input_limit_cpu"></a> [limit\_cpu](#input\_limit\_cpu) | CPU limit. e.g. 0.5, 1, 2 | `string` | `""` | no |
36+
| <a name="input_limit_memory"></a> [limit\_memory](#input\_limit\_memory) | Memory limit. e.g. 128Mi, 512Mi, 1Gi, 2Gi, 4Gi | `string` | `""` | no |
37+
| <a name="input_name"></a> [name](#input\_name) | Name of the deployment resource. Auto-generated if empty. | `string` | `""` | no |
38+
| <a name="input_namespace"></a> [namespace](#input\_namespace) | Namespace to deploy. Auto-generated if empty. | `string` | `""` | no |
39+
| <a name="input_ports"></a> [ports](#input\_ports) | Service ports to expose | `list(number)` | <pre>[<br> 80<br>]</pre> | no |
40+
| <a name="input_request_cpu"></a> [request\_cpu](#input\_request\_cpu) | CPU request. e.g. 0.5, 1, 2 | `string` | `"0.1"` | no |
41+
| <a name="input_request_memory"></a> [request\_memory](#input\_request\_memory) | Memory request. e.g. 128Mi, 512Mi, 1Gi, 2Gi, 4Gi | `string` | `"128Mi"` | no |
42+
| <a name="input_seal_metadata_application_instance_name"></a> [seal\_metadata\_application\_instance\_name](#input\_seal\_metadata\_application\_instance\_name) | Seal metadata application instance name. | `string` | `""` | no |
43+
| <a name="input_seal_metadata_application_name"></a> [seal\_metadata\_application\_name](#input\_seal\_metadata\_application\_name) | Seal metadata application name. | `string` | `""` | no |
44+
| <a name="input_seal_metadata_module_name"></a> [seal\_metadata\_module\_name](#input\_seal\_metadata\_module\_name) | Seal metadata module name. | `string` | `""` | no |
45+
| <a name="input_seal_metadata_project_name"></a> [seal\_metadata\_project\_name](#input\_seal\_metadata\_project\_name) | Seal metadata project name. | `string` | `""` | no |
46+
47+
## Outputs
48+
49+
| Name | Description |
50+
|------|-------------|
51+
| <a name="output_ports"></a> [ports](#output\_ports) | Service Ports |
52+
| <a name="output_service_ip"></a> [service\_ip](#output\_service\_ip) | Service IP |
53+
<!-- END_TF_DOCS -->

eshop-service/0.0.1/main.tf

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
terraform {
2+
required_providers {
3+
kubectl = {
4+
source = "gavinbunney/kubectl"
5+
version = "1.14.0"
6+
}
7+
}
8+
}
9+
10+
resource "kubectl_manifest" "ns" {
11+
yaml_body = <<YAML
12+
apiVersion: v1
13+
kind: Namespace
14+
metadata:
15+
name: ${local.namespace}
16+
YAML
17+
}
18+
19+
module "deployment" {
20+
depends_on = [resource.kubectl_manifest.ns]
21+
22+
source = "terraform-iaac/deployment/kubernetes"
23+
version = "1.4.2"
24+
25+
name = local.name
26+
namespace = local.namespace
27+
image = "nginx:${var.image_version}"
28+
resources = {
29+
request_cpu = var.request_cpu == "" ? null : var.request_cpu
30+
limit_cpu = var.limit_cpu == "" ? null : var.limit_cpu
31+
request_memory = var.request_memory == "" ? null : var.request_memory
32+
limit_memory = var.limit_memory == "" ? null : var.limit_memory
33+
}
34+
env = var.env
35+
}
36+
37+
module "service" {
38+
depends_on = [resource.kubectl_manifest.ns]
39+
40+
source = "terraform-iaac/service/kubernetes"
41+
version = "1.0.4"
42+
43+
app_name = local.name
44+
app_namespace = local.namespace
45+
type = "NodePort"
46+
port_mapping = [for p in var.ports :
47+
{
48+
name = "port-${p}"
49+
internal_port = p
50+
external_port = p
51+
protocol = "TCP"
52+
}]
53+
}
54+
55+
data "kubernetes_service" "service" {
56+
depends_on = [module.service]
57+
58+
metadata {
59+
name = local.name
60+
namespace = local.namespace
61+
}
62+
}
63+
64+
locals {
65+
name = coalesce(var.name, "${var.seal_metadata_module_name}")
66+
namespace = coalesce(var.namespace, "${var.seal_metadata_project_name}-${var.seal_metadata_application_name}-${var.seal_metadata_application_instance_name}")
67+
}

eshop-service/0.0.1/outputs.tf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
output "service_ip" {
2+
description = "Service IP"
3+
value = data.kubernetes_service.service.spec.0.cluster_ip
4+
}
5+
6+
output "ports" {
7+
description = "Service Ports"
8+
value = var.ports
9+
}

eshop-service/0.0.1/variables.tf

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# @label "版本"
2+
# @group "基础"
3+
# @options ["1.23", "1.24", "latest"]
4+
variable "image_version" {
5+
type = string
6+
description = "Docker image tag"
7+
default = "1.23"
8+
}
9+
# @label "端口"
10+
# @group "基础"
11+
variable "ports" {
12+
type = list(number)
13+
description = "Service ports to expose"
14+
default = [80]
15+
}
16+
# @label "环境变量"
17+
# @group "基础"
18+
variable "env" {
19+
type = map(string)
20+
description = "Name and value pairs to set as the environment variables"
21+
default = {}
22+
}
23+
# @group "资源"
24+
# @label "CPU预留"
25+
variable "request_cpu" {
26+
type = string
27+
description = "CPU request. e.g. 0.5, 1, 2"
28+
default = "0.1"
29+
}
30+
# @group "资源"
31+
# @label "内存预留"
32+
variable "request_memory" {
33+
type = string
34+
description = "Memory request. e.g. 128Mi, 512Mi, 1Gi, 2Gi, 4Gi"
35+
default = "128Mi"
36+
}
37+
# @group "资源"
38+
# @label "CPU限制"
39+
variable "limit_cpu" {
40+
type = string
41+
description = "CPU limit. e.g. 0.5, 1, 2"
42+
default = ""
43+
}
44+
# @group "资源"
45+
# @label "内存限制"
46+
variable "limit_memory" {
47+
type = string
48+
description = "Memory limit. e.g. 128Mi, 512Mi, 1Gi, 2Gi, 4Gi"
49+
default = ""
50+
}
51+
# @hidden
52+
variable "namespace" {
53+
type = string
54+
description = "Namespace to deploy. Auto-generated if empty."
55+
default = ""
56+
}
57+
# @hidden
58+
variable "name" {
59+
type = string
60+
description = "Name of the deployment resource. Auto-generated if empty."
61+
default = ""
62+
}
63+
# @hidden
64+
variable "seal_metadata_application_name" {
65+
type = string
66+
description = "Seal metadata application name."
67+
default = ""
68+
}
69+
# @hidden
70+
variable "seal_metadata_application_instance_name" {
71+
type = string
72+
description = "Seal metadata application instance name."
73+
default = ""
74+
}
75+
# @hidden
76+
variable "seal_metadata_project_name" {
77+
type = string
78+
description = "Seal metadata project name."
79+
default = ""
80+
}
81+
# @hidden
82+
variable "seal_metadata_module_name" {
83+
type = string
84+
description = "Seal metadata module name."
85+
default = ""
86+
}

0 commit comments

Comments
 (0)