consul/proto-public/pbcatalog/v2beta1/service.proto

47 lines
1.7 KiB
Protocol Buffer
Raw Permalink Normal View History

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
syntax = "proto3";
package hashicorp.consul.catalog.v2beta1;
import "pbcatalog/v2beta1/protocol.proto";
import "pbcatalog/v2beta1/selector.proto";
import "pbresource/annotations.proto";
message Service {
option (hashicorp.consul.resource.spec) = {scope: SCOPE_NAMESPACE};
// 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;
}
// 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
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;
}