Use GKE beta features with GCP Deployment Manager

4/30/2018

I'm trying to create GKE REGION cluster (beta feature) with GCP deployment manager. But I got error. Is there any way to use GKE beta features (include region cluster) with deployment manager?

ERROR: (gcloud.beta.deployment-manager.deployments.create) Error in             
Operation [operation-1525054837836-56b077fdf48e0-a571296c-604523fb]: 
errors:
- code: RESOURCE_ERROR
  location: /deployments/test-cluster1/resources/source-cluster
  message: '{"ResourceType":"container.v1.cluster","ResourceErrorCode":"400","ResourceErrorMessage":{"code":400,"message":"v1 API cannot be used to access GKE regional clusters. See https://cloud.google.com/kubernetes-engine/docs/reference/api-organization#beta for more information.","status":"INVALID_ARGUMENT","statusMessage":"Bad Request","requestPath":"https://container.googleapis.com/v1/projects/project_id/zones/us-central1/clusters","httpMethod":"POST"}}'

In the error message, link of gcp help.

https://cloud.google.com/kubernetes-engine/docs/reference/api-organization#beta

Configured as described there but error still appears.

My deployment manager yaml file looks like,

resources:
- name: source-cluster
type: container.v1.cluster
properties:
  zone: us-central1
  cluster:
    name: source
    initialNodeCount: 3

Yet, zonal cluster is completely work. So I think it's related to usage of container v1beta api in deployment-manager commands.

resources:
- name: source-cluster
type: container.v1.cluster
properties:
  zone: us-central1-b
  cluster:
    name: source
    initialNodeCount: 3

Thanks.

-- tahomatx
google-cloud-platform
google-deployment-manager
google-kubernetes-engine

1 Answer

4/30/2018

The error message you are receiving appears to be related to the fact that you are attempting to use a beta feature but you are specifying a Deployment Manager resource as using API v1 (i.e. container.v1.cluster). This means there's inconstancy between the beta resource you are trying to create and the specified resource.

I've had a look into this and discovered that the ability to add regional clusters via Deployment Manager is a very recent addition to Google Cloud Platform as detailed in this public feature request which has only recently been implemented.

It seems you would need to specify the API type as 'gcp-types/container-v1beta1:projects.locations.clusters' for this to work, and rather than using the 'zone' or 'region' key in the YAML, you would instead use a parent property that includes locations.

So your YAML would look something like this (replace PROJECT_ID with your own).

resources:
- type:  gcp-types/container-v1beta1:projects.locations.clusters
  name: source-cluster
  properties:
   parent: projects/PROJECT_ID/locations/us-central1
   cluster:
     name: source
     initialNodeCount: 3
-- neilH
Source: StackOverflow