Documentation
¶
Overview ¶
+kubebuilder:object:generate=true
Index ¶
- Constants
- Variables
- type Adapter
- type AppDeploymentPolicy
- type ArchiveReason
- type ComponentDefinition
- type ComponentType
- type Dependency
- type Details
- type EnvSchema
- type EnvTemplate
- type EnvVarDefinition
- type EnvVarSchema
- type EnvVarType
- type EventType
- type FollowRedirects
- type Problem
- type ProblemSource
- type ProblemSourceKind
- type ProblemType
- type Problems
- type RouteSpec
- type Val
- func (val *Val) Any() any
- func (val *Val) ArrayFloat() []float64
- func (val *Val) ArrayInt() []int
- func (val *Val) ArrayString() []string
- func (val *Val) Bool() bool
- func (val *Val) BoolDef(def bool) bool
- func (in *Val) DeepCopy() *Val
- func (in *Val) DeepCopyInto(out *Val)
- func (val *Val) EnvVarType() EnvVarType
- func (val *Val) Equals(rhs *Val) bool
- func (val *Val) Float() float64
- func (val *Val) FloatDef(def float64) float64
- func (val *Val) Int() int
- func (val *Val) IntDef(def int) int
- func (val *Val) IsArrayNumber() bool
- func (val *Val) IsArrayString() bool
- func (val *Val) IsBool() bool
- func (val *Val) IsEmpty() bool
- func (val *Val) IsNil() bool
- func (val *Val) IsNumber() bool
- func (val *Val) IsString() bool
- func (val *Val) IsUnknown() bool
- func (val *Val) MarshalJSON() ([]byte, error)
- func (val *Val) Proto() *structpb.Value
- func (val *Val) String() string
- func (val *Val) StringDef(def string) string
- func (val *Val) UnmarshalJSON(value []byte) error
- type ValType
- type VirtualEnvData
- type VirtualEnvPolicy
Constants ¶
const ( DefaultLogFormat = "json" DefaultLogLevel = "info" DefaultMaxEventSizeBytes = 5242880 // 5 MiB DefaultReleaseHistoryLimitCount = 10 DefaultReleasePendingDeadlineSeconds = 300 // 5 mins DefaultTimeoutSeconds = 30 MaximumMaxEventSizeBytes = 16777216 // 16 MiB )
const ( LabelK8sAppBranch string = "kubefox.xigxog.io/app-branch" LabelK8sAppCommit string = "kubefox.xigxog.io/app-commit" LabelK8sAppCommitShort string = "kubefox.xigxog.io/app-commit-short" LabelK8sAppComponent string = "kubefox.xigxog.io/app-component" LabelK8sAppDeployment string = "kubefox.xigxog.io/app-deployment" LabelK8sAppName string = "app.kubernetes.io/name" LabelK8sAppTag string = "kubefox.xigxog.io/app-tag" LabelK8sAppVersion string = "kubefox.xigxog.io/app-version" LabelK8sComponent string = "app.kubernetes.io/component" LabelK8sComponentCommit string = "kubefox.xigxog.io/component-commit" LabelK8sComponentCommitShort string = "kubefox.xigxog.io/component-commit-short" LabelK8sComponentType string = "kubefox.xigxog.io/component-type" LabelK8sInstance string = "app.kubernetes.io/instance" LabelK8sPlatform string = "kubefox.xigxog.io/platform" LabelK8sPlatformComponent string = "kubefox.xigxog.io/platform-component" LabelK8sReleaseStatus string = "kubefox.xigxog.io/release-status" LabelK8sRuntimeVersion string = "kubefox.xigxog.io/runtime-version" LabelK8sSourceResourceVersion string = "kubefox.xigxog.io/source-resource-version" LabelK8sVirtualEnv string = "kubefox.xigxog.io/virtual-env" LabelK8sVirtualEnvParent string = "kubefox.xigxog.io/virtual-env-parent" LabelK8sVirtualEnvSnapshot string = "kubefox.xigxog.io/virtual-env-snapshot" )
Kubernetes Labels
const ( AnnotationTemplateData string = "kubefox.xigxog.io/template-data" AnnotationTemplateDataHash string = "kubefox.xigxog.io/template-data-hash" )
Kubernetes Annotations
const ( LabelOCIApp string = "com.xigxog.kubefox.app" LabelOCIComponent string = "com.xigxog.kubefox.component" LabelOCICreated string = "org.opencontainers.image.created" LabelOCIRevision string = "org.opencontainers.image.revision" LabelOCISource string = "org.opencontainers.image.source" )
Container Labels
const ( EnvNodeName = "KUBEFOX_NODE" EnvPodIP = "KUBEFOX_POD_IP" EnvPodName = "KUBEFOX_POD" )
const ( PlatformComponentBootstrap string = "bootstrap" PlatformComponentBroker string = "broker" PlatformComponentHTTPSrv string = "httpsrv" PlatformComponentNATS string = "nats" PlatformComponentOperator string = "operator" )
const ( ConditionTypeAvailable string = "Available" ConditionTypeProgressing string = "Progressing" ConditionTypeActiveReleaseAvailable string = "ActiveReleaseAvailable" ConditionTypeReleasePending string = "ReleasePending" )
const ( ConditionReasonAppDeploymentAvailable string = "AppDeploymentAvailable" ConditionReasonComponentDeploymentFailed string = "ComponentDeploymentFailed" ConditionReasonComponentDeploymentProgressing string = "ComponentDeploymentProgressing" ConditionReasonComponentsAvailable string = "ComponentsAvailable" ConditionReasonComponentsDeployed string = "ComponentsDeployed" ConditionReasonNoRelease string = "NoRelease" ConditionReasonPendingDeadlineExceeded string = "PendingDeadlineExceeded" ConditionReasonPlatformComponentsAvailable string = "PlatformComponentsAvailable" ConditionReasonProblemsExist string = "ProblemsExist" ConditionReasonReconcileFailed string = "ReconcileFailed" ConditionReasonReleaseActive string = "ReleaseActive" ConditionReasonReleasePending string = "ReleasePending" )
const ( GRPCKeyApp string = "app" GRPCKeyCommit string = "commit" GRPCKeyComponent string = "component" GRPCKeyId string = "id" GRPCKeyName string = "name" GRPCKeyPlatform string = "platform" GRPCKeyToken string = "token" GRPCKeyType string = "type" )
gRPC metadata keys.
const ( ValKeyHeader = "header" ValKeyHost = "host" ValKeyMaxEventSize = "maxEventSize" ValKeyMethod = "method" ValKeyPath = "path" ValKeyQuery = "queryParam" ValKeySpanId = "spanId" ValKeyStatus = "status" ValKeyStatusCode = "statusCode" ValKeyTraceFlags = "traceFlags" ValKeyTraceId = "traceId" ValKeyURL = "url" ValKeyVaultURL = "vaultURL" )
Keys for well known values.
const ( HeaderAdapter = "kubefox-adapter" HeaderAppDep = "kubefox-app-deployment" HeaderAppDepAbbrv = "kf-dep" HeaderAppDepShort = "kfd" HeaderContentLength = "Content-Length" HeaderEventType = "kubefox-event-type" HeaderEventTypeAbbrv = "kf-type" HeaderEventTypeShort = "kft" HeaderHost = "Host" HeaderPlatform = "kubefox-platform" HeaderTraceId = "kubefox-trace-id" HeaderVirtualEnv = "kubefox-virtual-env" HeaderVirtualEnvAbbrv = "kf-env" HeaderVirtualEnvShort = "kfe" )
Headers and query params.
const ( CharSetUTF8 = "charset=UTF-8" DataSchemaEvent = "kubefox.proto.v1.Event" ContentTypeHTML = "text/html" ContentTypeJSON = "application/json" ContentTypePlain = "text/plain" ContentTypeProtobuf = "application/protobuf" )
const (
DefaultRouteId = -1
)
const (
FinalizerReleaseProtection string = "kubefox.xigxog.io/release-protection"
)
Variables ¶
var ( RegexpCommit = regexp.MustCompile(`^[0-9a-f]{40}$`) RegexpGitRef = regexp.MustCompile(`^[a-z0-9][a-z0-9-\\.]{0,28}[a-z0-9]$`) RegexpImage = regexp.MustCompile(`^.*:[a-z0-9-]{40}$`) RegexpName = regexp.MustCompile(`^[a-z0-9][a-z0-9-]{0,28}[a-z0-9]$`) RegexpUUID = regexp.MustCompile(`^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$`) )
var ( KubeFoxHome = utils.EnvDef("KUBEFOX_HOME", path.Join("/", "tmp", "kubefox")) FileCACert = "ca.crt" FileTLSCert = "tls.crt" FileTLSKey = "tls.key" PathCACert = path.Join(KubeFoxHome, FileCACert) PathSvcAccToken = "/var/run/secrets/kubernetes.io/serviceaccount/token" PathTLSCert = path.Join(KubeFoxHome, FileTLSCert) PathTLSKey = path.Join(KubeFoxHome, FileTLSKey) )
var EFS embed.FS
Functions ¶
This section is empty.
Types ¶
type Adapter ¶
type Adapter interface { GetName() string GetComponentType() ComponentType Validate(data *VirtualEnvData) Problems }
+kubebuilder:object:generate=false
type AppDeploymentPolicy ¶
type AppDeploymentPolicy string
const ( AppDeploymentPolicyVersionOptional AppDeploymentPolicy = "VersionOptional" AppDeploymentPolicyVersionRequired AppDeploymentPolicy = "VersionRequired" )
type ArchiveReason ¶
type ArchiveReason string
const ( ArchiveReasonPendingDeadlineExceeded ArchiveReason = "PendingDeadlineExceeded" ArchiveReasonRolledBack ArchiveReason = "RolledBack" ArchiveReasonSuperseded ArchiveReason = "Superseded" )
type ComponentDefinition ¶
type ComponentDefinition struct { // +kubebuilder:validation:Required // +kubebuilder:validation:Enum=DBAdapter;KubeFox;HTTPAdapter Type ComponentType `json:"type"` Routes []RouteSpec `json:"routes,omitempty"` DefaultHandler bool `json:"defaultHandler,omitempty"` EnvVarSchema EnvVarSchema `json:"envVarSchema,omitempty"` Dependencies map[string]*Dependency `json:"dependencies,omitempty"` }
func (*ComponentDefinition) DeepCopy ¶
func (in *ComponentDefinition) DeepCopy() *ComponentDefinition
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentDefinition.
func (*ComponentDefinition) DeepCopyInto ¶
func (in *ComponentDefinition) DeepCopyInto(out *ComponentDefinition)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ComponentType ¶
type ComponentType string
const ( ComponentTypeBroker ComponentType = "Broker" ComponentTypeDatabaseAdapter ComponentType = "DBAdapter" ComponentTypeHTTPAdapter ComponentType = "HTTPAdapter" ComponentTypeKubeFox ComponentType = "KubeFox" ComponentTypeNATS ComponentType = "NATS" )
func (ComponentType) IsAdapter ¶
func (c ComponentType) IsAdapter() bool
type Dependency ¶
type Dependency struct { // +kubebuilder:validation:Required // +kubebuilder:validation:Enum=DBAdapter;KubeFox;HTTPAdapter Type ComponentType `json:"type"` }
func (*Dependency) DeepCopy ¶
func (in *Dependency) DeepCopy() *Dependency
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Dependency.
func (*Dependency) DeepCopyInto ¶
func (in *Dependency) DeepCopyInto(out *Dependency)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Details ¶
type Details struct { Title string `json:"title,omitempty"` Description string `json:"description,omitempty"` }
func (*Details) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Details.
func (*Details) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type EnvSchema ¶
type EnvSchema struct { Vars EnvVarSchema `json:"vars,omitempty"` Secrets EnvVarSchema `json:"secrets,omitempty"` }
func (*EnvSchema) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvSchema.
func (*EnvSchema) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type EnvTemplate ¶
type EnvTemplate struct {
// contains filtered or unexported fields
}
+kubebuilder:object:generate=false
func NewEnvTemplate ¶
func NewEnvTemplate(template string) (*EnvTemplate, error)
func (*EnvTemplate) EnvSchema ¶
func (r *EnvTemplate) EnvSchema() *EnvSchema
func (*EnvTemplate) Resolve ¶
func (r *EnvTemplate) Resolve(data *VirtualEnvData) (string, error)
func (*EnvTemplate) Template ¶
func (r *EnvTemplate) Template() string
type EnvVarDefinition ¶
type EnvVarDefinition struct { // +kubebuilder:validation:Enum=Array;Boolean;Number;String Type EnvVarType `json:"type,omitempty"` // +kubebuilder:default=false Required bool `json:"required"` }
func (*EnvVarDefinition) DeepCopy ¶
func (in *EnvVarDefinition) DeepCopy() *EnvVarDefinition
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvVarDefinition.
func (*EnvVarDefinition) DeepCopyInto ¶
func (in *EnvVarDefinition) DeepCopyInto(out *EnvVarDefinition)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type EnvVarSchema ¶
type EnvVarSchema map[string]*EnvVarDefinition
func (EnvVarSchema) DeepCopy ¶
func (in EnvVarSchema) DeepCopy() EnvVarSchema
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvVarSchema.
func (EnvVarSchema) DeepCopyInto ¶
func (in EnvVarSchema) DeepCopyInto(out *EnvVarSchema)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (EnvVarSchema) Validate ¶
func (e EnvVarSchema) Validate(vars map[string]*Val, src *ProblemSource) []Problem
type EnvVarType ¶
type EnvVarType string
const ( EnvVarTypeArray EnvVarType = "Array" EnvVarTypeBoolean EnvVarType = "Boolean" EnvVarTypeNumber EnvVarType = "Number" EnvVarTypeString EnvVarType = "String" )
type EventType ¶
type EventType string
const ( EventTypeCron EventType = "io.kubefox.cron" EventTypeDapr EventType = "io.kubefox.dapr" EventTypeHTTP EventType = "io.kubefox.http" EventTypeKubeFox EventType = "io.kubefox.kubefox" EventTypeKubernetes EventType = "io.kubefox.kubernetes" )
Component event types
const ( EventTypeAck EventType = "io.kubefox.ack" EventTypeBootstrap EventType = "io.kubefox.bootstrap" EventTypeError EventType = "io.kubefox.error" EventTypeHealth EventType = "io.kubefox.health" EventTypeMetrics EventType = "io.kubefox.metrics" EventTypeNack EventType = "io.kubefox.nack" EventTypeRegister EventType = "io.kubefox.register" EventTypeRejected EventType = "io.kubefox.rejected" EventTypeTelemetry EventType = "io.kubefox.telemetry" EventTypeUnknown EventType = "io.kubefox.unknown" )
Platform event types
type FollowRedirects ¶
type FollowRedirects string
const ( FollowRedirectsAlways FollowRedirects = "Always" FollowRedirectsNever FollowRedirects = "Never" FollowRedirectsSameHost FollowRedirects = "SameHost" )
type Problem ¶
type Problem struct { Type ProblemType `json:"type"` Message string `json:"message,omitempty"` // Resources and attributes causing problem. Causes []ProblemSource `json:"causes,omitempty"` }
func (*Problem) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Problem.
func (*Problem) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ProblemSource ¶
type ProblemSource struct { Kind ProblemSourceKind `json:"kind"` Name string `json:"name,omitempty"` // ObservedGeneration represents the .metadata.generation of the // ProblemSource that the problem was generated from. For instance, if the // ProblemSource .metadata.generation is currently 12, but the // observedGeneration is 9, the problem is out of date with respect to the // current state of the instance. ObservedGeneration int64 `json:"observedGeneration,omitempty"` // Path of source object attribute causing problem. Path string `json:"path,omitempty"` // Value causing problem. Pointer is used to distinguish between not set and // empty string. Value *string `json:"value,omitempty"` }
func (*ProblemSource) DeepCopy ¶
func (in *ProblemSource) DeepCopy() *ProblemSource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProblemSource.
func (*ProblemSource) DeepCopyInto ¶
func (in *ProblemSource) DeepCopyInto(out *ProblemSource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ProblemSourceKind ¶
type ProblemSourceKind string
const ( ProblemSourceKindAppDeployment ProblemSourceKind = "AppDeployment" ProblemSourceKindComponent ProblemSourceKind = "Component" ProblemSourceKindHTTPAdapter ProblemSourceKind = "HTTPAdapter" ProblemSourceKindVirtualEnv ProblemSourceKind = "VirtualEnv" ProblemSourceKindVirtualEnvSnapshot ProblemSourceKind = "VirtualEnvSnapshot" )
type ProblemType ¶
type ProblemType string
const ( ProblemTypeAdapterNotFound ProblemType = "AdapterNotFound" ProblemTypeAppDeploymentFailed ProblemType = "AppDeploymentFailed" ProblemTypeDependencyInvalid ProblemType = "DependencyInvalid" ProblemTypeDependencyNotFound ProblemType = "DependencyNotFound" ProblemTypeParseError ProblemType = "ParseError" ProblemTypePolicyViolation ProblemType = "PolicyViolation" ProblemTypeRouteConflict ProblemType = "RouteConflict" ProblemTypeVarNotFound ProblemType = "VarNotFound" ProblemTypeVarWrongType ProblemType = "VarWrongType" ProblemTypeVirtualEnvSnapshotFailed ProblemType = "VirtualEnvSnapshotFailed" )
type Problems ¶
type Problems []Problem
func (Problems) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Problems.
func (Problems) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RouteSpec ¶
type RouteSpec struct { // +kubebuilder:validation:Required Id int `json:"id"` // +kubebuilder:validation:Required Rule string `json:"rule"` Priority int `json:"priority,omitempty"` EnvVarSchema EnvVarSchema `json:"envVarSchema,omitempty"` }
func (*RouteSpec) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouteSpec.
func (*RouteSpec) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Val ¶
type Val struct { Type ValType `json:"-"` // contains filtered or unexported fields }
func ValArrayFloat ¶
func ValArrayInt ¶
func ValArrayString ¶
func (*Val) ArrayFloat ¶
ArrayFloat returns the array value if type is ArrayNumber. Otherwise nil is returned.
func (*Val) ArrayInt ¶
ArrayInt returns the array value if type is ArrayNumber. Otherwise nil is returned.
func (*Val) ArrayString ¶
ArrayString returns the array value if type is ArrayString or ArrayNumber. Otherwise nil is returned.
func (*Val) Bool ¶
Bool returns the boolean value if type is Bool. If type is Number, false will be returned if value is 0, otherwise true is returned. If type is String, an attempt to parse the boolean value will be made. If parsing fails or type is Array false will be returned.
func (*Val) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Val.
func (*Val) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Val) EnvVarType ¶
func (val *Val) EnvVarType() EnvVarType
func (*Val) Float ¶
Float returns the float64 value if type is Number. If type is Bool 1 will be returned if true, otherwise 0 is returned. If type is String an attempt to parse the number will be made. If parsing fails or type is Array 0 will be returned.
func (*Val) Int ¶
Int returns the int value if type is Number. If type is Bool 1 will be returned if true, otherwise 0 is returned. If type is String an attempt to parse the number will be made. If parsing fails or type is Array 0 will be returned.
func (*Val) IsArrayNumber ¶
func (*Val) IsArrayString ¶
func (*Val) MarshalJSON ¶
MarshalJSON implements the json.Marshaller interface.
func (*Val) String ¶
String returns the string value if type is String. If type is Array the JSON representation of the array is returned. Otherwise default string format of the value is returned.
func (*Val) UnmarshalJSON ¶
UnmarshalJSON implements the json.Unmarshaller interface.
type VirtualEnvData ¶
type VirtualEnvData struct { Vars map[string]*Val `json:"vars,omitempty"` Secrets map[string]string `json:"secrets,omitempty"` ResolvedSecrets map[string]*Val `json:"-"` }
func (*VirtualEnvData) DeepCopy ¶
func (in *VirtualEnvData) DeepCopy() *VirtualEnvData
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualEnvData.
func (*VirtualEnvData) DeepCopyInto ¶
func (in *VirtualEnvData) DeepCopyInto(out *VirtualEnvData)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type VirtualEnvPolicy ¶
type VirtualEnvPolicy string
const ( VirtualEnvPolicySnapshotOptional VirtualEnvPolicy = "SnapshotOptional" VirtualEnvPolicySnapshotRequired VirtualEnvPolicy = "SnapshotRequired" )
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
+kubebuilder:object:generate=true
|
+kubebuilder:object:generate=true |
v1alpha1
Package v1alpha1 contains API Schema definitions for the k8s v1alpha1 API group +kubebuilder:object:generate=true +groupName=kubefox.xigxog.io
|
Package v1alpha1 contains API Schema definitions for the k8s v1alpha1 API group +kubebuilder:object:generate=true +groupName=kubefox.xigxog.io |