Documentation
¶
Index ¶
- Constants
- func GetEnvVar(name string) (string, error)
- func GetSetupStateConfigMap(ctx context.Context, client kubernetes.Interface, namespace string) (*corev1.ConfigMap, error)
- type Config
- type CustomKeyValue
- type DoguRegistrySecret
- type Dogus
- type Naming
- type SetupContext
- type SetupContextBuilder
- type SetupJsonConfiguration
- type User
- type UserBackend
Constants ¶
const ( // SecretDoguRegistry is the name of the secret containing the dogu registry credentials. SecretDoguRegistry = "k8s-dogu-operator-dogu-registry" // SecretDoguRegistryDevPath is the path to the secret containing the dogu registry credentials. This is used for development. SecretDoguRegistryDevPath = "k8s/dev-resources/dogu-registry-secret.yaml" // SecretDockerRegistry is the name of the secret containing the docker registry credentials. SecretDockerRegistry = "k8s-dogu-operator-docker-registry" // SetupConfigConfigmap is the name of the config map containing the setup config. SetupConfigConfigmap = "k8s-ces-setup-config" // SetupConfigConfigmapDevPath is the path to the config map containing the setup config. This is used for development. SetupConfigConfigmapDevPath = "k8s/dev-resources/k8s-ces-setup.yaml" // SetupStartUpConfigMap is the name of the config map containing the setup.json. SetupStartUpConfigMap = "k8s-ces-setup-json" // SetupStartUpConfigMapDevPath is the path to the config map containing the setup.json. This is used for development. SetupStartUpConfigMapDevPath = "k8s/dev-resources/setup.json" // SetupStateConfigMap is the name of the config map containing the setup state. SetupStateConfigMap = "k8s-setup-config" // SetupStateKey is the key by which the setup state can be referenced. SetupStateKey = "state" // SetupStateInstalled means the setup installed the Cloudogu EcoSystem successfully. SetupStateInstalled = "installed" // SetupStateInstalling means the setup is currently installing the Cloudogu EcoSystem. SetupStateInstalling = "installing" // EnvironmentVariableStage is the name of the environment variable by which the development stage can be set. EnvironmentVariableStage = "STAGE" // StageDevelopment is the value that EnvironmentVariableStage must have in order to start the setup in development mode. StageDevelopment = "development" // EnvironmentVariableTargetNamespace is the name of the environment variable which discerns where the setup should deploy the Cloudogu EcoSystem. EnvironmentVariableTargetNamespace = "POD_NAMESPACE" )
Variables ¶
This section is empty.
Functions ¶
func GetEnvVar ¶ added in v0.5.0
GetEnvVar returns an arbitrary environment variable; otherwise it returns an error
func GetSetupStateConfigMap ¶ added in v0.5.0
func GetSetupStateConfigMap(ctx context.Context, client kubernetes.Interface, namespace string) (*corev1.ConfigMap, error)
GetSetupStateConfigMap returns or creates if it does not exist the configmap map for presenting the state of the setup process
Types ¶
type Config ¶
type Config struct { // LogLevel sets the log level for the app LogLevel logrus.Level `yaml:"log_level"` // TargetNamespace represents the namespace that is created for the ecosystem TargetNamespace string `yaml:"target_namespace"` // DoguOperatorResourceURL sets the K8s resource URL which controls the installation of the operator into the current cluster. DoguOperatorURL string `yaml:"dogu_operator_url"` // ServiceDiscoveryURL sets the K8s resource URL which controls the installation of the service discovery into the current cluster. ServiceDiscoveryURL string `yaml:"service_discovery_url"` // EtcdServerResourceURL sets the K8s resource URL which controls the installation of the etcd server into the current cluster. EtcdServerResourceURL string `yaml:"etcd_server_url"` // EtcdServerResourceURL sets the K8s resource URL which controls the installation of the etcd server into the current cluster. EtcdClientImageRepo string `yaml:"etcd_client_image_repo"` // KeyProvider sets the key provider used to encrypt etcd values KeyProvider string `yaml:"key_provider"` // ResourcePatches contains json patches for kubernetes resources to be applied on certain phases of the setup process. ResourcePatches []patch.ResourcePatch `yaml:"resource_patches"` }
Config contains the common configuration for the setup
func ReadConfigFromCluster ¶ added in v0.5.0
func ReadConfigFromCluster(ctx context.Context, client kubernetes.Interface, namespace string) (*Config, error)
ReadConfigFromCluster reads the setup config from the cluster state
func ReadConfigFromFile ¶ added in v0.5.0
ReadConfigFromFile reads the application configuration from a configuration file.
type CustomKeyValue ¶ added in v0.4.0
CustomKeyValue is a map of string -> map pairs.
type DoguRegistrySecret ¶ added in v0.8.0
type DoguRegistrySecret struct { Endpoint string `yaml:"endpoint"` Username string `yaml:"username"` Password string `yaml:"password"` URLSchema string `yaml:"urlschema"` }
DoguRegistrySecret defines the credentials and the endpoint for the dogu registry.
func ReadDoguRegistrySecretFromCluster ¶ added in v0.8.0
func ReadDoguRegistrySecretFromCluster(ctx context.Context, client kubernetes.Interface, namespace string) (*DoguRegistrySecret, error)
ReadDoguRegistrySecretFromCluster reads the dogu registry credentials from the kubernetes secret.
func ReadDoguRegistrySecretFromFile ¶ added in v0.8.0
func ReadDoguRegistrySecretFromFile(path string) (*DoguRegistrySecret, error)
ReadDoguRegistrySecretFromFile reads the dogu registry credentials from a yaml file.
type Dogus ¶ added in v0.4.0
type Dogus struct { // DefaultDogu is the dogu that a call to the EcoSystem in the browser should be redirected to. DefaultDogu string `json:"defaultDogu"` // Install contains a list of all dogus that should be installed during the setup. // Entries may contain a version. If they do not, the latest version will be used. Install []string `json:"install"` // Completed indicates that this step should not be shown in the UI of the setup. Completed bool `json:"completed"` }
Dogus struct defines which dogus are installed and which one is the default.
type Naming ¶ added in v0.4.0
type Naming struct { // Fqdn contains the complete fully qualified domain name of the Cloudogu EcoSystem. Fqdn string `json:"fqdn"` // Domain is primarily used to send emails from within the EcoSystem. Domain string `json:"domain"` // CertificateType is the type of certificate used to connect to the EcoSystem. CertificateType string `json:"certificateType"` // Certificate is a PEM-formatted certificate used to connect to the EcoSystem. // This is only necessary if CertificateType is set to "external". Certificate string `json:"certificate"` // CertificateKey is a PEM-formatted certificate key for the EcoSystem. // This is only necessary if CertificateType is set to "external". CertificateKey string `json:"certificateKey"` // RelayHost over which mails get sent from the EcoSystem. RelayHost string `json:"relayHost"` // MailAddress is used by all dogus to send mail. MailAddress string `json:"mailAddress"` // Completed indicates that the Naming step should not be shown in the UI of the setup. Completed bool `json:"completed"` // UseInternalIp configures if InternalIp should be used. UseInternalIp bool `json:"useInternalIp"` // InternalIp is useful if an external loadbalancer with its own IP is configured in front of the Cloudogu EcoSystem. // It can be set to let dogus communicate directly within the Cloudogu EcoSystem without the detour over the load balancer. InternalIp string `json:"internalIp"` }
Naming settings such as fqdn, hostname and domain.
type SetupContext ¶
type SetupContext struct { AppVersion string AppConfig *Config SetupJsonConfiguration *SetupJsonConfiguration DoguRegistryConfiguration *DoguRegistrySecret }
SetupContext contains all context information provided by the setup.
type SetupContextBuilder ¶ added in v0.5.0
type SetupContextBuilder struct { DevSetupConfigPath string DevStartupConfigPath string DevDoguRegistrySecretPath string // contains filtered or unexported fields }
SetupContextBuilder contains information to create a setup context
func NewSetupContextBuilder ¶ added in v0.5.0
func NewSetupContextBuilder(version string) *SetupContextBuilder
NewSetupContextBuilder creates a new builder to create a setup context. Default dev resources paths are used.
func (*SetupContextBuilder) NewSetupContext ¶ added in v0.5.0
func (scb *SetupContextBuilder) NewSetupContext(ctx context.Context, clientSet kubernetes.Interface) (*SetupContext, error)
NewSetupContext creates a new setup context.
type SetupJsonConfiguration ¶ added in v0.16.0
type SetupJsonConfiguration struct { // Naming configures for example FQDN, mail and certificate configuration of the EcoSystem. Naming Naming `json:"naming"` // Dogus configures the installed dogus. Dogus Dogus `json:"dogus"` // Admin configures the admin user of the EcoSystem. Admin User `json:"admin"` // UserBackend configures where and how users are stored. UserBackend UserBackend `json:"userBackend"` // RegistryConfig contains custom registry configuration that is to be applied to the EcoSystem. RegistryConfig CustomKeyValue `json:"registryConfig"` // RegistryConfigEncrypted also contains custom registry configuration but with encrypted values. RegistryConfigEncrypted CustomKeyValue `json:"registryConfigEncrypted"` }
SetupJsonConfiguration is the main struct for the configuration of the setup.
func ReadSetupConfigFromCluster ¶ added in v0.5.0
func ReadSetupConfigFromCluster(ctx context.Context, client kubernetes.Interface, namespace string) (*SetupJsonConfiguration, error)
ReadSetupConfigFromCluster reads the setup configuration from the configmap
func ReadSetupConfigFromFile ¶ added in v0.5.0
func ReadSetupConfigFromFile(path string) (*SetupJsonConfiguration, error)
ReadSetupConfigFromFile reads the setup configuration from a setup json file.
func (*SetupJsonConfiguration) IsCompleted ¶ added in v0.16.0
func (conf *SetupJsonConfiguration) IsCompleted() bool
IsCompleted checks if a SetupJsonConfiguration is completed.
type User ¶ added in v0.4.0
type User struct { Username string `json:"username"` Mail string `json:"mail"` Password string `json:"password"` // AdminGroup is the name of the group in the user backend that should gain admin privileges. AdminGroup string `json:"adminGroup"` // Completed indicates that this step should not be shown in the UI of the setup. Completed bool `json:"completed"` // AdminMember determines if this user should become a member of the AdminGroup. AdminMember bool `json:"adminMember"` SendWelcomeMail bool `json:"sendWelcomeMail"` }
User account for a Cloudogu EcoSystem instance.
type UserBackend ¶ added in v0.4.0
type UserBackend struct { // DsType is the type of the UserBackend. If set to "embedded", the ldap dogu will be installed and used as a user backend. // If set to "external", the credentials for an external user backend have to be set. DsType string `json:"dsType"` // Server contains the type of user backend server. Can either be "activeDirectory" or "custom". // This is only necessary if DsType is set to "external". Server string `json:"server"` // AttributeID contains the name of the attribute describing the user id in the user backend. // Must be "uid" if DsType is "embedded". Must be "sAMAccountName", if DsType is "external" and Server is "activeDirectory". AttributeID string `json:"attributeID"` // AttributeGivenName contains the name of the attribute describing the given name of a user. // This is only necessary if DsType is set to "external". AttributeGivenName string `json:"attributeGivenName"` // AttributeSurname contains the name of the attribute describing the surname of a user. // This is only necessary if DsType is set to "external". AttributeSurname string `json:"attributeSurname"` // AttributeFullname contains the name of the attribute describing the full name of a user. // Must be "cn" if DsType is "embedded" or Server is "activeDirectory". AttributeFullname string `json:"attributeFullname"` // AttributeMail contains the name of the attribute describing the mail address of a user. // Must be "mail" if DsType is "embedded" or Server is "activeDirectory". AttributeMail string `json:"attributeMail"` // AttributeGroup contains the name of the attribute managing the membership of the user to a particular group. // Must be "memberOf" if DsType is "embedded" or Server is "activeDirectory". AttributeGroup string `json:"attributeGroup"` // BaseDN is the distinguished name from which the server is searched for users. // This is only necessary if DsType is set to "external". BaseDN string `json:"baseDN"` // SearchFilter is restricting which object classes should be searched. // Must be "(objectClass=person)" if DsType is "embedded" or Server is "activeDirectory". SearchFilter string `json:"searchFilter"` // ConnectionDN is the distinguished name of a user that is authorized to read in the user backend. // This is only necessary if DsType is set to "external". ConnectionDN string `json:"connectionDN"` // Password of the user in ConnectionDN. // This is only necessary if DsType is set to "external". Password string `json:"password"` // Host address of the external user backend. // This is only necessary if DsType is set to "external". // Must be "ldap" if DsType is "embedded". Host string `json:"host"` // Port of the external user backend. // This is only necessary if DsType is set to "external". // Must be "389" if DsType is "embedded". Port string `json:"port"` LoginID string `json:"loginID"` LoginPassword string `json:"loginPassword"` // Encryption determines if and how communication with the user backend should be encrypted. // Can be "none", "ssl", "sslAny", "startTLS" or "startTLSAny". // This is only necessary if DsType is set to "external". Encryption string `json:"encryption"` // Completed indicates that the UserBackend step should not be shown in the UI of the setup. Completed bool `json:"completed"` // GroupBaseDN is the distinguished name for the group mapping. // This is only necessary if DsType is set to "external". GroupBaseDN string `json:"groupBaseDN"` // GroupSearchFilter is restricting which object classes should be searched for the group mapping. // This is only necessary if DsType is set to "external". GroupSearchFilter string `json:"groupSearchFilter"` // GroupAttributeName contains the name of the attribute of the group name. // This is only necessary if DsType is set to "external". GroupAttributeName string `json:"groupAttributeName"` // GroupAttributeDescription contains the name of the attribute for the group description. // This is only necessary if DsType is set to "external". GroupAttributeDescription string `json:"groupAttributeDescription"` // GroupAttributeMember contains the name of the attribute for the group members. // This is only necessary if DsType is set to "external". GroupAttributeMember string `json:"groupAttributeMember"` }
UserBackend contains configuration for the directory service.