2023-05-05 13:47:28 +00:00
|
|
|
// Copyright (c) HashiCorp, Inc.
|
2023-08-21 17:31:54 +00:00
|
|
|
// SPDX-License-Identifier: MPL-2.0
|
2023-05-05 13:47:28 +00:00
|
|
|
|
|
|
|
syntax = "proto3";
|
|
|
|
|
2023-09-22 16:51:15 +00:00
|
|
|
package hashicorp.consul.catalog.v2beta1;
|
2023-05-05 13:47:28 +00:00
|
|
|
|
2023-09-22 16:51:15 +00:00
|
|
|
import "pbcatalog/v2beta1/protocol.proto";
|
|
|
|
import "pbcatalog/v2beta1/selector.proto";
|
2023-09-21 21:18:47 +00:00
|
|
|
import "pbresource/annotations.proto";
|
2023-05-05 13:47:28 +00:00
|
|
|
|
|
|
|
message Service {
|
2023-09-21 21:18:47 +00:00
|
|
|
option (hashicorp.consul.resource.spec) = {scope: SCOPE_NAMESPACE};
|
|
|
|
|
2023-05-05 13:47:28 +00:00
|
|
|
// workloads is a selector for the workloads this service should represent.
|
|
|
|
WorkloadSelector workloads = 1;
|
|
|
|
// ports is the list of mappings of workload ports that this service
|
|
|
|
// represents.
|
|
|
|
repeated ServicePort ports = 2;
|
|
|
|
|
|
|
|
// virtual_ips is a list of virtual IPs for this service. This is useful when you need to set
|
|
|
|
// an IP from an external system (like Kubernetes). This can be an IPv4 or IPv6 string.
|
|
|
|
repeated string virtual_ips = 3;
|
|
|
|
}
|
|
|
|
|
2024-01-29 18:43:41 +00:00
|
|
|
// ServicePort declares a port exposed by the service that can be used in config and xRoute
|
|
|
|
// references.
|
|
|
|
//
|
|
|
|
// For outside references to a service port by string identifier (e.g. in xRoutes and xPolicies),
|
|
|
|
// there are two forms supported:
|
|
|
|
// - A numeric value exclusively indicates a ServicePort.VirtualPort
|
|
|
|
// - A non-numeric value exclusively indicates a ServicePort.TargetPort
|
2023-05-05 13:47:28 +00:00
|
|
|
message ServicePort {
|
|
|
|
// virtual_port is the port that could only be used when transparent
|
|
|
|
// proxy is used alongside a virtual IP or a virtual DNS address.
|
|
|
|
// This value is ignored in other cases. Whether or not using transparent
|
|
|
|
// proxy, this value is optional.
|
|
|
|
uint32 virtual_port = 1;
|
|
|
|
|
|
|
|
// target_port is the name of the workload port.
|
|
|
|
string target_port = 2;
|
|
|
|
|
|
|
|
// protocol is the port's protocol. This should be set to "mesh"
|
|
|
|
// if the target port is the proxy's inbound port.
|
|
|
|
Protocol protocol = 3;
|
|
|
|
}
|