GoogleCloudPlatform / GoogleCloudPlatform/prometheus-engine
GKE errors on .managedAlertmanager field when adding labels/annotations to OperatorConfig
- Dominant language
- Go
- Stars
- 232
- Forks
- 109
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 27
Description
I'm using TF to add labels/annotations to OperatorConfig in order to allow it being managed by helm.
I've tried kubernetes_labels/kubernetes_annotations resources in terraform kubernetes provider and to my surprise I got errors:
```
Error: .managedAlertmanager: field not declared in schema
with module.REDACTED.kubernetes_labels.operatorconfig-helm[0]
on .terraform/modules/REDACTED in resource "kubernetes_labels" "operatorconfig-helm":
resource "kubernetes_labels" "operatorconfig-helm" {
```
I started filing issue with k8s provider, but looking at debug logs I can't actually see TF provider doing anything wrong. Here's an excerpt:
```
2022-12-12T13:53:50.816Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: ---[ REQUEST ]---------------------------------------
2022-12-12T13:53:50.816Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: PATCH /apis/monitoring.googleapis.com/v1/namespaces/gmp-public/operatorconfigs/config?fieldManager=Terraform&force=false HTTP/1.1
2022-12-12T13:53:50.816Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: Host: REDACTED
2022-12-12T13:53:50.816Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: User-Agent: HashiCorp/1.0 Terraform/1.3.6
2022-12-12T13:53:50.816Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: Content-Length: 240
2022-12-12T13:53:50.816Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: Accept: application/json
2022-12-12T13:53:50.817Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: Authorization: Bearer REDACTED...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
2022-12-12T13:53:50.817Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: Content-Type: application/apply-patch+yaml
2022-12-12T13:53:50.817Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: Accept-Encoding: gzip
2022-12-12T13:53:50.817Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5:
2022-12-12T13:53:50.817Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: {
2022-12-12T13:53:50.817Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: "apiVersion": "monitoring.googleapis.com/v1",
2022-12-12T13:53:50.817Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: "kind": "OperatorConfig",
2022-12-12T13:53:50.817Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: "metadata": {
2022-12-12T13:53:50.817Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: "annotations": {
2022-12-12T13:53:50.817Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: "meta.helm.sh/release-name": "managedprometheus-patch",
2022-12-12T13:53:50.817Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: "meta.helm.sh/release-namespace": "gmp-public"
2022-12-12T13:53:50.817Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: },
2022-12-12T13:53:50.817Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: "name": "config",
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: "namespace": "gmp-public"
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: }
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: }
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5:
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: -----------------------------------------------------
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: 2022/12/12 13:53:50 [DEBUG] Kubernetes API Response Details:
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: ---[ RESPONSE ]--------------------------------------
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: HTTP/2.0 500 Internal Server Error
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: Content-Length: 143
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: Audit-Id: f0ae4be9-a8e8-4364-87bb-3407ee014fb4
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: Cache-Control: no-cache, private
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: Content-Type: application/json
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: Date: Mon, 12 Dec 2022 13:53:50 GMT
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: X-Kubernetes-Pf-Flowschema-Uid: 356b0161-cd59-4f1f-9170-86f13609e682
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: X-Kubernetes-Pf-Prioritylevel-Uid: 6a8d0aab-cd6e-42a6-9f89-fcde7204b463
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5:
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: {
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: "kind": "Status",
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: "apiVersion": "v1",
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: "metadata": {},
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: "status": "Failure",
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: "message": ".managedAlertmanager: field not declared in schema",
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: "code": 500
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5: }
2022-12-12T13:53:50.818Z [DEBUG] provider.terraform-provider-kubernetes_v2.16.1_x5:
```
I'm not that familiar with k8s api workings, so I don't know what to make of it exactly.
I know that:
1. I'm not setting managedAlertmanager field and it is not sent in request
2. I did not set managedAlertmanager (as we're using our own)
3. If I manually **delete whole .managedAlertmanager field from the OperatorConfig on the cluster then TF provider's request wil complete successfully**
Let me know if this is something that can be improved from monitoring side or it looks like k8s/gke/tf issue to you.
Contributor guide
Research direction
Start by reproducing the PATCH request to the monitoring.googleapis.com/v1/namespaces/{namespace}/operatorconfigs/{name} endpoint using the OperatorConfig and kubernetes_labels/kubernetes_annotations resources described here. Compare the request and response with the existing managedAlertmanager field on the cluster. Done means identifying whether the schema error belongs to the monitoring API, GKE, or Terraform provider and defining an actionable fix.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- gcp, go, kubernetes, terraform
- Domain
- api, cloud, infrastructure
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100