An open API service indexing awesome lists of open source software.

https://github.com/mastodon/terraform-ovh-k8s

Module to create a managed k8s cluster in OVH
https://github.com/mastodon/terraform-ovh-k8s

Last synced: about 1 month ago
JSON representation

Module to create a managed k8s cluster in OVH

Awesome Lists containing this project

README

          

# Mastodon Terraform - OVHCloud Kubernetes Cluster

Terraform module for creating a managed kubernetes cluster in OVHCloud.

## Requirements

| Name | Version |
|------|---------|
| [terraform](#requirement\_terraform) | >= 1.0.0 |
| [ovh](#requirement\_ovh) | ~> 2.5.0 |

## Providers

| Name | Version |
|------|---------|
| [ovh](#provider\_ovh) | 2.5.0 |

## Modules

No modules.

## Resources

| Name | Type |
|------|------|
| [ovh_cloud_project_kube.cluster](https://registry.terraform.io/providers/ovh/ovh/latest/docs/resources/cloud_project_kube) | resource |
| [ovh_cloud_project_kube_nodepool.node_pool](https://registry.terraform.io/providers/ovh/ovh/latest/docs/resources/cloud_project_kube_nodepool) | resource |
| [ovh_cloud_project_kube_oidc.oidc](https://registry.terraform.io/providers/ovh/ovh/latest/docs/resources/cloud_project_kube_oidc) | resource |

## Inputs

| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [cluster\_name](#input\_cluster\_name) | Name of the cluster to create. | `string` | n/a | yes |
| [cluster\_version](#input\_cluster\_version) | Kubelet version to use when creating the cluster. | `string` | n/a | yes |
| [network\_openstack\_id](#input\_network\_openstack\_id) | Openstack ID of the private network in which the cluster should be placed. | `string` | n/a | yes |
| [node\_pools](#input\_node\_pools) | Node pools to create for the cluster. |

list(object({
flavor_name = string
nodes = number
min_nodes = optional(number, 0)
max_nodes = optional(number, 0)
name = optional(string, "")
availability_zones = optional(list(string), [])
monthly_billed = optional(bool, false)
template = optional(
object({
annotations = optional(map(any), {})
labels = optional(map(any), {})
finalizers = optional(list(string), [])
unschedulable = optional(bool, false)
taints = optional(list(object({
effect = string
key = string
value = string
})), [])
}),
null
)
}))
| `[]` | no |
| [oidc\_client\_id](#input\_oidc\_client\_id) | OIDC client ID to give the cluster for login. | `string` | `""` | no |
| [oidc\_groups\_claim](#input\_oidc\_groups\_claim) | Groups to include in the OIDC claim. | `list(string)` | `[]` | no |
| [oidc\_groups\_prefix](#input\_oidc\_groups\_prefix) | Prefix to add to all groups connecting to the cluster. | `string` | `""` | no |
| [oidc\_provider\_url](#input\_oidc\_provider\_url) | URL to use for OIDC authentication. Enables OIDC if specified. | `string` | `""` | no |
| [oidc\_username\_claim](#input\_oidc\_username\_claim) | OIDC Property to use for username. | `string` | `""` | no |
| [oidc\_username\_prefix](#input\_oidc\_username\_prefix) | Prefix to add to all usernames connecting to the cluster. | `string` | `""` | no |
| [project\_id](#input\_project\_id) | The ID of the Public Cloud project the resources will be created in. | `string` | n/a | yes |
| [region](#input\_region) | Region in which to create the various resources. | `string` | `"DE1"` | no |
| [subnet\_id](#input\_subnet\_id) | ID of the subnet in the private network in which nodes should be created. | `string` | n/a | yes |
| [update\_policy](#input\_update\_policy) | How the cluster should perform updates. | `string` | `"MINIMAL_DOWNTIME"` | no |

## Outputs

| Name | Description |
|------|-------------|
| [id](#output\_id) | The ID of the cluster |
| [kubeconfig](#output\_kubeconfig) | kubeconfig to use when connecting to the cluster |
| [name](#output\_name) | Name of the cluster |
| [nodes\_url](#output\_nodes\_url) | URLs of the nodes attached to the cluster |