Documentation
¶
Overview ¶
Package eksconfig defines EKS test configuration.
Index ¶
- Constants
- Variables
- type AddOnALB2048
- type AddOnAppMesh
- type AddOnCSRs
- type AddOnConfigMaps
- type AddOnCronJobs
- type AddOnFargate
- type AddOnIRSA
- type AddOnJobsEcho
- type AddOnJobsPi
- type AddOnManagedNodeGroups
- type AddOnNLBHelloWorld
- type AddOnNodeGroups
- type AddOnSecrets
- type ClusterStatus
- type Config
- func (cfg *Config) IsEnabledAddOnALB2048() bool
- func (cfg *Config) IsEnabledAddOnAppMesh() bool
- func (cfg *Config) IsEnabledAddOnCSRs() bool
- func (cfg *Config) IsEnabledAddOnConfigMaps() bool
- func (cfg *Config) IsEnabledAddOnCronJobs() bool
- func (cfg *Config) IsEnabledAddOnFargate() bool
- func (cfg *Config) IsEnabledAddOnIRSA() bool
- func (cfg *Config) IsEnabledAddOnJobsEcho() bool
- func (cfg *Config) IsEnabledAddOnJobsPi() bool
- func (cfg *Config) IsEnabledAddOnManagedNodeGroups() bool
- func (cfg *Config) IsEnabledAddOnNLBHelloWorld() bool
- func (cfg *Config) IsEnabledAddOnNodeGroups() bool
- func (cfg *Config) IsEnabledAddOnSecrets() bool
- func (cfg *Config) KubectlCommand() string
- func (cfg *Config) KubectlCommands() (s string)
- func (cfg *Config) RecordStatus(status string)
- func (cfg *Config) SSHCommands() string
- func (cfg *Config) Sync() (err error)
- func (cfg *Config) UpdateFromEnvs() (err error)
- func (cfg *Config) ValidateAndSetDefaults() error
- type MNG
- type Parameters
- type Status
Constants ¶
const ( // DefaultNodeInstanceTypeCPU is the default EC2 instance type for CPU worker node. DefaultNodeInstanceTypeCPU = "c5.xlarge" // DefaultNodeInstanceTypeGPU is the default EC2 instance type for GPU worker node. DefaultNodeInstanceTypeGPU = "p3.8xlarge" // DefaultNodeVolumeSize is the default EC2 instance volume size for a worker node. DefaultNodeVolumeSize = 40 // NGsMaxLimit is the maximum number of "Node Group"s per a EKS cluster. NGsMaxLimit = 10 // NGMaxLimit is the maximum number of nodes per a "Node Group". NGMaxLimit = 100 // MNGsMaxLimit is the maximum number of "Managed Node Group"s per a EKS cluster. MNGsMaxLimit = 10 // MNGMaxLimit is the maximum number of nodes per a "Managed Node Group". MNGMaxLimit = 100 )
const ( // EnvironmentVariablePrefix is the environment variable prefix used for "eksconfig". EnvironmentVariablePrefix = "AWS_K8S_TESTER_EKS_" // EnvironmentVariablePrefixParameters is the environment variable prefix used for "eksconfig". EnvironmentVariablePrefixParameters = "AWS_K8S_TESTER_EKS_PARAMETERS_" // EnvironmentVariablePrefixAddOnNodeGroups is the environment variable prefix used for "eksconfig". EnvironmentVariablePrefixAddOnNodeGroups = "AWS_K8S_TESTER_EKS_ADD_ON_NODE_GROUPS_" // EnvironmentVariablePrefixAddOnManagedNodeGroups is the environment variable prefix used for "eksconfig". EnvironmentVariablePrefixAddOnManagedNodeGroups = "AWS_K8S_TESTER_EKS_ADD_ON_MANAGED_NODE_GROUPS_" // EnvironmentVariablePrefixAddOnNLBHelloWorld is the environment variable prefix used for "eksconfig". EnvironmentVariablePrefixAddOnNLBHelloWorld = "AWS_K8S_TESTER_EKS_ADD_ON_NLB_HELLO_WORLD_" // EnvironmentVariablePrefixAddOnALB2048 is the environment variable prefix used for "eksconfig". EnvironmentVariablePrefixAddOnALB2048 = "AWS_K8S_TESTER_EKS_ADD_ON_ALB_2048_" // EnvironmentVariablePrefixAddOnJobsPi is the environment variable prefix used for "eksconfig". EnvironmentVariablePrefixAddOnJobsPi = "AWS_K8S_TESTER_EKS_ADD_ON_JOBS_PI_" // EnvironmentVariablePrefixAddOnJobsEcho is the environment variable prefix used for "eksconfig". EnvironmentVariablePrefixAddOnJobsEcho = "AWS_K8S_TESTER_EKS_ADD_ON_JOBS_ECHO_" // EnvironmentVariablePrefixAddOnCronJobs is the environment variable prefix used for "eksconfig". EnvironmentVariablePrefixAddOnCronJobs = "AWS_K8S_TESTER_EKS_ADD_ON_CRON_JOBS_" // EnvironmentVariablePrefixAddOnCSRs is the environment variable prefix used for "eksconfig". EnvironmentVariablePrefixAddOnCSRs = "AWS_K8S_TESTER_EKS_ADD_ON_CSRS_" // EnvironmentVariablePrefixAddOnConfigMaps is the environment variable prefix used for "eksconfig". EnvironmentVariablePrefixAddOnConfigMaps = "AWS_K8S_TESTER_EKS_ADD_ON_CONFIG_MAPS_" // EnvironmentVariablePrefixAddOnSecrets is the environment variable prefix used for "eksconfig". EnvironmentVariablePrefixAddOnSecrets = "AWS_K8S_TESTER_EKS_ADD_ON_SECRETS_" // EnvironmentVariablePrefixAddOnIRSA is the environment variable prefix used for "eksconfig". EnvironmentVariablePrefixAddOnIRSA = "AWS_K8S_TESTER_EKS_ADD_ON_IRSA_" // EnvironmentVariablePrefixAddOnFargate is the environment variable prefix used for "eksconfig". EnvironmentVariablePrefixAddOnFargate = "AWS_K8S_TESTER_EKS_ADD_ON_FARGATE_" // EnvironmentVariablePrefixAddOnAppMesh is the environment variable prefix used for "eksconfig". EnvironmentVariablePrefixAddOnAppMesh = "AWS_K8S_TESTER_EKS_ADD_ON_APP_MESH_" )
const ( // AMITypeBottleRocketCPU is the default AMI type for Bottlerocket OS. // https://github.com/bottlerocket-os/bottlerocket AMITypeBottleRocketCPU = "BOTTLEROCKET_x86_64" )
const ClusterStatusDELETEDORNOTEXIST = "DELETED/NOT-EXIST"
ClusterStatusDELETEDORNOTEXIST defines the cluster status when the cluster is not found.
ref. https://docs.aws.amazon.com/eks/latest/APIReference/API_Cluster.html#AmazonEKS-Type-Cluster-status
CREATING ACTIVE UPDATING DELETING FAILED
Variables ¶
var DefaultConfig = Config{ ConfigPath: "", KubectlCommandsOutputPath: "", KubeConfigPath: "", Name: "", AWSCLIPath: "", Region: "us-west-2", LogLevel: logutil.DefaultLogLevel, LogOutputs: []string{"stderr"}, KubectlDownloadURL: "https://storage.googleapis.com/kubernetes-release/release/v1.16.8/bin/linux/amd64/kubectl", KubectlPath: "/tmp/kubectl-test-1.16.8", OnFailureDelete: true, OnFailureDeleteWaitSeconds: 120, S3BucketName: "", S3BucketCreate: false, S3BucketLifecycleExpirationDays: 0, Parameters: &Parameters{ RoleCreate: true, VPCCreate: true, SigningName: "eks", Version: "1.15", EncryptionCMKCreate: true, }, RemoteAccessKeyCreate: true, RemoteAccessPrivateKeyPath: filepath.Join(homedir.HomeDir(), ".ssh", "kube_aws_rsa"), ClientQPS: 5.0, ClientBurst: 10, AddOnNodeGroups: &AddOnNodeGroups{ Enable: false, FetchLogs: true, RoleCreate: true, LogsDir: "", }, AddOnManagedNodeGroups: &AddOnManagedNodeGroups{ Enable: false, FetchLogs: true, SigningName: "eks", RoleCreate: true, LogsDir: "", }, AddOnNLBHelloWorld: &AddOnNLBHelloWorld{ Enable: false, DeploymentReplicas: 3, }, AddOnALB2048: &AddOnALB2048{ Enable: false, DeploymentReplicasALB: 3, DeploymentReplicas2048: 3, }, AddOnJobsPi: &AddOnJobsPi{ Enable: false, Completes: 30, Parallels: 10, }, AddOnJobsEcho: &AddOnJobsEcho{ Enable: false, Completes: 10, Parallels: 10, EchoSize: 100 * 1024, }, AddOnCronJobs: &AddOnCronJobs{ Enable: false, Schedule: "*/10 * * * *", Completes: 10, Parallels: 10, SuccessfulJobsHistoryLimit: 3, FailedJobsHistoryLimit: 1, EchoSize: 100 * 1024, }, AddOnCSRs: &AddOnCSRs{ Enable: false, Objects: 10, QPS: 1, Burst: 1, }, AddOnConfigMaps: &AddOnConfigMaps{ Enable: false, Objects: 10, Size: 10 * 1024, QPS: 1, Burst: 1, }, AddOnSecrets: &AddOnSecrets{ Enable: false, Objects: 10, Size: 10 * 1024, SecretsQPS: 1, SecretsBurst: 1, PodQPS: 100, PodBurst: 5, }, AddOnIRSA: &AddOnIRSA{ Enable: false, DeploymentReplicas: 10, }, AddOnFargate: &AddOnFargate{ Enable: false, RoleCreate: true, }, AddOnAppMesh: &AddOnAppMesh{ Enable: false, }, Status: &Status{Up: false}, }
DefaultConfig is the default configuration.
- empty string creates a non-nil object for pointer-type field
- omitting an entire field returns nil value
- make sure to check both
MAKE SURE TO SYNC THE DEFAULT VALUES in "eks" templates
Functions ¶
This section is empty.
Types ¶
type AddOnALB2048 ¶ added in v0.5.0
type AddOnALB2048 struct {
// Enable is 'true' to create this add-on.
Enable bool `json:"enable"`
// Created is true when the resource has been created.
// Used for delete operations.
Created bool `json:"created" read-only:"true"`
// CreateTook is the duration that took to create the resource.
CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
// CreateTookString is the duration that took to create the resource.
CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
// DeleteTook is the duration that took to create the resource.
DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
// DeleteTookString is the duration that took to create the resource.
DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`
// Namespace is the namespace to create "ALB" objects in.
Namespace string `json:"namespace"`
// DeploymentReplicasALB is the number of ALB replicas to deploy using "Deployment" object.
DeploymentReplicasALB int32 `json:"deployment-replicas-alb"`
// DeploymentReplicas2048 is the number of 2048 replicas to deploy using "Deployment" object.
DeploymentReplicas2048 int32 `json:"deployment-replicas-2048"`
// ALBARN is the ARN of the ALB created from the service.
ALBARN string `json:"alb-arn" read-only:"true"`
// ALBName is the name of the ALB created from the service.
ALBName string `json:"alb-name" read-only:"true"`
// URL is the URL for ALB 2048 Service.
URL string `json:"url" read-only:"true"`
}
AddOnALB2048 defines parameters for EKS cluster add-on ALB 2048 service.
type AddOnAppMesh ¶ added in v0.7.5
type AddOnAppMesh struct {
// Enable is 'true' to create this add-on.
Enable bool `json:"enable"`
// Namespace is the namespace to create "AppMesh" controller/injector.
Namespace string `json:"namespace"`
// The image of appMesh controller
ControllerImage string `json:"controller-image"`
// The image of appMesh injector
InjectorImage string `json:"injector-image"`
// Created is true when the resource has been created.
// Used for delete operations.
Created bool `json:"created" read-only:"true"`
// CreateTook is the duration that took to create the resource.
CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
// CreateTookString is the duration that took to create the resource.
CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
// DeleteTook is the duration that took to create the resource.
DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
// DeleteTookString is the duration that took to create the resource.
DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`
// AddOnStackARN is the arn of cloudFormation to create the resource.
AddOnCFNStackARN string `json:"add-on-cfn-stack-arn,omitempty" read-only:"true"`
}
AddOnAppMesh defines parameters for EKS cluster add-on "EKS App Mesh Integration".
type AddOnCSRs ¶ added in v0.9.8
type AddOnCSRs struct {
// Enable is 'true' to create this add-on.
Enable bool `json:"enable"`
// Created is true when the resource has been created.
// Used for delete operations.
Created bool `json:"created" read-only:"true"`
// CreateTook is the duration that took to create the resource.
CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
// CreateTookString is the duration that took to create the resource.
CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
// DeleteTook is the duration that took to create the resource.
DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
// DeleteTookString is the duration that took to create the resource.
DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`
// Namespace is the namespace to create "CertificateSigningRequest" objects in.
Namespace string `json:"namespace"`
// Objects is the number of "CertificateSigningRequest" objects to create.
Objects int `json:"objects"`
// QPS is the number of "CertificateSigningRequest" create requests to send
// per second. Requests may be throttled by kube-apiserver.
//
// Kubernetes client DefaultQPS is 5.
// Kubernetes client DefaultBurst is 10.
// ref. https://github.com/kubernetes/kubernetes/blob/4d0e86f0b8d1eae00a202009858c8739e4c9402e/staging/src/k8s.io/client-go/rest/config.go#L43-L46
//
// kube-apiserver default rate limits are:
// FLAG: --max-mutating-requests-inflight="200"
// FLAG: --max-requests-inflight="400"
// ref. https://github.com/kubernetes/kubernetes/blob/4d0e86f0b8d1eae00a202009858c8739e4c9402e/staging/src/k8s.io/apiserver/pkg/server/config.go#L300-L301
QPS uint `json:"qps"`
// Burst is the number of "CertificateSigningRequest" create requests that
// a client can make in excess of the rate specified by the limiter.
// Requests may be throttled by kube-apiserver.
//
// Kubernetes client DefaultQPS is 5.
// Kubernetes client DefaultBurst is 10.
// ref. https://github.com/kubernetes/kubernetes/blob/4d0e86f0b8d1eae00a202009858c8739e4c9402e/staging/src/k8s.io/client-go/rest/config.go#L43-L46
//
// kube-apiserver default rate limits are:
// FLAG: --max-mutating-requests-inflight="200"
// FLAG: --max-requests-inflight="400"
// ref. https://github.com/kubernetes/kubernetes/blob/4d0e86f0b8d1eae00a202009858c8739e4c9402e/staging/src/k8s.io/apiserver/pkg/server/config.go#L300-L301
Burst uint `json:"burst"`
// CreatedNames is the list of created "CertificateSigningRequest" object names.
CreatedNames []string `json:"created-names" read-only:"true"`
}
AddOnCSRs defines parameters for EKS cluster add-on "CertificateSigningRequest".
type AddOnConfigMaps ¶ added in v0.9.8
type AddOnConfigMaps struct {
// Enable is 'true' to create this add-on.
Enable bool `json:"enable"`
// Created is true when the resource has been created.
// Used for delete operations.
Created bool `json:"created" read-only:"true"`
// CreateTook is the duration that took to create the resource.
CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
// CreateTookString is the duration that took to create the resource.
CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
// DeleteTook is the duration that took to create the resource.
DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
// DeleteTookString is the duration that took to create the resource.
DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`
// Namespace is the namespace to create "ConfigMap" objects in.
Namespace string `json:"namespace"`
// Objects is the number of "ConfigMap" objects to create.
Objects int `json:"objects"`
// Size is the "ConfigMap" value size in bytes.
Size int `json:"size"`
// QPS is the number of "ConfigMap" create requests to send
// per second. Requests may be throttled by kube-apiserver.
//
// Kubernetes client DefaultQPS is 5.
// Kubernetes client DefaultBurst is 10.
// ref. https://github.com/kubernetes/kubernetes/blob/4d0e86f0b8d1eae00a202009858c8739e4c9402e/staging/src/k8s.io/client-go/rest/config.go#L43-L46
//
// kube-apiserver default rate limits are:
// FLAG: --max-mutating-requests-inflight="200"
// FLAG: --max-requests-inflight="400"
// ref. https://github.com/kubernetes/kubernetes/blob/4d0e86f0b8d1eae00a202009858c8739e4c9402e/staging/src/k8s.io/apiserver/pkg/server/config.go#L300-L301
QPS uint `json:"qps"`
// Burst is the number of "ConfigMap" create requests that
// a client can make in excess of the rate specified by the limiter.
// Requests may be throttled by kube-apiserver.
//
// Kubernetes client DefaultQPS is 5.
// Kubernetes client DefaultBurst is 10.
// ref. https://github.com/kubernetes/kubernetes/blob/4d0e86f0b8d1eae00a202009858c8739e4c9402e/staging/src/k8s.io/client-go/rest/config.go#L43-L46
//
// kube-apiserver default rate limits are:
// FLAG: --max-mutating-requests-inflight="200"
// FLAG: --max-requests-inflight="400"
// ref. https://github.com/kubernetes/kubernetes/blob/4d0e86f0b8d1eae00a202009858c8739e4c9402e/staging/src/k8s.io/apiserver/pkg/server/config.go#L300-L301
Burst uint `json:"burst"`
// CreatedNames is the list of created "ConfigMap" object names.
CreatedNames []string `json:"created-names" read-only:"true"`
}
AddOnConfigMaps defines parameters for EKS cluster add-on "ConfigMap".
type AddOnCronJobs ¶ added in v0.9.8
type AddOnCronJobs struct {
// Enable is 'true' to create this add-on.
Enable bool `json:"enable"`
// Created is true when the resource has been created.
// Used for delete operations.
Created bool `json:"created" read-only:"true"`
// CreateTook is the duration that took to create the resource.
CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
// CreateTookString is the duration that took to create the resource.
CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
// DeleteTook is the duration that took to create the resource.
DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
// DeleteTookString is the duration that took to create the resource.
DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`
// Namespace is the namespace to create "Job" objects in.
Namespace string `json:"namespace"`
// Schedule is the cron schedule (e.g. "*/1 * * * *").
Schedule string `json:"schedule"`
// Completes is the desired number of successfully finished pods.
Completes int `json:"completes"`
// Parallels is the the maximum desired number of pods the
// job should run at any given time.
Parallels int `json:"parallels"`
// SuccessfulJobsHistoryLimit is the number of successful finished
// jobs to retain. Defaults to 3.
SuccessfulJobsHistoryLimit int32 `json:"successful-jobs-history-limit"`
// FailedJobsHistoryLimit is the number of failed finished jobs
// to retain. Defaults to 1.
FailedJobsHistoryLimit int32 `json:"failed-jobs-history-limit"`
// EchoSize is the job object size in bytes.
// "Request entity too large: limit is 3145728" (3.1 MB).
// "The Job "echo" is invalid: metadata.annotations:
// Too long: must have at most 262144 characters". (0.26 MB)
EchoSize int `json:"echo-size"`
}
AddOnCronJobs defines parameters for EKS cluster add-on with CronJob.
type AddOnFargate ¶ added in v0.6.3
type AddOnFargate struct {
// Enable is 'true' to create this add-on.
Enable bool `json:"enable"`
// Created is true when the resource has been created.
// Used for delete operations.
Created bool `json:"created" read-only:"true"`
// CreateTook is the duration that took to create the resource.
CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
// CreateTookString is the duration that took to create the resource.
CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
// DeleteTook is the duration that took to create the resource.
DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
// DeleteTookString is the duration that took to create the resource.
DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`
// Namespace is the namespace to create "Secret" and "Pod" objects in.
Namespace string `json:"namespace"`
// RoleName is the role name for Fargate.
RoleName string `json:"role-name"`
// RoleCreate is true to auto-create and delete role.
RoleCreate bool `json:"role-create"`
// RoleARN is the role ARN for Fargate.
RoleARN string `json:"role-arn"`
// RoleServicePrincipals is the Fargate role Service Principals
RoleServicePrincipals []string `json:"role-service-principals"`
// RoleManagedPolicyARNs is Fargate role managed policy ARNs.
RoleManagedPolicyARNs []string `json:"role-managed-policy-arns"`
RoleCFNStackID string `json:"role-cfn-stack-id" read-only:"true"`
// ProfileName is the profile name for Fargate.
ProfileName string `json:"profile-name"`
// SecretName is the secret name for Fargate.
SecretName string `json:"secret-name"`
// PodName is the name of the Fargate Pod.
PodName string `json:"pod-name"`
// ContainerName is the name of the Fargate container.
ContainerName string `json:"container-name"`
}
AddOnFargate defines parameters for EKS cluster add-on "EKS on Fargate".
type AddOnIRSA ¶ added in v0.5.8
type AddOnIRSA struct {
// Enable is 'true' to create this add-on.
Enable bool `json:"enable"`
// Created is true when the resource has been created.
// Used for delete operations.
Created bool `json:"created" read-only:"true"`
// CreateTook is the duration that took to create the resource.
CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
// CreateTookString is the duration that took to create the resource.
CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
// DeleteTook is the duration that took to create the resource.
DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
// DeleteTookString is the duration that took to create the resource.
DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`
// Namespace is the namespace to create "Secret" and "Pod" objects in.
Namespace string `json:"namespace"`
// RoleName is the role name for IRSA.
RoleName string `json:"role-name"`
// RoleARN is the role ARN for IRSA.
RoleARN string `json:"role-arn"`
// RoleManagedPolicyARNs is IRSA role managed policy ARNs.
// ref. https://aws.amazon.com/blogs/opensource/introducing-fine-grained-iam-roles-service-accounts/
RoleManagedPolicyARNs []string `json:"role-managed-policy-arns"`
RoleCFNStackID string `json:"role-cfn-stack-id" read-only:"true"`
// ServiceAccountName is the ServiceAccount name.
ServiceAccountName string `json:"service-account-name"`
// ConfigMapName is the ConfigMap name.
ConfigMapName string `json:"config-map-name"`
// ConfigMapScriptFileName is the ConfigMap script name.
ConfigMapScriptFileName string `json:"config-map-script-file-name"`
// S3Key is the S3 key to write for IRSA tests.
S3Key string `json:"s3-key"`
// DeploymentName is the Deployment name.
DeploymentName string `json:"deployment-name"`
// DeploymentReplicas is the number of Deployment replicas.
DeploymentReplicas int32 `json:"deployment-replicas"`
// DeploymentResultPath is the output of "Deployment" run.
DeploymentResultPath string `json:"deployment-result-path"`
// DeploymentTook is the duration that took for Deployment resource.
DeploymentTook time.Duration `json:"deployment-took,omitempty" read-only:"true"`
// DeploymentTookString is the duration that took for Deployment resource.
DeploymentTookString string `json:"deployment-took-string,omitempty" read-only:"true"`
}
AddOnIRSA defines parameters for EKS cluster add-on "IAM Roles for Service Accounts (IRSA)".
type AddOnJobsEcho ¶ added in v0.9.8
type AddOnJobsEcho struct {
// Enable is 'true' to create this add-on.
Enable bool `json:"enable"`
// Created is true when the resource has been created.
// Used for delete operations.
Created bool `json:"created" read-only:"true"`
// CreateTook is the duration that took to create the resource.
CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
// CreateTookString is the duration that took to create the resource.
CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
// DeleteTook is the duration that took to create the resource.
DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
// DeleteTookString is the duration that took to create the resource.
DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`
// Namespace is the namespace to create "Job" objects in.
Namespace string `json:"namespace"`
// Completes is the desired number of successfully finished pods.
Completes int `json:"completes"`
// Parallels is the the maximum desired number of pods the
// job should run at any given time.
Parallels int `json:"parallels"`
// EchoSize is the job object size in bytes.
// "Request entity too large: limit is 3145728" (3.1 MB).
// "The Job "echo" is invalid: metadata.annotations:
// Too long: must have at most 262144 characters". (0.26 MB)
EchoSize int `json:"echo-size"`
}
AddOnJobsEcho defines parameters for EKS cluster add-on Job with echo.
type AddOnJobsPi ¶ added in v0.9.8
type AddOnJobsPi struct {
// Enable is 'true' to create this add-on.
Enable bool `json:"enable"`
// Created is true when the resource has been created.
// Used for delete operations.
Created bool `json:"created" read-only:"true"`
// CreateTook is the duration that took to create the resource.
CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
// CreateTookString is the duration that took to create the resource.
CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
// DeleteTook is the duration that took to create the resource.
DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
// DeleteTookString is the duration that took to create the resource.
DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`
// Namespace is the namespace to create "Job" objects in.
Namespace string `json:"namespace"`
// Completes is the desired number of successfully finished pods.
Completes int `json:"completes"`
// Parallels is the the maximum desired number of pods the
// job should run at any given time.
Parallels int `json:"parallels"`
}
AddOnJobsPi defines parameters for EKS cluster add-on Job with Perl.
type AddOnManagedNodeGroups ¶ added in v0.5.5
type AddOnManagedNodeGroups struct {
// Enable is true to auto-create a managed node group.
Enable bool `json:"enable"`
// Created is true when the resource has been created.
// Used for delete operations.
Created bool `json:"created" read-only:"true"`
// CreateTook is the duration that took to create the resource.
CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
// CreateTookString is the duration that took to create the resource.
CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
// DeleteTook is the duration that took to create the resource.
DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
// DeleteTookString is the duration that took to create the resource.
DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`
// FetchLogs is true to fetch logs from remote nodes using SSH.
FetchLogs bool `json:"fetch-logs"`
// RoleName is the name of the managed node group.
RoleName string `json:"role-name"`
// RoleCreate is true to auto-create and delete role.
RoleCreate bool `json:"role-create"`
// RoleARN is the role ARN that EKS managed node group uses to create AWS
// resources for Kubernetes.
// By default, it's empty which triggers tester to create one.
RoleARN string `json:"role-arn"`
// RoleServicePrincipals is the node group Service Principals
RoleServicePrincipals []string `json:"role-service-principals"`
// RoleManagedPolicyARNs is node group managed policy ARNs.
RoleManagedPolicyARNs []string `json:"role-managed-policy-arns"`
RoleCFNStackID string `json:"role-cfn-stack-id" read-only:"true"`
// RequestHeaderKey defines EKS managed node group create cluster request header key.
RequestHeaderKey string `json:"request-header-key,omitempty"`
// RequestHeaderValue defines EKS managed node group create cluster request header value.
RequestHeaderValue string `json:"request-header-value,omitempty"`
// ResolverURL defines an AWS resolver endpoint for EKS API.
// Must be left empty to use production EKS managed node group service.
ResolverURL string `json:"resolver-url"`
// SigningName is the EKS managed node group create request signing name.
SigningName string `json:"signing-name"`
// LogsDir is set to specify the target directory to store all remote log files.
// If empty, it stores in the same directory as "ConfigPath".
LogsDir string `json:"logs-dir,omitempty"`
// MNGs maps from EKS Managed Node Group name to "MNG".
MNGs map[string]MNG `json:"mngs,omitempty"`
}
AddOnManagedNodeGroups defines parameters for EKS "Managed Node Group" creation. ref. https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node-group.html ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html
type AddOnNLBHelloWorld ¶ added in v0.5.0
type AddOnNLBHelloWorld struct {
// Enable is 'true' to create this add-on.
Enable bool `json:"enable"`
// Created is true when the resource has been created.
// Used for delete operations.
Created bool `json:"created" read-only:"true"`
// CreateTook is the duration that took to create the resource.
CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
// CreateTookString is the duration that took to create the resource.
CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
// DeleteTook is the duration that took to create the resource.
DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
// DeleteTookString is the duration that took to create the resource.
DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`
// DeploymentReplicas is the number of replicas to deploy using "Deployment" object.
DeploymentReplicas int32 `json:"deployment-replicas"`
// Namespace is the namespace to create "NLB" objects in.
Namespace string `json:"namespace"`
// NLBARN is the ARN of the NLB created from the service.
NLBARN string `json:"nlb-arn" read-only:"true"`
// NLBName is the name of the NLB created from the service.
NLBName string `json:"nlb-name" read-only:"true"`
// URL is the host name for hello-world service.
URL string `json:"url" read-only:"true"`
}
AddOnNLBHelloWorld defines parameters for EKS cluster add-on NLB hello-world service.
type AddOnNodeGroups ¶ added in v0.7.5
type AddOnNodeGroups struct {
// Enable is true to auto-create ad node group.
Enable bool `json:"enable"`
// Created is true when the resource has been created.
// Used for delete operations.
Created bool `json:"created" read-only:"true"`
// FetchLogs is true to fetch logs from remote nodes using SSH.
FetchLogs bool `json:"fetch-logs"`
// RoleName is the name of thed node group.
RoleName string `json:"role-name"`
// RoleCreate is true to auto-create and delete role.
RoleCreate bool `json:"role-create"`
// RoleARN is the role ARN that EKS node group uses to create AWS
// resources for Kubernetes.
// By default, it's empty which triggers tester to create one.
RoleARN string `json:"role-arn"`
// RoleServicePrincipals is the node group Service Principals
RoleServicePrincipals []string `json:"role-service-principals"`
// RoleManagedPolicyARNs is node groupd policy ARNs.
RoleManagedPolicyARNs []string `json:"role-managed-policy-arns"`
RoleCFNStackID string `json:"role-cfn-stack-id" read-only:"true"`
// NodeGroupSecurityGroupID is the security group ID for the node group.
NodeGroupSecurityGroupID string `json:"node-group-security-group-id" read-only:"true"`
NodeGroupSecurityGroupCFNStackID string `json:"node-group-security-group-cfn-stack-id" read-only:"true"`
// LogsDir is set to specify the target directory to store all remote log files.
// If empty, it stores in the same directory as "ConfigPath".
LogsDir string `json:"logs-dir,omitempty"`
// ASGs maps from EKS Node Group name to "ASG".
ASGs map[string]ec2config.ASG `json:"asgs,omitempty"`
}
AddOnNodeGroups defines parameters for EKS "Managed Node Group" creation. ref. https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node-group.html ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html
type AddOnSecrets ¶ added in v0.5.5
type AddOnSecrets struct {
// Enable is 'true' to create this add-on.
Enable bool `json:"enable"`
// Created is true when the resource has been created.
// Used for delete operations.
Created bool `json:"created" read-only:"true"`
// CreateTook is the duration that took to create the resource.
CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
// CreateTookString is the duration that took to create the resource.
CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
// DeleteTook is the duration that took to create the resource.
DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
// DeleteTookString is the duration that took to create the resource.
DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`
// Namespace is the namespace to create "Secret" and "Pod" objects in.
Namespace string `json:"namespace"`
// Objects is the number of "Secret" objects to write/read.
Objects int `json:"objects"`
// Size is the "Secret" value size in bytes.
Size int `json:"size"`
// SecretsQPS is the number of "Secret" create requests to send
// per second. Requests may be throttled by kube-apiserver.
// Default rate limits from kube-apiserver are:
// FLAG: --max-mutating-requests-inflight="200"
// FLAG: --max-requests-inflight="400"
SecretsQPS uint `json:"secret-qps"`
// SecretsBurst is the number of "Secret" create requests that
// a client can make in excess of the rate specified by the limiter.
// Requests may be throttled by kube-apiserver.
// Default rate limits from kube-apiserver are:
// FLAG: --max-mutating-requests-inflight="200"
// FLAG: --max-requests-inflight="400"
SecretsBurst uint `json:"secret-burst"`
// CreatedSecretsNames is the list of created "Secret" object names.
CreatedSecretsNames []string `json:"created-secrets-names" read-only:"true"`
// PodQPS is the number of "Pod" create requests to send
// per second. Requests may be throttled by kube-apiserver.
// Default rate limits from kube-apiserver are:
// FLAG: --max-mutating-requests-inflight="200"
// FLAG: --max-requests-inflight="400"
PodQPS uint `json:"pod-qps"`
// PodBurst is the number of "Pod" create requests that
// a client can make in excess of the rate specified by the limiter.
// Requests may be throttled by kube-apiserver.
// Default rate limits from kube-apiserver are:
// FLAG: --max-mutating-requests-inflight="200"
// FLAG: --max-requests-inflight="400"
PodBurst uint `json:"pod-burst"`
// CreatedPodNames is the list of created "Pod" object names.
CreatedPodNames []string `json:"created-pod-names" read-only:"true"`
// WritesResultPath is the CSV file path to output Secret writes test results.
WritesResultPath string `json:"writes-result-path"`
// ReadsResultPath is the CSV file path to output Secret reads test results.
ReadsResultPath string `json:"reads-result-path"`
}
AddOnSecrets defines parameters for EKS cluster add-on "Secrets".
type ClusterStatus ¶ added in v0.6.5
ClusterStatus represents the cluster status.
type Config ¶
type Config struct {
// ConfigPath is the configuration file path.
// Deployer is expected to update this file with latest status.
ConfigPath string `json:"config-path,omitempty"`
// KubectlCommandsOutputPath is the output path for kubectl commands.
KubectlCommandsOutputPath string `json:"kubectl-commands-output-path,omitempty"`
// RemoteAccessCommandsOutputPath is the output path for ssh commands.
RemoteAccessCommandsOutputPath string `json:"remote-access-commands-output-path,omitempty"`
// Region is the AWS geographic area for EKS deployment.
// If empty, set default region.
Region string `json:"region,omitempty"`
// Name is the cluster name.
// If empty, deployer auto-populates it.
Name string `json:"name,omitempty"`
// LogLevel configures log level. Only supports debug, info, warn, error, panic, or fatal. Default 'info'.
LogLevel string `json:"log-level"`
// LogOutputs is a list of log outputs. Valid values are 'default', 'stderr', 'stdout', or file names.
// Logs are appended to the existing file, if any.
// Multiple values are accepted. If empty, it sets to 'default', which outputs to stderr.
// See https://pkg.go.dev/go.uber.org/zap#Open and https://pkg.go.dev/go.uber.org/zap#Config for more details.
LogOutputs []string `json:"log-outputs,omitempty"`
// AWSCLIPath is the path for AWS CLI path.
AWSCLIPath string `json:"aws-cli-path,omitempty"`
// KubectlPath is the path to download the "kubectl".
KubectlPath string `json:"kubectl-path,omitempty"`
// KubectlDownloadURL is the download URL to download "kubectl" binary from.
// https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html
KubectlDownloadURL string `json:"kubectl-download-url,omitempty"`
// KubeConfigPath is the file path of KUBECONFIG for the EKS cluster.
// If empty, auto-generate one.
// Deployer is expected to delete this on cluster tear down.
KubeConfigPath string `json:"kubeconfig-path,omitempty"`
// AWSIAMAuthenticatorPath is the path to aws-iam-authenticator.
AWSIAMAuthenticatorPath string `json:"aws-iam-authenticator-path,omitempty"`
// AWSIAMAuthenticatorDownloadURL is the download URL to download "aws-iam-authenticator" binary from.
AWSIAMAuthenticatorDownloadURL string `json:"aws-iam-authenticator-download-url,omitempty"`
// OnFailureDelete is true to delete all resources on creation fail.
OnFailureDelete bool `json:"on-failure-delete"`
// OnFailureDeleteWaitSeconds is the seconds to wait before deleting
// all resources on creation fail.
OnFailureDeleteWaitSeconds uint64 `json:"on-failure-delete-wait-seconds"`
// CommandAfterCreateCluster is the command to execute after creating clusters.
CommandAfterCreateCluster string `json:"command-after-create-cluster,omitempty"`
CommandAfterCreateClusterOutputPath string `json:"command-after-create-cluster-output-path,omitempty" read-only:"true"`
// CommandAfterCreateAddOns is the command to execute after creating clusters and add-ons.
CommandAfterCreateAddOns string `json:"command-after-create-add-ons,omitempty"`
CommandAfterCreateAddOnsOutputPath string `json:"command-after-create-add-ons-output-path,omitempty" read-only:"true"`
// S3BucketName is the name of cluster S3.
S3BucketName string `json:"s3-bucket-name"`
// S3BucketCreate is true to auto-create S3 bucket.
S3BucketCreate bool `json:"s3-bucket-create"`
// S3BucketLifecycleExpirationDays is expiration in days for the lifecycle of the object.
S3BucketLifecycleExpirationDays int64 `json:"s3-bucket-lifecycle-expiration-days"`
// Parameters defines EKS "cluster" creation parameters.
// It's ok to leave any parameters empty.
// If empty, it will use default values.
Parameters *Parameters `json:"parameters,omitempty"`
// RemoteAccessKeyCreate is true to create the remote SSH access private key.
RemoteAccessKeyCreate bool `json:"remote-access-key-create"`
// RemoteAccessKeyName is the key name for node group SSH EC2 key pair.
// ref. https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node-group.html
// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html
RemoteAccessKeyName string `json:"remote-access-key-name,omitempty"`
// RemoteAccessPrivateKeyPath is the file path to store node group key pair private key.
// Thus, deployer must delete the private key right after node group creation.
// MAKE SURE PRIVATE KEY NEVER GETS UPLOADED TO CLOUD STORAGE AND DELETE AFTER USE!!!
// ref. https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node-group.html
// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html
RemoteAccessPrivateKeyPath string `json:"remote-access-private-key-path,omitempty"`
// ClientQPS is the QPS for kubernetes client.
// To use while talking with kubernetes apiserver.
//
// Kubernetes client DefaultQPS is 5.
// Kubernetes client DefaultBurst is 10.
// ref. https://github.com/kubernetes/kubernetes/blob/4d0e86f0b8d1eae00a202009858c8739e4c9402e/staging/src/k8s.io/client-go/rest/config.go#L43-L46
//
// kube-apiserver default rate limits are:
// FLAG: --max-mutating-requests-inflight="200"
// FLAG: --max-requests-inflight="400"
// ref. https://github.com/kubernetes/kubernetes/blob/4d0e86f0b8d1eae00a202009858c8739e4c9402e/staging/src/k8s.io/apiserver/pkg/server/config.go#L300-L301
ClientQPS float32 `json:"client-qps"`
// ClientBurst is the burst for kubernetes client.
// To use while talking with kubernetes apiserver
//
// Kubernetes client DefaultQPS is 5.
// Kubernetes client DefaultBurst is 10.
// ref. https://github.com/kubernetes/kubernetes/blob/4d0e86f0b8d1eae00a202009858c8739e4c9402e/staging/src/k8s.io/client-go/rest/config.go#L43-L46
//
// kube-apiserver default rate limits are:
// FLAG: --max-mutating-requests-inflight="200"
// FLAG: --max-requests-inflight="400"
// ref. https://github.com/kubernetes/kubernetes/blob/4d0e86f0b8d1eae00a202009858c8739e4c9402e/staging/src/k8s.io/apiserver/pkg/server/config.go#L300-L301
ClientBurst int `json:"client-burst"`
// AddOnNodeGroups defines EKS "Node Group"
// creation parameters.
AddOnNodeGroups *AddOnNodeGroups `json:"add-on-node-groups,omitempty"`
// AddOnManagedNodeGroups defines EKS "Managed Node Group"
// creation parameters. If empty, it will use default values.
// ref. https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node-group.html
// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html
AddOnManagedNodeGroups *AddOnManagedNodeGroups `json:"add-on-managed-node-groups,omitempty"`
// AddOnNLBHelloWorld defines parameters for EKS cluster
// add-on NLB hello-world service.
AddOnNLBHelloWorld *AddOnNLBHelloWorld `json:"add-on-nlb-hello-world,omitempty"`
// AddOnALB2048 defines parameters for EKS cluster
// add-on ALB 2048 service.
AddOnALB2048 *AddOnALB2048 `json:"add-on-alb-2048,omitempty"`
// AddOnJobsPi defines parameters for EKS cluster
// add-on Job with pi Perl command.
AddOnJobsPi *AddOnJobsPi `json:"add-on-jobs-pi,omitempty"`
// AddOnJobsEcho defines parameters for EKS cluster
// add-on Job with echo.
AddOnJobsEcho *AddOnJobsEcho `json:"add-on-jobs-echo,omitempty"`
// AddOnCronJobs defines parameters for EKS cluster
// add-on with CronJob.
AddOnCronJobs *AddOnCronJobs `json:"add-on-cron-jobs,omitempty"`
// AddOnCSRs defines parameters for EKS cluster
// add-on with CSRs.
AddOnCSRs *AddOnCSRs `json:"add-on-csrs,omitempty"`
// AddOnConfigMaps defines parameters for EKS cluster
// add-on with ConfigMap.
AddOnConfigMaps *AddOnConfigMaps `json:"add-on-config-maps,omitempty"`
// AddOnSecrets defines parameters for EKS cluster
// add-on "Secrets".
AddOnSecrets *AddOnSecrets `json:"add-on-secrets,omitempty"`
// AddOnIRSA defines parameters for EKS cluster
// add-on "IAM Roles for Service Accounts (IRSA)".
AddOnIRSA *AddOnIRSA `json:"add-on-irsa,omitempty"`
// AddOnFargate defines parameters for EKS cluster
// add-on "EKS on Fargate".
AddOnFargate *AddOnFargate `json:"add-on-fargate,omitempty"`
// AddOnAppMesh defines parameters for EKS cluster
// add-on "EKS App Mesh Integration".
AddOnAppMesh *AddOnAppMesh `json:"add-on-app-mesh,omitempty"`
// Status represents the current status of AWS resources.
// Status is read-only.
// Status cannot be configured via environmental variables.
Status *Status `json:"status,omitempty" read-only:"true"`
// contains filtered or unexported fields
}
Config defines EKS configuration.
func Load ¶
Load loads configuration from YAML. Useful when injecting shared configuration via ConfigMap.
Example usage:
import "github.com/aws/aws-k8s-tester/eksconfig"
cfg := eksconfig.Load("test.yaml")
err := cfg.ValidateAndSetDefaults()
Do not set default values in this function. "ValidateAndSetDefaults" must be called separately, to prevent overwriting previous data when loaded from disks.
func (*Config) IsEnabledAddOnALB2048 ¶ added in v0.7.5
IsEnabledAddOnALB2048 returns true if "AddOnALB2048" is enabled. Otherwise, nil the field for "omitempty".
func (*Config) IsEnabledAddOnAppMesh ¶ added in v0.7.5
IsEnabledAddOnAppMesh returns true if "AddOnAppMesh" is enabled. Otherwise, nil the field for "omitempty".
func (*Config) IsEnabledAddOnCSRs ¶ added in v0.9.8
IsEnabledAddOnCSRs returns true if "AddOnCSRs" is enabled. Otherwise, nil the field for "omitempty".
func (*Config) IsEnabledAddOnConfigMaps ¶ added in v0.9.8
IsEnabledAddOnConfigMaps returns true if "AddOnConfigMaps" is enabled. Otherwise, nil the field for "omitempty".
func (*Config) IsEnabledAddOnCronJobs ¶ added in v0.9.8
IsEnabledAddOnCronJobs returns true if "AddOnCronJobs" is enabled. Otherwise, nil the field for "omitempty".
func (*Config) IsEnabledAddOnFargate ¶ added in v0.7.5
IsEnabledAddOnFargate returns true if "AddOnFargate" is enabled. Otherwise, nil the field for "omitempty".
func (*Config) IsEnabledAddOnIRSA ¶ added in v0.7.5
IsEnabledAddOnIRSA returns true if "AddOnIRSA" is enabled. Otherwise, nil the field for "omitempty".
func (*Config) IsEnabledAddOnJobsEcho ¶ added in v0.9.8
IsEnabledAddOnJobsEcho returns true if "AddOnJobsEcho" is enabled. Otherwise, nil the field for "omitempty".
func (*Config) IsEnabledAddOnJobsPi ¶ added in v0.9.8
IsEnabledAddOnJobsPi returns true if "AddOnJobsPi" is enabled. Otherwise, nil the field for "omitempty".
func (*Config) IsEnabledAddOnManagedNodeGroups ¶ added in v0.7.5
IsEnabledAddOnManagedNodeGroups returns true if "AddOnManagedNodeGroups" is enabled. Otherwise, nil the field for "omitempty".
func (*Config) IsEnabledAddOnNLBHelloWorld ¶ added in v0.7.5
IsEnabledAddOnNLBHelloWorld returns true if "AddOnNLBHelloWorld" is enabled. Otherwise, nil the field for "omitempty".
func (*Config) IsEnabledAddOnNodeGroups ¶ added in v0.7.5
IsEnabledAddOnNodeGroups returns true if "AddOnNodeGroups" is enabled. Otherwise, nil the field for "omitempty".
func (*Config) IsEnabledAddOnSecrets ¶ added in v0.7.5
IsEnabledAddOnSecrets returns true if "AddOnSecrets" is enabled. Otherwise, nil the field for "omitempty".
func (*Config) KubectlCommand ¶ added in v0.5.8
KubectlCommand returns the kubectl command.
func (*Config) KubectlCommands ¶
KubectlCommands returns the various kubectl commands.
func (*Config) RecordStatus ¶ added in v0.6.5
RecordStatus records cluster status.
func (*Config) SSHCommands ¶
SSHCommands returns the SSH commands.
func (*Config) UpdateFromEnvs ¶
UpdateFromEnvs updates fields from environmental variables. Empty values are ignored and do not overwrite fields with empty values. WARNING: The environmetal variable value always overwrites current field values if there's a conflict.
func (*Config) ValidateAndSetDefaults ¶
ValidateAndSetDefaults returns an error for invalid configurations. And updates empty fields with default values. At the end, it writes populated YAML to aws-k8s-tester config path.
type MNG ¶ added in v0.5.5
type MNG struct {
// Name is the name of the managed node group.
// ref. https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node-group.html
// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html
Name string `json:"name,omitempty"`
// ASGName is the ASG name from a created managed node group.
ASGName string `json:"asg-name,omitempty" read-only:"true"`
// RemoteAccessUserName is the user name for managed node group SSH access.
// ref. https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node-group.html
// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html
RemoteAccessUserName string `json:"remote-access-user-name,omitempty"`
// Tags defines EKS managed node group create tags.
Tags map[string]string `json:"tags,omitempty"`
// ReleaseVersion is the AMI version of the Amazon EKS-optimized AMI for the node group.
// The version may differ from EKS "cluster" version.
// ref. https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node-group.html
// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html
// ref. https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html
ReleaseVersion string `json:"release-version,omitempty"`
// AMIType is the AMI type for the node group.
// Allowed values are AL2_x86_64 and AL2_x86_64_GPU.
// ref. https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node-group.html
// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html
AMIType string `json:"ami-type,omitempty"`
// ASGMinSize is the minimum size of Node Group Auto Scaling Group.
// ref. https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node-group.html
// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html
ASGMinSize int `json:"asg-min-size,omitempty"`
// ASGMaxSize is the maximum size of Node Group Auto Scaling Group.
// ref. https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node-group.html
// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html
ASGMaxSize int `json:"asg-max-size,omitempty"`
// ASGDesiredCapacity is is the desired capacity of Node Group ASG.
// ref. https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node-group.html
// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html
ASGDesiredCapacity int `json:"asg-desired-capacity,omitempty"`
// InstanceTypes is the EC2 instance types for the node instances.
// ref. https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node-group.html
// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html
InstanceTypes []string `json:"instance-types,omitempty"`
// VolumeSize is the node volume size.
// ref. https://docs.aws.amazon.com/eks/latest/userguide/create-managed-node-group.html
// ref. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html
VolumeSize int `json:"volume-size,omitempty"`
// CreateRequested is true if "CreateNodegroupRequest" has been sent.
CreateRequested bool `json:"create-requested" read-only:"true"`
// CFNStackID is the CloudFormation stack ID for a managed node group.
CFNStackID string `json:"cfn-stack-id" read-only:"true"`
RemoteAccessSecurityGroupID string `json:"remote-access-security-group-id" read-only:"true"`
// PhysicalID is the Physical ID for the created "AWS::EKS::Nodegroup".
PhysicalID string `json:"physical-id" read-only:"true"`
// Status is the current status of EKS "Managed Node Group".
Status string `json:"status" read-only:"true"`
// Instances maps an instance ID to an EC2 instance object for the node group.
Instances map[string]ec2config.Instance `json:"instances" read-only:"true"`
// Logs maps each instance ID to a list of log file paths fetched via SSH access.
Logs map[string][]string `json:"logs" read-only:"true"`
}
MNG represents parameters for one EKS "Managed Node Group".
type Parameters ¶ added in v0.5.0
type Parameters struct {
// RoleName is the name of cluster role.
RoleName string `json:"role-name"`
// RoleCreate is true to auto-create and delete cluster role.
RoleCreate bool `json:"role-create"`
// RoleARN is the role ARN that EKS uses to create AWS resources for Kubernetes.
// By default, it's empty which triggers tester to create one.
RoleARN string `json:"role-arn"`
// RoleServicePrincipals is the EKS Role Service Principals
RoleServicePrincipals []string `json:"role-service-principals"`
// RoleManagedPolicyARNs is EKS Role managed policy ARNs.
RoleManagedPolicyARNs []string `json:"role-managed-policy-arns"`
RoleCFNStackID string `json:"role-cfn-stack-id" read-only:"true"`
// Tags defines EKS create cluster tags.
Tags map[string]string `json:"tags"`
// RequestHeaderKey defines EKS create cluster request header key.
RequestHeaderKey string `json:"request-header-key"`
// RequestHeaderValue defines EKS create cluster request header value.
RequestHeaderValue string `json:"request-header-value"`
// ResolverURL defines an AWS resolver endpoint for EKS API.
// Must be left empty to use production EKS service.
ResolverURL string `json:"resolver-url"`
// SigningName is the EKS create request signing name.
SigningName string `json:"signing-name"`
// VPCCreate is true to auto-create and delete VPC.
VPCCreate bool `json:"vpc-create"`
// VPCID is the VPC ID for cluster creation.
// If not empty, VPC is reused and not deleted.
// If empty, VPC is created anew and deleted on cluster deletion.
VPCID string `json:"vpc-id"`
VPCCFNStackID string `json:"vpc-cfn-stack-id" read-only:"true"`
// VpcCIDR is the IP range (CIDR notation) for VPC, must be a valid private
// (RFC 1918) CIDR range.
VPCCIDR string `json:"vpc-cidr,omitempty"`
// PublicSubnetCIDR1 is the CIDR Block for subnet 1 within the VPC.
PublicSubnetCIDR1 string `json:"public-subnet-cidr-1,omitempty"`
// PublicSubnetCIDR2 is the CIDR Block for subnet 2 within the VPC.
PublicSubnetCIDR2 string `json:"public-subnet-cidr-2,omitempty"`
// PublicSubnetCIDR3 is the CIDR Block for subnet 3 within the VPC.
PublicSubnetCIDR3 string `json:"public-subnet-cidr-3,omitempty"`
// PrivateSubnetCIDR1 is the CIDR Block for subnet 1 within the VPC.
PrivateSubnetCIDR1 string `json:"private-subnet-cidr-1,omitempty"`
// PrivateSubnetCIDR2 is the CIDR Block for subnet 2 within the VPC.
PrivateSubnetCIDR2 string `json:"private-subnet-cidr-2,omitempty"`
// PublicSubnetIDs is the list of all public subnets in the VPC.
PublicSubnetIDs []string `json:"public-subnet-ids" read-only:"true"`
// PrivateSubnetIDs is the list of all private subnets in the VPC.
PrivateSubnetIDs []string `json:"private-subnet-ids" read-only:"true"`
// ControlPlaneSecurityGroupID is the security group ID for the cluster control
// plane communication with worker nodes.
ControlPlaneSecurityGroupID string `json:"control-plane-security-group-id" read-only:"true"`
// Version is the version of EKS Kubernetes "cluster".
// If empty, set default version.
Version string `json:"version"`
VersionValue float64 `json:"version-value" read-only:"true"`
// EncryptionCMKCreate is true to auto-create and delete KMS CMK
// for encryption feature.
EncryptionCMKCreate bool `json:"encryption-cmk-create"`
// EncryptionCMKARN is the KMS CMK ARN for encryption feature.
// If not empty, the cluster is created with encryption feature
// enabled.
EncryptionCMKARN string `json:"encryption-cmk-arn"`
}
Parameters defines parameters for EKS "cluster" creation.
type Status ¶ added in v0.5.0
type Status struct {
// Up is true if the cluster is up.
Up bool `json:"up"`
// CreateTook is the duration that took to create the resource.
CreateTook time.Duration `json:"create-took,omitempty" read-only:"true"`
// CreateTookString is the duration that took to create the resource.
CreateTookString string `json:"create-took-string,omitempty" read-only:"true"`
// DeleteTook is the duration that took to create the resource.
DeleteTook time.Duration `json:"delete-took,omitempty" read-only:"true"`
// DeleteTookString is the duration that took to create the resource.
DeleteTookString string `json:"delete-took-string,omitempty" read-only:"true"`
// AWSAccountID is the account ID of the eks tester caller session.
AWSAccountID string `json:"aws-account-id"`
// AWSUserID is the user ID of the eks tester caller session.
AWSUserID string `json:"aws-user-id"`
// AWSIAMRoleARN is the user IAM Role ARN of the eks tester caller session.
AWSIAMRoleARN string `json:"aws-iam-role-arn"`
// AWSCredentialPath is automatically set via AWS SDK Go.
// And to be mounted as a volume as 'Secret' object.
AWSCredentialPath string `json:"aws-credential-path"`
ClusterCFNStackID string `json:"cluster-cfn-stack-id"`
ClusterARN string `json:"cluster-arn"`
// ClusterAPIServerEndpoint is the cluster endpoint of the EKS cluster,
// required for KUBECONFIG write.
ClusterAPIServerEndpoint string `json:"cluster-api-server-endpoint"`
// ClusterOIDCIssuerURL is the issuer URL for the OpenID Connect
// (https://openid.net/connect/) identity provider .
ClusterOIDCIssuerURL string `json:"cluster-oidc-issuer-url"`
// ClusterOIDCIssuerHostPath is the issuer host path.
ClusterOIDCIssuerHostPath string `json:"cluster-oidc-issuer-host-path"`
// ClusterOIDCIssuerARN is the issuer ARN for the OpenID Connect
// (https://openid.net/connect/) identity provider .
ClusterOIDCIssuerARN string `json:"cluster-oidc-issuer-arn"`
// ClusterOIDCIssuerCAThumbprint is the issuer CA thumbprint.
ClusterOIDCIssuerCAThumbprint string `json:"cluster-oidc-issuer-ca-thumbprint"`
// ClusterCA is the EKS cluster CA, required for KUBECONFIG write.
ClusterCA string `json:"cluster-ca"`
// ClusterCADecoded is the decoded EKS cluster CA, required for k8s.io/client-go.
ClusterCADecoded string `json:"cluster-ca-decoded"`
// ClusterStatusCurrent represents the current status of the cluster.
ClusterStatusCurrent string `json:"cluster-status-current"`
// ClusterStatus represents the status of the cluster.
ClusterStatus []ClusterStatus `json:"cluster-status"`
}
Status represents the current status of AWS resources. Read-only. Cannot be configured via environmental variables.