|
|
- terraform {
- required_version = "~> 0.12"
- }
-
- provider "digitalocean" {
- version = "~> 1.7"
- }
-
- provider "kubernetes" {
- version = "~> 1.9"
-
- host = "${digitalocean_kubernetes_cluster.this.endpoint}"
-
- client_certificate = base64decode(digitalocean_kubernetes_cluster.this.kube_config.0.client_certificate)
- client_key = base64decode(digitalocean_kubernetes_cluster.this.kube_config.0.client_key)
- cluster_ca_certificate = base64decode(digitalocean_kubernetes_cluster.this.kube_config.0.cluster_ca_certificate)
- }
-
- provider "helm" {
- version = "~> 0.10"
-
- kubernetes {
- host = "${digitalocean_kubernetes_cluster.this.endpoint}"
-
- client_certificate = base64decode(digitalocean_kubernetes_cluster.this.kube_config.0.client_certificate)
- client_key = base64decode(digitalocean_kubernetes_cluster.this.kube_config.0.client_key)
- cluster_ca_certificate = base64decode(digitalocean_kubernetes_cluster.this.kube_config.0.cluster_ca_certificate)
- }
- }
-
- resource "digitalocean_ssh_key" "collin_doering" {
- name = "yubikey"
- public_key = "${file("/home/collin/.ssh/id_rsa.pub")}"
- }
-
- resource "digitalocean_kubernetes_cluster" "this" {
- name = var.name
- region = var.region
- version = var.k8s_version
- tags = var.tags
-
- node_pool {
- name = "default-pool"
- size = var.node_size
- node_count = var.node_count
- tags = var.node_tags
- }
- }
-
- resource "kubernetes_service_account" "admin_user" {
- metadata {
- name = var.admin_user_name
- namespace = "kube-system"
- }
- }
-
- resource "kubernetes_cluster_role_binding" "admin_user" {
- metadata {
- name = var.admin_user_name
- }
- role_ref {
- kind = "ClusterRole"
- name = "cluster-admin"
- api_group = "rbac.authorization.k8s.io"
- }
- subject {
- kind = "ServiceAccount"
- name = var.admin_user_name
- namespace = "kube-system"
- }
- }
-
- resource "helm_release" "kubernetes_dashboard" {
- name = "kubernetes-dashboard"
- chart = "stable/kubernetes-dashboard"
- namespace = "kube-system"
- }
-
- data "helm_repository" "istio" {
- name = "istio.io"
- url = "https://storage.googleapis.com/istio-release/releases/1.2.5/charts/"
- }
-
- resource "helm_release" "istio_init" {
- name = "istio-init"
- repository = data.helm_repository.istio.metadata.0.name
- chart = "istio.io/istio-init"
- namespace = "istio-system"
-
- provisioner "local-exec" {
- command = "sleep 3m"
- }
- }
-
- resource "helm_release" "istio" {
- name = "istio"
- repository = data.helm_repository.istio.metadata.0.name
- chart = "istio.io/istio"
- namespace = "istio-system"
-
- depends_on = [helm_release.istio_init]
- }
|