忽略未指定的欄位

本頁面說明 Config Connector 資源中 spec 欄位的預設填入行為,以及如何將現有資源從舊版 Merge 行為遷移至建議的 Absent 行為。如果您使用的是 1.114.0 以上版本新增的 CustomResourceDefinition (CRD),本頁面可能不適用,因為這些 CRD 僅支援 Absent 行為。如需支援 Merge 行為的 CRD 清單,請參閱本頁的「支援 Merge 的種類」一節。

spec 欄位填入行為

Config Connector 建立資源時,Kubernetes 資源 spec 欄位中未指定的欄位可能會有兩種不同的填入行為:Absent 和 Merge。

缺席

Absent 行為是建議行為。如果資源使用 Absent 行為,Config Connector 不會將未指定的欄位填入 Kubernetes 資源 spec 欄位。

自 Config Connector 1.123.1 版起,除非您在 ConfigConnector 或 ConfigConnectorContext 自訂資源中,將 spec.stateIntoSpec 欄位的值設為 Merge,否則所有新建立的資源都會預設採用 Absent 行為。對於使用 cnrm.cloud.google.com/state-into-spec 註解的資源,Config Connector 預設會將註解的值設為小寫的 absent (spec.stateIntoSpec 欄位會使用大寫的 Absent 或 Merge)。由直接控制器調解的資源會使用 Absent 行為,而不新增註解。

如果是1.114.0 以上版本新增的 CRD,則僅支援 Absent 行為。

合併

在 1.114.0 以上版本新增的 CRD 中,不支援 Merge 行為。如果資源使用 Merge 行為,除非 spec 欄位無法讀取,否則在成功協調後,這些欄位會採用 Google Cloud API 的值。詳情請參閱「從外部管理欄位」。

如果是1.113.0 以下版本新增的 CRD,Config Connector 同時支援 Absent 和 Merge 行為。如需完整的支援資源清單,請參閱「支援 Merge 的種類」。在 1.123.1 之前的 Config Connector 版本中,這些 CRD 的預設填入行為是 Merge,且 Config Connector 預設會將 cnrm.cloud.google.com/state-into-spec 註解的值設為 merge。

資源建立後,cnrm.cloud.google.com/state-into-spec 註解就無法變更,因此在 1.123.1 版之前建立的資源,即使將 Config Connector 升級至 1.123.1 以上版本,仍會保留 cnrm.cloud.google.com/state-into-spec: merge 註解。如要設定新資源以使用 Absent 行為,請參閱「略過在規格中填入未指定的欄位」。如要遷移現有資源,請參閱「將資源從 Merge 遷移至 Absent」。

當資源使用 Merge 行為時,原始 YAML 資訊清單中未指定的欄位會填入 Kubernetes API 伺服器中的自訂資源 spec 欄位。這表示執行 kubectl get RESOURCE_KIND RESOURCE_NAME -o yaml 指令時,輸出內容中的 spec 欄位可能包含您套用的 YAML 檔案中沒有的子欄位。

舉例來說,假設 CRD 結構定義允許您在 spec 欄位中指定名為 field1 和 field2 的兩個欄位,但您套用的 YAML 檔案只指定 field1 欄位:

spec:
  field1: "value-1"

如果 YAML 資訊清單套用成功,且資源為 UpToDate,自訂資源中會顯示 field2 欄位:

spec:
  field1: "value-1"
  field2: "value-2"

Config Connector 不會從Google Cloud 填入未指定的資源參照欄位,例如 projectRef、folderRef、organizationRef 或 billingAccountRef,到 spec。舉例來說,即使 Project 類型支援 Merge,所有選用 spec 欄位 (billingAccountRef、folderRef 和 organizationRef) 都是資源參照欄位。因此,Merge 不會在 Project 資源上填入任何未指定的欄位。

由於 Config Connector 與Google Cloud API 之間的互動相當複雜,請使用 Absent 行為,讓 Config Connector 略過以未指定欄位填入 Kubernetes 資源 spec 欄位。

略過將未指定的欄位填入規格

您可以透過下列任一方式,設定 Config Connector 略過將未指定的欄位填入 spec 欄位,適用於 Config Connector 1.113.0 以下版本新增的 CRD:

  • 將叢集層級或命名空間層級的 stateIntoSpec 欄位值設為 Absent。
  • 在資源上,將 cnrm.cloud.google.com/state-into-spec 註解的值設為 absent。

