deploy

package
v0.0.0-...-0ecf4d6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 21, 2024 License: Apache-2.0 Imports: 49 Imported by: 6

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	RPs           []RPConfig     `json:"rps,omitempty"`
	Configuration *Configuration `json:"configuration,omitempty"`
}

Config represents configuration object for deployer tooling

func DevConfig

func DevConfig(_env env.Core) (*Config, error)

type Configuration

type Configuration struct {
	ACRLocationOverride                *string                `json:"acrLocationOverride,omitempty"`
	ACRResourceID                      *string                `json:"acrResourceId,omitempty" value:"required"`
	AzureCloudName                     *string                `json:"azureCloudName,omitempty" value:"required"`
	AzureSecPackQualysUrl              *string                `json:"azureSecPackQualysUrl,omitempty"`
	AzureSecPackVSATenantId            *string                `json:"azureSecPackVSATenantId,omitempty"`
	RPVersionStorageAccountName        *string                `json:"rpVersionStorageAccountName,omitempty" value:"required"`
	ACRReplicaDisabled                 *bool                  `json:"acrReplicaDisabled,omitempty"`
	AdminAPICABundle                   *string                `json:"adminApiCaBundle,omitempty" value:"required"`
	AdminAPIClientCertCommonName       *string                `json:"adminApiClientCertCommonName,omitempty" value:"required"`
	ARMAPICABundle                     *string                `json:"armApiCaBundle,omitempty"`
	ARMAPIClientCertCommonName         *string                `json:"armApiClientCertCommonName,omitempty"`
	ARMClientID                        *string                `json:"armClientId,omitempty"`
	ClusterMDMAccount                  *string                `json:"clusterMdmAccount,omitempty" value:"required"`
	ClusterMDSDAccount                 *string                `json:"clusterMdsdAccount,omitempty" value:"required"`
	ClusterMDSDConfigVersion           *string                `json:"clusterMdsdConfigVersion,omitempty" value:"required"`
	ClusterMDSDNamespace               *string                `json:"clusterMdsdNamespace,omitempty" value:"required"`
	ClusterParentDomainName            *string                `json:"clusterParentDomainName,omitempty" value:"required"`
	DatabaseAccountName                *string                `json:"databaseAccountName,omitempty" value:"required"`
	CosmosDB                           *CosmosDBConfiguration `json:"cosmosDB,omitempty"`
	DisableCosmosDBFirewall            *bool                  `json:"disableCosmosDBFirewall,omitempty"`
	ExtraClusterKeyvaultAccessPolicies []interface{}          `json:"extraClusterKeyvaultAccessPolicies,omitempty" value:"required"`
	ExtraCosmosDBIPs                   []string               `json:"extraCosmosDBIPs,omitempty"`
	ExtraGatewayKeyvaultAccessPolicies []interface{}          `json:"extraGatewayKeyvaultAccessPolicies,omitempty" value:"required"`
	ExtraPortalKeyvaultAccessPolicies  []interface{}          `json:"extraPortalKeyvaultAccessPolicies,omitempty" value:"required"`
	ExtraServiceKeyvaultAccessPolicies []interface{}          `json:"extraServiceKeyvaultAccessPolicies,omitempty" value:"required"`
	FluentbitImage                     *string                `json:"fluentbitImage,omitempty" value:"required"`
	FPClientID                         *string                `json:"fpClientId,omitempty" value:"required"`
	FPServerCertCommonName             *string                `json:"fpServerCertCommonName,omitempty"`
	FPServicePrincipalID               *string                `json:"fpServicePrincipalId,omitempty" value:"required"`
	GatewayDomains                     []string               `json:"gatewayDomains,omitempty"`
	GatewayFeatures                    []string               `json:"gatewayFeatures,omitempty"`
	GatewayMDSDConfigVersion           *string                `json:"gatewayMdsdConfigVersion,omitempty" value:"required"`
	GatewayStorageAccountDomain        *string                `json:"gatewayStorageAccountDomain,omitempty" value:"required"`
	GatewayVMSize                      *string                `json:"gatewayVmSize,omitempty"`
	GatewayVMSSCapacity                *int                   `json:"gatewayVmssCapacity,omitempty"`
	GlobalResourceGroupName            *string                `json:"globalResourceGroupName,omitempty" value:"required"`
	GlobalResourceGroupLocation        *string                `json:"globalResourceGroupLocation,omitempty" value:"required"`
	GlobalSubscriptionID               *string                `json:"globalSubscriptionId,omitempty" value:"required"`
	GlobalDevopsManagedIdentity        *string                `json:"globalDevopsManagedIdentity,omitempty" value:"required"`
	KeyvaultDNSSuffix                  *string                `json:"keyvaultDNSSuffix,omitempty" value:"required"`
	KeyvaultPrefix                     *string                `json:"keyvaultPrefix,omitempty" value:"required"`
	MDMFrontendURL                     *string                `json:"mdmFrontendUrl,omitempty" value:"required"`
	MDSDEnvironment                    *string                `json:"mdsdEnvironment,omitempty" value:"required"`
	NonZonalRegions                    []string               `json:"nonZonalRegions,omitempty"`
	PortalAccessGroupIDs               []string               `json:"portalAccessGroupIds,omitempty" value:"required"`
	PortalClientID                     *string                `json:"portalClientId,omitempty" value:"required"`
	PortalElevatedGroupIDs             []string               `json:"portalElevatedGroupIds,omitempty" value:"required"`
	RPFeatures                         []string               `json:"rpFeatures,omitempty"`
	RPImagePrefix                      *string                `json:"rpImagePrefix,omitempty" value:"required"`
	RPMDMAccount                       *string                `json:"rpMdmAccount,omitempty" value:"required"`
	RPMDSDAccount                      *string                `json:"rpMdsdAccount,omitempty" value:"required"`
	RPMDSDConfigVersion                *string                `json:"rpMdsdConfigVersion,omitempty" value:"required"`
	RPMDSDNamespace                    *string                `json:"rpMdsdNamespace,omitempty" value:"required"`
	RPNSGPortalSourceAddressPrefixes   []string               `json:"rpNsgPortalSourceAddressPrefixes,omitempty"`
	RPParentDomainName                 *string                `json:"rpParentDomainName,omitempty" value:"required"`
	RPVMSSCapacity                     *int                   `json:"rpVmssCapacity,omitempty"`
	SSHPublicKey                       *string                `json:"sshPublicKey,omitempty"`
	StorageAccountDomain               *string                `json:"storageAccountDomain,omitempty" value:"required"`
	SubscriptionResourceGroupName      *string                `json:"subscriptionResourceGroupName,omitempty" value:"required"`
	SubscriptionResourceGroupLocation  *string                `json:"subscriptionResourceGroupLocation,omitempty" value:"required"`
	VMSize                             *string                `json:"vmSize,omitempty" value:"required"`
	VMSSCleanupEnabled                 *bool                  `json:"vmssCleanupEnabled,omitempty"`
	OIDCStorageAccountName             *string                `json:"oidcStorageAccountName,omitempty" value:"required"`
	MsiRpEndpoint                      *string                `json:"msiRpEndpoint,omitempty" value:"required"`

	// TODO: Replace with Live Service Configuration in KeyVault
	InstallViaHive           *string `json:"clustersInstallViaHive,omitempty"`
	DefaultInstallerPullspec *string `json:"clusterDefaultInstallerPullspec,omitempty"`
	AdoptByHive              *string `json:"clustersAdoptByHive,omitempty"`
}

