Documentation
¶
Overview ¶
Definitions for Constellation's user config file.
The config file is used by the CLI to create and manage a Constellation cluster.
All config relevant definitions, parsing and validation functions should go here.
Index ¶
- Constants
- Variables
- func GetConfigurationDoc() *encoder.FileDoc
- func K8sVersionFromMajorMinor(version string) string
- type AWSConfig
- type AWSNitroTPM
- type AttestationCfg
- type AttestationConfig
- type AttestationVersion
- type AzureConfig
- type AzureSEVSNP
- func (c AzureSEVSNP) EqualTo(old AttestationCfg) (bool, error)
- func (c *AzureSEVSNP) FetchAndSetLatestVersionNumbers(fetcher attestationconfigfetcher.AttestationConfigAPIFetcher) error
- func (c AzureSEVSNP) GetMeasurements() measurements.M
- func (AzureSEVSNP) GetVariant() variant.Variant
- func (c *AzureSEVSNP) SetMeasurements(m measurements.M)
- type AzureTrustedLaunch
- type Certificate
- type Config
- func (c *Config) DeployCSIDriver() bool
- func (c *Config) DeployYawolLoadBalancer() bool
- func (_ Config) Doc() *encoder.Doc
- func (c *Config) GetAttestationConfig() AttestationCfg
- func (c *Config) GetProvider() cloudprovider.Provider
- func (c *Config) GetRegion() string
- func (c *Config) HasProvider(provider cloudprovider.Provider) bool
- func (c *Config) IsDebugCluster() bool
- func (c *Config) IsReleaseImage() bool
- func (c *Config) RemoveProviderAndAttestationExcept(provider cloudprovider.Provider)
- func (c *Config) RemoveProviderExcept(provider cloudprovider.Provider)
- func (c *Config) SetAttestation(attestation variant.Variant)
- func (c *Config) UpdateMAAURL(maaURL string)
- func (c *Config) UpdateMeasurements(newMeasurements measurements.M)
- func (c *Config) Validate(force bool) error
- func (c *Config) WithOpenStackProviderDefaults(openStackProvider string) *Config
- type DummyCfg
- type GCPConfig
- type GCPSEVES
- type OpenStackConfig
- type ProviderConfig
- type QEMUConfig
- type QEMUTDX
- type QEMUVTPM
- type SNPFirmwareSignerConfig
- type ValidationError
Constants ¶
const (
// Version3 is the third version number for Constellation config file.
Version3 = "v3"
)
Variables ¶
var ( ConfigDoc encoder.Doc ProviderConfigDoc encoder.Doc AWSConfigDoc encoder.Doc AzureConfigDoc encoder.Doc GCPConfigDoc encoder.Doc OpenStackConfigDoc encoder.Doc QEMUConfigDoc encoder.Doc AttestationConfigDoc encoder.Doc AWSNitroTPMDoc encoder.Doc SNPFirmwareSignerConfigDoc encoder.Doc GCPSEVESDoc encoder.Doc )
Functions ¶
func GetConfigurationDoc ¶
GetConfigurationDoc returns documentation for the file ./config_doc.go.
func K8sVersionFromMajorMinor ¶ added in v2.6.0
K8sVersionFromMajorMinor takes a semver in format MAJOR.MINOR and returns the version in format MAJOR.MINOR.PATCH with the supported patch version as PATCH.
Types ¶
type AWSConfig ¶ added in v2.2.0
type AWSConfig struct { // description: | // AWS data center region. See: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions Region string `yaml:"region" validate:"required"` // description: | // AWS data center zone name in defined region. See: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones Zone string `yaml:"zone" validate:"required"` // description: | // VM instance type to use for Constellation nodes. Needs to support NitroTPM. See: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enable-nitrotpm-prerequisites.html InstanceType string `yaml:"instanceType" validate:"lowercase,aws_instance_type"` // description: | // Type of a node's state disk. The type influences boot time and I/O performance. See: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html StateDiskType string `yaml:"stateDiskType" validate:"oneof=standard gp2 gp3 st1 sc1 io1"` // description: | // Name of the IAM profile to use for the control plane nodes. IAMProfileControlPlane string `yaml:"iamProfileControlPlane" validate:"required"` // description: | // Name of the IAM profile to use for the worker nodes. IAMProfileWorkerNodes string `yaml:"iamProfileWorkerNodes" validate:"required"` }
AWSConfig are AWS specific configuration values used by the CLI.
type AWSNitroTPM ¶ added in v2.8.0
type AWSNitroTPM struct { // description: | // Expected TPM measurements. Measurements measurements.M `json:"measurements" yaml:"measurements" validate:"required,no_placeholders"` }
AWSNitroTPM is the configuration for AWS Nitro TPM attestation.
func (AWSNitroTPM) Doc ¶ added in v2.8.0
func (_ AWSNitroTPM) Doc() *encoder.Doc
func (AWSNitroTPM) EqualTo ¶ added in v2.8.0
func (c AWSNitroTPM) EqualTo(other AttestationCfg) (bool, error)
EqualTo returns true if the config is equal to the given config.
func (AWSNitroTPM) GetMeasurements ¶ added in v2.8.0
func (c AWSNitroTPM) GetMeasurements() measurements.M
GetMeasurements returns the measurements used for attestation.
func (AWSNitroTPM) GetVariant ¶ added in v2.8.0
func (AWSNitroTPM) GetVariant() variant.Variant
GetVariant returns aws-nitro-tpm as the variant.
func (*AWSNitroTPM) SetMeasurements ¶ added in v2.8.0
func (c *AWSNitroTPM) SetMeasurements(m measurements.M)
SetMeasurements updates a config's measurements using the given measurements.
type AttestationCfg ¶ added in v2.8.0
type AttestationCfg interface { // GetMeasurements returns the measurements that should be used for attestation. GetMeasurements() measurements.M // SetMeasurements updates a config's measurements using the given measurements. SetMeasurements(m measurements.M) // GetVariant returns the variant of the attestation config. GetVariant() variant.Variant // NewerThan returns true if the config is equal to the given config. EqualTo(AttestationCfg) (bool, error) }
AttestationCfg is the common interface for passing attestation configs.
func UnmarshalAttestationConfig ¶ added in v2.8.0
func UnmarshalAttestationConfig(data []byte, attestVariant variant.Variant) (AttestationCfg, error)
UnmarshalAttestationConfig unmarshals the config file into the correct type.
type AttestationConfig ¶ added in v2.8.0
type AttestationConfig struct { // description: | // AWS Nitro TPM attestation. AWSNitroTPM *AWSNitroTPM `yaml:"awsNitroTPM,omitempty" validate:"omitempty,dive"` // description: | // Azure SEV-SNP attestation.\nFor details see: https://docs.edgeless.systems/constellation/architecture/attestation#cvm-verification AzureSEVSNP *AzureSEVSNP `yaml:"azureSEVSNP,omitempty" validate:"omitempty,dive"` // description: | // Azure TPM attestation (Trusted Launch). AzureTrustedLaunch *AzureTrustedLaunch `yaml:"azureTrustedLaunch,omitempty" validate:"omitempty,dive"` // description: | // GCP SEV-ES attestation. GCPSEVES *GCPSEVES `yaml:"gcpSEVES,omitempty" validate:"omitempty,dive"` // description: | // QEMU tdx attestation. QEMUTDX *QEMUTDX `yaml:"qemuTDX,omitempty" validate:"omitempty,dive"` // description: | // QEMU vTPM attestation. QEMUVTPM *QEMUVTPM `yaml:"qemuVTPM,omitempty" validate:"omitempty,dive"` }
AttestationConfig configuration values used for attestation. Fields should remain pointer-types so custom specific configs can nil them if not required.
func (AttestationConfig) Doc ¶ added in v2.8.0
func (_ AttestationConfig) Doc() *encoder.Doc
type AttestationVersion ¶ added in v2.8.0
AttestationVersion is a type that represents a version of a SNP.
func NewLatestPlaceholderVersion ¶ added in v2.8.0
func NewLatestPlaceholderVersion() AttestationVersion
NewLatestPlaceholderVersion returns the latest version with a placeholder version value.
func (AttestationVersion) MarshalJSON ¶ added in v2.8.0
func (v AttestationVersion) MarshalJSON() ([]byte, error)
MarshalJSON implements a custom marshaller to resolve "latest" values.
func (AttestationVersion) MarshalYAML ¶ added in v2.8.0
func (v AttestationVersion) MarshalYAML() (any, error)
MarshalYAML implements a custom marshaller to resolve "latest" values.
func (*AttestationVersion) UnmarshalJSON ¶ added in v2.8.0
func (v *AttestationVersion) UnmarshalJSON(data []byte) (err error)
UnmarshalJSON implements a custom unmarshaller to resolve "latest" values.
func (*AttestationVersion) UnmarshalYAML ¶ added in v2.8.0
func (v *AttestationVersion) UnmarshalYAML(unmarshal func(any) error) error
UnmarshalYAML implements a custom unmarshaller to resolve "atest" values.
type AzureConfig ¶
type AzureConfig struct { // description: | // Subscription ID of the used Azure account. See: https://docs.microsoft.com/en-us/azure/azure-portal/get-subscription-tenant-id#find-your-azure-subscription SubscriptionID string `yaml:"subscription" validate:"uuid"` // description: | // Tenant ID of the used Azure account. See: https://docs.microsoft.com/en-us/azure/azure-portal/get-subscription-tenant-id#find-your-azure-ad-tenant TenantID string `yaml:"tenant" validate:"uuid"` // description: | // Azure datacenter region to be used. See: https://docs.microsoft.com/en-us/azure/availability-zones/az-overview#azure-regions-with-availability-zones Location string `yaml:"location" validate:"required"` // description: | // Resource group for the cluster's resources. Must already exist. ResourceGroup string `yaml:"resourceGroup" validate:"required"` // description: | // Authorize spawned VMs to access Azure API. UserAssignedIdentity string `yaml:"userAssignedIdentity" validate:"required"` // description: | // Application client ID of the Active Directory app registration. AppClientID string `yaml:"appClientID,omitempty" validate:"omitempty,uuid"` // description: | // Client secret value of the Active Directory app registration credentials. Alternatively leave empty and pass value via CONSTELL_AZURE_CLIENT_SECRET_VALUE environment variable. ClientSecretValue string `yaml:"clientSecretValue,omitempty" validate:"omitempty"` // description: | // VM instance type to use for Constellation nodes. InstanceType string `yaml:"instanceType" validate:"azure_instance_type"` // description: | // Type of a node's state disk. The type influences boot time and I/O performance. See: https://docs.microsoft.com/en-us/azure/virtual-machines/disks-types#disk-type-comparison StateDiskType string `yaml:"stateDiskType" validate:"oneof=Premium_LRS Premium_ZRS Standard_LRS StandardSSD_LRS StandardSSD_ZRS"` // description: | // Deploy Azure Disk CSI driver with on-node encryption. For details see: https://docs.edgeless.systems/constellation/architecture/encrypted-storage DeployCSIDriver *bool `yaml:"deployCSIDriver" validate:"required"` // description: | // Enable secure boot for VMs. If enabled, the OS image has to include a virtual machine guest state (VMGS) blob. SecureBoot *bool `yaml:"secureBoot" validate:"required"` }
AzureConfig are Azure specific configuration values used by the CLI.
func (AzureConfig) Doc ¶
func (_ AzureConfig) Doc() *encoder.Doc
type AzureSEVSNP ¶ added in v2.8.0
type AzureSEVSNP struct { // description: | // Expected TPM measurements. Measurements measurements.M `json:"measurements" yaml:"measurements" validate:"required,no_placeholders"` // description: | // Lowest acceptable bootloader version. BootloaderVersion AttestationVersion `json:"bootloaderVersion" yaml:"bootloaderVersion"` // description: | // Lowest acceptable TEE version. TEEVersion AttestationVersion `json:"teeVersion" yaml:"teeVersion"` // description: | // Lowest acceptable SEV-SNP version. SNPVersion AttestationVersion `json:"snpVersion" yaml:"snpVersion"` // description: | // Lowest acceptable microcode version. MicrocodeVersion AttestationVersion `json:"microcodeVersion" yaml:"microcodeVersion"` // description: | // Configuration for validating the firmware signature. FirmwareSignerConfig SNPFirmwareSignerConfig `json:"firmwareSignerConfig" yaml:"firmwareSignerConfig"` // description: | // AMD Root Key certificate used to verify the SEV-SNP certificate chain. AMDRootKey Certificate `json:"amdRootKey" yaml:"amdRootKey"` }
AzureSEVSNP is the configuration for Azure SEV-SNP attestation.
func DefaultForAzureSEVSNP ¶ added in v2.8.0
func DefaultForAzureSEVSNP() *AzureSEVSNP
DefaultForAzureSEVSNP returns the default configuration for Azure SEV-SNP attestation. Version numbers have placeholder values and the latest available values can be fetched using AzureSEVSNP.FetchAndSetLatestVersionNumbers.
func (AzureSEVSNP) EqualTo ¶ added in v2.8.0
func (c AzureSEVSNP) EqualTo(old AttestationCfg) (bool, error)
EqualTo returns true if the config is equal to the given config.
func (*AzureSEVSNP) FetchAndSetLatestVersionNumbers ¶ added in v2.8.0
func (c *AzureSEVSNP) FetchAndSetLatestVersionNumbers(fetcher attestationconfigfetcher.AttestationConfigAPIFetcher) error
FetchAndSetLatestVersionNumbers fetches the latest version numbers from the configapi and sets them.
func (AzureSEVSNP) GetMeasurements ¶ added in v2.8.0
func (c AzureSEVSNP) GetMeasurements() measurements.M
GetMeasurements returns the measurements used for attestation.
func (AzureSEVSNP) GetVariant ¶ added in v2.8.0
func (AzureSEVSNP) GetVariant() variant.Variant
GetVariant returns azure-sev-snp as the variant.
func (*AzureSEVSNP) SetMeasurements ¶ added in v2.8.0
func (c *AzureSEVSNP) SetMeasurements(m measurements.M)
SetMeasurements updates a config's measurements using the given measurements.
type AzureTrustedLaunch ¶ added in v2.8.0
type AzureTrustedLaunch struct { // description: | // Expected TPM measurements. Measurements measurements.M `json:"measurements" yaml:"measurements" validate:"required,no_placeholders"` }
AzureTrustedLaunch is the configuration for Azure Trusted Launch attestation.
func (AzureTrustedLaunch) EqualTo ¶ added in v2.8.0
func (c AzureTrustedLaunch) EqualTo(other AttestationCfg) (bool, error)
EqualTo returns true if the config is equal to the given config.
func (AzureTrustedLaunch) GetMeasurements ¶ added in v2.8.0
func (c AzureTrustedLaunch) GetMeasurements() measurements.M
GetMeasurements returns the measurements used for attestation.
func (AzureTrustedLaunch) GetVariant ¶ added in v2.8.0
func (AzureTrustedLaunch) GetVariant() variant.Variant
GetVariant returns azure-trusted-launch as the variant.
func (*AzureTrustedLaunch) SetMeasurements ¶ added in v2.8.0
func (c *AzureTrustedLaunch) SetMeasurements(m measurements.M)
SetMeasurements updates a config's measurements using the given measurements.
type Certificate ¶ added in v2.8.0
type Certificate x509.Certificate
Certificate is a wrapper around x509.Certificate allowing custom marshaling.
func (Certificate) MarshalJSON ¶ added in v2.8.0
func (c Certificate) MarshalJSON() ([]byte, error)
MarshalJSON marshals the certificate to PEM.
func (Certificate) MarshalYAML ¶ added in v2.8.0
func (c Certificate) MarshalYAML() (any, error)
MarshalYAML marshals the certificate to PEM.
func (*Certificate) UnmarshalJSON ¶ added in v2.8.0
func (c *Certificate) UnmarshalJSON(data []byte) error
UnmarshalJSON unmarshals the certificate from PEM.
func (*Certificate) UnmarshalYAML ¶ added in v2.8.0
func (c *Certificate) UnmarshalYAML(unmarshal func(any) error) error
UnmarshalYAML unmarshals the certificate from PEM.
type Config ¶
type Config struct { // description: | // Schema version of this configuration file. Version string `yaml:"version" validate:"eq=v3"` // description: | // Machine image version used to create Constellation nodes. Image string `yaml:"image" validate:"required,version_compatibility"` // description: | // Name of the cluster. Name string `yaml:"name" validate:"valid_name,required"` // description: | // Size (in GB) of a node's disk to store the non-volatile state. StateDiskSizeGB int `yaml:"stateDiskSizeGB" validate:"min=0"` // description: | // Kubernetes version to be installed into the cluster. KubernetesVersion string `yaml:"kubernetesVersion" validate:"required,supported_k8s_version"` // description: | // Microservice version to be installed into the cluster. Defaults to the version of the CLI. MicroserviceVersion string `yaml:"microserviceVersion" validate:"required,version_compatibility"` // description: | // DON'T USE IN PRODUCTION: enable debug mode and use debug images. For usage, see: https://github.com/edgelesssys/constellation/blob/main/debugd/README.md DebugCluster *bool `yaml:"debugCluster" validate:"required"` // description: | // Supported cloud providers and their specific configurations. Provider ProviderConfig `yaml:"provider" validate:"dive"` // description: | // Configuration for attestation validation. This configuration provides sensible defaults for the Constellation version it was created for.\nSee our docs for an overview on attestation: https://docs.edgeless.systems/constellation/architecture/attestation Attestation AttestationConfig `yaml:"attestation" validate:"dive"` }
Config defines configuration used by CLI.
func New ¶ added in v2.3.0
func New(fileHandler file.Handler, name string, fetcher attestationconfigfetcher.AttestationConfigAPIFetcher, force bool) (*Config, error)
New creates a new config by: 1. Reading config file via provided fileHandler from file with name. 2. For "latest" version values of the attestation variants fetch the version numbers. 3. Read secrets from environment variables. 4. Validate config. If `--force` is set the version validation will be disabled and any version combination is allowed.
func (*Config) DeployCSIDriver ¶ added in v2.3.0
DeployCSIDriver returns whether the CSI driver should be deployed for a given cloud provider.
func (*Config) DeployYawolLoadBalancer ¶ added in v2.8.0
DeployYawolLoadBalancer returns whether the Yawol load balancer should be deployed.
func (*Config) GetAttestationConfig ¶ added in v2.8.0
func (c *Config) GetAttestationConfig() AttestationCfg
GetAttestationConfig returns the configured attestation config.
func (*Config) GetProvider ¶
func (c *Config) GetProvider() cloudprovider.Provider
GetProvider returns the configured cloud provider.
func (*Config) HasProvider ¶
func (c *Config) HasProvider(provider cloudprovider.Provider) bool
HasProvider checks whether the config contains the provider.
func (*Config) IsDebugCluster ¶
IsDebugCluster checks whether the cluster is configured as a debug cluster.
func (*Config) IsReleaseImage ¶ added in v2.3.0
IsReleaseImage checks whether image name looks like a release image.
func (*Config) RemoveProviderAndAttestationExcept ¶ added in v2.8.0
func (c *Config) RemoveProviderAndAttestationExcept(provider cloudprovider.Provider)
RemoveProviderAndAttestationExcept calls RemoveProviderExcept and sets the default attestations for the provider (only used for convenience in tests).
func (*Config) RemoveProviderExcept ¶
func (c *Config) RemoveProviderExcept(provider cloudprovider.Provider)
RemoveProviderExcept removes all provider specific configurations, i.e., sets them to nil, except the one specified. If an unknown provider is passed, the same configuration is returned.
func (*Config) SetAttestation ¶ added in v2.8.0
SetAttestation sets the attestation config for the given attestation variant and removes all other attestation configs.
func (*Config) UpdateMAAURL ¶ added in v2.8.0
UpdateMAAURL updates the MAA URL in the config.
func (*Config) UpdateMeasurements ¶
func (c *Config) UpdateMeasurements(newMeasurements measurements.M)
UpdateMeasurements overwrites measurements in config with the provided ones.
func (*Config) WithOpenStackProviderDefaults ¶ added in v2.8.0
WithOpenStackProviderDefaults fills the default values for the specific OpenStack provider. If the provider is not supported or not an OpenStack provider, the config is returned unchanged.
type DummyCfg ¶ added in v2.8.0
type DummyCfg struct { // description: | // The measurements that should be used for attestation. Measurements measurements.M `json:"measurements,omitempty"` }
DummyCfg is a placeholder for unknown attestation configs.
func (DummyCfg) EqualTo ¶ added in v2.8.0
func (c DummyCfg) EqualTo(other AttestationCfg) (bool, error)
EqualTo returns true if measurements of the configs are equal.
func (DummyCfg) GetMeasurements ¶ added in v2.8.0
func (c DummyCfg) GetMeasurements() measurements.M
GetMeasurements returns the configs measurements.
func (DummyCfg) GetVariant ¶ added in v2.8.0
GetVariant returns a dummy variant.
func (*DummyCfg) SetMeasurements ¶ added in v2.8.0
func (c *DummyCfg) SetMeasurements(m measurements.M)
SetMeasurements sets the configs measurements.
type GCPConfig ¶
type GCPConfig struct { // description: | // GCP project. See: https://support.google.com/googleapi/answer/7014113?hl=en Project string `yaml:"project" validate:"required"` // description: | // GCP datacenter region. See: https://cloud.google.com/compute/docs/regions-zones#available Region string `yaml:"region" validate:"required"` // description: | // GCP datacenter zone. See: https://cloud.google.com/compute/docs/regions-zones#available Zone string `yaml:"zone" validate:"required"` // description: | // Path of service account key file. For required service account roles, see https://docs.edgeless.systems/constellation/getting-started/install#authorization ServiceAccountKeyPath string `yaml:"serviceAccountKeyPath" validate:"required"` // description: | // VM instance type to use for Constellation nodes. InstanceType string `yaml:"instanceType" validate:"gcp_instance_type"` // description: | // Type of a node's state disk. The type influences boot time and I/O performance. See: https://cloud.google.com/compute/docs/disks#disk-types StateDiskType string `yaml:"stateDiskType" validate:"oneof=pd-standard pd-balanced pd-ssd"` // description: | // Deploy Persistent Disk CSI driver with on-node encryption. For details see: https://docs.edgeless.systems/constellation/architecture/encrypted-storage DeployCSIDriver *bool `yaml:"deployCSIDriver" validate:"required"` }
GCPConfig are GCP specific configuration values used by the CLI.
type GCPSEVES ¶ added in v2.8.0
type GCPSEVES struct { // description: | // Expected TPM measurements. Measurements measurements.M `json:"measurements" yaml:"measurements" validate:"required,no_placeholders"` }
GCPSEVES is the configuration for GCP SEV-ES attestation.
func (GCPSEVES) EqualTo ¶ added in v2.8.0
func (c GCPSEVES) EqualTo(other AttestationCfg) (bool, error)
EqualTo returns true if the config is equal to the given config.
func (GCPSEVES) GetMeasurements ¶ added in v2.8.0
func (c GCPSEVES) GetMeasurements() measurements.M
GetMeasurements returns the measurements used for attestation.
func (GCPSEVES) GetVariant ¶ added in v2.8.0
GetVariant returns gcp-sev-es as the variant.
func (*GCPSEVES) SetMeasurements ¶ added in v2.8.0
func (c *GCPSEVES) SetMeasurements(m measurements.M)
SetMeasurements updates a config's measurements using the given measurements.
type OpenStackConfig ¶ added in v2.6.0
type OpenStackConfig struct { // description: | // OpenStack cloud name to select from "clouds.yaml". Only required if config file for OpenStack is used. Fallback authentication uses environment variables. For details see: https://docs.openstack.org/openstacksdk/latest/user/config/configuration.html. Cloud string `yaml:"cloud"` // description: | // Availability zone to place the VMs in. For details see: https://docs.openstack.org/nova/latest/admin/availability-zones.html AvailabilityZone string `yaml:"availabilityZone" validate:"required"` // description: | // Flavor ID (machine type) to use for the VMs. For details see: https://docs.openstack.org/nova/latest/admin/flavors.html FlavorID string `yaml:"flavorID" validate:"required"` // description: | // Floating IP pool to use for the VMs. For details see: https://docs.openstack.org/ocata/user-guide/cli-manage-ip-addresses.html FloatingIPPoolID string `yaml:"floatingIPPoolID" validate:"required"` // description: | // Type of a node's state disk. The type influences boot time and I/O performance. Use `openstack volume type list` to get a list of available types. StateDiskType string `yaml:"stateDiskType" validate:"required"` // description: | // AuthURL is the OpenStack Identity endpoint to use inside the cluster. AuthURL string `yaml:"authURL" validate:"required"` // description: | // ProjectID is the ID of the project where a user resides. ProjectID string `yaml:"projectID" validate:"required"` // description: | // ProjectName is the name of the project where a user resides. ProjectName string `yaml:"projectName" validate:"required"` // description: | // UserDomainName is the name of the domain where a user resides. UserDomainName string `yaml:"userDomainName" validate:"required"` // description: | // ProjectDomainName is the name of the domain where a project resides. ProjectDomainName string `yaml:"projectDomainName" validate:"required"` // description: | // RegionName is the name of the region to use inside the cluster. RegionName string `yaml:"regionName" validate:"required"` // description: | // Username to use inside the cluster. Username string `yaml:"username" validate:"required"` // description: | // Password to use inside the cluster. You can instead use the environment variable "CONSTELL_OS_PASSWORD". Password string `yaml:"password"` // description: | // If enabled, downloads OS image directly from source URL to OpenStack. Otherwise, downloads image to local machine and uploads to OpenStack. DirectDownload *bool `yaml:"directDownload" validate:"required"` // description: | // Deploy Yawol loadbalancer. For details see: https://github.com/stackitcloud/yawol DeployYawolLoadBalancer *bool `yaml:"deployYawolLoadBalancer" validate:"required"` // description: | // OpenStack OS image used by the yawollet. For details see: https://github.com/stackitcloud/yawol YawolImageID string `yaml:"yawolImageID"` // description: | // OpenStack flavor id used for yawollets. For details see: https://github.com/stackitcloud/yawol YawolFlavorID string `yaml:"yawolFlavorID"` // description: | // Deploy Cinder CSI driver with on-node encryption. For details see: https://docs.edgeless.systems/constellation/architecture/encrypted-storage DeployCSIDriver *bool `yaml:"deployCSIDriver" validate:"required"` }
OpenStackConfig holds config information for OpenStack based Constellation deployments.
func (OpenStackConfig) Doc ¶ added in v2.6.0
func (_ OpenStackConfig) Doc() *encoder.Doc
type ProviderConfig ¶
type ProviderConfig struct { // description: | // Configuration for AWS as provider. AWS *AWSConfig `yaml:"aws,omitempty" validate:"omitempty,dive"` // description: | // Configuration for Azure as provider. Azure *AzureConfig `yaml:"azure,omitempty" validate:"omitempty,dive"` // description: | // Configuration for Google Cloud as provider. GCP *GCPConfig `yaml:"gcp,omitempty" validate:"omitempty,dive"` // description: | // Configuration for OpenStack as provider. OpenStack *OpenStackConfig `yaml:"openstack,omitempty" validate:"omitempty,dive"` // description: | // Configuration for QEMU as provider. QEMU *QEMUConfig `yaml:"qemu,omitempty" validate:"omitempty,dive"` }
ProviderConfig are cloud-provider specific configuration values used by the CLI. Fields should remain pointer-types so custom specific configs can nil them if not required.
func (ProviderConfig) Doc ¶
func (_ ProviderConfig) Doc() *encoder.Doc
type QEMUConfig ¶
type QEMUConfig struct { // description: | // Format of the image to use for the VMs. Should be either qcow2 or raw. ImageFormat string `yaml:"imageFormat" validate:"oneof=qcow2 raw"` // description: | // vCPU count for the VMs. VCPUs int `yaml:"vcpus" validate:"required"` // description: | // Amount of memory per instance (MiB). Memory int `yaml:"memory" validate:"required"` // description: | // Container image to use for the QEMU metadata server. MetadataAPIImage string `yaml:"metadataAPIServer" validate:"required"` // description: | // Libvirt connection URI. Leave empty to start a libvirt instance in Docker. LibvirtURI string `yaml:"libvirtSocket"` // description: | // Container image to use for launching a containerized libvirt daemon. Only relevant if `libvirtSocket = ""`. LibvirtContainerImage string `yaml:"libvirtContainerImage"` // description: | // NVRAM template to be used for secure boot. Can be sentinel value "production", "testing" or a path to a custom NVRAM template NVRAM string `yaml:"nvram" validate:"required"` // description: | // Path to the OVMF firmware. Leave empty for auto selection. Firmware string `yaml:"firmware"` }
QEMUConfig holds config information for QEMU based Constellation deployments.
func (QEMUConfig) Doc ¶
func (_ QEMUConfig) Doc() *encoder.Doc
type QEMUTDX ¶ added in v2.8.0
type QEMUTDX struct { // description: | // Expected TDX measurements. Measurements measurements.M `json:"measurements" yaml:"measurements" validate:"required,no_placeholders"` }
QEMUTDX is the configuration for QEMU TDX attestation.
func (QEMUTDX) EqualTo ¶ added in v2.8.0
func (c QEMUTDX) EqualTo(other AttestationCfg) (bool, error)
EqualTo returns true if the config is equal to the given config.
func (QEMUTDX) GetMeasurements ¶ added in v2.8.0
func (c QEMUTDX) GetMeasurements() measurements.M
GetMeasurements returns the measurements used for attestation.
func (QEMUTDX) GetVariant ¶ added in v2.8.0
GetVariant returns qemu-tdx as the variant.
func (*QEMUTDX) SetMeasurements ¶ added in v2.8.0
func (c *QEMUTDX) SetMeasurements(m measurements.M)
SetMeasurements updates a config's measurements using the given measurements.
type QEMUVTPM ¶ added in v2.8.0
type QEMUVTPM struct { // description: | // Expected TPM measurements. Measurements measurements.M `json:"measurements" yaml:"measurements" validate:"required,no_placeholders"` }
QEMUVTPM is the configuration for QEMU vTPM attestation.
func (QEMUVTPM) EqualTo ¶ added in v2.8.0
func (c QEMUVTPM) EqualTo(other AttestationCfg) (bool, error)
EqualTo returns true if the config is equal to the given config.
func (QEMUVTPM) GetMeasurements ¶ added in v2.8.0
func (c QEMUVTPM) GetMeasurements() measurements.M
GetMeasurements returns the measurements used for attestation.
func (QEMUVTPM) GetVariant ¶ added in v2.8.0
GetVariant returns qemu-vtpm as the variant.
func (*QEMUVTPM) SetMeasurements ¶ added in v2.8.0
func (c *QEMUVTPM) SetMeasurements(m measurements.M)
SetMeasurements updates a config's measurements using the given measurements.
type SNPFirmwareSignerConfig ¶ added in v2.8.0
type SNPFirmwareSignerConfig struct { // description: | // List of accepted values for the firmware signing key digest.\nValues are enforced according to the 'enforcementPolicy'\n - 'equal' : Error if the reported signing key digest does not match any of the values in 'acceptedKeyDigests'\n - 'maaFallback' : Use 'equal' checking for validation, but fallback to using Microsoft Azure Attestation (MAA) for validation if the reported digest does not match any of the values in 'acceptedKeyDigests'. See the Azure docs for more details: https://learn.microsoft.com/en-us/azure/attestation/overview#amd-sev-snp-attestation\n - 'warnOnly' : Same as 'equal', but only prints a warning instead of returning an error if no match is found AcceptedKeyDigests idkeydigest.List `json:"acceptedKeyDigests" yaml:"acceptedKeyDigests"` // description: | // Key digest enforcement policy. One of {'equal', 'maaFallback', 'warnOnly'} EnforcementPolicy idkeydigest.Enforcement `json:"enforcementPolicy" yaml:"enforcementPolicy" validate:"required"` // description: | // URL of the Microsoft Azure Attestation (MAA) instance to use for fallback validation. Only used if 'enforcementPolicy' is set to 'maaFallback'. MAAURL string `json:"maaURL,omitempty" yaml:"maaURL,omitempty" validate:"len=0"` }
SNPFirmwareSignerConfig is the configuration for validating the firmware signer.
func (SNPFirmwareSignerConfig) Doc ¶ added in v2.8.0
func (_ SNPFirmwareSignerConfig) Doc() *encoder.Doc
func (SNPFirmwareSignerConfig) EqualTo ¶ added in v2.8.0
func (c SNPFirmwareSignerConfig) EqualTo(other SNPFirmwareSignerConfig) bool
EqualTo returns true if the config is equal to the given config.
type ValidationError ¶ added in v2.6.0
type ValidationError struct {
// contains filtered or unexported fields
}
ValidationError occurs when the validation of a config fails. It contains a list of errors that occurred during validation.
func (*ValidationError) Error ¶ added in v2.6.0
func (e *ValidationError) Error() string
func (*ValidationError) LongMessage ¶ added in v2.6.0
func (e *ValidationError) LongMessage() string
LongMessage prints the errors that occurred during validation in a verbose and user friendly way.
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
Package imageversion contains the pinned container images for the config.
|
Package imageversion contains the pinned container images for the config. |
Package migration contains outdated configuration formats and their migration functions.
|
Package migration contains outdated configuration formats and their migration functions. |