設定叢集層級或命名空間層級的 stateIntoSpec 覆寫

安裝或更新 Config Connector 安裝項目時,您可以將叢集層級或命名空間層級 stateIntoSpec 欄位的值設為 ConfigConnector 或 ConfigConnectorContext 自訂資源中的 Absent:

spec:
  stateIntoSpec: Absent

如果您未在資源 YAML 資訊清單中指定 cnrm.cloud.google.com/state-into-spec 註解,這個設定會將 Absent 行為設為叢集或命名空間中任何新建立資源的預設 spec 欄位填入行為。Config Connector 會略過將未指定的欄位填入這些資源的 Kubernetes 資源 spec 欄位。

ConfigConnector 和 ConfigConnectorContext 自訂資源中的 stateIntoSpec 欄位沒有預設值。Config Connector 會根據 cnrm.cloud.google.com/state-into-spec 註解的值,決定 spec 欄位的填入行為,並在建立資源時,按照下列優先順序決定註解的值:

  1. 如果已指定 cnrm.cloud.google.com/state-into-spec 註解且有效,請直接使用該註解的值。
  2. 如果未指定註解,請使用 ConfigConnectorContext 自訂資源中 stateIntoSpec 欄位的對應值。
  3. 如果 ConfigConnectorContext 自訂資源不存在,或 stateIntoSpec 欄位未指定,請使用 ConfigConnector 自訂資源中 stateIntoSpec 欄位的對應值。
  4. 如果 ConfigConnector 自訂資源不存在,或未指定 stateIntoSpec 欄位,Config Connector 1.123.1 以上版本會預設為 absent 值。1.123.1 之前的版本會使用 CRD 的預設行為,如「spec 欄位填入行為」所述。

1.114.0 以上版本新增的 CRD 僅支援 Absent 填入行為,無論 ConfigConnector 或 ConfigConnectorContext 自訂資源中的 stateIntoSpec 欄位為何,皆是如此。

如果您已建立具有 Merge 行為的資源,在 ConfigConnector 或 ConfigConnectorContext 自訂資源中將 stateIntoSpec 欄位的值更新為 Absent,並不會變更現有資源的註解。如要遷移現有資源,請參閱「將資源從 Merge 遷移至 Absent」。

設定資源層級 cnrm.cloud.google.com/state-into-spec 註解

建立 YAML 檔案時,您可以將 cnrm.cloud.google.com/state-into-spec 註解的值設為 absent。這項註解會略過在 Kubernetes 資源 spec 欄位中填入未指定的欄位:

metadata:
  annotations:
    cnrm.cloud.google.com/state-into-spec: absent

在 Config Connector 1.123.1 以上版本中,如果未指定這項註解,系統會預設為 absent 值 (除非您在 ConfigConnector 或 ConfigConnectorContext 自訂資源中,將 spec.stateIntoSpec 欄位的值設為 Merge,藉此覆寫預設值)。在 1.123.1 之前的版本中,對於 1.113.0 版和更早版本中新增的 CRD,這項註解預設為 merge 值,也就是說,Config Connector 會將所有未指定的欄位填入 spec 欄位。

這項註解是不可變動的,也就是說,您無法直接在現有的 Config Connector 資源上更新註解值。如果您已使用 merge 值建立資源,並想將其行為變更為 absent 值,請參閱「從 Merge 遷移資源至 Absent」。

如要進一步說明這項註解帶來的差異,請假設資源具有 spec 欄位,且結構定義如下:

field1: string
field2: string
listField:
- itemField1: string
  itemField2: string
objectField:
  subField1: string
  subField2: string

此外,假設您在 YAML 資訊清單中將 spec 欄位指定為:

spec:
  field1: "value-1"
  listField:
  - itemField1: "1_value1"
  - itemField1: "2_value1"
  objectField:
    subField1: "sub-value-1"

如果將 cnrm.cloud.google.com/state-into-spec 註解的值設為 merge,所建立 Kubernetes 資源中填入的 spec 欄位會如下所示:

spec:
  field1: "value-1"
  field2: "value-2"
  listField:
  - itemField1: "1_value1"
    itemField2: "1_value2"
  - itemField1: "2_value1"
    itemField2: "2_value2"
  objectField:
    subField1: "sub-value-1"
    subField2: "sub-value-2"