Configuration represents configuration structure

type CosmosDBConfiguration

type CosmosDBConfiguration struct {
	StandardProvisionedThroughput int `json:"standardProvisionedThroughput,omitempty"`
	PortalProvisionedThroughput   int `json:"portalProvisionedThroughput,omitempty"`
	GatewayProvisionedThroughput  int `json:"gatewayProvisionedThroughput,omitempty"`
}

Note: if this configuration block is provided, all throughputs must be present and valid

type Deployer

type Deployer interface {
	PreDeploy(context.Context, int) error
	DeployRP(context.Context) error
	DeployGateway(context.Context) error
	UpgradeRP(context.Context) error
	UpgradeGateway(context.Context) error
	SaveVersion(context.Context) error
}

func New

func New(ctx context.Context, log *logrus.Entry, _env env.Core, config *RPConfig, version string, tokenCredential azcore.TokenCredential) (Deployer, error)

New initiates new deploy utility object

type KnownDeploymentErrorType

type KnownDeploymentErrorType string

KnownDeploymentErrorType represents a type of error we encounter during an RP/gateway deployment that we know how to handle via automation.

const (
	KnownDeploymentErrorTypeRPLBNotFound KnownDeploymentErrorType = "RPLBNotFound"
)

type RPConfig

type RPConfig struct {
	Location                 string         `json:"location,omitempty"`
	SubscriptionID           string         `json:"subscriptionId,omitempty"`
	GatewayResourceGroupName string         `json:"gatewayResourceGroupName,omitempty"`
	RPResourceGroupName      string         `json:"rpResourceGroupName,omitempty"`
	Configuration            *Configuration `json:"configuration,omitempty"`
}

RPConfig represents individual RP configuration

func GetConfig

func GetConfig(path, location string) (*RPConfig, error)

GetConfig return RP configuration from the file

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL