Documentation ¶
Index ¶
- Constants
- Variables
- func DefaultControllerRateLimiter(maxDelay time.Duration) workqueue.RateLimiter
- func GetConditionStatus(state string) metav1.ConditionStatus
- func GetConditionStatusFromK8sError(err error) metav1.ConditionStatus
- func GetDefaultExponentialRetryPolicy() *common.RetryPolicy
- func GetServiceMeshCondition(serviceMeshStatus *servicemeshapi.ServiceMeshStatus, ...) *servicemeshapi.ServiceMeshCondition
- func GetServiceMeshRetryPolicy(resource MeshResources) *common.RetryPolicy
- func IsStringPresent(strSlice []string, str string) bool
- func UpdateServiceMeshCondition(serviceMeshStatus *servicemeshapi.ServiceMeshStatus, ...) bool
- type InformerCacheType
- type IngressResourceRequirements
- type InitContainerEnvVars
- type MeshRef
- type MeshResources
- type MeshUserHeader
- type PodWebhookError
- type ProxyEnvVars
- type ProxyLogLevelType
- type ResourceConditionMessage
- type ResourceConditionMessageVDB
- type ResourceConditionReason
- type ResourceRef
- type SidecarResourceRequirements
- type Suffix
- type ValidationWebhookError
Constants ¶
const ( // Lifecycle states Active = "ACTIVE" Failed = "FAILED" Deleted = "DELETED" Creating = "CREATING" Updating = "UPDATING" Deleting = "DELETING" Source = "source" Destination = "destination" UnknownStatus = "unknown status" // Finalizers MeshFinalizer = "finalizers.servicemesh.oci.oracle.com/mesh-resources" VirtualServiceFinalizer = "finalizers.servicemesh.oci.oracle.com/virtualservice-resources" VirtualDeploymentFinalizer = "finalizers.servicemesh.oci.oracle.com/virtualdeployment-resources" VirtualServiceRouteTableFinalizer = "finalizers.servicemesh.oci.oracle.com/virtualserviceroutetable-resources" AccessPolicyFinalizer = "finalizers.servicemesh.oci.oracle.com/accesspolicy-resources" IngressGatewayFinalizer = "finalizers.servicemesh.oci.oracle.com/ingressgateway-resources" VirtualDeploymentBindingFinalizer = "finalizers.servicemesh.oci.oracle.com/virtualdeploymentbinding-resources" IngressGatewayRouteTableFinalizer = "finalizers.servicemesh.oci.oracle.com/ingressgatewayroutetable-resources" IngressGatewayDeploymentFinalizer = "finalizers.servicemesh.oci.oracle.com/ingressgatewaydeployment-resources" // Inject container names InitContainerName = "init" ProxyContainerName = "oci-sm-proxy" // linux capabilities NetAdminCapability = "NET_ADMIN" OsokNamespace = "oci-service-operator-system" ProxyLabelInMeshConfigMap = "SIDECAR_IMAGE" CpEndpointInMeshConfigMap = "CP_ENDPOINT" MdsEndpointInMeshConfigMap = "MDS_ENDPOINT" AutoUpdateProxyVersion = "AUTO_UPDATE_PROXY_VERSION" ProxyInjectionLabel = "servicemesh.oci.oracle.com/sidecar-injection" ProxyLogLevelAnnotation = "servicemesh.oci.oracle.com/proxy-log-level" DefaultProxyLogLevel = ProxyLogLevelError Enabled = "enabled" Disabled = "disabled" MeshConfigMapName = "oci-service-operator-servicemesh-config" GlobalConfigMap = OsokNamespace + "/" + MeshConfigMapName // Pod annotation keys OutdatedProxyAnnotation = "servicemesh.oci.oracle.com/outdated-proxy" VirtualDeploymentBindingAnnotation = "servicemesh.oci.oracle.com/virtual-deployment-binding-ref" VirtualDeploymentAnnotation = "servicemesh.oci.oracle.com/virtual-deployment-ocid" // IngressName Label IngressName = "servicemesh.oci.oracle.com/ingress-gateway-deployment" TargetCPUUtilizationPercentage = 50 MetadataNameMaxLength = 190 DeploymentAPIVersion = "apps/v1" Http = "http" Tcp = "tcp" )
const ( DeploymentId ProxyEnvVars = "DEPLOYMENT_ID" ProxyLogLevel ProxyEnvVars = "PROXY_LOG_LEVEL" IPAddress ProxyEnvVars = "IP_ADDRESS" // this is deprecated in favor of POD_IP PodIp ProxyEnvVars = "POD_IP" PodUId ProxyEnvVars = "POD_UID" PodName ProxyEnvVars = "POD_NAME" PodNamespace ProxyEnvVars = "POD_NAMESPACE" StatsPort int32 = 15006 )
const ( MeshUserScheme MeshUserHeader = "Mesh-User-Scheme" MeshUserHost MeshUserHeader = "Mesh-User-Host" MeshUserPath MeshUserHeader = "Mesh-User-Path" MeshUserPort MeshUserHeader = "Mesh-User-Port" HealthProxyEndpointPath string = "/healthproxy" LivenessProbeEndpointPath string = "/health" LivenessProbeEndpointPort int32 = 15010 LivenessProbeInitialDelaySeconds int32 = 5 LocalHost = "localhost" )
const ( // Delay duration parameters for rate limiter exponential back off MaxDelay = 10 * time.Second MaxControllerDelay = 1 * time.Minute BaseDelay = 500 * time.Millisecond PollInterval = time.Second * 5 // Requeue request to sync resources from k8s to controlplane every 60 mins RequeueSyncDuration = time.Minute * 60 PollControlPlaneEndpointInterval = time.Minute * 10 ControlPlaneEndpointSleepInterval = time.Second * 30 )
Variables ¶
var MtlsLevel = map[servicemeshapi.MutualTransportLayerSecurityModeEnum]int{ servicemeshapi.MutualTransportLayerSecurityModeDisabled: 0, servicemeshapi.MutualTransportLayerSecurityModePermissive: 1, servicemeshapi.MutualTransportLayerSecurityModeStrict: 2, }
var PkiVolume = corev1.Volume{ Name: "pki", VolumeSource: corev1.VolumeSource{ HostPath: &corev1.HostPathVolumeSource{ Path: "/etc/pki", }, }, }
var PkiVolumeMount = corev1.VolumeMount{ Name: "pki", ReadOnly: true, MountPath: "/etc/pki", }
var ProxyLogLevels = []string{string(ProxyLogLevelInfo), string(ProxyLogLevelDebug), string(ProxyLogLevelWarn), string(ProxyLogsOff), string(ProxyLogLevelError)}
Functions ¶
func DefaultControllerRateLimiter ¶
func DefaultControllerRateLimiter(maxDelay time.Duration) workqueue.RateLimiter
DefaultControllerRateLimiter is a no-arg constructor for a default rate limiter for a workqueue. It has both overall and per-item rate limiting. The overall is a token bucket and the per-item is exponential
func GetConditionStatus ¶
func GetConditionStatus(state string) metav1.ConditionStatus
GetConditionStatus returns the state of the condition based on its lifecycle state
func GetConditionStatusFromK8sError ¶
func GetConditionStatusFromK8sError(err error) metav1.ConditionStatus
GetConditionStatusFromK8sError returns the state of the condition based on the error returned from K8s
func GetDefaultExponentialRetryPolicy ¶
func GetDefaultExponentialRetryPolicy() *common.RetryPolicy
func GetServiceMeshCondition ¶
func GetServiceMeshCondition(serviceMeshStatus *servicemeshapi.ServiceMeshStatus, conditionType servicemeshapi.ServiceMeshConditionType) *servicemeshapi.ServiceMeshCondition
GetServiceMeshCondition will get pointer to service mesh's existing condition.
func GetServiceMeshRetryPolicy ¶
func GetServiceMeshRetryPolicy(resource MeshResources) *common.RetryPolicy
func IsStringPresent ¶
func UpdateServiceMeshCondition ¶
func UpdateServiceMeshCondition(serviceMeshStatus *servicemeshapi.ServiceMeshStatus, conditionType servicemeshapi.ServiceMeshConditionType, status metav1.ConditionStatus, reason string, message string, generation int64) bool
UpdateServiceMeshCondition will update service mesh's condition and return whether it needs to be updated.
Types ¶
type InformerCacheType ¶
type InformerCacheType string
const ( ConfigMapsCache InformerCacheType = "ConfigMaps" NamespacesCache InformerCacheType = "Namespaces" ServicesCache InformerCacheType = "Services" )
type IngressResourceRequirements ¶
type IngressResourceRequirements string
const ( //TODO: This is a placeholder and it should be replaced with validated cpu usage after testing. IngressCPURequestSize IngressResourceRequirements = "100m" //TODO: This is a placeholder and it should be replaced with validated memory usage after testing. IngressMemoryRequestSize IngressResourceRequirements = "128Mi" //TODO: This is a placeholder and it should be replaced with validated cpu usage after testing. IngressCPULimitSize IngressResourceRequirements = "2000m" //TODO: This is a placeholder and it should be replaced with validated memory usage after testing. IngressMemoryLimitSize IngressResourceRequirements = "1024Mi" )
type InitContainerEnvVars ¶
type InitContainerEnvVars string
const ( ConfigureIpTablesEnvName InitContainerEnvVars = "CONFIGURE_IP_TABLES" ConfigureIpTablesEnvValue InitContainerEnvVars = "true" EnvoyPortEnvVarName InitContainerEnvVars = "ENVOY_PORT" EnvoyPortEnvVarValue InitContainerEnvVars = "15000" )
type MeshRef ¶
type MeshRef struct { Id api.OCID DisplayName servicemeshapi.Name Mtls servicemeshapi.MeshMutualTransportLayerSecurity }
type MeshResources ¶
type MeshResources string
const ( Mesh MeshResources = "Mesh" VirtualService MeshResources = "VirtualService" VirtualDeployment MeshResources = "VirtualDeployment" VirtualServiceRouteTable MeshResources = "VirtualServiceRouteTable" IngressGateway MeshResources = "IngressGateway" IngressGatewayRouteTable MeshResources = "IngressGatewayRouteTable" AccessPolicy MeshResources = "AccessPolicy" IngressGatewayDeployment MeshResources = "IngressGatewayDeployment" VirtualDeploymentBinding MeshResources = "VirtualDeploymentBinding" )
type MeshUserHeader ¶
type MeshUserHeader string
type PodWebhookError ¶
type PodWebhookError string
const ( InValidProxyLogAnnotation PodWebhookError = "Invalid proxy Log level" NoSidecarImageFound PodWebhookError = "No sidecar image found in config map" )
type ProxyEnvVars ¶
type ProxyEnvVars string
type ProxyLogLevelType ¶
type ProxyLogLevelType string
const ( ProxyLogLevelDebug ProxyLogLevelType = "debug" ProxyLogLevelInfo ProxyLogLevelType = "info" ProxyLogLevelWarn ProxyLogLevelType = "warn" ProxyLogLevelError ProxyLogLevelType = "error" ProxyLogsOff ProxyLogLevelType = "off" )
type ResourceConditionMessage ¶
type ResourceConditionMessage string
const ( ResourceActive ResourceConditionMessage = "Resource in the control plane is Active, successfully reconciled" ResourceDeleted ResourceConditionMessage = "Resource in the control plane is Deleted" ResourceFailed ResourceConditionMessage = "Resource in the control plane is Failed" ResourceCreating ResourceConditionMessage = "Resource in the control plane is Creating, about to reconcile" ResourceUpdating ResourceConditionMessage = "Resource in the control plane is Updating, about to reconcile" ResourceDeleting ResourceConditionMessage = "Resource in the control plane is Deleting, about to reconcile" DependenciesResolved ResourceConditionMessage = "Dependencies resolved successfully" ResourceConfigured ResourceConditionMessage = "Resource configured successfully" ResourceChangeCompartment ResourceConditionMessage = "Changing Compartment of the resource and verifying updates" )
func GetMessage ¶
func GetMessage(state string) ResourceConditionMessage
GetMessage returns message based on the state
type ResourceConditionMessageVDB ¶
type ResourceConditionMessageVDB string
const ( ResourceActiveVDB ResourceConditionMessageVDB = "The associated virtual deployment is Active, successfully reconciled" ResourceDeletedVDB ResourceConditionMessageVDB = "The associated virtual deployment in the control plane is Deleted" ResourceFailedVDB ResourceConditionMessageVDB = "The associated virtual deployment in the control plane is Failed" ResourceCreatingVDB ResourceConditionMessageVDB = "The associated virtual deployment in the control plane is Creating, about to reconcile" ResourceUpdatingVDB ResourceConditionMessageVDB = "The associated virtual deployment in the control plane is Updating, about to reconcile" ResourceDeletingVDB ResourceConditionMessageVDB = "The associated virtual deployment in the control plane is Deleting, about to reconcile" )
func GetVirtualDeploymentBindingConditionMessage ¶
func GetVirtualDeploymentBindingConditionMessage(state string) ResourceConditionMessageVDB
GetVirtualDeploymentBindingConditionMessage returns message for VirtualDeploymentBinding based on the state of the condition
type ResourceConditionReason ¶
type ResourceConditionReason string
const ( DependenciesNotResolved ResourceConditionReason = "DependenciesNotResolved" LifecycleStateChanged ResourceConditionReason = "LifecycleStateChanged" Successful ResourceConditionReason = "Successful" ConnectionError ResourceConditionReason = "ConnectionError" )
func GetReason ¶
func GetReason(status metav1.ConditionStatus) ResourceConditionReason
GetReason returns a reason based on the state of the condition
func GetVirtualDeploymentBindingConditionReason ¶
func GetVirtualDeploymentBindingConditionReason(status metav1.ConditionStatus) ResourceConditionReason
GetVirtualDeploymentBindingConditionReason returns a reason for VirtualDeploymentBinding based on the state of the condition
type ResourceRef ¶
type SidecarResourceRequirements ¶
type SidecarResourceRequirements string
const ( //TODO: This is a placeholder and it should be replaced with validated cpu usage after testing. SidecarCPURequestSize SidecarResourceRequirements = "100m" //TODO: This is a placeholder and it should be replaced with validated memory usage after testing. SidecarMemoryRequestSize SidecarResourceRequirements = "128Mi" //TODO: This is a placeholder and it should be replaced with validated cpu usage after testing. SidecarCPULimitSize SidecarResourceRequirements = "2000m" //TODO: This is a placeholder and it should be replaced with validated memory usage after testing. SidecarMemoryLimitSize SidecarResourceRequirements = "1024Mi" )
type ValidationWebhookError ¶
type ValidationWebhookError string
const ( UnknownStatusOnDelete ValidationWebhookError = "delete cannot be applied as the status is unknown" NotActiveOnUpdate ValidationWebhookError = "update cannot be applied as the state is not Active" DependenciesIsUnknownOnUpdate ValidationWebhookError = "update cannot be applied as at least one dependency status is unknown" UnknownStateOnUpdate ValidationWebhookError = "update cannot be applied as the state in the mesh Control Plane is unknown" CertificateAuthoritiesIsImmutable ValidationWebhookError = "spec.certificateAuthorities is immutable" NameIsImmutable ValidationWebhookError = "spec.name is immutable" MetadataNameLengthExceeded ValidationWebhookError = "metadata.name length should not exceed 190 characters" TrafficRouteRuleIsEmpty ValidationWebhookError = "spec.routeRule cannot be empty, should contain one of httpRoute,tcpRoute or tlsPassthroughRoute" TrafficRouteRuleIsNotUnique ValidationWebhookError = "spec.routeRule cannot contain more than one type" MeshReferenceIsImmutable ValidationWebhookError = "spec.mesh is immutable" MeshReferenceIsEmpty ValidationWebhookError = "spec.mesh cannot be empty, should contain one of ref or id" MeshReferenceIsNotUnique ValidationWebhookError = "spec.mesh cannot contain both ref and id" MeshReferenceIsDeleting ValidationWebhookError = "spec.mesh is being deleted" MeshReferenceOCIDNotFound ValidationWebhookError = "spec.mesh.id has been deleted or does not exist" IngressGatewayReferenceIsImmutable ValidationWebhookError = "spec.ingressGateway is immutable" IngressGatewayReferenceIsEmpty ValidationWebhookError = "spec.ingressGateway cannot be empty, should contain one of ref or id" IngressGatewayReferenceIsNotUnique ValidationWebhookError = "spec.ingressGateway cannot contain both ref and id" IngressGatewayReferenceIsDeleting ValidationWebhookError = "spec.ingressGateway is being deleted" VirtualServiceReferenceIsImmutable ValidationWebhookError = "spec.virtualService is immutable" VirtualServiceReferenceIsEmpty ValidationWebhookError = "spec.virtualService cannot be empty, should contain one of ref or id" VirtualServiceReferenceIsNotUnique ValidationWebhookError = "spec.virtualService cannot contain both ref and id" VirtualServiceReferenceIsDeleting ValidationWebhookError = "spec.virtualService is being deleted" VirtualServiceHostNotFound ValidationWebhookError = "parent virtualService doesn't have any host" VirtualDeploymentReferenceIsEmpty ValidationWebhookError = "spec.virtualDeployment cannot be empty, should contain one of ref or id" VirtualDeploymentReferenceIsNotUnique ValidationWebhookError = "spec.virtualDeployment cannot contain both ref and id" VirtualDeploymentReferenceIsDeleting ValidationWebhookError = "spec.virtualDeployment is being deleted" VirtualDeploymentOnlyHaveHostnameOrListener ValidationWebhookError = "service discovery and listeners should be provided together or be both empty" KubernetesServiceReferenceIsDeleting ValidationWebhookError = "spec.service is being deleted" KubernetesServiceReferenceNotFound ValidationWebhookError = "spec.service has been deleted or does not exist" HostNameIsEmptyForDNS ValidationWebhookError = "hostname cannot be empty when service discovery type is DNS" HostNameShouldBeEmptyForDISABLED ValidationWebhookError = "hostname should be empty when service discovery type is DISABLED" IngressGatewayDeploymentPortsWithMultipleProtocols ValidationWebhookError = "ingressgatewaydeployment.spec cannot have multiple protocols." IngressGatewayDeploymentWithMultiplePortEmptyName ValidationWebhookError = "ingressgatewaydeployment.spec.ports.name is required when multiple ports are specified" IngressGatewayDeploymentPortsWithNonUniqueNames ValidationWebhookError = "ingressgatewaydeployment.spec.ports.name must be unique" IngressGatewayDeploymentInvalidMaxPod ValidationWebhookError = "spec.deployment.autoscaling maxPods cannot be less than minPods." IngressGatewayDeploymentRedundantServicePorts ValidationWebhookError = "ingressgatewaydeployment.spec has target ports without service " VirtualServiceMtlsNotSatisfied ValidationWebhookError = "virtualservice mtls mode does not meet the minimum level set on parent mesh" MeshMtlsNotSatisfied ValidationWebhookError = "mtls mode of dependent virtual services does not meet the minimum level being set on mesh" VirtualServiceHostsShouldNotBeEmpty ValidationWebhookError = "virtualservice hosts should not be empty when there's virtual deployment has listeners and hostname" )