設定 cnrm.cloud.google.com/state-into-spec: absent 註解時,所建立 Kubernetes 資源中的最終 spec 欄位會維持:

spec:
  field1: "value-1"
  listField:
  - itemField1: "1_value1"
  - itemField1: "2_value1"
  objectField:
    subField1: "sub-value-1"

將資源從 Merge 遷移至 Absent

由於現有 Kubernetes 資源的 cnrm.cloud.google.com/state-into-spec 註解不可變更,因此將 Config Connector 升級至 1.123.1 以上版本時,現有資源的值不會自動從 merge 變更為 absent。

將現有資源和命名空間從 Merge 行為遷移至 Absent 行為,有助於避免下列問題:

  • 自動更新欄位的對帳錯誤: Google Cloud 自動更新基礎資源的特定欄位,例如維護版本或自動調度資源設定。具有 state-into-spec: merge 註解的資源可能會無法完成調解,或進入無止盡的更新迴圈,嘗試將欄位還原為舊的 spec 值。
  • 與 GitOps 和設定管理工具衝突:當 Merge 行為在清單中填入未指定的子欄位時,Config Sync 和 Argo CD 等工具可能會與 Config Connector 衝突。
  • 較新資源種類的驗證錯誤:如果 ConfigConnector 或 ConfigConnectorContext 自訂資源的 spec.stateIntoSpec 欄位值設為 Merge,管理不支援 Merge 行為的資源可能會導致驗證錯誤 (invalid value "merge" for "cnrm.cloud.google.com/state-into-spec" annotation)。

找出受影響的命名空間和資源

遷移前,請檢查叢集、命名空間和資源層級的設定,找出仍在使用 Merge 行為的位置:

  • 檢查叢集層級的 ConfigConnector 自訂資源,是否有 stateIntoSpec 欄位覆寫:

    kubectl get configconnector configconnector.core.cnrm.cloud.google.com \
        -o jsonpath='{.spec.stateIntoSpec}{"\n"}'
    
  • 檢查所有命名空間層級的 ConfigConnectorContext 自訂資源,查看是否有 stateIntoSpec 欄位覆寫:

    kubectl get configconnectorcontext -A \
        -o custom-columns=NAMESPACE:.metadata.namespace,STATE_INTO_SPEC:.spec.stateIntoSpec
    
  • 檢查現有 Config Connector 資源的 cnrm.cloud.google.com/state-into-spec 註解值:

    kubectl get RESOURCE_KIND RESOURCE_NAME -n NAMESPACE \
        -o jsonpath='{.metadata.annotations.cnrm\.cloud\.google\.com/state-into-spec}{"\n"}'
    

    更改下列內容:

    • RESOURCE_KIND:Config Connector 資源的種類,例如 SQLInstance。
    • RESOURCE_NAME:資源名稱。
    • NAMESPACE:資源的命名空間。

將資源遷移至 Absent

如要將現有資源的填入行為從 Merge 變更為 Absent,您必須捨棄 Kubernetes 資源,並使用 cnrm.cloud.google.com/state-into-spec: absent 註解重新取得基礎 Google Cloud 資源。如要放棄並重新取得資源,請完成下列步驟:

  1. 如果 ConfigConnector 或 ConfigConnectorContext 自訂資源中的 spec.stateIntoSpec 欄位值設為 Merge,請將該欄位的值更新為 Absent:

    spec:
      stateIntoSpec: Absent
    
  2. 將 cnrm.cloud.google.com/deletion-policy: abandon 註解新增至叢集中的現有 Config Connector 資源。這項註解可確保在下一個步驟中刪除 Kubernetes 資源時,不會刪除基礎 Google Cloud 資源:

    kubectl annotate RESOURCE_KIND RESOURCE_NAME -n NAMESPACE \
        cnrm.cloud.google.com/deletion-policy=abandon --overwrite
    
  3. 從 Kubernetes 叢集刪除資源:

    kubectl delete RESOURCE_KIND RESOURCE_NAME -n NAMESPACE
    
  4. 在資源 YAML 資訊清單中,將 cnrm.cloud.google.com/state-into-spec 註解的值設為 absent:

    metadata:
      annotations:
        cnrm.cloud.google.com/state-into-spec: absent
    

    查看 YAML 資訊清單中的 spec 欄位,確認其中包含您要 Config Connector 管理的所有欄位。請省略您希望 Google Cloud 或外部系統自動管理的欄位,例如 SQLInstance 資源上的 spec.maintenanceVersion 欄位。

  5. 選用:如果本機 YAML 資訊清單也包含 cnrm.cloud.google.com/deletion-policy: abandon 註解,且您不再需要 abandon 刪除政策,請從 YAML 資訊清單中移除該註解。

  6. 套用更新後的 YAML 資訊清單,重新取得資源:

    kubectl apply -f MANIFEST_FILE
    

    將 MANIFEST_FILE 替換為資源 YAML 檔案的路徑。

