/terraform-linode-lke-addons

Terraform module provisions Linode Kubernetes Engine (LKE) with common add-ons

Primary LanguageHCLApache License 2.0Apache-2.0

LKE with Extras

This Terraform module provisions Linode Kubernetes Engine (LKE) with common add-ons:

  • External DNS External DNS is configured with a Linode API token scoped to DNS services.
  • Cert Manager cert-manager is configured with an HTTP prover (which uses nginx-ingress).
  • Nginx Ingress Controller This default ingress controller will use a single LoadBalancer Service for all Ingress objects. The Ingress is configured with 0.2.1 of https://github.com/compumike/hairpin-proxy#hairpin-proxy which fixes problems with using the proxy protocol. (See the link for more details)

Variables

See terraform.tfvars.sample. Copy this to terraform.tfvars and modify as needed.

Install

terraform apply

Requirements

No requirements.

Providers

No providers.

Modules

Name Source Version
cert_manager ./modules/cert_manager n/a
external_dns ./modules/external_dns n/a
ingress_nginx ./modules/ingress_nginx n/a
jhub ./modules/jhub n/a
lke ./modules/kube n/a
longhorn ./modules/longhorn n/a
minecraft ./modules/minecraft n/a
triage ./modules/triage n/a

Resources

No resources.

Inputs

Name Description Type Default Required
example_host If set, an ingress will be created with this hostname used. The domain should be one managed by your Linode account. any n/a yes
issuer_email An email address for ACME certificate registration. any n/a yes
linode_token Your Linode API Authentication Token. any n/a yes
minecraft A list of minecraft servers to deploy. Each object should have the following fields:
- namespace: the namespace of the minecraft server
- port: the port to run the minecraft server on
- ops: a list of minecraft usernames that will receive ops
- motd: the minecraft MOTD
- hostname: the hostname where minecraft will run
list(object(
{
namespace = string
port = number
ops = string
motd = string
hostname = string
}
))
n/a yes
gh_admin_users GH admin_users for JupyterHub list(string) [] no
gh_token GH token for triage party string "" no
jhub_client_id GH client_id for jhub string "" no
jhub_client_secret GH client_secret for jhub string "" no
jhub_db_volume PVC name for Hub DB Volume string "" no
jhub_hostname hostname for jupyter hub string "" no
k8s_version LKE K8s Version string "1.26" no
longhorn_enabled Whether Longhorn should be installed bool false no
triage_host hostname where triage party will reside string "" no

Outputs

Name Description
lke_id n/a