Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hajowieland/terraform-kubernetes-multi-cloud
Terraform to create Kubernetes clusters on multiple public cloud platforms (Aliyun, AWS, Azure, DO, GCP, OCI)
https://github.com/hajowieland/terraform-kubernetes-multi-cloud
ack aks alicloud aws azure digitalocean eks gke k8s kubernetes oci oke terraform terraform-0 terraform-module
Last synced: 1 day ago
JSON representation
Terraform to create Kubernetes clusters on multiple public cloud platforms (Aliyun, AWS, Azure, DO, GCP, OCI)
- Host: GitHub
- URL: https://github.com/hajowieland/terraform-kubernetes-multi-cloud
- Owner: hajowieland
- License: gpl-3.0
- Created: 2019-05-30T15:23:37.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-12-27T08:46:06.000Z (almost 5 years ago)
- Last Synced: 2023-03-03T09:59:19.672Z (over 1 year ago)
- Topics: ack, aks, alicloud, aws, azure, digitalocean, eks, gke, k8s, kubernetes, oci, oke, terraform, terraform-0, terraform-module
- Language: HCL
- Homepage: https://registry.terraform.io/modules/hajowieland/multi-cloud/kubernetes/
- Size: 170 KB
- Stars: 46
- Watchers: 3
- Forks: 21
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Terraform Kubernetes Multi-Cloud
Terraform code for creating a handful of simple managed Kubernetes clusters on multiple public cloud platforms.
_Managed_ in this context means the master nodes (= control plane) are managed by the cloud platform provider. We only create the service, the worker nodes and the bare minimum of everything else to get a working K8s cluster.
âšī¸ This is for demonstration and/or learning purposes.
âšī¸ Please do not use this in production.
#### Link to my comprehensive blog post (beginner friendly):
đ [https://napo.io/posts/terraform-kubernetes-multi-cloud-ack-aks-dok-eks-gke-oke/](https://napo.io/posts/terraform-kubernetes-multi-cloud-ack-aks-dok-eks-gke-oke/)
## TOC
- [Terraform Kubernetes Multi-Cloud](#Terraform-Kubernetes-Multi-Cloud)
- [Public Cloud Platforms](#Public-Cloud-Platforms)
- [Features](#Features)
- [Requirements](#Requirements)
- [Terraform Inputs](#Terraform-Inputs)
- [TODO](#TODO)## Public Cloud Platforms
* â Alibaba Cloud _"Managed Kubernetes Cluster Service"_ **(ACK)**
* â Amazon Web Services _"Elastic Kubernetes Engine"_ **(EKS)**
* â Digital Ocean _"Kubernetes"_ **(DOK)**
* â Google Cloud Platform _"Google Kubernetes Engine"_ **(GKE)**
* â Microsoft Azure _"Azure Kubernets Service"_ **(AKS)**
* â Oracle Cloud Infrastructure _"Container Engine for Kubernetes"_ **(OKE)**
* đ IBM Cloud _Kubernetes Service"_ **(IKS)** ([when their Terraform provider is 0.12-ready](https://github.com/IBM-Cloud/terraform-provider-ibm/pull/423))## Features
* Fully working K8s Clusters
* Terraform 0.12 code
* By default creates small node configurations (low costs!)
* Outputs ready-to-use kubeconfig files at the end
* 2-3 worker nodes## Requirements
* Terraform >= 0.12.x
* You need to have an account on the cloud platforms (of course).## Terraform Inputs
| Name | Description | Type | Default | Required |
|------|-------------|:----:|:-----:|:-----:|
| enable_alibaba | Enable / Disable Alibaba | bool | false | yes |
| enable_amazon | Enable / Disable Amazon | bool | false | yes |
| enable_digitalocean | Enable / Disable DigitalOcean | bool | false | yes |
| enable_google | Enable / Disable Google | bool | false | yes |
| enable_microsoft | Enable / Disable Microsoft | bool | false | yes |
| enable_oracle | Enable / Disable Oracle | bool | false | yes |
| nodes | Kubernetes worker nodes (e.g. `2`) | number | 2 | no |
| ali_access_key | Alibaba Cloud AccessKey ID | string | | yes |
| ali_secret_key | Alibaba Cloud Access Key Secret | string | | yes |
| aws_profile | AWS cli profile (e.g. `default`) | string | default | yes |
| gcp_project | GCP Project ID | string | | yes |
| az_client_id | Azure Service Principal appId | string | | yes |
| az_client_secret | Azure Service Principal password | string | | yes |
| az_tenant_id | Azure Service Principal tenant | string | | yes |
| do_token | Digital Ocean personal access (API) token | string | | yes |
| oci_user_ocid | OCI User OCID | string | | yes |
| oci_tenancy_ocid | OCI Tenancy OCID | string | | yes |
| oci_fingerprint | OCI SSH public key fingerprint | string | | yes |## TODO
* Combine multiple kubeconfig files into one
* _(partly implemented):_ Allow K8s API access only from workstation IP
* Fix OCI destroy dependencies