diff --git a/pkg/parser/utilities.go b/pkg/parser/utilities.go index 44f2e5347b2..ef3ac95c65d 100644 --- a/pkg/parser/utilities.go +++ b/pkg/parser/utilities.go @@ -16,7 +16,7 @@ func getBaseTemplate() *nbcontractv1.Configuration { CustomKubeBinaryUrl: "https://acs-mirror.azureedge.net/kubernetes/v1.26.0/binaries/kubernetes-node-linux-amd64.tar.gz", PrivateKubeBinaryUrl: "", }, - KubeproxyUrl: "", + KubeProxyUrl: "", EnableSsh: true, } } diff --git a/pkg/proto/nbcontract/v1/apiserverconfig.pb.go b/pkg/proto/nbcontract/v1/apiserverconfig.pb.go index c6c6f5f016d..4a6f8e45c83 100644 --- a/pkg/proto/nbcontract/v1/apiserverconfig.pb.go +++ b/pkg/proto/nbcontract/v1/apiserverconfig.pb.go @@ -25,8 +25,10 @@ type ApiServerConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // The certificate public key of the API server. ApiServerPublicKey string `protobuf:"bytes,1,opt,name=api_server_public_key,json=apiServerPublicKey,proto3" json:"api_server_public_key,omitempty"` - ApiServerName string `protobuf:"bytes,2,opt,name=api_server_name,json=apiServerName,proto3" json:"api_server_name,omitempty"` + // The name or endpoint URI of the API server. + ApiServerName string `protobuf:"bytes,2,opt,name=api_server_name,json=apiServerName,proto3" json:"api_server_name,omitempty"` } func (x *ApiServerConfig) Reset() { diff --git a/pkg/proto/nbcontract/v1/apiserverconfig.proto b/pkg/proto/nbcontract/v1/apiserverconfig.proto index 32400c776c0..f2fccb151db 100644 --- a/pkg/proto/nbcontract/v1/apiserverconfig.proto +++ b/pkg/proto/nbcontract/v1/apiserverconfig.proto @@ -2,6 +2,9 @@ syntax = "proto3"; package nbcontract.v1; message ApiServerConfig { - string api_server_public_key = 1; - string api_server_name = 2; - } \ No newline at end of file + // The certificate public key of the API server. + string api_server_public_key = 1; + + // The name or endpoint URI of the API server. + string api_server_name = 2; +} \ No newline at end of file diff --git a/pkg/proto/nbcontract/v1/authconfig.pb.go b/pkg/proto/nbcontract/v1/authconfig.pb.go index c0ee011a18f..e0d39cfe823 100644 --- a/pkg/proto/nbcontract/v1/authconfig.pb.go +++ b/pkg/proto/nbcontract/v1/authconfig.pb.go @@ -26,13 +26,20 @@ type AuthConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - TargetCloud string `protobuf:"bytes,1,opt,name=target_cloud,json=targetCloud,proto3" json:"target_cloud,omitempty"` // set to cloud, default to AzurePublicCloud - TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` - SubscriptionId string `protobuf:"bytes,3,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` - ServicePrincipalId string `protobuf:"bytes,4,opt,name=service_principal_id,json=servicePrincipalId,proto3" json:"service_principal_id,omitempty"` // set to aadClientId - ServicePrincipalSecret string `protobuf:"bytes,5,opt,name=service_principal_secret,json=servicePrincipalSecret,proto3" json:"service_principal_secret,omitempty"` // set to aadClientSecret - AssignedIdentityId string `protobuf:"bytes,6,opt,name=assigned_identity_id,json=assignedIdentityId,proto3" json:"assigned_identity_id,omitempty"` //could be user or system assigned, depending on the type - UseManagedIdentityExtension bool `protobuf:"varint,7,opt,name=use_managed_identity_extension,json=useManagedIdentityExtension,proto3" json:"use_managed_identity_extension,omitempty"` // default to false + // Target cloud. Set to cloud. Default to AzurePublicCloud + TargetCloud string `protobuf:"bytes,1,opt,name=target_cloud,json=targetCloud,proto3" json:"target_cloud,omitempty"` + // Tenant ID + TenantId string `protobuf:"bytes,2,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + // Subscription ID + SubscriptionId string `protobuf:"bytes,3,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` + // Service Principal ID. set to aadClientId + ServicePrincipalId string `protobuf:"bytes,4,opt,name=service_principal_id,json=servicePrincipalId,proto3" json:"service_principal_id,omitempty"` + // Service Principal Secret. set to aadClientSecret + ServicePrincipalSecret string `protobuf:"bytes,5,opt,name=service_principal_secret,json=servicePrincipalSecret,proto3" json:"service_principal_secret,omitempty"` + // Assigned identity id, could be user or system assigned, depending on the type. + AssignedIdentityId string `protobuf:"bytes,6,opt,name=assigned_identity_id,json=assignedIdentityId,proto3" json:"assigned_identity_id,omitempty"` + // Specify if use managed identity extension, default to false + UseManagedIdentityExtension bool `protobuf:"varint,7,opt,name=use_managed_identity_extension,json=useManagedIdentityExtension,proto3" json:"use_managed_identity_extension,omitempty"` } func (x *AuthConfig) Reset() { diff --git a/pkg/proto/nbcontract/v1/authconfig.proto b/pkg/proto/nbcontract/v1/authconfig.proto index 82310d5e831..059abc3b16d 100644 --- a/pkg/proto/nbcontract/v1/authconfig.proto +++ b/pkg/proto/nbcontract/v1/authconfig.proto @@ -3,11 +3,24 @@ package nbcontract.v1; // Auth Config fields stored in azure.json used by cloud-provider-azure message AuthConfig { - string target_cloud = 1; // set to cloud, default to AzurePublicCloud + // Target cloud. Set to cloud. Default to AzurePublicCloud + string target_cloud = 1; + + // Tenant ID string tenant_id = 2; + + // Subscription ID string subscription_id = 3; - string service_principal_id = 4; // set to aadClientId - string service_principal_secret = 5; // set to aadClientSecret - string assigned_identity_id = 6; //could be user or system assigned, depending on the type - bool use_managed_identity_extension = 7; // default to false + + // Service Principal ID. set to aadClientId + string service_principal_id = 4; + + // Service Principal Secret. set to aadClientSecret + string service_principal_secret = 5; + + // Assigned identity id, could be user or system assigned, depending on the type. + string assigned_identity_id = 6; + + // Specify if use managed identity extension, default to false + bool use_managed_identity_extension = 7; } \ No newline at end of file diff --git a/pkg/proto/nbcontract/v1/clusterconfig.pb.go b/pkg/proto/nbcontract/v1/clusterconfig.pb.go index 224b83d4759..1a95237d7b8 100644 --- a/pkg/proto/nbcontract/v1/clusterconfig.pb.go +++ b/pkg/proto/nbcontract/v1/clusterconfig.pb.go @@ -124,14 +124,22 @@ type ClusterConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ResourceGroup string `protobuf:"bytes,1,opt,name=resource_group,json=resourceGroup,proto3" json:"resource_group,omitempty"` - Location string `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty"` - VmType ClusterConfig_VM `protobuf:"varint,3,opt,name=vm_type,json=vmType,proto3,enum=nbcontract.v1.ClusterConfig_VM" json:"vm_type,omitempty"` // default to standard for v1.27 and below versions and vmss for v1.28+ versions - PrimaryAvailabilitySet string `protobuf:"bytes,4,opt,name=primary_availability_set,json=primaryAvailabilitySet,proto3" json:"primary_availability_set,omitempty"` - PrimaryScaleSet string `protobuf:"bytes,5,opt,name=primary_scale_set,json=primaryScaleSet,proto3" json:"primary_scale_set,omitempty"` - VirtualNetworkConfig *ClusterNetworkConfig `protobuf:"bytes,6,opt,name=virtual_network_config,json=virtualNetworkConfig,proto3" json:"virtual_network_config,omitempty"` - UseInstanceMetadata bool `protobuf:"varint,7,opt,name=use_instance_metadata,json=useInstanceMetadata,proto3" json:"use_instance_metadata,omitempty"` // default to false - LoadBalancerConfig *LoadBalancerConfig `protobuf:"bytes,8,opt,name=load_balancer_config,json=loadBalancerConfig,proto3" json:"load_balancer_config,omitempty"` + // Rescource group name + ResourceGroup string `protobuf:"bytes,1,opt,name=resource_group,json=resourceGroup,proto3" json:"resource_group,omitempty"` + // Location + Location string `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty"` + // VM type + VmType ClusterConfig_VM `protobuf:"varint,3,opt,name=vm_type,json=vmType,proto3,enum=nbcontract.v1.ClusterConfig_VM" json:"vm_type,omitempty"` // default to standard for v1.27 and below versions and vmss for v1.28+ versions + // Primary availability set name + PrimaryAvailabilitySet string `protobuf:"bytes,4,opt,name=primary_availability_set,json=primaryAvailabilitySet,proto3" json:"primary_availability_set,omitempty"` + // Primary scale set name + PrimaryScaleSet string `protobuf:"bytes,5,opt,name=primary_scale_set,json=primaryScaleSet,proto3" json:"primary_scale_set,omitempty"` + // Cluster network config + VirtualNetworkConfig *ClusterNetworkConfig `protobuf:"bytes,6,opt,name=virtual_network_config,json=virtualNetworkConfig,proto3" json:"virtual_network_config,omitempty"` + // Specifiy if it uses instance metadata + UseInstanceMetadata bool `protobuf:"varint,7,opt,name=use_instance_metadata,json=useInstanceMetadata,proto3" json:"use_instance_metadata,omitempty"` // default to false + // Load balancer config + LoadBalancerConfig *LoadBalancerConfig `protobuf:"bytes,8,opt,name=load_balancer_config,json=loadBalancerConfig,proto3" json:"load_balancer_config,omitempty"` } func (x *ClusterConfig) Reset() { @@ -227,11 +235,16 @@ type ClusterNetworkConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - VnetName string `protobuf:"bytes,1,opt,name=vnet_name,json=vnetName,proto3" json:"vnet_name,omitempty"` + // Virtual network name + VnetName string `protobuf:"bytes,1,opt,name=vnet_name,json=vnetName,proto3" json:"vnet_name,omitempty"` + // Virtual network resource group VnetResourceGroup string `protobuf:"bytes,2,opt,name=vnet_resource_group,json=vnetResourceGroup,proto3" json:"vnet_resource_group,omitempty"` - Subnet string `protobuf:"bytes,3,opt,name=subnet,proto3" json:"subnet,omitempty"` + // Subnet name + Subnet string `protobuf:"bytes,3,opt,name=subnet,proto3" json:"subnet,omitempty"` + // Network security group name SecurityGroupName string `protobuf:"bytes,4,opt,name=security_group_name,json=securityGroupName,proto3" json:"security_group_name,omitempty"` - RouteTable string `protobuf:"bytes,5,opt,name=route_table,json=routeTable,proto3" json:"route_table,omitempty"` + // Route table name + RouteTable string `protobuf:"bytes,5,opt,name=route_table,json=routeTable,proto3" json:"route_table,omitempty"` } func (x *ClusterNetworkConfig) Reset() { @@ -306,10 +319,14 @@ type LoadBalancerConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - LoadBalancerSku LoadBalancerConfig_LoadBalancerSku `protobuf:"varint,1,opt,name=load_balancer_sku,json=loadBalancerSku,proto3,enum=nbcontract.v1.LoadBalancerConfig_LoadBalancerSku" json:"load_balancer_sku,omitempty"` // default to basic - ExcludeMasterFromStandardLoadBalancer *bool `protobuf:"varint,2,opt,name=exclude_master_from_standard_load_balancer,json=excludeMasterFromStandardLoadBalancer,proto3,oneof" json:"exclude_master_from_standard_load_balancer,omitempty"` // default to true - MaxLoadBalancerRuleCount *int32 `protobuf:"varint,3,opt,name=max_load_balancer_rule_count,json=maxLoadBalancerRuleCount,proto3,oneof" json:"max_load_balancer_rule_count,omitempty"` // default to 148 - DisableOutboundSnat *bool `protobuf:"varint,4,opt,name=disable_outbound_snat,json=disableOutboundSnat,proto3,oneof" json:"disable_outbound_snat,omitempty"` // default to false + // Load balancer sku, default to basic + LoadBalancerSku LoadBalancerConfig_LoadBalancerSku `protobuf:"varint,1,opt,name=load_balancer_sku,json=loadBalancerSku,proto3,enum=nbcontract.v1.LoadBalancerConfig_LoadBalancerSku" json:"load_balancer_sku,omitempty"` + // Specify if master node should be excluded from standard load balancer, default to true + ExcludeMasterFromStandardLoadBalancer *bool `protobuf:"varint,2,opt,name=exclude_master_from_standard_load_balancer,json=excludeMasterFromStandardLoadBalancer,proto3,oneof" json:"exclude_master_from_standard_load_balancer,omitempty"` + // Maximum number of load balancer rules, default to 148 + MaxLoadBalancerRuleCount *int32 `protobuf:"varint,3,opt,name=max_load_balancer_rule_count,json=maxLoadBalancerRuleCount,proto3,oneof" json:"max_load_balancer_rule_count,omitempty"` + // Disable outbound SNAT (Source Network Address Translation) for load balancer, default to false + DisableOutboundSnat bool `protobuf:"varint,4,opt,name=disable_outbound_snat,json=disableOutboundSnat,proto3" json:"disable_outbound_snat,omitempty"` } func (x *LoadBalancerConfig) Reset() { @@ -366,8 +383,8 @@ func (x *LoadBalancerConfig) GetMaxLoadBalancerRuleCount() int32 { } func (x *LoadBalancerConfig) GetDisableOutboundSnat() bool { - if x != nil && x.DisableOutboundSnat != nil { - return *x.DisableOutboundSnat + if x != nil { + return x.DisableOutboundSnat } return false } @@ -424,7 +441,7 @@ var file_pkg_proto_nbcontract_v1_clusterconfig_proto_rawDesc = []byte{ 0x11, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x22, 0xf8, 0x03, 0x0a, 0x12, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x22, 0xd9, 0x03, 0x0a, 0x12, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5d, 0x0a, 0x11, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x73, 0x6b, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, @@ -441,34 +458,32 @@ var file_pkg_proto_nbcontract_v1_clusterconfig_proto_rawDesc = []byte{ 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x72, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, + 0x65, 0x72, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x5f, 0x73, 0x6e, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, - 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x53, 0x6e, 0x61, 0x74, 0x88, 0x01, 0x01, 0x22, 0x3b, 0x0a, 0x0f, 0x4c, 0x6f, 0x61, 0x64, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x53, 0x6b, 0x75, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, - 0x41, 0x53, 0x49, 0x43, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, - 0x52, 0x44, 0x10, 0x02, 0x42, 0x2d, 0x0a, 0x2b, 0x5f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x61, - 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x72, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x73, 0x6e, 0x61, 0x74, 0x42, 0xbe, - 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x2e, 0x76, 0x31, 0x42, 0x12, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x2f, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x42, 0x61, 0x6b, 0x65, 0x72, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2f, 0x76, 0x31, 0x3b, - 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4e, - 0x58, 0x58, 0xaa, 0x02, 0x0d, 0x4e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, - 0x56, 0x31, 0xca, 0x02, 0x0d, 0x4e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5c, - 0x56, 0x31, 0xe2, 0x02, 0x19, 0x4e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5c, - 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, - 0x0e, 0x4e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x64, 0x5f, 0x73, 0x6e, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x6e, + 0x61, 0x74, 0x22, 0x3b, 0x0a, 0x0f, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x72, 0x53, 0x6b, 0x75, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, + 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x02, 0x42, + 0x2d, 0x0a, 0x2b, 0x5f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x74, + 0x65, 0x72, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, + 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x42, 0x1f, + 0x0a, 0x1d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, + 0xbe, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x12, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x2f, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x42, 0x61, 0x6b, 0x65, 0x72, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2f, 0x76, 0x31, + 0x3b, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x4e, 0x58, 0x58, 0xaa, 0x02, 0x0d, 0x4e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x4e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x4e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, + 0x02, 0x0e, 0x4e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x3a, 0x3a, 0x56, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pkg/proto/nbcontract/v1/clusterconfig.proto b/pkg/proto/nbcontract/v1/clusterconfig.proto index 4c24478ba4d..a18a0bfc2f8 100644 --- a/pkg/proto/nbcontract/v1/clusterconfig.proto +++ b/pkg/proto/nbcontract/v1/clusterconfig.proto @@ -3,13 +3,28 @@ package nbcontract.v1; // Cluster Config fields stored in azure.json used by cloud-provider-azure message ClusterConfig { + // Rescource group name string resource_group = 1; + + // Location string location = 2; + + // VM type VM vm_type = 3; // default to standard for v1.27 and below versions and vmss for v1.28+ versions + + // Primary availability set name string primary_availability_set = 4; + + // Primary scale set name string primary_scale_set = 5; + + // Cluster network config ClusterNetworkConfig virtual_network_config = 6; + + // Specifiy if it uses instance metadata bool use_instance_metadata = 7; // default to false + + // Load balancer config LoadBalancerConfig load_balancer_config = 8; enum VM { @@ -20,18 +35,34 @@ message ClusterConfig { } message ClusterNetworkConfig { + // Virtual network name string vnet_name = 1; + + // Virtual network resource group string vnet_resource_group = 2; + + // Subnet name string subnet = 3; + + // Network security group name string security_group_name = 4; + + // Route table name string route_table = 5; } message LoadBalancerConfig { - LoadBalancerSku load_balancer_sku = 1; // default to basic - optional bool exclude_master_from_standard_load_balancer = 2; // default to true - optional int32 max_load_balancer_rule_count = 3; // default to 148 - optional bool disable_outbound_snat = 4; // default to false + // Load balancer sku, default to basic + LoadBalancerSku load_balancer_sku = 1; + + // Specify if master node should be excluded from standard load balancer, default to true + optional bool exclude_master_from_standard_load_balancer = 2; + + // Maximum number of load balancer rules, default to 148 + optional int32 max_load_balancer_rule_count = 3; + + // Disable outbound SNAT (Source Network Address Translation) for load balancer, default to false + bool disable_outbound_snat = 4; enum LoadBalancerSku { UNSPECIFIED = 0; diff --git a/pkg/proto/nbcontract/v1/config.pb.go b/pkg/proto/nbcontract/v1/config.pb.go index 6ecf87545d6..701437ec2b4 100644 --- a/pkg/proto/nbcontract/v1/config.pb.go +++ b/pkg/proto/nbcontract/v1/config.pb.go @@ -69,71 +69,86 @@ func (WorkloadRuntime) EnumDescriptor() ([]byte, []int) { return file_pkg_proto_nbcontract_v1_config_proto_rawDescGZIP(), []int{0} } -// illustrative division only type Configuration struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // System Configuration - ClusterCertificateAuthority string `protobuf:"bytes,1,opt,name=cluster_certificate_authority,json=clusterCertificateAuthority,proto3" json:"cluster_certificate_authority,omitempty"` - TlsBootstrappingConfig *TLSBootstrappingConfig `protobuf:"bytes,2,opt,name=tls_bootstrapping_config,json=tlsBootstrappingConfig,proto3" json:"tls_bootstrapping_config,omitempty"` - // cluster/user config - KubernetesVersion string `protobuf:"bytes,3,opt,name=kubernetes_version,json=kubernetesVersion,proto3" json:"kubernetes_version,omitempty"` // Q: can this be auto-detected? Or is this part of specifying the desired node version? - KubeBinaryConfig *KubeBinaryConfig `protobuf:"bytes,4,opt,name=kube_binary_config,json=kubeBinaryConfig,proto3" json:"kube_binary_config,omitempty"` - CustomCloudConfig *CustomCloudConfig `protobuf:"bytes,5,opt,name=custom_cloud_config,json=customCloudConfig,proto3,oneof" json:"custom_cloud_config,omitempty"` - KubeproxyUrl string `protobuf:"bytes,6,opt,name=kubeproxy_url,json=kubeproxyUrl,proto3" json:"kubeproxy_url,omitempty"` - ApiserverConfig *ApiServerConfig `protobuf:"bytes,7,opt,name=apiserver_config,json=apiserverConfig,proto3" json:"apiserver_config,omitempty"` - ClusterConfig *ClusterConfig `protobuf:"bytes,14,opt,name=cluster_config,json=clusterConfig,proto3" json:"cluster_config,omitempty"` - AuthConfig *AuthConfig `protobuf:"bytes,15,opt,name=auth_config,json=authConfig,proto3" json:"auth_config,omitempty"` - RuncConfig *RuncConfig `protobuf:"bytes,16,opt,name=runc_config,json=runcConfig,proto3" json:"runc_config,omitempty"` - VmSize string `protobuf:"bytes,17,opt,name=vm_size,json=vmSize,proto3" json:"vm_size,omitempty"` - // ... and a bunch of user-specified config - LinuxAdminUsername string `protobuf:"bytes,18,opt,name=linux_admin_username,json=linuxAdminUsername,proto3" json:"linux_admin_username,omitempty"` - ContainerdConfig *ContainerdConfig `protobuf:"bytes,22,opt,name=containerd_config,json=containerdConfig,proto3" json:"containerd_config,omitempty"` - IsVhd bool `protobuf:"varint,23,opt,name=is_vhd,json=isVhd,proto3" json:"is_vhd,omitempty"` - NetworkConfig *NetworkConfig `protobuf:"bytes,24,opt,name=network_config,json=networkConfig,proto3" json:"network_config,omitempty"` - TeleportConfig *TeleportConfig `protobuf:"bytes,26,opt,name=teleport_config,json=teleportConfig,proto3" json:"teleport_config,omitempty"` - // enable_ssh specifies whether SSH is enabled or disabled on the VM node - EnableSsh bool `protobuf:"varint,27,opt,name=enable_ssh,json=enableSsh,proto3" json:"enable_ssh,omitempty"` - // enable_unattended_upgrade specifies whether unattended upgrade is enabled or disabled on the VM node - EnableUnattendedUpgrade bool `protobuf:"varint,28,opt,name=enable_unattended_upgrade,json=enableUnattendedUpgrade,proto3" json:"enable_unattended_upgrade,omitempty"` - // message_of_the_day specifies the message of the day that is displayed on the VM node when a user logs in - MessageOfTheDay string `protobuf:"bytes,29,opt,name=message_of_the_day,json=messageOfTheDay,proto3" json:"message_of_the_day,omitempty"` - // kubelet_config specifies the kubelet configuration - KubeletConfig *KubeletConfig `protobuf:"bytes,31,opt,name=kubelet_config,json=kubeletConfig,proto3" json:"kubelet_config,omitempty"` - // enable_hosts_config_agent specifies whether the hosts config agent is enabled or disabled on the VM node - EnableHostsConfigAgent bool `protobuf:"varint,32,opt,name=enable_hosts_config_agent,json=enableHostsConfigAgent,proto3" json:"enable_hosts_config_agent,omitempty"` - // custom_ca_certs specifies the custom CA certificates - CustomCaCerts []string `protobuf:"bytes,33,rep,name=custom_ca_certs,json=customCaCerts,proto3" json:"custom_ca_certs,omitempty"` - // provision_output specifies where cluster provision cse output should be stored at - ProvisionOutput string `protobuf:"bytes,34,opt,name=provision_output,json=provisionOutput,proto3" json:"provision_output,omitempty"` - // workload_runtime describes the workload runtime, e.g., either "OCIContainer" or "WasmWasi", currently. - WorkloadRuntime WorkloadRuntime `protobuf:"varint,40,opt,name=workload_runtime,json=workloadRuntime,proto3,enum=nbcontract.v1.WorkloadRuntime" json:"workload_runtime,omitempty"` - // ipv6_dual_stack_enabled specifies whether IPv6 dual stack is enabled or disabled on the VM node - Ipv6DualStackEnabled bool `protobuf:"varint,42,opt,name=ipv6_dual_stack_enabled,json=ipv6DualStackEnabled,proto3" json:"ipv6_dual_stack_enabled,omitempty"` - // outbound_command specifies the command to use for outbound traffic - OutboundCommand string `protobuf:"bytes,43,opt,name=outbound_command,json=outboundCommand,proto3" json:"outbound_command,omitempty"` - // ensure_no_dupe_promiscuous_bridge specifies whether to ensure no duplicate promiscuous bridge - EnsureNoDupePromiscuousBridge bool `protobuf:"varint,45,opt,name=ensure_no_dupe_promiscuous_bridge,json=ensureNoDupePromiscuousBridge,proto3" json:"ensure_no_dupe_promiscuous_bridge,omitempty"` - // custom_search_domain specifies the custom search domain configurations - CustomSearchDomain *CustomSearchDomain `protobuf:"bytes,46,opt,name=custom_search_domain,json=customSearchDomain,proto3" json:"custom_search_domain,omitempty"` - // custom_linux_os_config specifies the custom Linux OS configurations including SwapFile, SysCtl configs, etc. - CustomLinuxOsConfig *CustomLinuxOSConfig `protobuf:"bytes,47,opt,name=custom_linux_os_config,json=customLinuxOsConfig,proto3" json:"custom_linux_os_config,omitempty"` - // azure_private_registry_server specifies the Azure private registry server - AzurePrivateRegistryServer string `protobuf:"bytes,56,opt,name=azure_private_registry_server,json=azurePrivateRegistryServer,proto3" json:"azure_private_registry_server,omitempty"` - // private_egress_proxy_address specifies the private egress proxy address - PrivateEgressProxyAddress string `protobuf:"bytes,57,opt,name=private_egress_proxy_address,json=privateEgressProxyAddress,proto3" json:"private_egress_proxy_address,omitempty"` - // enable_artifact_streaming specifies whether artifact streaming is enabled or disabled on the VM node - EnableArtifactStreaming bool `protobuf:"varint,58,opt,name=enable_artifact_streaming,json=enableArtifactStreaming,proto3" json:"enable_artifact_streaming,omitempty"` - // is_kata specifies whether the node is a Kata node - IsKata bool `protobuf:"varint,59,opt,name=is_kata,json=isKata,proto3" json:"is_kata,omitempty"` - // needs_cgroupv2 specifies whether the node needs cgroupv2 - // when we actually work on the go binary, we should be able to query from the system. By then we can remove this. - NeedsCgroupv2 bool `protobuf:"varint,60,opt,name=needs_cgroupv2,json=needsCgroupv2,proto3" json:"needs_cgroupv2,omitempty"` - // Here begins the final contract - HttpProxyConfig *HTTPProxyConfig `protobuf:"bytes,61,opt,name=http_proxy_config,json=httpProxyConfig,proto3,oneof" json:"http_proxy_config,omitempty"` - GpuConfig *GPUConfig `protobuf:"bytes,62,opt,name=gpu_config,json=gpuConfig,proto3,oneof" json:"gpu_config,omitempty"` + // Semantic version of this node bootstrap contract + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + // Kubernetes certificate authority (CA) certificate, required by the node to establish TLS with the API server + KubernetesCaCert string `protobuf:"bytes,2,opt,name=kubernetes_ca_cert,json=kubernetesCaCert,proto3" json:"kubernetes_ca_cert,omitempty"` + // TLS bootstrap config + TlsBootstrappingConfig *TLSBootstrappingConfig `protobuf:"bytes,3,opt,name=tls_bootstrapping_config,json=tlsBootstrappingConfig,proto3" json:"tls_bootstrapping_config,omitempty"` + // Cluster/user config + KubernetesVersion string `protobuf:"bytes,4,opt,name=kubernetes_version,json=kubernetesVersion,proto3" json:"kubernetes_version,omitempty"` // Q: can this be auto-detected? Or is this part of specifying the desired node version? + // Kube binary URL config + KubeBinaryConfig *KubeBinaryConfig `protobuf:"bytes,5,opt,name=kube_binary_config,json=kubeBinaryConfig,proto3" json:"kube_binary_config,omitempty"` + // Custom cloud config + CustomCloudConfig *CustomCloudConfig `protobuf:"bytes,6,opt,name=custom_cloud_config,json=customCloudConfig,proto3" json:"custom_cloud_config,omitempty"` + // Kube proxy URL + KubeProxyUrl string `protobuf:"bytes,7,opt,name=kube_proxy_url,json=kubeProxyUrl,proto3" json:"kube_proxy_url,omitempty"` + // Kubernetes API server configuration + ApiServerConfig *ApiServerConfig `protobuf:"bytes,8,opt,name=api_server_config,json=apiServerConfig,proto3" json:"api_server_config,omitempty"` + // Various Kubernetes cluster level configuration + ClusterConfig *ClusterConfig `protobuf:"bytes,9,opt,name=cluster_config,json=clusterConfig,proto3" json:"cluster_config,omitempty"` + // Authentication configuration + AuthConfig *AuthConfig `protobuf:"bytes,10,opt,name=auth_config,json=authConfig,proto3" json:"auth_config,omitempty"` + // The CLI tool runc configuration + RuncConfig *RuncConfig `protobuf:"bytes,11,opt,name=runc_config,json=runcConfig,proto3" json:"runc_config,omitempty"` + // The VM size of the node + VmSize string `protobuf:"bytes,12,opt,name=vm_size,json=vmSize,proto3" json:"vm_size,omitempty"` + // Linux admin username. If not specified, the default value is "azureuser" + LinuxAdminUsername string `protobuf:"bytes,13,opt,name=linux_admin_username,json=linuxAdminUsername,proto3" json:"linux_admin_username,omitempty"` + // Containerd configuration + ContainerdConfig *ContainerdConfig `protobuf:"bytes,14,opt,name=containerd_config,json=containerdConfig,proto3" json:"containerd_config,omitempty"` + // Specifies whether the node is a VHD node. This is still needed for some customized scenarios. + IsVhd bool `protobuf:"varint,15,opt,name=is_vhd,json=isVhd,proto3" json:"is_vhd,omitempty"` + // Network configuration. We assumed network mode is always "transparent" now so it's removed from the contract. + NetworkConfig *NetworkConfig `protobuf:"bytes,16,opt,name=network_config,json=networkConfig,proto3" json:"network_config,omitempty"` + // Teleport configuration + TeleportConfig *TeleportConfig `protobuf:"bytes,17,opt,name=teleport_config,json=teleportConfig,proto3" json:"teleport_config,omitempty"` + // Specifies whether SSH is enabled or disabled on the VM node + EnableSsh bool `protobuf:"varint,18,opt,name=enable_ssh,json=enableSsh,proto3" json:"enable_ssh,omitempty"` + // Specifies whether unattended upgrade is enabled or disabled on the VM node + EnableUnattendedUpgrade bool `protobuf:"varint,19,opt,name=enable_unattended_upgrade,json=enableUnattendedUpgrade,proto3" json:"enable_unattended_upgrade,omitempty"` + // The message of the day that is displayed on the VM node when a user logs in + MessageOfTheDay string `protobuf:"bytes,20,opt,name=message_of_the_day,json=messageOfTheDay,proto3" json:"message_of_the_day,omitempty"` + // Kubelet configuration + KubeletConfig *KubeletConfig `protobuf:"bytes,21,opt,name=kubelet_config,json=kubeletConfig,proto3" json:"kubelet_config,omitempty"` + // Specifies whether the hosts config agent is enabled or disabled on the VM node + EnableHostsConfigAgent bool `protobuf:"varint,22,opt,name=enable_hosts_config_agent,json=enableHostsConfigAgent,proto3" json:"enable_hosts_config_agent,omitempty"` + // Custom CA certificates to be added to the system trust store + CustomCaCerts []string `protobuf:"bytes,23,rep,name=custom_ca_certs,json=customCaCerts,proto3" json:"custom_ca_certs,omitempty"` + // A local file path where cluster provision cse output should be stored + ProvisionOutput string `protobuf:"bytes,24,opt,name=provision_output,json=provisionOutput,proto3" json:"provision_output,omitempty"` + // Workload runtime, e.g., either "OCIContainer" or "WasmWasi", currently. + WorkloadRuntime WorkloadRuntime `protobuf:"varint,25,opt,name=workload_runtime,json=workloadRuntime,proto3,enum=nbcontract.v1.WorkloadRuntime" json:"workload_runtime,omitempty"` + // Specifies whether IPv6 dual stack is enabled or disabled on the VM node + Ipv6DualStackEnabled bool `protobuf:"varint,26,opt,name=ipv6_dual_stack_enabled,json=ipv6DualStackEnabled,proto3" json:"ipv6_dual_stack_enabled,omitempty"` + // Command to use for outbound traffic + OutboundCommand string `protobuf:"bytes,27,opt,name=outbound_command,json=outboundCommand,proto3" json:"outbound_command,omitempty"` + // specifies whether to ensure no duplicate promiscuous bridge + EnsureNoDupePromiscuousBridge bool `protobuf:"varint,28,opt,name=ensure_no_dupe_promiscuous_bridge,json=ensureNoDupePromiscuousBridge,proto3" json:"ensure_no_dupe_promiscuous_bridge,omitempty"` + // Custom search domain configurations + CustomSearchDomain *CustomSearchDomain `protobuf:"bytes,29,opt,name=custom_search_domain,json=customSearchDomain,proto3" json:"custom_search_domain,omitempty"` + // Custom Linux OS configurations including SwapFile, SysCtl configs, etc. + CustomLinuxOsConfig *CustomLinuxOSConfig `protobuf:"bytes,30,opt,name=custom_linux_os_config,json=customLinuxOsConfig,proto3" json:"custom_linux_os_config,omitempty"` + // Azure private registry server URI + AzurePrivateRegistryServer string `protobuf:"bytes,31,opt,name=azure_private_registry_server,json=azurePrivateRegistryServer,proto3" json:"azure_private_registry_server,omitempty"` + // Private egress proxy address + PrivateEgressProxyAddress string `protobuf:"bytes,32,opt,name=private_egress_proxy_address,json=privateEgressProxyAddress,proto3" json:"private_egress_proxy_address,omitempty"` + // Specifies whether artifact streaming is enabled or disabled on the VM node + EnableArtifactStreaming bool `protobuf:"varint,33,opt,name=enable_artifact_streaming,json=enableArtifactStreaming,proto3" json:"enable_artifact_streaming,omitempty"` + // Specifies whether the node is a Kata node + IsKata bool `protobuf:"varint,34,opt,name=is_kata,json=isKata,proto3" json:"is_kata,omitempty"` + // Specifies whether the node needs cgroupv2. + // When we actually work on the go binary, we should be able to query from the system. By then we can remove this. + NeedsCgroupv2 bool `protobuf:"varint,35,opt,name=needs_cgroupv2,json=needsCgroupv2,proto3" json:"needs_cgroupv2,omitempty"` + // HTTP/HTTPS proxy configuration for the node + HttpProxyConfig *HTTPProxyConfig `protobuf:"bytes,36,opt,name=http_proxy_config,json=httpProxyConfig,proto3" json:"http_proxy_config,omitempty"` + // GPU configuration for the node + GpuConfig *GPUConfig `protobuf:"bytes,37,opt,name=gpu_config,json=gpuConfig,proto3" json:"gpu_config,omitempty"` } func (x *Configuration) Reset() { @@ -168,9 +183,16 @@ func (*Configuration) Descriptor() ([]byte, []int) { return file_pkg_proto_nbcontract_v1_config_proto_rawDescGZIP(), []int{0} } -func (x *Configuration) GetClusterCertificateAuthority() string { +func (x *Configuration) GetVersion() string { if x != nil { - return x.ClusterCertificateAuthority + return x.Version + } + return "" +} + +func (x *Configuration) GetKubernetesCaCert() string { + if x != nil { + return x.KubernetesCaCert } return "" } @@ -203,16 +225,16 @@ func (x *Configuration) GetCustomCloudConfig() *CustomCloudConfig { return nil } -func (x *Configuration) GetKubeproxyUrl() string { +func (x *Configuration) GetKubeProxyUrl() string { if x != nil { - return x.KubeproxyUrl + return x.KubeProxyUrl } return "" } -func (x *Configuration) GetApiserverConfig() *ApiServerConfig { +func (x *Configuration) GetApiServerConfig() *ApiServerConfig { if x != nil { - return x.ApiserverConfig + return x.ApiServerConfig } return nil } @@ -470,164 +492,159 @@ var file_pkg_proto_nbcontract_v1_config_proto_rawDesc = []byte{ 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbf, 0x11, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x1d, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x1b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x5f, 0x0a, - 0x18, 0x74, 0x6c, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x70, 0x69, - 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x4c, 0x53, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x16, 0x74, 0x6c, 0x73, 0x42, 0x6f, 0x6f, 0x74, 0x73, - 0x74, 0x72, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2d, - 0x0a, 0x12, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6b, 0x75, 0x62, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, - 0x12, 0x6b, 0x75, 0x62, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x62, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, 0x62, 0x65, 0x42, 0x69, - 0x6e, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x6b, 0x75, 0x62, 0x65, - 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x55, 0x0a, 0x13, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6e, 0x62, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x11, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0d, 0x6b, 0x75, 0x62, 0x65, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6b, 0x75, 0x62, 0x65, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x49, 0x0a, 0x10, 0x61, 0x70, 0x69, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x0f, 0x61, 0x70, 0x69, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x43, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6e, 0x62, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3a, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, - 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3a, 0x0a, 0x0b, 0x72, 0x75, 0x6e, 0x63, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6e, 0x62, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x63, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x17, 0x0a, 0x07, 0x76, 0x6d, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x76, 0x6d, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x69, 0x6e, - 0x75, 0x78, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x41, 0x64, - 0x6d, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x11, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, - 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, - 0x65, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x15, 0x0a, 0x06, 0x69, 0x73, 0x5f, - 0x76, 0x68, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x56, 0x68, 0x64, - 0x12, 0x43, 0x0a, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, 0x0f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x74, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, - 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x73, 0x68, 0x18, 0x1b, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x73, 0x68, 0x12, 0x3a, 0x0a, 0x19, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x6e, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x64, 0x65, - 0x64, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x55, 0x6e, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x64, 0x65, - 0x64, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x68, 0x65, 0x5f, 0x64, 0x61, 0x79, 0x18, 0x1d, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x66, 0x54, - 0x68, 0x65, 0x44, 0x61, 0x79, 0x12, 0x43, 0x0a, 0x0e, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf9, 0x10, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, + 0x73, 0x5f, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x43, 0x61, 0x43, 0x65, 0x72, + 0x74, 0x12, 0x5f, 0x0a, 0x18, 0x74, 0x6c, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, + 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x4c, 0x53, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, + 0x70, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x16, 0x74, 0x6c, 0x73, 0x42, + 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x2d, 0x0a, 0x12, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, + 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x4d, 0x0a, 0x12, 0x6b, 0x75, 0x62, 0x65, 0x5f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x75, - 0x62, 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x6b, 0x75, 0x62, - 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x19, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x20, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, - 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x61, 0x43, 0x65, 0x72, 0x74, 0x73, 0x12, 0x29, 0x0a, - 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x49, 0x0a, 0x10, 0x77, 0x6f, 0x72, 0x6b, - 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x28, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x17, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x64, 0x75, 0x61, 0x6c, - 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x2a, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x70, 0x76, 0x36, 0x44, 0x75, 0x61, 0x6c, 0x53, 0x74, - 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x75, - 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x2b, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x21, 0x65, 0x6e, 0x73, 0x75, 0x72, 0x65, 0x5f, - 0x6e, 0x6f, 0x5f, 0x64, 0x75, 0x70, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x63, 0x75, - 0x6f, 0x75, 0x73, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x1d, 0x65, 0x6e, 0x73, 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x44, 0x75, 0x70, 0x65, 0x50, 0x72, - 0x6f, 0x6d, 0x69, 0x73, 0x63, 0x75, 0x6f, 0x75, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, - 0x53, 0x0a, 0x14, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x62, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, + 0x6b, 0x75, 0x62, 0x65, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x50, 0x0a, 0x13, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x52, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x57, 0x0a, 0x16, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, - 0x69, 0x6e, 0x75, 0x78, 0x5f, 0x6f, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x2f, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x69, 0x6e, 0x75, 0x78, - 0x4f, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x13, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x4f, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, - 0x1d, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x72, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x38, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x50, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x12, 0x3f, 0x0a, 0x1c, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x39, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x45, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x3a, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x17, 0x0a, - 0x07, 0x69, 0x73, 0x5f, 0x6b, 0x61, 0x74, 0x61, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, - 0x69, 0x73, 0x4b, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x65, 0x65, 0x64, 0x73, 0x5f, - 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x76, 0x32, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, - 0x6e, 0x65, 0x65, 0x64, 0x73, 0x43, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x76, 0x32, 0x12, 0x4f, 0x0a, - 0x11, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x50, 0x72, 0x6f, - 0x78, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x01, 0x52, 0x0f, 0x68, 0x74, 0x74, 0x70, - 0x50, 0x72, 0x6f, 0x78, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x3c, - 0x0a, 0x0a, 0x67, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x3e, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x50, 0x55, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x02, 0x52, 0x09, - 0x67, 0x70, 0x75, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, - 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x67, - 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2a, 0x47, 0x0a, 0x0f, 0x57, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x0e, - 0x57, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x43, 0x49, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, - 0x52, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x57, 0x41, 0x53, 0x4d, 0x5f, 0x57, 0x41, 0x53, 0x49, - 0x10, 0x02, 0x42, 0xb7, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x2f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x42, - 0x61, 0x6b, 0x65, 0x72, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6e, - 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x6e, 0x62, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4e, 0x58, 0x58, 0xaa, - 0x02, 0x0d, 0x4e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x56, 0x31, 0xca, - 0x02, 0x0d, 0x4e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5c, 0x56, 0x31, 0xe2, - 0x02, 0x19, 0x4e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5c, 0x56, 0x31, 0x5c, - 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x4e, 0x62, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x11, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x6b, 0x75, 0x62, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6b, 0x75, 0x62, 0x65, + 0x50, 0x72, 0x6f, 0x78, 0x79, 0x55, 0x72, 0x6c, 0x12, 0x4a, 0x0a, 0x11, 0x61, 0x70, 0x69, 0x5f, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x0f, 0x61, 0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x43, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6e, + 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3a, 0x0a, 0x0b, 0x61, 0x75, 0x74, + 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x75, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3a, 0x0a, 0x0b, 0x72, 0x75, 0x6e, 0x63, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6e, 0x62, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x63, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x72, 0x75, 0x6e, 0x63, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x17, 0x0a, 0x07, 0x76, 0x6d, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x76, 0x6d, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x69, + 0x6e, 0x75, 0x78, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x41, + 0x64, 0x6d, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x11, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, + 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x15, 0x0a, 0x06, 0x69, 0x73, + 0x5f, 0x76, 0x68, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x56, 0x68, + 0x64, 0x12, 0x43, 0x0a, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6e, 0x62, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x46, 0x0a, 0x0f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, + 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, + 0x0a, 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x73, 0x68, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x73, 0x68, 0x12, 0x3a, 0x0a, + 0x19, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x6e, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x64, + 0x65, 0x64, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x55, 0x6e, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x64, + 0x65, 0x64, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x68, 0x65, 0x5f, 0x64, 0x61, 0x79, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x66, + 0x54, 0x68, 0x65, 0x44, 0x61, 0x79, 0x12, 0x43, 0x0a, 0x0e, 0x6b, 0x75, 0x62, 0x65, 0x6c, 0x65, + 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4b, + 0x75, 0x62, 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x6b, 0x75, + 0x62, 0x65, 0x6c, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x19, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x5f, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x43, 0x61, 0x43, 0x65, 0x72, 0x74, 0x73, 0x12, 0x29, + 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x49, 0x0a, 0x10, 0x77, 0x6f, 0x72, + 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x19, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x52, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x17, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x64, 0x75, 0x61, + 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, + 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x69, 0x70, 0x76, 0x36, 0x44, 0x75, 0x61, 0x6c, 0x53, + 0x74, 0x61, 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x6f, + 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, + 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x21, 0x65, 0x6e, 0x73, 0x75, 0x72, 0x65, + 0x5f, 0x6e, 0x6f, 0x5f, 0x64, 0x75, 0x70, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x63, + 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x1d, 0x65, 0x6e, 0x73, 0x75, 0x72, 0x65, 0x4e, 0x6f, 0x44, 0x75, 0x70, 0x65, 0x50, + 0x72, 0x6f, 0x6d, 0x69, 0x73, 0x63, 0x75, 0x6f, 0x75, 0x73, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x12, 0x53, 0x0a, 0x14, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x52, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x57, 0x0a, 0x16, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, + 0x6c, 0x69, 0x6e, 0x75, 0x78, 0x5f, 0x6f, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x69, 0x6e, 0x75, + 0x78, 0x4f, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x13, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x4c, 0x69, 0x6e, 0x75, 0x78, 0x4f, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, + 0x0a, 0x1d, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, + 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x50, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x12, 0x3f, 0x0a, 0x1c, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, + 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x74, + 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, + 0x21, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x72, 0x74, + 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x17, + 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x6b, 0x61, 0x74, 0x61, 0x18, 0x22, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x69, 0x73, 0x4b, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x65, 0x65, 0x64, 0x73, + 0x5f, 0x63, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x76, 0x32, 0x18, 0x23, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0d, 0x6e, 0x65, 0x65, 0x64, 0x73, 0x43, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x76, 0x32, 0x12, 0x4a, + 0x0a, 0x11, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6e, 0x62, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x50, 0x72, + 0x6f, 0x78, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x68, 0x74, 0x74, 0x70, 0x50, + 0x72, 0x6f, 0x78, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x37, 0x0a, 0x0a, 0x67, 0x70, + 0x75, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x50, 0x55, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x67, 0x70, 0x75, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2a, 0x47, 0x0a, 0x0f, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x52, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x57, 0x52, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x43, + 0x49, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0d, 0x0a, + 0x09, 0x57, 0x41, 0x53, 0x4d, 0x5f, 0x57, 0x41, 0x53, 0x49, 0x10, 0x02, 0x42, 0xb7, 0x01, 0x0a, + 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, + 0x76, 0x31, 0x42, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x7a, + 0x75, 0x72, 0x65, 0x2f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x61, 0x6b, 0x65, 0x72, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, + 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4e, 0x58, 0x58, 0xaa, 0x02, 0x0d, 0x4e, 0x62, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x4e, 0x62, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x4e, 0x62, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x4e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -667,7 +684,7 @@ var file_pkg_proto_nbcontract_v1_config_proto_depIdxs = []int32{ 2, // 0: nbcontract.v1.Configuration.tls_bootstrapping_config:type_name -> nbcontract.v1.TLSBootstrappingConfig 3, // 1: nbcontract.v1.Configuration.kube_binary_config:type_name -> nbcontract.v1.KubeBinaryConfig 4, // 2: nbcontract.v1.Configuration.custom_cloud_config:type_name -> nbcontract.v1.CustomCloudConfig - 5, // 3: nbcontract.v1.Configuration.apiserver_config:type_name -> nbcontract.v1.ApiServerConfig + 5, // 3: nbcontract.v1.Configuration.api_server_config:type_name -> nbcontract.v1.ApiServerConfig 6, // 4: nbcontract.v1.Configuration.cluster_config:type_name -> nbcontract.v1.ClusterConfig 7, // 5: nbcontract.v1.Configuration.auth_config:type_name -> nbcontract.v1.AuthConfig 8, // 6: nbcontract.v1.Configuration.runc_config:type_name -> nbcontract.v1.RuncConfig @@ -721,7 +738,6 @@ func file_pkg_proto_nbcontract_v1_config_proto_init() { } } } - file_pkg_proto_nbcontract_v1_config_proto_msgTypes[0].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/pkg/proto/nbcontract/v1/config.proto b/pkg/proto/nbcontract/v1/config.proto index d8b58fba92d..a098b1c5449 100644 --- a/pkg/proto/nbcontract/v1/config.proto +++ b/pkg/proto/nbcontract/v1/config.proto @@ -24,121 +24,116 @@ enum WorkloadRuntime { WASM_WASI = 2; } -// illustrative division only message Configuration { - // System Configuration - string cluster_certificate_authority = 1; - TLSBootstrappingConfig tls_bootstrapping_config = 2; - - // cluster/user config - string kubernetes_version = 3; // Q: can this be auto-detected? Or is this part of specifying the desired node version? - KubeBinaryConfig kube_binary_config = 4; - optional CustomCloudConfig custom_cloud_config = 5; - string kubeproxy_url = 6; - ApiServerConfig apiserver_config = 7; + // Semantic version of this node bootstrap contract + string version = 1; + + // Kubernetes certificate authority (CA) certificate, required by the node to establish TLS with the API server + string kubernetes_ca_cert = 2; + + // TLS bootstrap config + TLSBootstrappingConfig tls_bootstrapping_config = 3; + + // Cluster/user config + string kubernetes_version = 4; // Q: can this be auto-detected? Or is this part of specifying the desired node version? + + // Kube binary URL config + KubeBinaryConfig kube_binary_config = 5; + + // Custom cloud config + CustomCloudConfig custom_cloud_config = 6; + + // Kube proxy URL + string kube_proxy_url = 7; + + // Kubernetes API server configuration + ApiServerConfig api_server_config = 8; - ClusterConfig cluster_config = 14; - AuthConfig auth_config = 15; - RuncConfig runc_config = 16; - string vm_size = 17; + // Various Kubernetes cluster level configuration + ClusterConfig cluster_config = 9; - // ... and a bunch of user-specified config - string linux_admin_username = 18; - ContainerdConfig containerd_config = 22; - bool is_vhd = 23; - NetworkConfig network_config = 24; - TeleportConfig teleport_config = 26; + // Authentication configuration + AuthConfig auth_config = 10; - // enable_ssh specifies whether SSH is enabled or disabled on the VM node - bool enable_ssh = 27; + // The CLI tool runc configuration + RuncConfig runc_config = 11; - // enable_unattended_upgrade specifies whether unattended upgrade is enabled or disabled on the VM node - bool enable_unattended_upgrade = 28; + // The VM size of the node + string vm_size = 12; - // message_of_the_day specifies the message of the day that is displayed on the VM node when a user logs in - string message_of_the_day = 29; + // Linux admin username. If not specified, the default value is "azureuser" + string linux_admin_username = 13; - // kubelet_config specifies the kubelet configuration - KubeletConfig kubelet_config = 31; + // Containerd configuration + ContainerdConfig containerd_config = 14; - // enable_hosts_config_agent specifies whether the hosts config agent is enabled or disabled on the VM node - bool enable_hosts_config_agent = 32; + // Specifies whether the node is a VHD node. This is still needed for some customized scenarios. + bool is_vhd = 15; - // custom_ca_certs specifies the custom CA certificates - repeated string custom_ca_certs = 33; + // Network configuration. We assumed network mode is always "transparent" now so it's removed from the contract. + NetworkConfig network_config = 16; - // provision_output specifies where cluster provision cse output should be stored at - string provision_output = 34; + // Teleport configuration + TeleportConfig teleport_config = 17; - // workload_runtime describes the workload runtime, e.g., either "OCIContainer" or "WasmWasi", currently. - WorkloadRuntime workload_runtime = 40; + // Specifies whether SSH is enabled or disabled on the VM node + bool enable_ssh = 18; - // ipv6_dual_stack_enabled specifies whether IPv6 dual stack is enabled or disabled on the VM node - bool ipv6_dual_stack_enabled = 42; + // Specifies whether unattended upgrade is enabled or disabled on the VM node + bool enable_unattended_upgrade = 19; - // outbound_command specifies the command to use for outbound traffic - string outbound_command = 43; + // The message of the day that is displayed on the VM node when a user logs in + string message_of_the_day = 20; - // ensure_no_dupe_promiscuous_bridge specifies whether to ensure no duplicate promiscuous bridge - bool ensure_no_dupe_promiscuous_bridge = 45; + // Kubelet configuration + KubeletConfig kubelet_config = 21; - // custom_search_domain specifies the custom search domain configurations - CustomSearchDomain custom_search_domain = 46; + // Specifies whether the hosts config agent is enabled or disabled on the VM node + bool enable_hosts_config_agent = 22; - // custom_linux_os_config specifies the custom Linux OS configurations including SwapFile, SysCtl configs, etc. - CustomLinuxOSConfig custom_linux_os_config = 47; + // Custom CA certificates to be added to the system trust store + repeated string custom_ca_certs = 23; - // azure_private_registry_server specifies the Azure private registry server - string azure_private_registry_server = 56; + // A local file path where cluster provision cse output should be stored + string provision_output = 24; - // private_egress_proxy_address specifies the private egress proxy address - string private_egress_proxy_address = 57; + // Workload runtime, e.g., either "OCIContainer" or "WasmWasi", currently. + WorkloadRuntime workload_runtime = 25; - // enable_artifact_streaming specifies whether artifact streaming is enabled or disabled on the VM node - bool enable_artifact_streaming = 58; + // Specifies whether IPv6 dual stack is enabled or disabled on the VM node + bool ipv6_dual_stack_enabled = 26; - // is_kata specifies whether the node is a Kata node - bool is_kata = 59; + // Command to use for outbound traffic + string outbound_command = 27; - // needs_cgroupv2 specifies whether the node needs cgroupv2 - // when we actually work on the go binary, we should be able to query from the system. By then we can remove this. - bool needs_cgroupv2 = 60; + // specifies whether to ensure no duplicate promiscuous bridge + bool ensure_no_dupe_promiscuous_bridge = 28; - // Here begins the final contract - optional HTTPProxyConfig http_proxy_config = 61; - optional GPUConfig gpu_config = 62; -} + // Custom search domain configurations + CustomSearchDomain custom_search_domain = 29; -// The following variables are removed from the contract -// Leaving them there for note. -// All of them need default values configured in the VHD, likely in the go binary. -// will remove this section before release -/* + // Custom Linux OS configurations including SwapFile, SysCtl configs, etc. + CustomLinuxOSConfig custom_linux_os_config = 30; -message CloudProviderConfig { - CloudProviderBackoffConfig cloud_provider_backoff_config = 1; - CloudProviderRateLimitConfig cloud_provider_rate_limit_config = 2; - bool cloud_provider_disable_out_bound_snat = 3; -} + // Azure private registry server URI + string azure_private_registry_server = 31; -message CloudProviderBackoffConfig { - FeatureState status = 1; - string mode = 2; - int32 retries = 3; - double exponent = 4; - int32 duration = 5; - double jitter = 6; -} + //Private egress proxy address + string private_egress_proxy_address = 32; -message CloudProviderRateLimitConfig { - FeatureState status = 1; - double qps = 2; - double qps_write = 3; - int32 bucket = 4; - int32 bucket_write = 5; -} + // Specifies whether artifact streaming is enabled or disabled on the VM node + bool enable_artifact_streaming = 33; + + // Specifies whether the node is a Kata node + bool is_kata = 34; + + // Specifies whether the node needs cgroupv2. + // When we actually work on the go binary, we should be able to query from the system. By then we can remove this. + bool needs_cgroupv2 = 35; -CONTAINER_RUNTIME = "containerd" -CLI_TOOL = "ctr" + // HTTP/HTTPS proxy configuration for the node + HTTPProxyConfig http_proxy_config = 36; -*/ \ No newline at end of file + // GPU configuration for the node + GPUConfig gpu_config = 37; +} \ No newline at end of file diff --git a/pkg/proto/nbcontract/v1/containerdconfig.pb.go b/pkg/proto/nbcontract/v1/containerdconfig.pb.go index 4f3c564ee05..5aa9b7de852 100644 --- a/pkg/proto/nbcontract/v1/containerdconfig.pb.go +++ b/pkg/proto/nbcontract/v1/containerdconfig.pb.go @@ -25,9 +25,12 @@ type ContainerdConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // The base URL for downloading containerd. ContainerdDownloadUrlBase string `protobuf:"bytes,1,opt,name=containerd_download_url_base,json=containerdDownloadUrlBase,proto3" json:"containerd_download_url_base,omitempty"` - ContainerdVersion string `protobuf:"bytes,2,opt,name=containerd_version,json=containerdVersion,proto3" json:"containerd_version,omitempty"` - ContainerdPackageUrl string `protobuf:"bytes,3,opt,name=containerd_package_url,json=containerdPackageUrl,proto3" json:"containerd_package_url,omitempty"` + // The version of containerd to download. + ContainerdVersion string `protobuf:"bytes,2,opt,name=containerd_version,json=containerdVersion,proto3" json:"containerd_version,omitempty"` + // The URL for downloading the containerd package. + ContainerdPackageUrl string `protobuf:"bytes,3,opt,name=containerd_package_url,json=containerdPackageUrl,proto3" json:"containerd_package_url,omitempty"` } func (x *ContainerdConfig) Reset() { diff --git a/pkg/proto/nbcontract/v1/containerdconfig.proto b/pkg/proto/nbcontract/v1/containerdconfig.proto index ca0e5ff6d88..1936aa698c2 100644 --- a/pkg/proto/nbcontract/v1/containerdconfig.proto +++ b/pkg/proto/nbcontract/v1/containerdconfig.proto @@ -2,7 +2,12 @@ syntax = "proto3"; package nbcontract.v1; message ContainerdConfig { + // The base URL for downloading containerd. string containerd_download_url_base = 1; + + // The version of containerd to download. string containerd_version = 2; + + // The URL for downloading the containerd package. string containerd_package_url = 3; } \ No newline at end of file diff --git a/pkg/proto/nbcontract/v1/customcloudconfig.pb.go b/pkg/proto/nbcontract/v1/customcloudconfig.pb.go index ce4e971dab6..9b30c0da775 100644 --- a/pkg/proto/nbcontract/v1/customcloudconfig.pb.go +++ b/pkg/proto/nbcontract/v1/customcloudconfig.pb.go @@ -30,8 +30,10 @@ type CustomCloudConfig struct { // InitFilePath is the path to the file that contains the init script InitFilePath string `protobuf:"bytes,2,opt,name=init_file_path,json=initFilePath,proto3" json:"init_file_path,omitempty"` // RepoDepotEndpoint is the endpoint of the repo depot - RepoDepotEndpoint string `protobuf:"bytes,3,opt,name=repo_depot_endpoint,json=repoDepotEndpoint,proto3" json:"repo_depot_endpoint,omitempty"` - TargetEnvironment string `protobuf:"bytes,4,opt,name=target_environment,json=targetEnvironment,proto3" json:"target_environment,omitempty"` + RepoDepotEndpoint string `protobuf:"bytes,3,opt,name=repo_depot_endpoint,json=repoDepotEndpoint,proto3" json:"repo_depot_endpoint,omitempty"` + // Specifies if target environment is a sovereign cloud, which has its own data compliance regulation, or standard public cloud. + TargetEnvironment string `protobuf:"bytes,4,opt,name=target_environment,json=targetEnvironment,proto3" json:"target_environment,omitempty"` + // Base64 encoded JSON string of custom cloud environment CustomEnvJsonContent string `protobuf:"bytes,5,opt,name=custom_env_json_content,json=customEnvJsonContent,proto3" json:"custom_env_json_content,omitempty"` } diff --git a/pkg/proto/nbcontract/v1/customcloudconfig.proto b/pkg/proto/nbcontract/v1/customcloudconfig.proto index 57258710c00..be421c4cd6d 100644 --- a/pkg/proto/nbcontract/v1/customcloudconfig.proto +++ b/pkg/proto/nbcontract/v1/customcloudconfig.proto @@ -2,17 +2,18 @@ syntax = "proto3"; package nbcontract.v1; message CustomCloudConfig { + // IsAKSCustomCloud is a flag to indicate if it is AKS custom cloud + bool is_aks_custom_cloud = 1; - // IsAKSCustomCloud is a flag to indicate if it is AKS custom cloud - bool is_aks_custom_cloud = 1; + // InitFilePath is the path to the file that contains the init script + string init_file_path = 2; - // InitFilePath is the path to the file that contains the init script - string init_file_path = 2; + // RepoDepotEndpoint is the endpoint of the repo depot + string repo_depot_endpoint = 3; - // RepoDepotEndpoint is the endpoint of the repo depot - string repo_depot_endpoint = 3; + // Specifies if target environment is a sovereign cloud, which has its own data compliance regulation, or standard public cloud. + string target_environment = 4; - string target_environment = 4; - - string custom_env_json_content = 5; + // Base64 encoded JSON string of custom cloud environment + string custom_env_json_content = 5; } \ No newline at end of file diff --git a/pkg/proto/nbcontract/v1/customsearchdomainconfig.proto b/pkg/proto/nbcontract/v1/customsearchdomainconfig.proto index eff026c3fcf..920ff4e9e4c 100644 --- a/pkg/proto/nbcontract/v1/customsearchdomainconfig.proto +++ b/pkg/proto/nbcontract/v1/customsearchdomainconfig.proto @@ -2,7 +2,6 @@ syntax = "proto3"; package nbcontract.v1; message CustomSearchDomain { - // The name of the custom search domain. string custom_search_domain_name = 1; diff --git a/pkg/proto/nbcontract/v1/gpuconfig.pb.go b/pkg/proto/nbcontract/v1/gpuconfig.pb.go index 3d8bea6cff9..92781ea89f0 100644 --- a/pkg/proto/nbcontract/v1/gpuconfig.pb.go +++ b/pkg/proto/nbcontract/v1/gpuconfig.pb.go @@ -25,11 +25,11 @@ type GPUConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // ConfigGpuDriver specifies whether bootstrap process should install and configure the GPU driver when necessary. Configuration includes appropriate set up of components like the fabric manager where applicable. + // Specifies whether bootstrap process should install and configure the GPU driver when necessary. Configuration includes appropriate set up of components like the fabric manager where applicable. ConfigGpuDriver bool `protobuf:"varint,1,opt,name=config_gpu_driver,json=configGpuDriver,proto3" json:"config_gpu_driver,omitempty"` - // GpuDevicePlugin specifies whether special config is needed for MIG GPUs that use GPU dedicated VHDs and enable the device plugin (for all GPU dedicated VHDs) + // Specifies whether special config is needed for MIG GPUs that use GPU dedicated VHDs and enable the device plugin (for all GPU dedicated VHDs) GpuDevicePlugin bool `protobuf:"varint,2,opt,name=gpu_device_plugin,json=gpuDevicePlugin,proto3" json:"gpu_device_plugin,omitempty"` - // GpuInstanceProfile represents the GPU instance profile. + // Represents the GPU instance profile. GpuInstanceProfile string `protobuf:"bytes,3,opt,name=gpu_instance_profile,json=gpuInstanceProfile,proto3" json:"gpu_instance_profile,omitempty"` } diff --git a/pkg/proto/nbcontract/v1/gpuconfig.proto b/pkg/proto/nbcontract/v1/gpuconfig.proto index e0456108171..bb89f9920a5 100644 --- a/pkg/proto/nbcontract/v1/gpuconfig.proto +++ b/pkg/proto/nbcontract/v1/gpuconfig.proto @@ -2,12 +2,12 @@ syntax = "proto3"; package nbcontract.v1; message GPUConfig { - // ConfigGpuDriver specifies whether bootstrap process should install and configure the GPU driver when necessary. Configuration includes appropriate set up of components like the fabric manager where applicable. + // Specifies whether bootstrap process should install and configure the GPU driver when necessary. Configuration includes appropriate set up of components like the fabric manager where applicable. bool config_gpu_driver = 1; - // GpuDevicePlugin specifies whether special config is needed for MIG GPUs that use GPU dedicated VHDs and enable the device plugin (for all GPU dedicated VHDs) + // Specifies whether special config is needed for MIG GPUs that use GPU dedicated VHDs and enable the device plugin (for all GPU dedicated VHDs) bool gpu_device_plugin = 2; - // GpuInstanceProfile represents the GPU instance profile. + // Represents the GPU instance profile. string gpu_instance_profile = 3; } \ No newline at end of file diff --git a/pkg/proto/nbcontract/v1/httpproxyconfig.pb.go b/pkg/proto/nbcontract/v1/httpproxyconfig.pb.go index 6230e1e4be1..e28aee7e2d2 100644 --- a/pkg/proto/nbcontract/v1/httpproxyconfig.pb.go +++ b/pkg/proto/nbcontract/v1/httpproxyconfig.pb.go @@ -25,13 +25,13 @@ type HTTPProxyConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // HTTPProxy represents the proxy endpoint/URL using HTTP, that the traffic should go through for making HTTP connections outside the cluster + // Proxy endpoint/URL using HTTP through which the traffic should be routed for making HTTP connections outside the cluster HttpProxy string `protobuf:"bytes,1,opt,name=http_proxy,json=httpProxy,proto3" json:"http_proxy,omitempty"` - // HTTPSProxy represents the proxy endpoint/URL using HTTPS, that the traffic should go through for making HTTPS connections outside the cluster + // Proxy endpoint/URL using HTTPS through which the traffic should be routed for making HTTPS connections outside the cluster HttpsProxy string `protobuf:"bytes,2,opt,name=https_proxy,json=httpsProxy,proto3" json:"https_proxy,omitempty"` - // NoProxy represents a list of entries including IPs, domains, or other network CIDRs that should not be accessed through the proxy + // A list of entries including IPs, domains, or other network CIDRs that should not be accessed through the proxy NoProxyEntries []string `protobuf:"bytes,3,rep,name=no_proxy_entries,json=noProxyEntries,proto3" json:"no_proxy_entries,omitempty"` - // TrustedCA repesents alternative CA certificate content + // Custom CA certificate that should be trusted by the proxy ProxyTrustedCa string `protobuf:"bytes,4,opt,name=proxy_trusted_ca,json=proxyTrustedCa,proto3" json:"proxy_trusted_ca,omitempty"` } diff --git a/pkg/proto/nbcontract/v1/httpproxyconfig.proto b/pkg/proto/nbcontract/v1/httpproxyconfig.proto index 8988b610b0d..28a8be004cf 100644 --- a/pkg/proto/nbcontract/v1/httpproxyconfig.proto +++ b/pkg/proto/nbcontract/v1/httpproxyconfig.proto @@ -2,15 +2,15 @@ syntax = "proto3"; package nbcontract.v1; message HTTPProxyConfig { - // HTTPProxy represents the proxy endpoint/URL using HTTP, that the traffic should go through for making HTTP connections outside the cluster + // Proxy endpoint/URL using HTTP through which the traffic should be routed for making HTTP connections outside the cluster string http_proxy = 1; - // HTTPSProxy represents the proxy endpoint/URL using HTTPS, that the traffic should go through for making HTTPS connections outside the cluster + // Proxy endpoint/URL using HTTPS through which the traffic should be routed for making HTTPS connections outside the cluster string https_proxy = 2; - // NoProxy represents a list of entries including IPs, domains, or other network CIDRs that should not be accessed through the proxy + // A list of entries including IPs, domains, or other network CIDRs that should not be accessed through the proxy repeated string no_proxy_entries = 3; - // TrustedCA repesents alternative CA certificate content + // Custom CA certificate that should be trusted by the proxy string proxy_trusted_ca = 4; } \ No newline at end of file diff --git a/pkg/proto/nbcontract/v1/kubebinaryconfig.pb.go b/pkg/proto/nbcontract/v1/kubebinaryconfig.pb.go index 53165650489..baea190acb5 100644 --- a/pkg/proto/nbcontract/v1/kubebinaryconfig.pb.go +++ b/pkg/proto/nbcontract/v1/kubebinaryconfig.pb.go @@ -26,9 +26,12 @@ type KubeBinaryConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - KubeBinaryUrl string `protobuf:"bytes,1,opt,name=kube_binary_url,json=kubeBinaryUrl,proto3" json:"kube_binary_url,omitempty"` //default kube binary url - CustomKubeBinaryUrl string `protobuf:"bytes,2,opt,name=custom_kube_binary_url,json=customKubeBinaryUrl,proto3" json:"custom_kube_binary_url,omitempty"` //user's custom kube binary url - PrivateKubeBinaryUrl string `protobuf:"bytes,3,opt,name=private_kube_binary_url,json=privateKubeBinaryUrl,proto3" json:"private_kube_binary_url,omitempty"` //privately cached kube binary url + // default kube binary url + KubeBinaryUrl string `protobuf:"bytes,1,opt,name=kube_binary_url,json=kubeBinaryUrl,proto3" json:"kube_binary_url,omitempty"` + // user's custom kube binary url + CustomKubeBinaryUrl string `protobuf:"bytes,2,opt,name=custom_kube_binary_url,json=customKubeBinaryUrl,proto3" json:"custom_kube_binary_url,omitempty"` + // privately cached kube binary url + PrivateKubeBinaryUrl string `protobuf:"bytes,3,opt,name=private_kube_binary_url,json=privateKubeBinaryUrl,proto3" json:"private_kube_binary_url,omitempty"` } func (x *KubeBinaryConfig) Reset() { diff --git a/pkg/proto/nbcontract/v1/kubebinaryconfig.proto b/pkg/proto/nbcontract/v1/kubebinaryconfig.proto index fa630e486f5..650fa523f66 100644 --- a/pkg/proto/nbcontract/v1/kubebinaryconfig.proto +++ b/pkg/proto/nbcontract/v1/kubebinaryconfig.proto @@ -3,7 +3,12 @@ package nbcontract.v1; // Kube Binary Config message KubeBinaryConfig { - string kube_binary_url = 1; //default kube binary url - string custom_kube_binary_url = 2; //user's custom kube binary url - string private_kube_binary_url = 3; //privately cached kube binary url + //default kube binary url + string kube_binary_url = 1; + + //user's custom kube binary url + string custom_kube_binary_url = 2; + + //privately cached kube binary url + string private_kube_binary_url = 3; } \ No newline at end of file diff --git a/pkg/proto/nbcontract/v1/kubeletconfig.pb.go b/pkg/proto/nbcontract/v1/kubeletconfig.pb.go index fdc9add27ee..8319ed24d4a 100644 --- a/pkg/proto/nbcontract/v1/kubeletconfig.pb.go +++ b/pkg/proto/nbcontract/v1/kubeletconfig.pb.go @@ -74,15 +74,21 @@ type KubeletConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // TODO(ace): remove these/make api defensible - KubeletFlags map[string]string `protobuf:"bytes,1,rep,name=kubelet_flags,json=kubeletFlags,proto3" json:"kubelet_flags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // A map of kubelet flags to their values. + KubeletFlags map[string]string `protobuf:"bytes,1,rep,name=kubelet_flags,json=kubeletFlags,proto3" json:"kubelet_flags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // A map of node labels to their values. KubeletNodeLabels map[string]string `protobuf:"bytes,2,rep,name=kubelet_node_labels,json=kubeletNodeLabels,proto3" json:"kubelet_node_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Taints []*Taint `protobuf:"bytes,3,rep,name=taints,proto3" json:"taints,omitempty"` - StartupTaints []*Taint `protobuf:"bytes,4,rep,name=startup_taints,json=startupTaints,proto3" json:"startup_taints,omitempty"` - KubeletDiskType KubeletDisk `protobuf:"varint,5,opt,name=kubelet_disk_type,json=kubeletDiskType,proto3,enum=nbcontract.v1.KubeletDisk" json:"kubelet_disk_type,omitempty"` - // kubelet_config_file_content is the content of the kubelet config file. + // A list of taints to apply to the node. + Taints []*Taint `protobuf:"bytes,3,rep,name=taints,proto3" json:"taints,omitempty"` + // A list of taints to apply to the node at startup. + StartupTaints []*Taint `protobuf:"bytes,4,rep,name=startup_taints,json=startupTaints,proto3" json:"startup_taints,omitempty"` + // The type of disk to use for the kubelet. + KubeletDiskType KubeletDisk `protobuf:"varint,5,opt,name=kubelet_disk_type,json=kubeletDiskType,proto3,enum=nbcontract.v1.KubeletDisk" json:"kubelet_disk_type,omitempty"` + // Base64 encoded content of the kubelet config file. KubeletConfigFileContent string `protobuf:"bytes,6,opt,name=kubelet_config_file_content,json=kubeletConfigFileContent,proto3" json:"kubelet_config_file_content,omitempty"` - KubeletClientKey string `protobuf:"bytes,7,opt,name=kubelet_client_key,json=kubeletClientKey,proto3" json:"kubelet_client_key,omitempty"` + // Kubelet client private key + KubeletClientKey string `protobuf:"bytes,7,opt,name=kubelet_client_key,json=kubeletClientKey,proto3" json:"kubelet_client_key,omitempty"` + // The content of the kubelet client certificate file. KubeletClientCertContent string `protobuf:"bytes,8,opt,name=kubelet_client_cert_content,json=kubeletClientCertContent,proto3" json:"kubelet_client_cert_content,omitempty"` } diff --git a/pkg/proto/nbcontract/v1/kubeletconfig.proto b/pkg/proto/nbcontract/v1/kubeletconfig.proto index d4ab0619922..aa1f65a26da 100644 --- a/pkg/proto/nbcontract/v1/kubeletconfig.proto +++ b/pkg/proto/nbcontract/v1/kubeletconfig.proto @@ -2,16 +2,28 @@ syntax = "proto3"; package nbcontract.v1; message KubeletConfig { - // TODO(ace): remove these/make api defensible + // A map of kubelet flags to their values. map kubelet_flags = 1; + + // A map of node labels to their values. map kubelet_node_labels = 2; + + // A list of taints to apply to the node. repeated Taint taints = 3; + + // A list of taints to apply to the node at startup. repeated Taint startup_taints = 4; + + // The type of disk to use for the kubelet. KubeletDisk kubelet_disk_type = 5; - // kubelet_config_file_content is the content of the kubelet config file. + // Base64 encoded content of the kubelet config file. string kubelet_config_file_content = 6; + + // Kubelet client private key string kubelet_client_key = 7; + + // The content of the kubelet client certificate file. string kubelet_client_cert_content = 8; } diff --git a/pkg/proto/nbcontract/v1/networkconfig.pb.go b/pkg/proto/nbcontract/v1/networkconfig.pb.go index a4d898ef217..f1cb6383fdb 100644 --- a/pkg/proto/nbcontract/v1/networkconfig.pb.go +++ b/pkg/proto/nbcontract/v1/networkconfig.pb.go @@ -129,14 +129,16 @@ type NetworkConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // NetworkPlugin is the network plugin to be used by the cluster. Options are NONE, AZURE, KUBENET. + // Network plugin to be used by the cluster. Options are NONE, AZURE, KUBENET. NetworkPlugin NetworkPlugin `protobuf:"varint,1,opt,name=network_plugin,json=networkPlugin,proto3,enum=nbcontract.v1.NetworkPlugin" json:"network_plugin,omitempty"` - // NetworkPolicy is the network policy to be used by the cluster. + // Network policy to be used by the cluster. // This is still needed to compute ENSURE_NO_DUPE_PROMISCUOUS_BRIDGE. // Other than that, it is not used by others. See the discussions here https://github.com/Azure/AgentBaker/pull/4241#discussion_r1554283228 - NetworkPolicy NetworkPolicy `protobuf:"varint,2,opt,name=network_policy,json=networkPolicy,proto3,enum=nbcontract.v1.NetworkPolicy" json:"network_policy,omitempty"` - VnetCniPluginsUrl string `protobuf:"bytes,3,opt,name=vnet_cni_plugins_url,json=vnetCniPluginsUrl,proto3" json:"vnet_cni_plugins_url,omitempty"` - CniPluginsUrl string `protobuf:"bytes,4,opt,name=cni_plugins_url,json=cniPluginsUrl,proto3" json:"cni_plugins_url,omitempty"` + NetworkPolicy NetworkPolicy `protobuf:"varint,2,opt,name=network_policy,json=networkPolicy,proto3,enum=nbcontract.v1.NetworkPolicy" json:"network_policy,omitempty"` + // URL to the vnet cni plugins tarball. + VnetCniPluginsUrl string `protobuf:"bytes,3,opt,name=vnet_cni_plugins_url,json=vnetCniPluginsUrl,proto3" json:"vnet_cni_plugins_url,omitempty"` + // URL to the cni plugins tarball. + CniPluginsUrl string `protobuf:"bytes,4,opt,name=cni_plugins_url,json=cniPluginsUrl,proto3" json:"cni_plugins_url,omitempty"` } func (x *NetworkConfig) Reset() { diff --git a/pkg/proto/nbcontract/v1/networkconfig.proto b/pkg/proto/nbcontract/v1/networkconfig.proto index 5b0a5cac5b3..8cbb82222ec 100644 --- a/pkg/proto/nbcontract/v1/networkconfig.proto +++ b/pkg/proto/nbcontract/v1/networkconfig.proto @@ -2,16 +2,18 @@ syntax = "proto3"; package nbcontract.v1; message NetworkConfig { - - // NetworkPlugin is the network plugin to be used by the cluster. Options are NONE, AZURE, KUBENET. + // Network plugin to be used by the cluster. Options are NONE, AZURE, KUBENET. NetworkPlugin network_plugin = 1; - // NetworkPolicy is the network policy to be used by the cluster. + // Network policy to be used by the cluster. // This is still needed to compute ENSURE_NO_DUPE_PROMISCUOUS_BRIDGE. // Other than that, it is not used by others. See the discussions here https://github.com/Azure/AgentBaker/pull/4241#discussion_r1554283228 NetworkPolicy network_policy = 2; + // URL to the vnet cni plugins tarball. string vnet_cni_plugins_url = 3; + + // URL to the cni plugins tarball. string cni_plugins_url = 4; } diff --git a/pkg/proto/nbcontract/v1/runcconfig.pb.go b/pkg/proto/nbcontract/v1/runcconfig.pb.go index aa3631768bf..f5042cb2aec 100644 --- a/pkg/proto/nbcontract/v1/runcconfig.pb.go +++ b/pkg/proto/nbcontract/v1/runcconfig.pb.go @@ -25,7 +25,9 @@ type RuncConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - RuncVersion string `protobuf:"bytes,1,opt,name=runc_version,json=runcVersion,proto3" json:"runc_version,omitempty"` + // The version of runc to use. + RuncVersion string `protobuf:"bytes,1,opt,name=runc_version,json=runcVersion,proto3" json:"runc_version,omitempty"` + // The URL to download the runc package from. RuncPackageUrl string `protobuf:"bytes,2,opt,name=runc_package_url,json=runcPackageUrl,proto3" json:"runc_package_url,omitempty"` } diff --git a/pkg/proto/nbcontract/v1/runcconfig.proto b/pkg/proto/nbcontract/v1/runcconfig.proto index 5329b528b13..59bde5e3a65 100644 --- a/pkg/proto/nbcontract/v1/runcconfig.proto +++ b/pkg/proto/nbcontract/v1/runcconfig.proto @@ -2,6 +2,9 @@ syntax = "proto3"; package nbcontract.v1; message RuncConfig { + // The version of runc to use. string runc_version = 1; + + // The URL to download the runc package from. string runc_package_url = 2; } \ No newline at end of file diff --git a/pkg/proto/nbcontract/v1/teleportconfig.pb.go b/pkg/proto/nbcontract/v1/teleportconfig.pb.go index 8d4a6a2c332..f87a794ca94 100644 --- a/pkg/proto/nbcontract/v1/teleportconfig.pb.go +++ b/pkg/proto/nbcontract/v1/teleportconfig.pb.go @@ -25,7 +25,9 @@ type TeleportConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Status bool `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` + // The status of the teleportd plugin. If true, the plugin is enabled. + Status bool `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` + // The URL to download the teleportd plugin. TeleportdPluginDownloadUrl string `protobuf:"bytes,2,opt,name=teleportd_plugin_download_url,json=teleportdPluginDownloadUrl,proto3" json:"teleportd_plugin_download_url,omitempty"` } diff --git a/pkg/proto/nbcontract/v1/teleportconfig.proto b/pkg/proto/nbcontract/v1/teleportconfig.proto index 45bbdca673a..7f8d23a19fe 100644 --- a/pkg/proto/nbcontract/v1/teleportconfig.proto +++ b/pkg/proto/nbcontract/v1/teleportconfig.proto @@ -2,6 +2,9 @@ syntax = "proto3"; package nbcontract.v1; message TeleportConfig { + // The status of the teleportd plugin. If true, the plugin is enabled. bool status = 1; + + // The URL to download the teleportd plugin. string teleportd_plugin_download_url = 2; } \ No newline at end of file diff --git a/pkg/proto/nbcontract/v1/tlsbootstrappingconfig.pb.go b/pkg/proto/nbcontract/v1/tlsbootstrappingconfig.pb.go index 256394f7611..295fce9d950 100644 --- a/pkg/proto/nbcontract/v1/tlsbootstrappingconfig.pb.go +++ b/pkg/proto/nbcontract/v1/tlsbootstrappingconfig.pb.go @@ -25,9 +25,12 @@ type TLSBootstrappingConfig struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EnableSecureTlsBootstrapping *bool `protobuf:"varint,1,opt,name=enable_secure_tls_bootstrapping,json=enableSecureTlsBootstrapping,proto3,oneof" json:"enable_secure_tls_bootstrapping,omitempty"` - TlsBootstrapToken string `protobuf:"bytes,2,opt,name=tls_bootstrap_token,json=tlsBootstrapToken,proto3" json:"tls_bootstrap_token,omitempty"` // Only required until Secure TLS bootstrapping in place. Would use kubelet identity after that. - CustomSecureTlsBootstrapAppserverAppid string `protobuf:"bytes,3,opt,name=custom_secure_tls_bootstrap_appserver_appid,json=customSecureTlsBootstrapAppserverAppid,proto3" json:"custom_secure_tls_bootstrap_appserver_appid,omitempty"` // Only used when secure TLS bootstrapping is enabled + // Enable secure TLS bootstrapping for the node. + EnableSecureTlsBootstrapping *bool `protobuf:"varint,1,opt,name=enable_secure_tls_bootstrapping,json=enableSecureTlsBootstrapping,proto3,oneof" json:"enable_secure_tls_bootstrapping,omitempty"` + // Only required until Secure TLS bootstrapping in place. Would use kubelet identity after that. + TlsBootstrappingToken string `protobuf:"bytes,2,opt,name=tls_bootstrapping_token,json=tlsBootstrappingToken,proto3" json:"tls_bootstrapping_token,omitempty"` + // Only used when secure TLS bootstrapping is enabled. This is the appserver appid that the node will use to bootstrap. + CustomSecureTlsBootstrappingAppserverAppid string `protobuf:"bytes,3,opt,name=custom_secure_tls_bootstrapping_appserver_appid,json=customSecureTlsBootstrappingAppserverAppid,proto3" json:"custom_secure_tls_bootstrapping_appserver_appid,omitempty"` } func (x *TLSBootstrappingConfig) Reset() { @@ -69,16 +72,16 @@ func (x *TLSBootstrappingConfig) GetEnableSecureTlsBootstrapping() bool { return false } -func (x *TLSBootstrappingConfig) GetTlsBootstrapToken() string { +func (x *TLSBootstrappingConfig) GetTlsBootstrappingToken() string { if x != nil { - return x.TlsBootstrapToken + return x.TlsBootstrappingToken } return "" } -func (x *TLSBootstrappingConfig) GetCustomSecureTlsBootstrapAppserverAppid() string { +func (x *TLSBootstrappingConfig) GetCustomSecureTlsBootstrappingAppserverAppid() string { if x != nil { - return x.CustomSecureTlsBootstrapAppserverAppid + return x.CustomSecureTlsBootstrappingAppserverAppid } return "" } @@ -90,21 +93,22 @@ var file_pkg_proto_nbcontract_v1_tlsbootstrappingconfig_proto_rawDesc = []byte{ 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x6c, 0x73, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x6e, 0x62, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x2e, 0x76, 0x31, 0x22, 0x95, 0x02, 0x0a, 0x16, 0x54, 0x4c, 0x53, 0x42, 0x6f, 0x6f, + 0x63, 0x74, 0x2e, 0x76, 0x31, 0x22, 0xa5, 0x02, 0x0a, 0x16, 0x54, 0x4c, 0x53, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4a, 0x0a, 0x1f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x1c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x54, 0x6c, 0x73, 0x42, 0x6f, 0x6f, 0x74, - 0x73, 0x74, 0x72, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x13, - 0x74, 0x6c, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x6c, 0x73, 0x42, 0x6f, - 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x5b, 0x0a, 0x2b, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x6c, - 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x61, 0x70, 0x70, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x26, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x54, - 0x6c, 0x73, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x41, 0x70, 0x70, 0x73, 0x65, + 0x73, 0x74, 0x72, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x17, + 0x74, 0x6c, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x74, + 0x6c, 0x73, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x63, 0x0a, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, + 0x72, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x5f, 0x61, 0x70, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x2a, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x54, 0x6c, 0x73, 0x42, 0x6f, + 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x41, 0x70, 0x70, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x70, 0x70, 0x69, 0x64, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x42, 0xc7, 0x01, diff --git a/pkg/proto/nbcontract/v1/tlsbootstrappingconfig.proto b/pkg/proto/nbcontract/v1/tlsbootstrappingconfig.proto index 60007eb8204..da66098b10f 100644 --- a/pkg/proto/nbcontract/v1/tlsbootstrappingconfig.proto +++ b/pkg/proto/nbcontract/v1/tlsbootstrappingconfig.proto @@ -2,7 +2,12 @@ syntax = "proto3"; package nbcontract.v1; message TLSBootstrappingConfig { - optional bool enable_secure_tls_bootstrapping = 1; - string tls_bootstrap_token = 2; // Only required until Secure TLS bootstrapping in place. Would use kubelet identity after that. - string custom_secure_tls_bootstrap_appserver_appid = 3; // Only used when secure TLS bootstrapping is enabled - } \ No newline at end of file + // Enable secure TLS bootstrapping for the node. + optional bool enable_secure_tls_bootstrapping = 1; + + // Only required until Secure TLS bootstrapping in place. Would use kubelet identity after that. + string tls_bootstrapping_token = 2; + + // Only used when secure TLS bootstrapping is enabled. This is the appserver appid that the node will use to bootstrap. + string custom_secure_tls_bootstrapping_appserver_appid = 3; +} \ No newline at end of file