github.com/replicatedhq/ship@v0.55.0/pkg/lifecycle/render/googlegke/render_templates.go (about)

     1  package googlegke
     2  
     3  const providerTempl = `
     4  provider "google" {
     5    {{if .Credentials -}}
     6    credentials = <<EOF
     7  {{.Credentials | b64dec}}
     8  EOF
     9    {{end -}}
    10    project     = "{{.Project}}"
    11    region      = "{{.Region}}"
    12  }
    13  `
    14  
    15  const clusterTempl = `
    16  variable "cluster_name" {
    17    default = "{{.ClusterName}}"
    18  }
    19  
    20  variable "zone" {
    21    default = "{{.Zone}}"
    22  }
    23  
    24  variable "initial_node_count" {
    25    default = "{{if .InitialNodeCount -}}
    26  {{.InitialNodeCount}}
    27  {{- else -}}
    28  3
    29  {{- end}}"
    30  }
    31  
    32  variable "machine_type" {
    33    default = "{{if .MachineType -}}
    34  {{.MachineType}}
    35  {{- else -}}
    36  n1-standard-1
    37  {{- end}}"
    38  }
    39  
    40  variable "additional_zones" {
    41    type    = "list"
    42    default = [{{if .AdditionalZones}}{{range (split "," .AdditionalZones)}}
    43      "{{.}}",{{end}}
    44    {{end}}]
    45  }
    46  
    47  locals {
    48    min_master_version = "{{.MinMasterVersion}}"
    49  }
    50  
    51  resource "google_container_cluster" "{{.ClusterName}}" {
    52    name               = "${var.cluster_name}"
    53    zone               = "${var.zone}"
    54    initial_node_count = "${var.initial_node_count}"
    55  
    56    additional_zones = "${var.additional_zones}"
    57  
    58    min_master_version = "${local.min_master_version}"
    59  
    60    node_config {
    61      machine_type = "${var.machine_type}"
    62    }
    63  
    64    enable_legacy_abac = "true"
    65  }
    66  
    67  data "template_file" "kubeconfig_{{.ClusterName}}" {
    68    template = <<EOF
    69  {{.KubeConfigTmpl}}
    70  EOF
    71  
    72    vars {
    73      endpoint        = "https://${google_container_cluster.{{.ClusterName}}.endpoint}"
    74      cluster_auth    = "${google_container_cluster.{{.ClusterName}}.master_auth.0.cluster_ca_certificate}"
    75      kubeconfig_name = "{{.ClusterName}}"
    76      client_cert     = "${google_container_cluster.{{.ClusterName}}.master_auth.0.client_certificate}"
    77      client_key      = "${google_container_cluster.{{.ClusterName}}.master_auth.0.client_key}"
    78    }
    79  }
    80  
    81  resource "local_file" "kubeconfig_{{.ClusterName}}" {
    82    content = "${data.template_file.kubeconfig_{{.ClusterName}}.rendered}"
    83    filename = "kubeconfig_{{.ClusterName}}"
    84  }
    85  `
    86  
    87  const kubeConfigTmpl = `
    88  apiVersion: v1
    89  preferences: {}
    90  kind: Config
    91  
    92  clusters:
    93  - cluster:
    94      server: $${endpoint}
    95      certificate-authority-data: $${cluster_auth}
    96    name: $${kubeconfig_name}
    97  
    98  contexts:
    99  - context:
   100      cluster: $${kubeconfig_name}
   101      user: $${kubeconfig_name}
   102    name: $${kubeconfig_name}
   103  
   104  current-context: $${kubeconfig_name}
   105  
   106  users:
   107  - name: $${kubeconfig_name}
   108    user:
   109      client-certificate-data: $${client_cert}
   110      client-key-data: $${client_key}
   111  `