使用 cnrm.cloud.google.com/state-into-spec: absent 的時機

在大多數情況下,請使用 cnrm.cloud.google.com/state-into-spec: absent 註解,為 spec 欄位取得 Absent 填入行為。以下各節說明 Absent 填入行為適用的常見情境。

避免與 Google Cloud自動更新的欄位發生衝突

當資源使用 cnrm.cloud.google.com/state-into-spec: merge 註解時,Config Connector 會在初始協調期間從 Google Cloud API 讀取值,並將這些值寫入 Kubernetes 資源 spec 欄位。如果 Google Cloud 服務之後自動更新其中一個欄位,Config Connector 會將儲存在spec欄位中的舊值視為目標狀態,並嘗試還原基礎Google Cloud 資源的變更。

舉例來說,如果您使用 cnrm.cloud.google.com/state-into-spec: merge 註解建立 SQLInstance 資源,但未指定 spec.maintenanceVersion 欄位,Config Connector 會將初始維護版本填入 spec.maintenanceVersion 欄位。當 Cloud SQL 稍後對執行個體執行自動維護更新時,Cloud SQL 中的即時維護版本會更新。在下一次對帳期間,Config Connector 會嘗試將執行個體修補回舊版 spec.maintenanceVersion 值。由於 Cloud SQL 會拒絕降級維護版本,因此協調作業會重複失敗,並顯示 UpdateFailed 錯誤 (The requested maintenance version is not an available maintenance version to upgrade)。

設定 cnrm.cloud.google.com/state-into-spec: absent 註解時,請從 YAML 資訊清單中省略自動更新的欄位,例如 spec.maintenanceVersion。Config Connector 不會在 spec 欄位中記錄這些欄位,因此 Google Cloud 可以更新這些欄位,而不會造成協調衝突。

在外部管理清單中未指定的欄位

Config Connector 會將 Kubernetes 資源 spec 欄位中的所有清單欄位視為原子欄位。因此,當 state-into-spec 註解的值設為 merge 時,Config Connector 會還原從 Config Connector 外部對清單中子欄位所做的任何變更。不過,您可以使用 cnrm.cloud.google.com/state-into-spec: absent 註解,讓 Config Connector 保持清單中未指定的子欄位不受管理。詳情請參閱「資源規格中清單欄位的行為」。

解決設定管理工具與 Config Connector 之間的衝突

如果您使用 Config Sync 或 Argo CD 等設定管理工具,可能會發現設定管理工具與 Config Connector 之間發生衝突。例如,疑難排解指南中說明的 KNV2005 錯誤。發生這些問題的原因如下:

  • 當 state-into-spec 註解的值設為 merge 時,Config Connector 會在 spec 欄位中填入清單中未指定的值,例如 spec.listField[0].itemField2 欄位。
  • 設定管理工具和 Config Connector 都會將清單欄位視為不可分割的項目,因此設定管理工具會將新增的 spec.listField[0].itemField2 欄位視為漂移並移除。

如要解決這些問題,您可以設定 cnrm.cloud.google.com/state-into-spec: absent 註解,讓 Config Connector 不會將未指定的 spec.listField[0].itemField2 欄位新增至 spec 欄位。

解決 GET/PUT 對稱問題

GET/PUT 對稱性是指 REST API 的設計原則。具體來說,這表示當 GET 回應以 PUT 要求的形式傳送至相同網址時,預期結果是 HTTP 200 OK 狀態碼,且基礎 REST 資源的狀態不會變更。

