Documentation ¶
Index ¶
- Constants
- func CreateBundleManager(log logr.Logger) bundle.RegistryClient
- func GenerateAllValidConfigurations(configs map[string]string) (string, error)
- func GetAWSConfigFromKeySecret(ctx context.Context, key, secret, region string) (*aws.Config, error)
- func GetPackageBundleRef(vb releasev1.VersionsBundle) (string, error)
- func GetRegionalRegistry(defaultRegistry, region string) string
- func GetRegistry(uri string) string
- func GetVersionBundle(reader Reader, eksaVersion string, spec *v1alpha1.Cluster) (*releasev1.VersionsBundle, error)
- func IsPackageControllerDisabled(cluster *anywherev1.Cluster) bool
- func ParseAWSConfig(ctx context.Context, awsConfig string) (*aws.Config, error)
- func ParseConfigurations(configs []string) (map[string]string, error)
- func PrintLicense()
- func PullLatestBundle(ctx context.Context, log logr.Logger, artifact string) ([]byte, error)
- func PushBundle(ctx context.Context, ref, fileName string, fileContent []byte) error
- func TestRegistryAccessWithAWSConfig(ctx context.Context, awsConfig, registry string, ...) error
- func TestRegistryAccessWithAWSKeySecret(ctx context.Context, key, secret, region, registry string, ...) error
- func TestRegistryWithAuthToken(authToken, registry string, do Do) error
- func ValidateKubeVersion(kubeVersion string, clusterName string) error
- func WithActiveBundleTimeout(timeout time.Duration) func(client *PackageControllerClient)
- func WithBundle(bundle *packagesv1.PackageBundle) func(*PackageClient)
- func WithClusterSpec(clusterSpec *cluster.Spec) func(client *PackageControllerClient)
- func WithCustomConfigs(customConfigs []string) func(*PackageClient)
- func WithCustomPackages(customPackages []string) func(*PackageClient)
- func WithEksaAccessKeyId(eksaAccessKeyId string) func(client *PackageControllerClient)
- func WithEksaAwsConfig(eksaAwsConfig string) func(client *PackageControllerClient)
- func WithEksaRegion(eksaRegion string) func(client *PackageControllerClient)
- func WithEksaSecretAccessKey(eksaSecretAccessKey string) func(client *PackageControllerClient)
- func WithHTTPProxy(httpProxy string) func(client *PackageControllerClient)
- func WithHTTPSProxy(httpsProxy string) func(client *PackageControllerClient)
- func WithManagementClusterName(managementClusterName string) func(client *PackageControllerClient)
- func WithNoProxy(noProxy []string) func(client *PackageControllerClient)
- func WithRegistryAccessTester(registryTester RegistryAccessTester) func(client *PackageControllerClient)
- func WithSkipWait() func(client *PackageControllerClient)
- func WithValuesFileWriter(writer filewriter.FileWriter) func(client *PackageControllerClient)
- type BundleReader
- func (b *BundleReader) GetActiveController(ctx context.Context) (*packagesv1.PackageBundleController, error)
- func (b *BundleReader) GetLatestBundle(ctx context.Context, kubeVersion string) (*packagesv1.PackageBundle, error)
- func (b *BundleReader) UpgradeBundle(ctx context.Context, controller *packagesv1.PackageBundleController, ...) error
- type BundleRegistry
- type ChartInstaller
- type ChartManager
- type ChartUninstaller
- type ClientBuilder
- type CustomRegistry
- type DefaultRegistry
- type DefaultRegistryAccessTester
- type DefaultRegistryAuthTokenProvider
- type Discovery
- type DisplayablePackage
- type Do
- type Installer
- type KubeDeleter
- type KubeVersion
- type KubectlRunner
- type Manager
- type PackageClient
- func (pc *PackageClient) ApplyPackages(ctx context.Context, fileName string, kubeConfig string) error
- func (pc *PackageClient) CreatePackages(ctx context.Context, fileName string, kubeConfig string) error
- func (pc *PackageClient) DeletePackages(ctx context.Context, packages []string, kubeConfig string, clusterName string) error
- func (pc *PackageClient) DescribePackages(ctx context.Context, packages []string, kubeConfig string, clusterName string) error
- func (pc *PackageClient) DisplayPackages(w io.Writer) error
- func (pc *PackageClient) GeneratePackages(clusterName string) ([]packagesv1.Package, error)
- func (pc *PackageClient) GetPackageFromBundle(packageName string) (*packagesv1.BundlePackage, error)
- func (pc *PackageClient) InstallPackage(ctx context.Context, bp *packagesv1.BundlePackage, customName string, ...) error
- func (pc *PackageClient) WritePackagesToStdOut(packages []packagesv1.Package) error
- type PackageClientOpt
- type PackageController
- type PackageControllerClient
- func (pc *PackageControllerClient) CreateHelmOverrideValuesYaml() (string, []byte, error)
- func (pc *PackageControllerClient) Enable(ctx context.Context) error
- func (pc *PackageControllerClient) EnableFullLifecycle(ctx context.Context, log logr.Logger, clusterName, kubeConfig string, ...) (err error)
- func (pc *PackageControllerClient) GetCuratedPackagesRegistries(ctx context.Context) (sourceRegistry, defaultRegistry, defaultImageRegistry string)
- func (pc *PackageControllerClient) GetPackageControllerConfiguration() (result string, err error)
- func (pc *PackageControllerClient) IsInstalled(ctx context.Context) bool
- func (pc *PackageControllerClient) Reconcile(ctx context.Context, logger logr.Logger, client client.Client, ...) error
- func (pc *PackageControllerClient) ReconcileDelete(ctx context.Context, logger logr.Logger, client KubeDeleter, ...) error
- type PackageControllerClientOpt
- type PackageHandler
- type PackageReader
- type Reader
- type RegistryAccessTester
- type RegistryAuthTokenProvider
Constants ¶
const (
CustomName = "generated-"
)
const (
ImageRepositoryName = "eks-anywhere-packages-bundles"
)
Variables ¶
This section is empty.
Functions ¶
func CreateBundleManager ¶
func CreateBundleManager(log logr.Logger) bundle.RegistryClient
CreateBundleManager builds a new bundle Manager.
func GenerateAllValidConfigurations ¶ added in v0.9.2
func GetAWSConfigFromKeySecret ¶ added in v0.18.0
func GetAWSConfigFromKeySecret(ctx context.Context, key, secret, region string) (*aws.Config, error)
GetAWSConfigFromKeySecret get AWS config from key, secret and region.
func GetPackageBundleRef ¶
func GetPackageBundleRef(vb releasev1.VersionsBundle) (string, error)
func GetRegionalRegistry ¶ added in v0.18.0
GetRegionalRegistry get the regional registry corresponding to defaultRegistry in a specific region.
func GetRegistry ¶ added in v0.9.2
func GetVersionBundle ¶
func IsPackageControllerDisabled ¶ added in v0.15.0
func IsPackageControllerDisabled(cluster *anywherev1.Cluster) bool
IsPackageControllerDisabled detect if the package controller is disabled.
func ParseAWSConfig ¶ added in v0.18.0
ParseAWSConfig parse AWS config from string.
func ParseConfigurations ¶ added in v0.9.2
func PrintLicense ¶
func PrintLicense()
func PullLatestBundle ¶ added in v0.11.2
PullLatestBundle reads the contents of the artifact using the latest bundle.
func PushBundle ¶ added in v0.11.2
func TestRegistryAccessWithAWSConfig ¶ added in v0.18.0
func TestRegistryAccessWithAWSConfig(ctx context.Context, awsConfig, registry string, tokenProvider RegistryAuthTokenProvider, do Do) error
TestRegistryAccessWithAWSConfig test if the AWS config has valid permission to access container registry.
func TestRegistryAccessWithAWSKeySecret ¶ added in v0.18.0
func TestRegistryAccessWithAWSKeySecret(ctx context.Context, key, secret, region, registry string, tokenProvider RegistryAuthTokenProvider, do Do) error
TestRegistryAccessWithAWSKeySecret test if the AWS key and secret has valid permission to access container registry.
func TestRegistryWithAuthToken ¶ added in v0.18.0
TestRegistryWithAuthToken test if the registry can be acccessed with auth token.
func ValidateKubeVersion ¶
func WithActiveBundleTimeout ¶ added in v0.12.0
func WithActiveBundleTimeout(timeout time.Duration) func(client *PackageControllerClient)
func WithBundle ¶ added in v0.9.2
func WithBundle(bundle *packagesv1.PackageBundle) func(*PackageClient)
func WithClusterSpec ¶ added in v0.15.0
func WithClusterSpec(clusterSpec *cluster.Spec) func(client *PackageControllerClient)
WithClusterSpec sets the cluster spec.
func WithCustomConfigs ¶ added in v0.9.2
func WithCustomConfigs(customConfigs []string) func(*PackageClient)
func WithCustomPackages ¶ added in v0.9.2
func WithCustomPackages(customPackages []string) func(*PackageClient)
func WithEksaAccessKeyId ¶ added in v0.11.0
func WithEksaAccessKeyId(eksaAccessKeyId string) func(client *PackageControllerClient)
func WithEksaAwsConfig ¶ added in v0.17.0
func WithEksaAwsConfig(eksaAwsConfig string) func(client *PackageControllerClient)
WithEksaAwsConfig set the eksaAwsConfig field.
func WithEksaRegion ¶ added in v0.11.0
func WithEksaRegion(eksaRegion string) func(client *PackageControllerClient)
func WithEksaSecretAccessKey ¶ added in v0.11.0
func WithEksaSecretAccessKey(eksaSecretAccessKey string) func(client *PackageControllerClient)
func WithHTTPProxy ¶ added in v0.12.0
func WithHTTPProxy(httpProxy string) func(client *PackageControllerClient)
func WithHTTPSProxy ¶ added in v0.12.0
func WithHTTPSProxy(httpsProxy string) func(client *PackageControllerClient)
func WithManagementClusterName ¶ added in v0.12.0
func WithManagementClusterName(managementClusterName string) func(client *PackageControllerClient)
func WithNoProxy ¶ added in v0.12.0
func WithNoProxy(noProxy []string) func(client *PackageControllerClient)
func WithRegistryAccessTester ¶ added in v0.18.0
func WithRegistryAccessTester(registryTester RegistryAccessTester) func(client *PackageControllerClient)
WithRegistryAccessTester sets the registryTester.
func WithSkipWait ¶ added in v0.19.7
func WithSkipWait() func(client *PackageControllerClient)
WithSkipWait sets skipWaitForPackageBundle.
func WithValuesFileWriter ¶ added in v0.14.0
func WithValuesFileWriter(writer filewriter.FileWriter) func(client *PackageControllerClient)
WithValuesFileWriter sets up a writer to generate temporary values.yaml to override some values in package controller helm chart.
Types ¶
type BundleReader ¶
type BundleReader struct {
// contains filtered or unexported fields
}
func NewBundleReader ¶
func NewBundleReader(kubeConfig string, clusterName string, k KubectlRunner, bm Manager, reg BundleRegistry) *BundleReader
func (*BundleReader) GetActiveController ¶
func (b *BundleReader) GetActiveController(ctx context.Context) (*packagesv1.PackageBundleController, error)
func (*BundleReader) GetLatestBundle ¶
func (b *BundleReader) GetLatestBundle(ctx context.Context, kubeVersion string) (*packagesv1.PackageBundle, error)
func (*BundleReader) UpgradeBundle ¶
func (b *BundleReader) UpgradeBundle(ctx context.Context, controller *packagesv1.PackageBundleController, newBundleVersion string) error
type BundleRegistry ¶
type ChartInstaller ¶
type ChartManager ¶ added in v0.15.0
type ChartManager interface { ChartInstaller ChartUninstaller RegistryLogin(ctx context.Context, registry, username, password string) error }
ChartManager installs and uninstalls helm charts.
type ChartUninstaller ¶ added in v0.15.0
type ChartUninstaller interface {
Delete(ctx context.Context, kubeconfigFilePath, installName, namespace string) error
}
ChartUninstaller handles deleting chart installations.
type ClientBuilder ¶ added in v0.15.0
type ClientBuilder interface {
GetClient(context.Context, types.NamespacedName) (client.Client, error)
}
ClientBuilder returns a k8s client for the specified cluster.
type CustomRegistry ¶
func NewCustomRegistry ¶
func NewCustomRegistry(helm helm.Client, registry string) *CustomRegistry
NewCustomRegistry returns a new CustomRegistry.
func (*CustomRegistry) GetRegistryBaseRef ¶
func (cm *CustomRegistry) GetRegistryBaseRef(ctx context.Context) (string, error)
type DefaultRegistry ¶
type DefaultRegistry struct {
// contains filtered or unexported fields
}
func NewDefaultRegistry ¶
func NewDefaultRegistry(rmr Reader, kv string, cv version.Info) *DefaultRegistry
func (*DefaultRegistry) GetRegistryBaseRef ¶
func (dr *DefaultRegistry) GetRegistryBaseRef(ctx context.Context) (string, error)
type DefaultRegistryAccessTester ¶ added in v0.18.0
type DefaultRegistryAccessTester struct{}
DefaultRegistryAccessTester the default implementation of RegistryAccessTester.
type DefaultRegistryAuthTokenProvider ¶ added in v0.18.0
type DefaultRegistryAuthTokenProvider struct{}
DefaultRegistryAuthTokenProvider provides auth token for AWS ECR registry access.
func (*DefaultRegistryAuthTokenProvider) GetTokenByAWSConfig ¶ added in v0.18.0
func (d *DefaultRegistryAuthTokenProvider) GetTokenByAWSConfig(ctx context.Context, awsConfig string) (string, error)
GetTokenByAWSConfig get auth token by AWS config.
func (*DefaultRegistryAuthTokenProvider) GetTokenByAWSKeySecret ¶ added in v0.18.0
func (d *DefaultRegistryAuthTokenProvider) GetTokenByAWSKeySecret(ctx context.Context, key, secret, region string) (string, error)
GetTokenByAWSKeySecret get auth token by AWS key and secret.
type Discovery ¶
type Discovery struct {
// contains filtered or unexported fields
}
Discovery * Implements ServerVersionInterface to provide the Kubernetes client version to be used.
func NewDiscovery ¶
func NewDiscovery(kubeVersion *KubeVersion) *Discovery
type DisplayablePackage ¶
DisplayablePackage wraps Package to omit undesired members (like Status).
This is necessary in part because of https://github.com/golang/go/issues/11939 but also because we just don't want to generate a Status section when we're emitting templates for a user to modify.
func NewDisplayablePackage ¶
func NewDisplayablePackage(p *api.Package) *DisplayablePackage
type Do ¶ added in v0.18.0
Do is a function type that takes a http request and returns a http response.
type Installer ¶ added in v0.9.2
type Installer struct {
// contains filtered or unexported fields
}
func NewInstaller ¶ added in v0.9.2
func NewInstaller(runner KubectlRunner, pc PackageHandler, pcc PackageController, spec *cluster.Spec, packagesLocation, mgmtKubeconfig string) *Installer
NewInstaller installs packageController and packages during cluster creation.
func (*Installer) InstallCuratedPackages ¶ added in v0.9.2
InstallCuratedPackages installs curated packages as part of the cluster creation.
func (*Installer) UpgradeCuratedPackages ¶ added in v0.19.7
UpgradeCuratedPackages upgrades curated packages as part of the cluster upgrade.
type KubeDeleter ¶ added in v0.15.0
KubeDeleter abstracts client.Client so mocks can be substituted in tests.
type KubeVersion ¶
type KubeVersion struct {
// contains filtered or unexported fields
}
func NewKubeVersion ¶
func NewKubeVersion(major string, minor string) *KubeVersion
type KubectlRunner ¶
type KubectlRunner interface { ExecuteCommand(ctx context.Context, opts ...string) (bytes.Buffer, error) ExecuteFromYaml(ctx context.Context, yaml []byte, opts ...string) (bytes.Buffer, error) // GetObject performs a GET call to the kube API server authenticating with a kubeconfig file // and unmarshalls the response into the provdied Object // If the object is not found, it returns an error implementing apimachinery errors.APIStatus GetObject(ctx context.Context, resourceType, name, namespece, kubeconfig string, obj runtime.Object) error // HasResource is true if the resource can be retrieved from the API and has length > 0. HasResource(ctx context.Context, resourceType string, name string, kubeconfig string, namespace string) (bool, error) }
type Manager ¶
type Manager interface {
LatestBundle(ctx context.Context, baseRef string, kubeMajor string, kubeMinor string, clusterName string) (*packagesv1.PackageBundle, error)
}
type PackageClient ¶
type PackageClient struct {
// contains filtered or unexported fields
}
func NewPackageClient ¶
func NewPackageClient(kubectl KubectlRunner, options ...PackageClientOpt) *PackageClient
func (*PackageClient) ApplyPackages ¶
func (*PackageClient) CreatePackages ¶
func (*PackageClient) DeletePackages ¶
func (*PackageClient) DescribePackages ¶
func (*PackageClient) DisplayPackages ¶
func (pc *PackageClient) DisplayPackages(w io.Writer) error
DisplayPackages pretty-prints a table of available packages.
func (*PackageClient) GeneratePackages ¶
func (pc *PackageClient) GeneratePackages(clusterName string) ([]packagesv1.Package, error)
func (*PackageClient) GetPackageFromBundle ¶
func (pc *PackageClient) GetPackageFromBundle(packageName string) (*packagesv1.BundlePackage, error)
func (*PackageClient) InstallPackage ¶
func (pc *PackageClient) InstallPackage(ctx context.Context, bp *packagesv1.BundlePackage, customName string, clusterName string, kubeConfig string) error
func (*PackageClient) WritePackagesToStdOut ¶
func (pc *PackageClient) WritePackagesToStdOut(packages []packagesv1.Package) error
type PackageClientOpt ¶ added in v0.9.2
type PackageClientOpt func(*PackageClient)
type PackageController ¶ added in v0.9.2
type PackageControllerClient ¶
type PackageControllerClient struct {
// contains filtered or unexported fields
}
func NewPackageControllerClient ¶
func NewPackageControllerClient(chartManager ChartManager, kubectl KubectlRunner, clusterName, kubeConfig string, chart *releasev1.Image, registryMirror *registrymirror.RegistryMirror, options ...PackageControllerClientOpt) *PackageControllerClient
NewPackageControllerClient instantiates a new instance of PackageControllerClient.
func NewPackageControllerClientFullLifecycle ¶ added in v0.15.0
func NewPackageControllerClientFullLifecycle(logger logr.Logger, chartManager ChartManager, kubectl KubectlRunner, clientBuilder ClientBuilder) *PackageControllerClient
NewPackageControllerClientFullLifecycle creates a PackageControllerClient for the Full Cluster Lifecycle controller.
It differs because the CLI use case has far more information available at instantiation, while the FCL use case has less information at instantiation, and the rest when cluster creation is triggered.
func (*PackageControllerClient) CreateHelmOverrideValuesYaml ¶ added in v0.14.0
func (pc *PackageControllerClient) CreateHelmOverrideValuesYaml() (string, []byte, error)
CreateHelmOverrideValuesYaml creates a temp file to override certain values in package controller helm install.
func (*PackageControllerClient) Enable ¶ added in v0.15.0
func (pc *PackageControllerClient) Enable(ctx context.Context) error
Enable curated packages in a cluster
In case the cluster is management cluster, it performs the following actions:
- Installation of Package Controller through helm chart installation
- Creation of secret credentials
- Creation of a single run of a cron job refresher
- Activation of a curated packages bundle
In case the cluster is a workload cluster, it performs the following actions:
- Creation of package bundle controller (PBC) custom resource in management cluster
func (*PackageControllerClient) EnableFullLifecycle ¶ added in v0.15.0
func (pc *PackageControllerClient) EnableFullLifecycle(ctx context.Context, log logr.Logger, clusterName, kubeConfig string, chart *releasev1.Image, registryMirror *registrymirror.RegistryMirror, options ...PackageControllerClientOpt) (err error)
EnableFullLifecycle wraps Enable to handle run-time arguments.
This method fills in the gaps between the original CLI use case, where all information is known at PackageControllerClient initialization, and the Full Cluster Lifecycle use case, where there's limited information at initialization. Basically any parameter here isn't known at instantiation of the PackageControllerClient during full cluster lifecycle usage, hence why this method exists.
func (*PackageControllerClient) GetCuratedPackagesRegistries ¶ added in v0.14.1
func (pc *PackageControllerClient) GetCuratedPackagesRegistries(ctx context.Context) (sourceRegistry, defaultRegistry, defaultImageRegistry string)
GetCuratedPackagesRegistries gets value for configurable registries from PBC.
func (*PackageControllerClient) GetPackageControllerConfiguration ¶ added in v0.15.0
func (pc *PackageControllerClient) GetPackageControllerConfiguration() (result string, err error)
GetPackageControllerConfiguration returns the default kubernetes version for a Cluster.
func (*PackageControllerClient) IsInstalled ¶ added in v0.12.0
func (pc *PackageControllerClient) IsInstalled(ctx context.Context) bool
IsInstalled checks if a package controller custom resource exists.
func (*PackageControllerClient) Reconcile ¶ added in v0.15.0
func (pc *PackageControllerClient) Reconcile(ctx context.Context, logger logr.Logger, client client.Client, cluster *anywherev1.Cluster) error
Reconcile installs resources when a full cluster lifecycle cluster is created.
func (*PackageControllerClient) ReconcileDelete ¶ added in v0.15.0
func (pc *PackageControllerClient) ReconcileDelete(ctx context.Context, logger logr.Logger, client KubeDeleter, cluster *anywherev1.Cluster) error
ReconcileDelete removes resources after a full cluster lifecycle cluster is deleted.
type PackageControllerClientOpt ¶ added in v0.11.0
type PackageControllerClientOpt func(client *PackageControllerClient)
type PackageHandler ¶ added in v0.9.2
type PackageReader ¶
type PackageReader struct {
// contains filtered or unexported fields
}
func NewPackageReader ¶
func NewPackageReader(cache *registry.Cache, credentialStore *registry.CredentialStore, awsRegion string) *PackageReader
NewPackageReader create a new package reader with storage client.
func (*PackageReader) ReadChartsFromBundles ¶
func (r *PackageReader) ReadChartsFromBundles(ctx context.Context, b *releasev1.Bundles) []registry.Artifact
ReadChartsFromBundles and return a list of chart artifacts.
func (*PackageReader) ReadImagesFromBundles ¶
func (r *PackageReader) ReadImagesFromBundles(ctx context.Context, b *releasev1.Bundles) ([]registry.Artifact, error)
ReadImagesFromBundles and return a list of image artifacts.
type RegistryAccessTester ¶ added in v0.18.0
type RegistryAccessTester interface {
Test(ctx context.Context, accessKey, secret, region, awsConfig, registry string) error
}
RegistryAccessTester test if AWS credentials has valid permission to access an ECR registry.
type RegistryAuthTokenProvider ¶ added in v0.18.0
type RegistryAuthTokenProvider interface { GetTokenByAWSConfig(ctx context.Context, awsConfig string) (string, error) GetTokenByAWSKeySecret(ctx context.Context, key, secret, region string) (string, error) }
RegistryAuthTokenProvider provides auth token for registry access.