@@ -2,7 +2,7 @@ terraform {
22 required_providers {
33 kubernetes = {
44 source = " hashicorp/kubernetes"
5- version = " >= 2.0.1 "
5+ version = " >= 9.9.9 "
66 }
77 google = {
88 source = " hashicorp/google"
@@ -24,12 +24,13 @@ provider "google" {}
2424# https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/client_config
2525# This fetches a new token, which will expire in 1 hour.
2626data "google_client_config" "default" {
27- depends_on = [module . gke-cluster . cluster_id ]
27+ depends_on = [module . gke-cluster ]
2828}
2929
30+ # Defer reading the cluster data until the latest ca_cert data exists.
3031data "google_container_cluster" "default" {
3132 name = local. cluster_name
32- depends_on = [module . gke-cluster . cluster_id ]
33+ depends_on = [module . gke-cluster ]
3334}
3435
3536provider "kubernetes" {
@@ -51,19 +52,31 @@ provider "helm" {
5152}
5253
5354module "gke-cluster" {
54- providers = { google = google }
5555 source = " ./gke-cluster"
5656 cluster_name = local. cluster_name
5757}
5858
5959module "kubernetes-config" {
6060 depends_on = [module . gke-cluster ]
61- providers = { kubernetes = kubernetes, helm = helm }
6261 source = " ./kubernetes-config"
6362 cluster_name = local. cluster_name
64- cluster_token = data. google_client_config . default . access_token
65- cluster_id = module. gke-cluster . cluster_id # creates dependency on cluster creation
66- cluster_endpoint = module. gke-cluster . cluster_endpoint
67- cluster_ca_cert = module. gke-cluster . cluster_ca_cert
63+ }
64+
65+ # optional: used for manual CLI access to the cluster when gcloud tool is unavailable.
66+ # The gcloud tool can make a longer-lived kubeconfig. This one expires in one hour and can be updated using `terraform apply`.
67+ data "template_file" "kubeconfig" {
68+ template = file (" kubeconfig-template.yaml" )
69+
70+ vars = {
71+ cluster_name = local.cluster_name
72+ endpoint = " https://${ data . google_container_cluster . default . endpoint } "
73+ cluster_ca = data.google_container_cluster.default.master_auth[0 ].cluster_ca_certificate
74+ cluster_token = data.google_client_config.default.access_token
75+ }
76+ }
77+
78+ resource "local_file" "kubeconfig" {
79+ content = data. template_file . kubeconfig . rendered
80+ filename = " ${ path . root } /kubeconfig"
6881}
6982
0 commit comments