如果 state-into-spec 註解的值設為 merge,則 Kubernetes 資源 spec 欄位中由 Config Connector 填入的未指定欄位,就是 GET 要求的結果。這項行為代表在日後的協調中,Config Connector 可能會將 PUT 或 PATCH 要求傳送至基礎Google Cloud API,並附上從 GET 要求取得的未指定欄位值。這種行為通常不會造成問題,但部分 Google Cloud API 可能會因為這些未指定的欄位值而拒絕 PUT 或 PATCH 要求。在同一個範例中,如果 API 實作違反 GET/PUT 對稱原則,則填入值為 "sub-value-2" 的 spec.objectField.subField2 欄位可能會導致 HTTP 400 用戶端錯誤或其他非預期的回應。

為避免這類問題,您可以設定 cnrm.cloud.google.com/state-into-spec: absent 註解,並檢查協調期間的錯誤是否消失。

觀察到的狀態

如果您需要設定 cnrm.cloud.google.com/state-into-spec: absent 註解,但解決方案取決於未指定欄位中填入的值,請檢查 CRD 結構定義中的 status.observedState 欄位是否存在這些欄位。如果這些欄位顯示在 status.observedState 欄位中,您可以設定 cnrm.cloud.google.com/state-into-spec: absent 註解,並在成功協調後存取未指定欄位的值。

status.observedState 欄位包含 Config Connector 在上次成功協調時,觀察到的資源所選觀察欄位的即時狀態。Config Connector 會為常見用途選取觀察到的欄位,這些欄位是計算 spec 欄位和依附元件。您可以在 CRD 結構定義中找到觀測到的欄位。

如果找不到想要的觀察欄位,請在公開問題追蹤器中檢查現有問題或開啟新問題。

支援 Merge 的種類

