{"id":2643,"date":"2020-05-13T08:24:40","date_gmt":"2020-05-13T06:24:40","guid":{"rendered":"https:\/\/geko2.factoryfy.com\/upgrade-gke-public-clusters-terraform-module\/"},"modified":"2021-11-03T10:46:14","modified_gmt":"2021-11-03T09:46:14","slug":"upgrade-gke-public-clusters-terraform-module","status":"publish","type":"post","link":"https:\/\/geko.cloud\/en\/upgrade-gke-public-clusters-terraform-module\/","title":{"rendered":"Upgrade GKE public-cluster\u2019s Terraform module"},"content":{"rendered":"<h3>Introduction<\/h3>\n<p>From time to time Google introduces new features and changes that sometimes also force the <a href=\"https:\/\/www.terraform.io\/docs\/configuration\/modules.html\">Terraform modules<\/a> to upgrade themselves. It was our case at <a href=\"https:\/\/geko2.factoryfy.com\/\">Geko<\/a>, where we were using the <a href=\"https:\/\/registry.terraform.io\/modules\/terraform-google-modules\/kubernetes-engine\/google\/5.1.1\/submodules\/beta-public-cluster\">GKE module for public-cluster deployment&amp;management at version 5.x<\/a>. A few days ago, when we planned to update some parameters it came that Google had removed the support for the Kubernetes dashboard. It was completely deprecated and the module was failing because of it, so we were forced to upgrade the module in order to meet the new conditions. There were up to 3 major version upgrades available, so we decided to go for it and use the latest one. However, it was not a standalone solution as it required to handle Terraform state&#8217;s incoherences.<\/p>\n<p>The aim of this lab is to learn how to <strong>upgrade<\/strong> the official <strong>Terraform module<\/strong> intended to deploy&amp;manage a <strong>public GKE cluster<\/strong>. We will specially deal with module&#8217;s (<a href=\"https:\/\/registry.terraform.io\/modules\/terraform-google-modules\/kubernetes-engine\/google\/8.1.0\/submodules\/beta-public-cluster\">kubernetes-engine.beta-public-cluster<\/a>) breaking changes, and we will manage to obtain the consistent status we previously had before the failure which preceded the upgrade.<\/p>\n<p><strong>Estimated time to finish this lab<\/strong>: ~20 minutes<\/p>\n<h3>1. Remove the previous resources<\/h3>\n<p><strong>It&#8217;s strongly encouraged to perform a <em>tfstate<\/em> file backup before continue!<\/strong><\/p>\n<p>It&#8217;s especially important to remove all the conflicting resources from the Terraform state as soon as they are bounded between them using dependencies. The goal here is to remove any deprecated binding prior to importing them again from the current &#8220;picture&#8221; there&#8217;s already deployed.<\/p>\n<p>The main components on a Kubernetes cluster are the networks (and subnetworks), the node pool and the cluster itself. Let&#8217;s focus on them.<\/p>\n<div class=\"wp-block-codemirror-blocks code-block\">\n<pre class=\"CodeMirror\" data-setting=\"{\">terraform state rm module.gke.google_container_cluster.primary\r\nterraform state rm module.gke.google_container_node_pool.pools[0]\r\nterraform state rm module.vpc.google_compute_network.network\r\nterraform state rm module.vpc.google_compute_subnetwork.subnetwork[0]\r\nterraform state rm module.vpc.google_compute_subnetwork.subnetwork[1]<\/pre>\n<\/div>\n<h3>2. Upgrade versions<\/h3>\n<p>Once removed the previous states the next step is to set the version for the required modules to the current latest version. For the GKE module the latest now it&#8217;s 8.1.0, but it will be allowed to automatically adopt minor upgrades (&#8220;~&gt;&#8221;).<\/p>\n<h5>Upgrade the GKE cluster module<\/h5>\n<div class=\"wp-block-codemirror-blocks code-block \">\n<pre class=\"CodeMirror\" data-setting=\"{\"> module \"gke\" {\r\n   source  = \"terraform-google-modules\/kubernetes-engine\/google\/\/modules\/beta-public-cluster\"\r\n-  version = \"~&gt; 5.0\"\r\n+  version = \"~&gt; 8.1\"\r\n<\/pre>\n<\/div>\n<h5>Upgrade the VPC module<\/h5>\n<div class=\"wp-block-codemirror-blocks code-block \">\n<pre class=\"CodeMirror\" data-setting=\"{\"> module \"vpc\" {\r\n-  source  = \"github.com\/terraform-google-modules\/terraform-google-network?ref=v1.1.0\"\r\n+  source  = \"github.com\/terraform-google-modules\/terraform-google-network?ref=v2.3.0\"<\/pre>\n<\/div>\n<h5>Check the new resources<\/h5>\n<p>In order to find out if the new resources have experienced a name change (due to the modules upgrade), a <a href=\"https:\/\/www.terraform.io\/docs\/commands\/plan.html\"><strong>Terraform plan<\/strong><\/a> is strongly encouraged.<\/p>\n<p>On this case it has been found that some module&#8217;s internal hierarchy and also list&#8217;s indexes have changed.<\/p>\n<div class=\"wp-block-codemirror-blocks code-block\">\n<pre class=\"CodeMirror\" data-setting=\"{\">  module.gke.google_container_cluster.primary\r\n  \r\n<b>-<\/b> module.gke.google_container_node_pool.pools[0]\r\n<b>+<\/b> module.gke.google_container_node_pool.pools[\"default-node-pool\"]\r\n\r\n  module.vpc.google_compute_network.network\r\n  \r\n<b>-<\/b> module.vpc.google_compute_subnetwork.subnetwork[0]\r\n<b>+<\/b> module.vpc.module.subnets.google_compute_subnetwork.subnetwork[\"southamerica-east1\/my-cluster-public\"]\r\n\r\n<b>-<\/b> module.vpc.google_compute_subnetwork.subnetwork[1]\r\n<b>+<\/b> module.vpc.module.subnets.google_compute_subnetwork.subnetwork[\"southamerica-east1\/my-cluster-private\"]<\/pre>\n<\/div>\n<h3>3. Import fresh resources<\/h3>\n<p>Keep in mind that the zone\/region depends on your kind of cluster. If it&#8217;s zonal you must use the master zone (e.g. <em>southamerica-east1-a<\/em>). On the other hand, if it&#8217;s a regional cluster you must use the region (e.g. <em>southamerica-east1<\/em>). The following example assumes a regional cluster located at <em>southamerica-east1<\/em>, in the project &#8220;<strong>my-project<\/strong>&#8220;, and with a cluster name &#8220;<strong>my-cluster<\/strong>&#8220;. The network names were set accordingly to the cluster&#8217;s name, just adding the suffixes &#8220;private&#8221; and &#8220;public&#8221; to the subnets to properly differentiate them.<\/p>\n<p><strong>Note also the new module hierarchy and indexing.<\/strong><\/p>\n<div class=\"wp-block-codemirror-blocks code-block \">\n<pre class=\"CodeMirror\" data-setting=\"{\"># Global vars\r\nREGION=\"southamerica-east1\"\r\nPROJECT=\"my-project\"\r\nCLUSTER=\"my-cluster\"\r\n\r\n# Cluster\r\nCLUSTER_LOCAL=\"module.gke.google_container_cluster.primary\"\r\nCLUSTER_REMOTE=\"${PROJECT}\/${REGION}\/${CLUSTER}\"\r\nterraform import $CLUSTER_LOCAL $CLUSTER_REMOTE\r\n\r\n# Node pool\r\nPOOL_LOCAL=\"module.gke.google_container_node_pool.pools[\"default-node-pool\"]\"\r\nPOOL_REMOTE=\"${CLUSTER_REMOTE}\/default-node-pool\"\r\nterraform import $POOL_LOCAL $POOL_REMOTE\r\n\r\n# Subnetworks\r\nBASE_SUBNET_LOCAL=\"module.vpc.module.subnets.google_compute_subnetwork.subnetwork\"\r\n\r\n## Public\r\nPUBLIC_SUBNET_LOCAL=\"${BASE_SUBNET_LOCAL}[\"${REGION}\/${CLUSTER}-public\"]\"\r\nPUBLIC_SUBNET_REMOTE=\"${CLUSTER_REMOTE}-public\"\r\nterraform import $PUBLIC_SUBNET_LOCAL $PUBLIC_SUBNET_REMOTE\r\n\r\n## Private\r\nPRIVATE_SUBNET_LOCAL=\"${BASE_SUBNET_LOCAL}[\"${REGION}\/${CLUSTER}-private\"]\"\r\nPRIVATE_SUBNET_REMOTE=\"${CLUSTER_REMOTE}-private\"\r\nterraform import $PRIVATE_SUBNET_LOCAL $PRIVATE_SUBNET_REMOTE\r\n\r\n# Network\r\nNETWORK_LOCAL=\"module.vpc.module.vpc.google_compute_network.network\"\r\nNETWORK_REMOTE=\"${PROJECT}\/${CLUSTER}\"\r\nterraform import $NETWORK_LOCAL $NETWORK_REMOTE<\/pre>\n<\/div>\n<h3>\u00a04. Update parameters<\/h3>\n<p>It&#8217;s very likely you will encounter that after a Terraform plan the <strong><em>google_container_cluster<\/em> <\/strong>resource still needs to be updated due to a <em>subnetwork<\/em> parameter change. The new subnet keys have made the indexes to change their order. Just edit your GKE module to replace the <em>subnetwork<\/em> parameter as below.<\/p>\n<div class=\"wp-block-codemirror-blocks code-block \">\n<pre class=\"CodeMirror\" data-setting=\"{\"><b>-<\/b> subnetwork = module.vpc.subnets_names[<b>0<\/b>]\r\n<b>+<\/b> subnetwork = module.vpc.subnets_names[<b>1<\/b>]<\/pre>\n<\/div>\n<h3>Conclusion<\/h3>\n<p>As you may have read above, sometimes -when relying on third parties- could happen that a breaking change is introduced and you get yourself into troubles to get the service back again. Beside this, the solution could introduce collateral damages which will require additional sub-solutions. On this particular case regarding Terraform, dealing with inconsistent states is not really common nor recommended, but it comes that is the only method you have available to solve them on your tool-set.<\/p>\n<hr \/>\n<p>I hope you&#8217;ve enjoyed this post and I encourage you to <a href=\"https:\/\/geko.cloud\/en\/blog\/\">check our blog for other posts<\/a> that you might find helpful. <a href=\"https:\/\/geko.cloud\/en\/contact\/\">Do not hesitate to contact us<\/a> if you would like us to help you on your projects.<\/p>\n<p>See you on the next post!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction From time to time Google introduces new features and changes that sometimes also force the Terraform modules to upgrade themselves. It was our case at Geko, where we were using the GKE module for public-cluster deployment&amp;management at version 5.x. A few days ago, when we planned to update some parameters it came that Google [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":2288,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[44],"tags":[77,78,89],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Upgrade GKE public-cluster\u2019s Terraform module - Geko Cloud<\/title>\n<meta name=\"description\" content=\"Upgrade GKE public-cluster\u2019s Terraform module. We give you all the details of the new features and changes.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Upgrade GKE public-cluster\u2019s Terraform module - Geko Cloud\" \/>\n<meta property=\"og:description\" content=\"Upgrade GKE public-cluster\u2019s Terraform module. We give you all the details of the new features and changes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/\" \/>\n<meta property=\"og:site_name\" content=\"Geko Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-13T06:24:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-03T09:46:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/geko.cloud\/wp-content\/uploads\/gke_terraform_k8s_2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1400\" \/>\n\t<meta property=\"og:image:height\" content=\"935\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jose Luis S\u00e1nchez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@geko_cloud\" \/>\n<meta name=\"twitter:site\" content=\"@geko_cloud\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/\"},\"author\":{\"name\":\"Jose Luis S\u00e1nchez\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/d06aff498ebfbc75b5010ebe92af41ed\"},\"headline\":\"Upgrade GKE public-cluster\u2019s Terraform module\",\"datePublished\":\"2020-05-13T06:24:40+00:00\",\"dateModified\":\"2021-11-03T09:46:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/\"},\"wordCount\":649,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/geko.cloud\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/gke_terraform_k8s_2.jpg\",\"keywords\":[\"GKE\",\"Google Cloud\",\"Terraform\"],\"articleSection\":[\"News\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/\",\"url\":\"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/\",\"name\":\"Upgrade GKE public-cluster\u2019s Terraform module - Geko Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/geko.cloud\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/gke_terraform_k8s_2.jpg\",\"datePublished\":\"2020-05-13T06:24:40+00:00\",\"dateModified\":\"2021-11-03T09:46:14+00:00\",\"description\":\"Upgrade GKE public-cluster\u2019s Terraform module. We give you all the details of the new features and changes.\",\"breadcrumb\":{\"@id\":\"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#primaryimage\",\"url\":\"https:\/\/geko.cloud\/wp-content\/uploads\/gke_terraform_k8s_2.jpg\",\"contentUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/gke_terraform_k8s_2.jpg\",\"width\":1400,\"height\":935,\"caption\":\"GKE Kubernetes Terraform\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/geko.cloud\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Upgrade GKE public-cluster\u2019s Terraform module\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/geko.cloud\/es\/#website\",\"url\":\"https:\/\/geko.cloud\/es\/\",\"name\":\"Geko Cloud\",\"description\":\"Servicios de consultor\u00eda cloud y devops\",\"publisher\":{\"@id\":\"https:\/\/geko.cloud\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/geko.cloud\/es\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/geko.cloud\/es\/#organization\",\"name\":\"Geko Cloud\",\"url\":\"https:\/\/geko.cloud\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png\",\"contentUrl\":\"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png\",\"width\":1650,\"height\":809,\"caption\":\"Geko Cloud\"},\"image\":{\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/geko_cloud\",\"https:\/\/www.instagram.com\/gekocloud\/\",\"https:\/\/www.linkedin.com\/company\/gekocloud\",\"https:\/\/www.youtube.com\/channel\/UC5EFLCqUM7fEaXSa_0nWowQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/d06aff498ebfbc75b5010ebe92af41ed\",\"name\":\"Jose Luis S\u00e1nchez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/geko.cloud\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ebfd055d4dba456220c682523fcc237c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ebfd055d4dba456220c682523fcc237c?s=96&d=mm&r=g\",\"caption\":\"Jose Luis S\u00e1nchez\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Upgrade GKE public-cluster\u2019s Terraform module - Geko Cloud","description":"Upgrade GKE public-cluster\u2019s Terraform module. We give you all the details of the new features and changes.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/","og_locale":"en_US","og_type":"article","og_title":"Upgrade GKE public-cluster\u2019s Terraform module - Geko Cloud","og_description":"Upgrade GKE public-cluster\u2019s Terraform module. We give you all the details of the new features and changes.","og_url":"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/","og_site_name":"Geko Cloud","article_published_time":"2020-05-13T06:24:40+00:00","article_modified_time":"2021-11-03T09:46:14+00:00","og_image":[{"width":1400,"height":935,"url":"https:\/\/geko.cloud\/wp-content\/uploads\/gke_terraform_k8s_2.jpg","type":"image\/jpeg"}],"author":"Jose Luis S\u00e1nchez","twitter_card":"summary_large_image","twitter_creator":"@geko_cloud","twitter_site":"@geko_cloud","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#article","isPartOf":{"@id":"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/"},"author":{"name":"Jose Luis S\u00e1nchez","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/d06aff498ebfbc75b5010ebe92af41ed"},"headline":"Upgrade GKE public-cluster\u2019s Terraform module","datePublished":"2020-05-13T06:24:40+00:00","dateModified":"2021-11-03T09:46:14+00:00","mainEntityOfPage":{"@id":"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/"},"wordCount":649,"commentCount":0,"publisher":{"@id":"https:\/\/geko.cloud\/es\/#organization"},"image":{"@id":"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#primaryimage"},"thumbnailUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/gke_terraform_k8s_2.jpg","keywords":["GKE","Google Cloud","Terraform"],"articleSection":["News"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/","url":"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/","name":"Upgrade GKE public-cluster\u2019s Terraform module - Geko Cloud","isPartOf":{"@id":"https:\/\/geko.cloud\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#primaryimage"},"image":{"@id":"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#primaryimage"},"thumbnailUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/gke_terraform_k8s_2.jpg","datePublished":"2020-05-13T06:24:40+00:00","dateModified":"2021-11-03T09:46:14+00:00","description":"Upgrade GKE public-cluster\u2019s Terraform module. We give you all the details of the new features and changes.","breadcrumb":{"@id":"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#primaryimage","url":"https:\/\/geko.cloud\/wp-content\/uploads\/gke_terraform_k8s_2.jpg","contentUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/gke_terraform_k8s_2.jpg","width":1400,"height":935,"caption":"GKE Kubernetes Terraform"},{"@type":"BreadcrumbList","@id":"https:\/\/geko.cloud\/es\/actualizacion-modulo-terraform-clusteres-publicos-gke\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/geko.cloud\/en\/"},{"@type":"ListItem","position":2,"name":"Upgrade GKE public-cluster\u2019s Terraform module"}]},{"@type":"WebSite","@id":"https:\/\/geko.cloud\/es\/#website","url":"https:\/\/geko.cloud\/es\/","name":"Geko Cloud","description":"Servicios de consultor\u00eda cloud y devops","publisher":{"@id":"https:\/\/geko.cloud\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/geko.cloud\/es\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/geko.cloud\/es\/#organization","name":"Geko Cloud","url":"https:\/\/geko.cloud\/es\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/","url":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png","contentUrl":"https:\/\/geko.cloud\/wp-content\/uploads\/2021\/10\/geko_logo-positivo.png","width":1650,"height":809,"caption":"Geko Cloud"},"image":{"@id":"https:\/\/geko.cloud\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/geko_cloud","https:\/\/www.instagram.com\/gekocloud\/","https:\/\/www.linkedin.com\/company\/gekocloud","https:\/\/www.youtube.com\/channel\/UC5EFLCqUM7fEaXSa_0nWowQ"]},{"@type":"Person","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/d06aff498ebfbc75b5010ebe92af41ed","name":"Jose Luis S\u00e1nchez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/geko.cloud\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ebfd055d4dba456220c682523fcc237c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ebfd055d4dba456220c682523fcc237c?s=96&d=mm&r=g","caption":"Jose Luis S\u00e1nchez"}}]}},"_links":{"self":[{"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/posts\/2643"}],"collection":[{"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/comments?post=2643"}],"version-history":[{"count":2,"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/posts\/2643\/revisions"}],"predecessor-version":[{"id":5078,"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/posts\/2643\/revisions\/5078"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/media\/2288"}],"wp:attachment":[{"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/media?parent=2643"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/categories?post=2643"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geko.cloud\/en\/wp-json\/wp\/v2\/tags?post=2643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}