mirror of
https://github.com/status-im/consul.git
synced 2025-02-10 20:56:46 +00:00
This new controller produces an intermediate output (ComputedRoutes) that is meant to summarize all relevant xRoutes and related mesh configuration in an easier-to-use format for downstream use to construct the ProxyStateTemplate. It also applies status updates to the xRoute resource types to indicate that they are themselves semantically valid inputs.
108 lines
5.1 KiB
Go
108 lines
5.1 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package mesh
|
|
|
|
import (
|
|
"github.com/hashicorp/consul/internal/controller"
|
|
"github.com/hashicorp/consul/internal/mesh/internal/controllers"
|
|
"github.com/hashicorp/consul/internal/mesh/internal/controllers/routes"
|
|
"github.com/hashicorp/consul/internal/mesh/internal/controllers/sidecarproxy"
|
|
"github.com/hashicorp/consul/internal/mesh/internal/controllers/sidecarproxy/status"
|
|
"github.com/hashicorp/consul/internal/mesh/internal/types"
|
|
"github.com/hashicorp/consul/internal/resource"
|
|
)
|
|
|
|
var (
|
|
// API Group Information
|
|
|
|
APIGroup = types.GroupName
|
|
VersionV1Alpha1 = types.VersionV1Alpha1
|
|
CurrentVersion = types.CurrentVersion
|
|
|
|
// Resource Kind Names.
|
|
|
|
ProxyConfigurationKind = types.ProxyConfigurationKind
|
|
UpstreamsKind = types.UpstreamsKind
|
|
UpstreamsConfigurationKind = types.UpstreamsConfigurationKind
|
|
ProxyStateKind = types.ProxyStateTemplateKind
|
|
HTTPRouteKind = types.HTTPRouteKind
|
|
GRPCRouteKind = types.GRPCRouteKind
|
|
TCPRouteKind = types.TCPRouteKind
|
|
DestinationPolicyKind = types.DestinationPolicyKind
|
|
ComputedRoutesKind = types.ComputedRoutesKind
|
|
ProxyStateTemplateKind = types.ProxyStateTemplateKind
|
|
|
|
// Resource Types for the v1alpha1 version.
|
|
|
|
ProxyConfigurationV1Alpha1Type = types.ProxyConfigurationV1Alpha1Type
|
|
UpstreamsV1Alpha1Type = types.UpstreamsV1Alpha1Type
|
|
UpstreamsConfigurationV1Alpha1Type = types.UpstreamsConfigurationV1Alpha1Type
|
|
HTTPRouteV1Alpha1Type = types.HTTPRouteV1Alpha1Type
|
|
GRPCRouteV1Alpha1Type = types.GRPCRouteV1Alpha1Type
|
|
TCPRouteV1Alpha1Type = types.TCPRouteV1Alpha1Type
|
|
DestinationPolicyV1Alpha1Type = types.DestinationPolicyV1Alpha1Type
|
|
ComputedRoutesV1Alpha1Type = types.ComputedRoutesV1Alpha1Type
|
|
ProxyStateTemplateV1AlphaType = types.ProxyStateTemplateV1Alpha1Type
|
|
|
|
// Resource Types for the latest version.
|
|
|
|
ProxyConfigurationType = types.ProxyConfigurationType
|
|
UpstreamsType = types.UpstreamsType
|
|
UpstreamsConfigurationType = types.UpstreamsConfigurationType
|
|
ProxyStateTemplateType = types.ProxyStateTemplateType
|
|
ProxyStateTemplateConfigurationType = types.ProxyStateTemplateType
|
|
HTTPRouteType = types.HTTPRouteType
|
|
GRPCRouteType = types.GRPCRouteType
|
|
TCPRouteType = types.TCPRouteType
|
|
DestinationPolicyType = types.DestinationPolicyType
|
|
ComputedRoutesType = types.ComputedRoutesType
|
|
|
|
// Controller statuses.
|
|
|
|
// Sidecar-proxy controller.
|
|
SidecarProxyStatusKey = sidecarproxy.ControllerName
|
|
SidecarProxyStatusConditionMeshDestination = status.StatusConditionDestinationAccepted
|
|
SidecarProxyStatusReasonNonMeshDestination = status.StatusReasonMeshProtocolNotFound
|
|
SidecarProxyStatusReasonMeshDestination = status.StatusReasonMeshProtocolFound
|
|
SidecarProxyStatusReasonDestinationServiceNotFound = status.StatusReasonDestinationServiceNotFound
|
|
SidecarProxyStatusReasonDestinationServiceFound = status.StatusReasonDestinationServiceFound
|
|
SidecarProxyStatusReasonMeshProtocolDestinationPort = status.StatusReasonMeshProtocolDestinationPort
|
|
SidecarProxyStatusReasonNonMeshProtocolDestinationPort = status.StatusReasonNonMeshProtocolDestinationPort
|
|
|
|
// Routes controller
|
|
RoutesStatusKey = routes.StatusKey
|
|
RoutesStatusConditionAccepted = routes.StatusConditionAccepted
|
|
RoutesStatusConditionAcceptedMissingParentRefReason = routes.MissingParentRefReason
|
|
RoutesStatusConditionAcceptedMissingBackendRefReason = routes.MissingBackendRefReason
|
|
RoutesStatusConditionAcceptedParentRefOutsideMeshReason = routes.ParentRefOutsideMeshReason
|
|
RoutesStatusConditionAcceptedBackendRefOutsideMeshReason = routes.BackendRefOutsideMeshReason
|
|
RoutesStatusConditionAcceptedParentRefUsingMeshPortReason = routes.ParentRefUsingMeshPortReason
|
|
RoutesStatusConditionAcceptedBackendRefUsingMeshPortReason = routes.BackendRefUsingMeshPortReason
|
|
RoutesStatusConditionAcceptedUnknownParentRefPortReason = routes.UnknownParentRefPortReason
|
|
RoutesStatusConditionAcceptedUnknownBackendRefPortReason = routes.UnknownBackendRefPortReason
|
|
RoutesStatusConditionAcceptedConflictNotBoundToParentRefReason = routes.ConflictNotBoundToParentRefReason
|
|
)
|
|
|
|
const (
|
|
// Important constants
|
|
|
|
NullRouteBackend = types.NullRouteBackend
|
|
)
|
|
|
|
// RegisterTypes adds all resource types within the "mesh" API group
|
|
// to the given type registry
|
|
func RegisterTypes(r resource.Registry) {
|
|
types.Register(r)
|
|
}
|
|
|
|
// RegisterControllers registers controllers for the mesh types with
|
|
// the given controller Manager.
|
|
func RegisterControllers(mgr *controller.Manager, deps ControllerDependencies) {
|
|
controllers.Register(mgr, deps)
|
|
}
|
|
|
|
type TrustDomainFetcher = sidecarproxy.TrustDomainFetcher
|
|
|
|
type ControllerDependencies = controllers.Dependencies
|