xref: /aosp_15_r20/external/googleapis/google/cloud/gkehub/v1/membership.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 Google LLC
2*d5c09012SAndroid Build Coastguard Worker//
3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*d5c09012SAndroid Build Coastguard Worker//
7*d5c09012SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*d5c09012SAndroid Build Coastguard Worker//
9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*d5c09012SAndroid Build Coastguard Worker// limitations under the License.
14*d5c09012SAndroid Build Coastguard Worker
15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3";
16*d5c09012SAndroid Build Coastguard Worker
17*d5c09012SAndroid Build Coastguard Workerpackage google.cloud.gkehub.v1;
18*d5c09012SAndroid Build Coastguard Worker
19*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto";
20*d5c09012SAndroid Build Coastguard Workerimport "google/api/resource.proto";
21*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto";
22*d5c09012SAndroid Build Coastguard Worker
23*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.GkeHub.V1";
24*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/gkehub/apiv1/gkehubpb;gkehubpb";
25*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true;
26*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "MembershipProto";
27*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.gkehub.v1";
28*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\GkeHub\\V1";
29*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::GkeHub::V1";
30*d5c09012SAndroid Build Coastguard Worker
31*d5c09012SAndroid Build Coastguard Worker// Membership contains information about a member cluster.
32*d5c09012SAndroid Build Coastguard Workermessage Membership {
33*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
34*d5c09012SAndroid Build Coastguard Worker    type: "gkehub.googleapis.com/Membership"
35*d5c09012SAndroid Build Coastguard Worker    pattern: "projects/{project}/locations/{location}/memberships/{membership}"
36*d5c09012SAndroid Build Coastguard Worker  };
37*d5c09012SAndroid Build Coastguard Worker
38*d5c09012SAndroid Build Coastguard Worker  // Type of resource represented by this Membership
39*d5c09012SAndroid Build Coastguard Worker  oneof type {
40*d5c09012SAndroid Build Coastguard Worker    // Optional. Endpoint information to reach this member.
41*d5c09012SAndroid Build Coastguard Worker    MembershipEndpoint endpoint = 4 [(google.api.field_behavior) = OPTIONAL];
42*d5c09012SAndroid Build Coastguard Worker  }
43*d5c09012SAndroid Build Coastguard Worker
44*d5c09012SAndroid Build Coastguard Worker  // Output only. The full, unique name of this Membership resource in the
45*d5c09012SAndroid Build Coastguard Worker  // format `projects/*/locations/*/memberships/{membership_id}`, set during
46*d5c09012SAndroid Build Coastguard Worker  // creation.
47*d5c09012SAndroid Build Coastguard Worker  //
48*d5c09012SAndroid Build Coastguard Worker  // `membership_id` must be a valid RFC 1123 compliant DNS label:
49*d5c09012SAndroid Build Coastguard Worker  //
50*d5c09012SAndroid Build Coastguard Worker  //   1. At most 63 characters in length
51*d5c09012SAndroid Build Coastguard Worker  //   2. It must consist of lower case alphanumeric characters or `-`
52*d5c09012SAndroid Build Coastguard Worker  //   3. It must start and end with an alphanumeric character
53*d5c09012SAndroid Build Coastguard Worker  //
54*d5c09012SAndroid Build Coastguard Worker  // Which can be expressed as the regex: `[a-z0-9]([-a-z0-9]*[a-z0-9])?`,
55*d5c09012SAndroid Build Coastguard Worker  // with a maximum length of 63 characters.
56*d5c09012SAndroid Build Coastguard Worker  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
57*d5c09012SAndroid Build Coastguard Worker
58*d5c09012SAndroid Build Coastguard Worker  // Optional. Labels for this membership.
59*d5c09012SAndroid Build Coastguard Worker  map<string, string> labels = 2 [(google.api.field_behavior) = OPTIONAL];
60*d5c09012SAndroid Build Coastguard Worker
61*d5c09012SAndroid Build Coastguard Worker  // Output only. Description of this membership, limited to 63 characters.
62*d5c09012SAndroid Build Coastguard Worker  // Must match the regex: `[a-zA-Z0-9][a-zA-Z0-9_\-\.\ ]*`
63*d5c09012SAndroid Build Coastguard Worker  //
64*d5c09012SAndroid Build Coastguard Worker  // This field is present for legacy purposes.
65*d5c09012SAndroid Build Coastguard Worker  string description = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
66*d5c09012SAndroid Build Coastguard Worker
67*d5c09012SAndroid Build Coastguard Worker  // Output only. State of the Membership resource.
68*d5c09012SAndroid Build Coastguard Worker  MembershipState state = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
69*d5c09012SAndroid Build Coastguard Worker
70*d5c09012SAndroid Build Coastguard Worker  // Output only. When the Membership was created.
71*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp create_time = 6
72*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
73*d5c09012SAndroid Build Coastguard Worker
74*d5c09012SAndroid Build Coastguard Worker  // Output only. When the Membership was last updated.
75*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp update_time = 7
76*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
77*d5c09012SAndroid Build Coastguard Worker
78*d5c09012SAndroid Build Coastguard Worker  // Output only. When the Membership was deleted.
79*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp delete_time = 8
80*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
81*d5c09012SAndroid Build Coastguard Worker
82*d5c09012SAndroid Build Coastguard Worker  // Optional. An externally-generated and managed ID for this Membership. This
83*d5c09012SAndroid Build Coastguard Worker  // ID may be modified after creation, but this is not recommended.
84*d5c09012SAndroid Build Coastguard Worker  //
85*d5c09012SAndroid Build Coastguard Worker  // The ID must match the regex: `[a-zA-Z0-9][a-zA-Z0-9_\-\.]*`
86*d5c09012SAndroid Build Coastguard Worker  //
87*d5c09012SAndroid Build Coastguard Worker  // If this Membership represents a Kubernetes cluster, this value should be
88*d5c09012SAndroid Build Coastguard Worker  // set to the UID of the `kube-system` namespace object.
89*d5c09012SAndroid Build Coastguard Worker  string external_id = 9 [(google.api.field_behavior) = OPTIONAL];
90*d5c09012SAndroid Build Coastguard Worker
91*d5c09012SAndroid Build Coastguard Worker  // Output only. For clusters using Connect, the timestamp of the most recent
92*d5c09012SAndroid Build Coastguard Worker  // connection established with Google Cloud. This time is updated every
93*d5c09012SAndroid Build Coastguard Worker  // several minutes, not continuously. For clusters that do not use GKE
94*d5c09012SAndroid Build Coastguard Worker  // Connect, or that have never connected successfully, this field will be
95*d5c09012SAndroid Build Coastguard Worker  // unset.
96*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp last_connection_time = 10
97*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
98*d5c09012SAndroid Build Coastguard Worker
99*d5c09012SAndroid Build Coastguard Worker  // Output only. Google-generated UUID for this resource. This is unique across
100*d5c09012SAndroid Build Coastguard Worker  // all Membership resources. If a Membership resource is deleted and another
101*d5c09012SAndroid Build Coastguard Worker  // resource with the same name is created, it gets a different unique_id.
102*d5c09012SAndroid Build Coastguard Worker  string unique_id = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
103*d5c09012SAndroid Build Coastguard Worker
104*d5c09012SAndroid Build Coastguard Worker  // Optional. How to identify workloads from this Membership.
105*d5c09012SAndroid Build Coastguard Worker  // See the documentation on Workload Identity for more details:
106*d5c09012SAndroid Build Coastguard Worker  // https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity
107*d5c09012SAndroid Build Coastguard Worker  Authority authority = 12 [(google.api.field_behavior) = OPTIONAL];
108*d5c09012SAndroid Build Coastguard Worker
109*d5c09012SAndroid Build Coastguard Worker  // Optional. The monitoring config information for this membership.
110*d5c09012SAndroid Build Coastguard Worker  MonitoringConfig monitoring_config = 14
111*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OPTIONAL];
112*d5c09012SAndroid Build Coastguard Worker}
113*d5c09012SAndroid Build Coastguard Worker
114*d5c09012SAndroid Build Coastguard Worker// MembershipEndpoint contains information needed to contact a Kubernetes API,
115*d5c09012SAndroid Build Coastguard Worker// endpoint and any additional Kubernetes metadata.
116*d5c09012SAndroid Build Coastguard Workermessage MembershipEndpoint {
117*d5c09012SAndroid Build Coastguard Worker  // Optional. GKE-specific information. Only present if this Membership is a GKE cluster.
118*d5c09012SAndroid Build Coastguard Worker    GkeCluster gke_cluster = 1 [(google.api.field_behavior) = OPTIONAL];
119*d5c09012SAndroid Build Coastguard Worker
120*d5c09012SAndroid Build Coastguard Worker  // Output only. Useful Kubernetes-specific metadata.
121*d5c09012SAndroid Build Coastguard Worker  KubernetesMetadata kubernetes_metadata = 2
122*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
123*d5c09012SAndroid Build Coastguard Worker
124*d5c09012SAndroid Build Coastguard Worker  // Optional. The in-cluster Kubernetes Resources that should be applied for a
125*d5c09012SAndroid Build Coastguard Worker  // correctly registered cluster, in the steady state. These resources:
126*d5c09012SAndroid Build Coastguard Worker  //
127*d5c09012SAndroid Build Coastguard Worker  //   * Ensure that the cluster is exclusively registered to one and only one
128*d5c09012SAndroid Build Coastguard Worker  //     Hub Membership.
129*d5c09012SAndroid Build Coastguard Worker  //   * Propagate Workload Pool Information available in the Membership
130*d5c09012SAndroid Build Coastguard Worker  //     Authority field.
131*d5c09012SAndroid Build Coastguard Worker  //   * Ensure proper initial configuration of default Hub Features.
132*d5c09012SAndroid Build Coastguard Worker  KubernetesResource kubernetes_resource = 3
133*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OPTIONAL];
134*d5c09012SAndroid Build Coastguard Worker
135*d5c09012SAndroid Build Coastguard Worker  // Output only. Whether the lifecycle of this membership is managed by a
136*d5c09012SAndroid Build Coastguard Worker  // google cluster platform service.
137*d5c09012SAndroid Build Coastguard Worker  bool google_managed = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
138*d5c09012SAndroid Build Coastguard Worker}
139*d5c09012SAndroid Build Coastguard Worker
140*d5c09012SAndroid Build Coastguard Worker// KubernetesResource contains the YAML manifests and configuration for
141*d5c09012SAndroid Build Coastguard Worker// Membership Kubernetes resources in the cluster. After CreateMembership or
142*d5c09012SAndroid Build Coastguard Worker// UpdateMembership, these resources should be re-applied in the cluster.
143*d5c09012SAndroid Build Coastguard Workermessage KubernetesResource {
144*d5c09012SAndroid Build Coastguard Worker  // Input only. The YAML representation of the Membership CR. This field is
145*d5c09012SAndroid Build Coastguard Worker  // ignored for GKE clusters where Hub can read the CR directly.
146*d5c09012SAndroid Build Coastguard Worker  //
147*d5c09012SAndroid Build Coastguard Worker  // Callers should provide the CR that is currently present in the cluster
148*d5c09012SAndroid Build Coastguard Worker  // during CreateMembership or UpdateMembership, or leave this field empty if
149*d5c09012SAndroid Build Coastguard Worker  // none exists. The CR manifest is used to validate the cluster has not been
150*d5c09012SAndroid Build Coastguard Worker  // registered with another Membership.
151*d5c09012SAndroid Build Coastguard Worker  string membership_cr_manifest = 1 [(google.api.field_behavior) = INPUT_ONLY];
152*d5c09012SAndroid Build Coastguard Worker
153*d5c09012SAndroid Build Coastguard Worker  // Output only. Additional Kubernetes resources that need to be applied to the
154*d5c09012SAndroid Build Coastguard Worker  // cluster after Membership creation, and after every update.
155*d5c09012SAndroid Build Coastguard Worker  //
156*d5c09012SAndroid Build Coastguard Worker  // This field is only populated in the Membership returned from a successful
157*d5c09012SAndroid Build Coastguard Worker  // long-running operation from CreateMembership or UpdateMembership. It is not
158*d5c09012SAndroid Build Coastguard Worker  // populated during normal GetMembership or ListMemberships requests. To get
159*d5c09012SAndroid Build Coastguard Worker  // the resource manifest after the initial registration, the caller should
160*d5c09012SAndroid Build Coastguard Worker  // make a UpdateMembership call with an empty field mask.
161*d5c09012SAndroid Build Coastguard Worker  repeated ResourceManifest membership_resources = 2
162*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
163*d5c09012SAndroid Build Coastguard Worker
164*d5c09012SAndroid Build Coastguard Worker  // Output only. The Kubernetes resources for installing the GKE Connect agent
165*d5c09012SAndroid Build Coastguard Worker  //
166*d5c09012SAndroid Build Coastguard Worker  // This field is only populated in the Membership returned from a successful
167*d5c09012SAndroid Build Coastguard Worker  // long-running operation from CreateMembership or UpdateMembership. It is not
168*d5c09012SAndroid Build Coastguard Worker  // populated during normal GetMembership or ListMemberships requests. To get
169*d5c09012SAndroid Build Coastguard Worker  // the resource manifest after the initial registration, the caller should
170*d5c09012SAndroid Build Coastguard Worker  // make a UpdateMembership call with an empty field mask.
171*d5c09012SAndroid Build Coastguard Worker  repeated ResourceManifest connect_resources = 3
172*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
173*d5c09012SAndroid Build Coastguard Worker
174*d5c09012SAndroid Build Coastguard Worker  // Optional. Options for Kubernetes resource generation.
175*d5c09012SAndroid Build Coastguard Worker  ResourceOptions resource_options = 4 [(google.api.field_behavior) = OPTIONAL];
176*d5c09012SAndroid Build Coastguard Worker}
177*d5c09012SAndroid Build Coastguard Worker
178*d5c09012SAndroid Build Coastguard Worker// ResourceOptions represent options for Kubernetes resource generation.
179*d5c09012SAndroid Build Coastguard Workermessage ResourceOptions {
180*d5c09012SAndroid Build Coastguard Worker  // Optional. The Connect agent version to use for connect_resources. Defaults
181*d5c09012SAndroid Build Coastguard Worker  // to the latest GKE Connect version. The version must be a currently
182*d5c09012SAndroid Build Coastguard Worker  // supported version, obsolete versions will be rejected.
183*d5c09012SAndroid Build Coastguard Worker  string connect_version = 1 [(google.api.field_behavior) = OPTIONAL];
184*d5c09012SAndroid Build Coastguard Worker
185*d5c09012SAndroid Build Coastguard Worker  // Optional. Use `apiextensions/v1beta1` instead of `apiextensions/v1` for
186*d5c09012SAndroid Build Coastguard Worker  // CustomResourceDefinition resources.
187*d5c09012SAndroid Build Coastguard Worker  // This option should be set for clusters with Kubernetes apiserver versions
188*d5c09012SAndroid Build Coastguard Worker  // <1.16.
189*d5c09012SAndroid Build Coastguard Worker  bool v1beta1_crd = 2 [(google.api.field_behavior) = OPTIONAL];
190*d5c09012SAndroid Build Coastguard Worker
191*d5c09012SAndroid Build Coastguard Worker  // Optional. Major version of the Kubernetes cluster. This is only used to
192*d5c09012SAndroid Build Coastguard Worker  // determine which version to use for the CustomResourceDefinition resources,
193*d5c09012SAndroid Build Coastguard Worker  // `apiextensions/v1beta1` or`apiextensions/v1`.
194*d5c09012SAndroid Build Coastguard Worker  string k8s_version = 3 [(google.api.field_behavior) = OPTIONAL];
195*d5c09012SAndroid Build Coastguard Worker}
196*d5c09012SAndroid Build Coastguard Worker
197*d5c09012SAndroid Build Coastguard Worker// ResourceManifest represents a single Kubernetes resource to be applied to
198*d5c09012SAndroid Build Coastguard Worker// the cluster.
199*d5c09012SAndroid Build Coastguard Workermessage ResourceManifest {
200*d5c09012SAndroid Build Coastguard Worker  // YAML manifest of the resource.
201*d5c09012SAndroid Build Coastguard Worker  string manifest = 1;
202*d5c09012SAndroid Build Coastguard Worker
203*d5c09012SAndroid Build Coastguard Worker  // Whether the resource provided in the manifest is `cluster_scoped`.
204*d5c09012SAndroid Build Coastguard Worker  // If unset, the manifest is assumed to be namespace scoped.
205*d5c09012SAndroid Build Coastguard Worker  //
206*d5c09012SAndroid Build Coastguard Worker  // This field is used for REST mapping when applying the resource in a
207*d5c09012SAndroid Build Coastguard Worker  // cluster.
208*d5c09012SAndroid Build Coastguard Worker  bool cluster_scoped = 2;
209*d5c09012SAndroid Build Coastguard Worker}
210*d5c09012SAndroid Build Coastguard Worker
211*d5c09012SAndroid Build Coastguard Worker// GkeCluster contains information specific to GKE clusters.
212*d5c09012SAndroid Build Coastguard Workermessage GkeCluster {
213*d5c09012SAndroid Build Coastguard Worker  // Immutable. Self-link of the Google Cloud resource for the GKE cluster. For
214*d5c09012SAndroid Build Coastguard Worker  // example:
215*d5c09012SAndroid Build Coastguard Worker  //
216*d5c09012SAndroid Build Coastguard Worker  // //container.googleapis.com/projects/my-project/locations/us-west1-a/clusters/my-cluster
217*d5c09012SAndroid Build Coastguard Worker  //
218*d5c09012SAndroid Build Coastguard Worker  // Zonal clusters are also supported.
219*d5c09012SAndroid Build Coastguard Worker  string resource_link = 1 [(google.api.field_behavior) = IMMUTABLE];
220*d5c09012SAndroid Build Coastguard Worker
221*d5c09012SAndroid Build Coastguard Worker  // Output only. If cluster_missing is set then it denotes that the GKE cluster
222*d5c09012SAndroid Build Coastguard Worker  // no longer exists in the GKE Control Plane.
223*d5c09012SAndroid Build Coastguard Worker  bool cluster_missing = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
224*d5c09012SAndroid Build Coastguard Worker}
225*d5c09012SAndroid Build Coastguard Worker
226*d5c09012SAndroid Build Coastguard Worker// KubernetesMetadata provides informational metadata for Memberships
227*d5c09012SAndroid Build Coastguard Worker// representing Kubernetes clusters.
228*d5c09012SAndroid Build Coastguard Workermessage KubernetesMetadata {
229*d5c09012SAndroid Build Coastguard Worker  // Output only. Kubernetes API server version string as reported by
230*d5c09012SAndroid Build Coastguard Worker  // `/version`.
231*d5c09012SAndroid Build Coastguard Worker  string kubernetes_api_server_version = 1
232*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
233*d5c09012SAndroid Build Coastguard Worker
234*d5c09012SAndroid Build Coastguard Worker  // Output only. Node providerID as reported by the first node in the list of
235*d5c09012SAndroid Build Coastguard Worker  // nodes on the Kubernetes endpoint. On Kubernetes platforms that support
236*d5c09012SAndroid Build Coastguard Worker  // zero-node clusters (like GKE-on-GCP), the node_count will be zero and the
237*d5c09012SAndroid Build Coastguard Worker  // node_provider_id will be empty.
238*d5c09012SAndroid Build Coastguard Worker  string node_provider_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
239*d5c09012SAndroid Build Coastguard Worker
240*d5c09012SAndroid Build Coastguard Worker  // Output only. Node count as reported by Kubernetes nodes resources.
241*d5c09012SAndroid Build Coastguard Worker  int32 node_count = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
242*d5c09012SAndroid Build Coastguard Worker
243*d5c09012SAndroid Build Coastguard Worker  // Output only. vCPU count as reported by Kubernetes nodes resources.
244*d5c09012SAndroid Build Coastguard Worker  int32 vcpu_count = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
245*d5c09012SAndroid Build Coastguard Worker
246*d5c09012SAndroid Build Coastguard Worker  // Output only. The total memory capacity as reported by the sum of all
247*d5c09012SAndroid Build Coastguard Worker  // Kubernetes nodes resources, defined in MB.
248*d5c09012SAndroid Build Coastguard Worker  int32 memory_mb = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
249*d5c09012SAndroid Build Coastguard Worker
250*d5c09012SAndroid Build Coastguard Worker  // Output only. The time at which these details were last updated. This
251*d5c09012SAndroid Build Coastguard Worker  // update_time is different from the Membership-level update_time since
252*d5c09012SAndroid Build Coastguard Worker  // EndpointDetails are updated internally for API consumers.
253*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp update_time = 100
254*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
255*d5c09012SAndroid Build Coastguard Worker}
256*d5c09012SAndroid Build Coastguard Worker
257*d5c09012SAndroid Build Coastguard Worker// This field informs Fleet-based applications/services/UIs with the necessary
258*d5c09012SAndroid Build Coastguard Worker// information for where each underlying Cluster reports its metrics.
259*d5c09012SAndroid Build Coastguard Workermessage MonitoringConfig {
260*d5c09012SAndroid Build Coastguard Worker  // Immutable. Project used to report Metrics
261*d5c09012SAndroid Build Coastguard Worker  string project_id = 1 [(google.api.field_behavior) = IMMUTABLE];
262*d5c09012SAndroid Build Coastguard Worker
263*d5c09012SAndroid Build Coastguard Worker  // Immutable. Location used to report Metrics
264*d5c09012SAndroid Build Coastguard Worker  string location = 2 [(google.api.field_behavior) = IMMUTABLE];
265*d5c09012SAndroid Build Coastguard Worker
266*d5c09012SAndroid Build Coastguard Worker  // Immutable. Cluster name used to report metrics.
267*d5c09012SAndroid Build Coastguard Worker  // For Anthos on VMWare/Baremetal, it would be in format
268*d5c09012SAndroid Build Coastguard Worker  // `memberClusters/cluster_name`; And for Anthos on MultiCloud, it would be in
269*d5c09012SAndroid Build Coastguard Worker  // format
270*d5c09012SAndroid Build Coastguard Worker  // `{azureClusters, awsClusters}/cluster_name`.
271*d5c09012SAndroid Build Coastguard Worker  string cluster = 3 [(google.api.field_behavior) = IMMUTABLE];
272*d5c09012SAndroid Build Coastguard Worker
273*d5c09012SAndroid Build Coastguard Worker  // Kubernetes system metrics, if available, are written to this prefix.
274*d5c09012SAndroid Build Coastguard Worker  // This defaults to kubernetes.io for GKE, and kubernetes.io/anthos for Anthos
275*d5c09012SAndroid Build Coastguard Worker  // eventually. Noted: Anthos MultiCloud will have kubernetes.io prefix today
276*d5c09012SAndroid Build Coastguard Worker  // but will migration to be under kubernetes.io/anthos
277*d5c09012SAndroid Build Coastguard Worker  string kubernetes_metrics_prefix = 4;
278*d5c09012SAndroid Build Coastguard Worker
279*d5c09012SAndroid Build Coastguard Worker  // Immutable. Cluster hash, this is a unique string generated by google code,
280*d5c09012SAndroid Build Coastguard Worker  // which does not contain any PII, which we can use to reference the cluster.
281*d5c09012SAndroid Build Coastguard Worker  // This is expected to be created by the monitoring stack and persisted into
282*d5c09012SAndroid Build Coastguard Worker  // the Cluster object as well as to GKE-Hub.
283*d5c09012SAndroid Build Coastguard Worker  string cluster_hash = 5 [(google.api.field_behavior) = IMMUTABLE];
284*d5c09012SAndroid Build Coastguard Worker}
285*d5c09012SAndroid Build Coastguard Worker
286*d5c09012SAndroid Build Coastguard Worker// MembershipState describes the state of a Membership resource.
287*d5c09012SAndroid Build Coastguard Workermessage MembershipState {
288*d5c09012SAndroid Build Coastguard Worker  // Code describes the state of a Membership resource.
289*d5c09012SAndroid Build Coastguard Worker  enum Code {
290*d5c09012SAndroid Build Coastguard Worker    // The code is not set.
291*d5c09012SAndroid Build Coastguard Worker    CODE_UNSPECIFIED = 0;
292*d5c09012SAndroid Build Coastguard Worker
293*d5c09012SAndroid Build Coastguard Worker    // The cluster is being registered.
294*d5c09012SAndroid Build Coastguard Worker    CREATING = 1;
295*d5c09012SAndroid Build Coastguard Worker
296*d5c09012SAndroid Build Coastguard Worker    // The cluster is registered.
297*d5c09012SAndroid Build Coastguard Worker    READY = 2;
298*d5c09012SAndroid Build Coastguard Worker
299*d5c09012SAndroid Build Coastguard Worker    // The cluster is being unregistered.
300*d5c09012SAndroid Build Coastguard Worker    DELETING = 3;
301*d5c09012SAndroid Build Coastguard Worker
302*d5c09012SAndroid Build Coastguard Worker    // The Membership is being updated.
303*d5c09012SAndroid Build Coastguard Worker    UPDATING = 4;
304*d5c09012SAndroid Build Coastguard Worker
305*d5c09012SAndroid Build Coastguard Worker    // The Membership is being updated by the Hub Service.
306*d5c09012SAndroid Build Coastguard Worker    SERVICE_UPDATING = 5;
307*d5c09012SAndroid Build Coastguard Worker  }
308*d5c09012SAndroid Build Coastguard Worker
309*d5c09012SAndroid Build Coastguard Worker  // Output only. The current state of the Membership resource.
310*d5c09012SAndroid Build Coastguard Worker  Code code = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
311*d5c09012SAndroid Build Coastguard Worker}
312*d5c09012SAndroid Build Coastguard Worker
313*d5c09012SAndroid Build Coastguard Worker// Authority encodes how Google will recognize identities from this Membership.
314*d5c09012SAndroid Build Coastguard Worker// See the workload identity documentation for more details:
315*d5c09012SAndroid Build Coastguard Worker// https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity
316*d5c09012SAndroid Build Coastguard Workermessage Authority {
317*d5c09012SAndroid Build Coastguard Worker  // Optional. A JSON Web Token (JWT) issuer URI. `issuer` must start with
318*d5c09012SAndroid Build Coastguard Worker  // `https://` and be a valid URL with length <2000 characters.
319*d5c09012SAndroid Build Coastguard Worker  //
320*d5c09012SAndroid Build Coastguard Worker  // If set, then Google will allow valid OIDC tokens from this issuer to
321*d5c09012SAndroid Build Coastguard Worker  // authenticate within the workload_identity_pool. OIDC discovery will be
322*d5c09012SAndroid Build Coastguard Worker  // performed on this URI to validate tokens from the issuer.
323*d5c09012SAndroid Build Coastguard Worker  //
324*d5c09012SAndroid Build Coastguard Worker  // Clearing `issuer` disables Workload Identity. `issuer` cannot be directly
325*d5c09012SAndroid Build Coastguard Worker  // modified; it must be cleared (and Workload Identity disabled) before using
326*d5c09012SAndroid Build Coastguard Worker  // a new issuer (and re-enabling Workload Identity).
327*d5c09012SAndroid Build Coastguard Worker  string issuer = 1 [(google.api.field_behavior) = OPTIONAL];
328*d5c09012SAndroid Build Coastguard Worker
329*d5c09012SAndroid Build Coastguard Worker  // Output only. The name of the workload identity pool in which `issuer` will
330*d5c09012SAndroid Build Coastguard Worker  // be recognized.
331*d5c09012SAndroid Build Coastguard Worker  //
332*d5c09012SAndroid Build Coastguard Worker  // There is a single Workload Identity Pool per Hub that is shared
333*d5c09012SAndroid Build Coastguard Worker  // between all Memberships that belong to that Hub. For a Hub hosted in
334*d5c09012SAndroid Build Coastguard Worker  // {PROJECT_ID}, the workload pool format is `{PROJECT_ID}.hub.id.goog`,
335*d5c09012SAndroid Build Coastguard Worker  // although this is subject to change in newer versions of this API.
336*d5c09012SAndroid Build Coastguard Worker  string workload_identity_pool = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
337*d5c09012SAndroid Build Coastguard Worker
338*d5c09012SAndroid Build Coastguard Worker  // Output only. An identity provider that reflects the `issuer` in the
339*d5c09012SAndroid Build Coastguard Worker  // workload identity pool.
340*d5c09012SAndroid Build Coastguard Worker  string identity_provider = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
341*d5c09012SAndroid Build Coastguard Worker
342*d5c09012SAndroid Build Coastguard Worker  // Optional. OIDC verification keys for this Membership in JWKS format (RFC
343*d5c09012SAndroid Build Coastguard Worker  // 7517).
344*d5c09012SAndroid Build Coastguard Worker  //
345*d5c09012SAndroid Build Coastguard Worker  // When this field is set, OIDC discovery will NOT be performed on `issuer`,
346*d5c09012SAndroid Build Coastguard Worker  // and instead OIDC tokens will be validated using this field.
347*d5c09012SAndroid Build Coastguard Worker  bytes oidc_jwks = 4 [(google.api.field_behavior) = OPTIONAL];
348*d5c09012SAndroid Build Coastguard Worker}
349