以下是支援 Merge 填入行為的所有 Config Connector 種類:

  • AccessContextManagerAccessLevel
  • AccessContextManagerAccessPolicy
  • AccessContextManagerServicePerimeter
  • AlloyDBBackup
  • AlloyDBCluster
  • AlloyDBUser
  • ApigeeEnvironment
  • ApigeeOrganization
  • ArtifactRegistryRepository
  • BigQueryDataset
  • BigQueryJob
  • BigQueryRoutine
  • BigQueryTable
  • BigtableAppProfile
  • BigtableGCPolicy
  • BigtableInstance
  • BigtableTable
  • BillingBudgetsBudget
  • BinaryAuthorizationAttestor
  • BinaryAuthorizationPolicy
  • CertificateManagerCertificate
  • CertificateManagerCertificateMap
  • CertificateManagerCertificateMapEntry
  • CloudBuildTrigger
  • CloudFunctionsFunction
  • CloudSchedulerJob
  • ComputeAddress
  • ComputeBackendBucket
  • ComputeBackendService
  • ComputeDisk
  • ComputeExternalVPNGateway
  • ComputeFirewall
  • ComputeFirewallPolicy
  • ComputeFirewallPolicyAssociation
  • ComputeForwardingRule
  • ComputeHTTPHealthCheck
  • ComputeHTTPSHealthCheck
  • ComputeHealthCheck
  • ComputeImage
  • ComputeInstance
  • ComputeInstanceGroup
  • ComputeInstanceGroupManager
  • ComputeInstanceTemplate
  • ComputeInterconnectAttachment
  • ComputeNetwork
  • ComputeNetworkEndpointGroup
  • ComputeNetworkFirewallPolicy
  • ComputeNetworkPeering
  • ComputeNodeGroup
  • ComputeNodeTemplate
  • ComputePacketMirroring
  • ComputeProjectMetadata
  • ComputeRegionNetworkEndpointGroup
  • ComputeReservation
  • ComputeResourcePolicy
  • ComputeRoute
  • ComputeRouter
  • ComputeRouterInterface
  • ComputeRouterNAT
  • ComputeRouterPeer
  • ComputeSSLCertificate
  • ComputeSSLPolicy
  • ComputeSecurityPolicy
  • ComputeServiceAttachment
  • ComputeSharedVPCHostProject
  • ComputeSharedVPCServiceProject
  • ComputeSnapshot
  • ComputeSubnetwork
  • ComputeTargetGRPCProxy
  • ComputeTargetHTTPProxy
  • ComputeTargetHTTPSProxy
  • ComputeTargetInstance
  • ComputeTargetPool
  • ComputeTargetSSLProxy
  • ComputeTargetTCPProxy
  • ComputeTargetVPNGateway
  • ComputeURLMap
  • ComputeVPNGateway
  • ComputeVPNTunnel
  • ConfigControllerInstance
  • ContainerAnalysisNote
  • ContainerAttachedCluster
  • ContainerCluster
  • ContainerNodePool
  • DLPDeidentifyTemplate
  • DLPInspectTemplate
  • DLPJobTrigger
  • DLPStoredInfoType
  • DNSManagedZone
  • DNSPolicy
  • DNSRecordSet
  • DataCatalogPolicyTag
  • DataCatalogTaxonomy
  • DataFusionInstance
  • DataflowFlexTemplateJob
  • DataflowJob
  • DataprocAutoscalingPolicy
  • DataprocCluster
  • DataprocWorkflowTemplate
  • EdgeContainerCluster
  • EdgeContainerNodePool
  • EdgeContainerVpnConnection
  • EdgeNetworkNetwork
  • EdgeNetworkSubnet
  • EventarcTrigger
  • FilestoreBackup
  • FilestoreInstance
  • FirestoreIndex
  • 資料夾
  • GKEHubFeature
  • GKEHubMembership
  • IAMAccessBoundaryPolicy
  • IAMAuditConfig
  • IAMCustomRole
  • IAMPartialPolicy
  • IAMPolicy
  • IAMPolicyMember
  • IAMServiceAccount
  • IAMServiceAccountKey
  • IAMWorkforcePool
  • IAMWorkforcePoolProvider
  • IAMWorkloadIdentityPool
  • IAMWorkloadIdentityPoolProvider
  • IAPBrand
  • IAPIdentityAwareProxyClient
  • IdentityPlatformConfig
  • IdentityPlatformOAuthIDPConfig
  • IdentityPlatformTenant
  • IdentityPlatformTenantOAuthIDPConfig
  • KMSCryptoKey
  • KMSKeyRing
  • LoggingLogBucket
  • LoggingLogExclusion
  • LoggingLogSink
  • LoggingLogView
  • MemcacheInstance
  • MonitoringAlertPolicy
  • MonitoringGroup
  • MonitoringMetricDescriptor
  • MonitoringMonitoredProject
  • MonitoringNotificationChannel
  • MonitoringService
  • MonitoringServiceLevelObjective
  • MonitoringUptimeCheckConfig
  • NetworkConnectivityHub
  • NetworkConnectivitySpoke
  • NetworkSecurityAuthorizationPolicy
  • NetworkSecurityClientTLSPolicy
  • NetworkSecurityServerTLSPolicy
  • NetworkServicesEndpointPolicy
  • NetworkServicesGRPCRoute
  • NetworkServicesGateway
  • NetworkServicesHTTPRoute
  • NetworkServicesMesh
  • NetworkServicesTCPRoute
  • NetworkServicesTLSRoute
  • OSConfigGuestPolicy
  • OSConfigOSPolicyAssignment
  • PrivateCACAPool
  • PrivateCACertificate
  • PrivateCACertificateAuthority
  • PrivateCACertificateTemplate
  • 專案
  • PubSubLiteReservation
  • PubSubSchema
  • PubSubSubscription
  • PubSubTopic
  • RecaptchaEnterpriseKey
  • RedisInstance
  • ResourceManagerLien
  • ResourceManagerPolicy
  • RunJob
  • RunService
  • SQLDatabase
  • SQLSSLCert
  • SQLUser
  • SecretManagerSecret
  • SecretManagerSecretVersion
  • 服務
  • ServiceDirectoryEndpoint
  • ServiceDirectoryNamespace
  • ServiceDirectoryService
  • ServiceIdentity
  • ServiceNetworkingConnection
  • SourceRepoRepository
  • SpannerDatabase
  • SpannerInstance
  • StorageBucket
  • StorageBucketAccessControl
  • StorageDefaultObjectAccessControl
  • StorageNotification
  • StorageTransferJob
  • TagsTagBinding
  • TagsTagKey
  • TagsTagValue
  • VPCAccessConnector

下列種類的項目不支援從對應版本開始的 Merge 填入行為:

種類名稱 版本
AlloyDBInstance 1.129.2
CertificateManagerDNSAuthorization 1.124.0
CloudIdentityGroup 1.134.0
CloudIdentityMembership 1.134.0
ComputeFirewallPolicyRule 1.125.0
GKEHubFeatureMembership 1.128.0
LoggingLogMetric 1.118.1
MonitoringDashboard 1.119.0
SQLInstance 1.129.2