Documentation ¶
Overview ¶
Package v1beta1 contains API Schema definitions for the kubedirector v1beta1 API group +k8s:deepcopy-gen=package,register +groupName=kubedirector.hpe.com
Package v1beta1 contains API Schema definitions for the kubedirector v1beta1 API group +k8s:deepcopy-gen=package,register +groupName=kubedirector.hpe.com
Index ¶
- Constants
- Variables
- type BlockStorage
- type ClusterStorage
- type Connections
- type ContainerSpec
- type EnvVar
- type FileInjections
- type FilePermissions
- type KDSecret
- type KubeDirectorApp
- type KubeDirectorAppList
- type KubeDirectorAppSpec
- type KubeDirectorCluster
- type KubeDirectorClusterList
- type KubeDirectorClusterSpec
- type KubeDirectorClusterStatus
- type KubeDirectorConfig
- type KubeDirectorConfigList
- type KubeDirectorConfigSpec
- type KubeDirectorConfigStatus
- type Label
- type MemberStateDetail
- type MemberStatus
- type NodeGroupConfig
- type NodeRole
- type NotificationDesc
- type Role
- type RoleService
- type RoleStatus
- type Service
- type ServiceEndpoint
- type SetupPackage
- type SetupPackageURL
- type StateRollup
Constants ¶
const ( // UID represents the old naming scheme where object names were generated // with unique UID extensions. UID string = "UID" // CrNameRole represents the new naming scheme based on cluster name and // respective role name. CrNameRole string = "CrNameRole" )
Variables ¶
var ( // SchemeGroupVersion is group version used to register these objects SchemeGroupVersion = schema.GroupVersion{Group: "kubedirector.hpe.com", Version: "v1beta1"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion} )
Functions ¶
This section is empty.
Types ¶
type BlockStorage ¶ added in v0.5.3
type BlockStorage struct { StorageClass *string `json:"storageClassName,omitempty"` Path *string `json:"pathPrefix,omitempty"` Size *string `json:"size,omitempty"` NumDevices *int32 `json:"numDevices,omitempty"` }
BlockStorage defines the block storage type, path, and optionally size, if any, to be used for mounting a block volume in a role.
type ClusterStorage ¶
type ClusterStorage struct { Size string `json:"size"` StorageClass *string `json:"storageClassName,omitempty"` }
ClusterStorage defines the persistent storage size/type, if any, to be used for certain specified directories of each container filesystem in a role.
type Connections ¶
type Connections struct { Clusters []string `json:"clusters,omitempty"` ConfigMaps []string `json:"configmaps,omitempty"` Secrets []string `json:"secrets,omitempty"` }
Connections specifies list of cluster objects and configmaps objects that has be connected to the cluster.
type ContainerSpec ¶ added in v0.6.0
ContainerSpec comments
type FileInjections ¶
type FileInjections struct { SrcURL string `json:"srcURL"` DestDir string `json:"destDir"` Permissions *FilePermissions `json:"permissions,omitempty"` }
FileInjections specifies file injection spec, including file permissions on the destination file
type FilePermissions ¶
type FilePermissions struct { FileMode *int32 `json:"fileMode,omitempty"` FileOwner *string `json:"fileOwner,omitempty"` FileGroup *string `json:"fileGroup,omitempty"` }
FilePermissions specifies file mode along with user/group information for the file
type KDSecret ¶
type KDSecret struct { Name string `json:"name"` DefaultMode *int32 `json:"defaultMode,omitempty"` MountPath string `json:"mountPath"` ReadOnly bool `json:"readOnly,omitempty"` }
KDSecret describes a secret object intended to be mounted inside a container.
type KubeDirectorApp ¶
type KubeDirectorApp struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec KubeDirectorAppSpec `json:"spec,omitempty"` }
KubeDirectorApp is the Schema for the kubedirectorapps API. +kubebuilder:resource:path=kubedirectorapps,scope=Namespaced
type KubeDirectorAppList ¶
type KubeDirectorAppList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []KubeDirectorApp `json:"items"` }
KubeDirectorAppList contains a list of KubeDirectorApp.
type KubeDirectorAppSpec ¶
type KubeDirectorAppSpec struct { Label Label `json:"label"` DistroID string `json:"distroID"` Version string `json:"version"` SchemaVersion int `json:"configSchemaVersion"` DefaultImageRepoTag *string `json:"defaultImageRepoTag,omitempty"` DefaultSetupPackage SetupPackage `json:"defaultConfigPackage,omitempty"` Services []Service `json:"services,omitempty"` NodeRoles []NodeRole `json:"roles"` Config NodeGroupConfig `json:"config"` DefaultPersistDirs *[]string `json:"defaultPersistDirs,omitempty"` DefaultEventList *[]string `json:"defaultEventList,omitempty"` Capabilities []corev1.Capability `json:"capabilities,omitempty"` SystemdRequired bool `json:"systemdRequired,omitempty"` LogoURL string `json:"logoURL,omitempty"` }
KubeDirectorAppSpec defines the desired state of KubeDirectorApp.
type KubeDirectorCluster ¶
type KubeDirectorCluster struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec KubeDirectorClusterSpec `json:"spec,omitempty"` Status *KubeDirectorClusterStatus `json:"status,omitempty"` AppSpec *KubeDirectorApp `json:"-"` }
KubeDirectorCluster is the Schema for the kubedirectorclusters API. This object represents a single virtual cluster. This cluster will be implemented by KubeDirector using native k8s objects. Note that the AppSpec field is only used internally in KubeDirector; that field is not persisted to k8s. +kubebuilder:subresource:status +kubebuilder:resource:path=kubedirectorclusters,scope=Namespaced
type KubeDirectorClusterList ¶
type KubeDirectorClusterList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []KubeDirectorCluster `json:"items"` }
KubeDirectorClusterList contains a list of KubeDirectorCluster.
type KubeDirectorClusterSpec ¶
type KubeDirectorClusterSpec struct { AppID string `json:"app"` AppCatalog *string `json:"appCatalog,omitempty"` ServiceType *string `json:"serviceType,omitempty"` Roles []Role `json:"roles"` DefaultSecret *KDSecret `json:"defaultSecret,omitempty"` Connections Connections `json:"connections"` NamingScheme *string `json:"namingScheme,omitempty"` }
KubeDirectorClusterSpec defines the desired state of KubeDirectorCluster. AppID references a KubeDirectorApp CR. ServiceType indicates whether to use NodePort or LoadBalancer services. The Roles field describes the requested cluster roles, each of which will be implemented (by KubeDirector) using a StatefulSet.
type KubeDirectorClusterStatus ¶
type KubeDirectorClusterStatus struct { State string `json:"state"` MemberStateRollup StateRollup `json:"memberStateRollup"` GenerationUID string `json:"generationUID"` SpecGenerationToProcess *int64 `json:"specGenerationToProcess,omitempty"` ClusterService string `json:"clusterService"` LastNodeID int64 `json:"lastNodeID"` Roles []RoleStatus `json:"roles"` LastConnectionHash string `json:"lastConnectionHash"` }
KubeDirectorClusterStatus defines the observed state of KubeDirectorCluster. It identifies which native k8s objects make up the cluster, and broadly indicates ongoing operations of cluster creation or reconfiguration.
type KubeDirectorConfig ¶
type KubeDirectorConfig struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec *KubeDirectorConfigSpec `json:"spec,omitempty"` Status *KubeDirectorConfigStatus `json:"status,omitempty"` }
KubeDirectorConfig is the Schema for the kubedirectorconfigs API. +kubebuilder:subresource:status +kubebuilder:resource:path=kubedirectorconfigs,scope=Namespaced
type KubeDirectorConfigList ¶
type KubeDirectorConfigList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []KubeDirectorConfig `json:"items"` }
KubeDirectorConfigList contains a list of KubeDirectorConfig.
type KubeDirectorConfigSpec ¶
type KubeDirectorConfigSpec struct { StorageClass *string `json:"defaultStorageClassName,omitempty"` ServiceType *string `json:"defaultServiceType,omitempty"` NativeSystemdSupport *bool `json:"nativeSystemdSupport,omitempty"` RequiredSecretPrefix *string `json:"requiredSecretPrefix,omitempty"` ClusterSvcDomainBase *string `json:"clusterSvcDomainBase,omitempty"` DefaultNamingScheme *string `json:"defaultNamingScheme,omitempty"` }
KubeDirectorConfigSpec defines the desired state of KubeDirectorConfig.
type KubeDirectorConfigStatus ¶
type KubeDirectorConfigStatus struct { GenerationUID string `json:"generationUID"` State string `json:"state"` }
KubeDirectorConfigStatus defines the observed state of KubeDirectorConfig.
type MemberStateDetail ¶
type MemberStateDetail struct { ConfigErrorDetail *string `json:"configErrorDetail,omitempty"` LastConfigDataGeneration *int64 `json:"lastConfigDataGeneration,omitempty"` LastSetupGeneration *int64 `json:"lastSetupGeneration,omitempty"` ConfiguringContainer string `json:"configuringContainer,omitempty"` LastConfiguredContainer string `json:"lastConfiguredContainer,omitempty"` LastKnownContainerState string `json:"lastKnownContainerState,omitempty"` PendingNotifyCmds []*NotificationDesc `json:"pendingNotifyCmds,omitempty"` LastConnectionVersion *int64 `json:"lastConnectionVersion,omitempty"` }
MemberStateDetail digs into detail about the management of configmeta and app scripts in the member.
type MemberStatus ¶
type MemberStatus struct { Pod string `json:"pod"` Service string `json:"service"` AuthToken string `json:"authToken,omitempty"` PVC string `json:"pvc,omitempty"` State string `json:"state"` StateDetail MemberStateDetail `json:"stateDetail,omitempty"` NodeID int64 `json:"nodeID"` BlockDevicePaths []string `json:"blockDevicePaths,omitempty"` }
MemberStatus describes the component objects of a virtual cluster member.
type NodeGroupConfig ¶
type NodeGroupConfig struct { RoleServices []RoleService `json:"roleServices"` SelectedRoles []string `json:"selectedRoles"` ConfigMetadata map[string]string `json:"configMeta,omitempty"` }
NodeGroupConfig identifies a set of roles, and the services on those roles. The top-level config indicates which roles and services will always be active. Implementation of "config choices" will introduce other conditional configs.
type NodeRole ¶
type NodeRole struct { ID string `json:"id"` Cardinality string `json:"cardinality"` ImageRepoTag *string `json:"imageRepoTag,omitempty"` SetupPackage SetupPackage `json:"configPackage,omitempty"` PersistDirs *[]string `json:"persistDirs,omitempty"` EventList *[]string `json:"eventList,omitempty"` MinResources *corev1.ResourceList `json:"minResources,omitempty"` ContainerSpec *ContainerSpec `json:"containerSpec,omitempty"` }
NodeRole describes a subset of virtual cluster members that will provide the same services. At deployment time all role members will receive identical resource assignments.
type NotificationDesc ¶
type NotificationDesc struct {
Arguments []string `json:"arguments,omitempty"`
}
NotificationDesc contains the info necessary to perform a notify command.
type Role ¶
type Role struct { Name string `json:"id"` PodLabels map[string]string `json:"podLabels,omitempty"` ServiceLabels map[string]string `json:"serviceLabels,omitempty"` Members *int32 `json:"members,omitempty"` Resources corev1.ResourceRequirements `json:"resources"` Affinity *corev1.Affinity `json:"affinity,omitempty"` Storage *ClusterStorage `json:"storage,omitempty"` EnvVars []corev1.EnvVar `json:"env,omitempty"` FileInjections []FileInjections `json:"fileInjections,omitempty"` Secret *KDSecret `json:"secret,omitempty"` BlockStorage *BlockStorage `json:"blockStorage,omitempty"` }
Role describes a subset of the virtual cluster members that shares a common image, resource requirements, persistent storage definition, and (as defined by the cluster's KubeDirectorApp) set of service endpoints.
type RoleService ¶
RoleService associates a service with a role.
type RoleStatus ¶
type RoleStatus struct { Name string `json:"id"` StatefulSet string `json:"statefulSet"` Members []MemberStatus `json:"members"` }
RoleStatus describes the component objects of a virtual cluster role.
type Service ¶
type Service struct { ID string `json:"id"` Label Label `json:"label,omitempty"` Endpoint ServiceEndpoint `json:"endpoint,omitempty"` ExportedService string `json:"exported_service,omitempty"` }
Service describes a network endpoint that should be exposed for external access, and/or identified for other use by API clients or consumers internal to the virtual cluster (e.g. app setup packages).
type ServiceEndpoint ¶
type ServiceEndpoint struct { URLScheme string `json:"urlScheme,omitempty"` Port *int32 `json:"port"` Path string `json:"path,omitempty"` IsDashboard bool `json:"isDashboard,omitempty"` HasAuthToken bool `json:"hasAuthToken,omitempty"` }
ServiceEndpoint describes the service network address and protocol, and whether it should be displayed through a web browser.
type SetupPackage ¶
type SetupPackage struct { IsSet bool IsNull bool PackageURL SetupPackageURL }
SetupPackage describes the app setup package to be used. A top-level package can be specified, and/or a role-specific package that will override any top-level package. Note that there is custom deserialization code for this type in decode.go to allow us to distinguish the cases of "unset" from "explicitly set null". Therefore "operator-sdk generate crds" cannot be used to generate a correct CRD in this case.
func (*SetupPackage) UnmarshalJSON ¶
func (setupPackage *SetupPackage) UnmarshalJSON( data []byte, ) error
UnmarshalJSON for SetupPackage handles the unmarshalling of three scenarios wrt 'defaultConfigPackage':
- omitted : IsSet==false
- explicitly set to null : IsSet==true && IsNull==true
- Set to a valid object : IsSet==true && IsNull==false
type SetupPackageURL ¶
type SetupPackageURL struct {
PackageURL string `json:"packageURL"`
}
SetupPackageURL is the URL of the setup package.
type StateRollup ¶
type StateRollup struct { MembershipChanging bool `json:"membershipChanging"` MembersDown bool `json:"membersDown"` MembersInitializing bool `json:"membersInitializing"` MembersWaiting bool `json:"membersWaiting"` MembersRestarting bool `json:"membersRestarting"` ConfigErrors bool `json:"configErrors"` }
StateRollup surfaces whether any per-member statuses have problems that should be investigated.