// 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; }