mirror of https://github.com/kubernetes/kops.git
Use function to get cloud provider from cluster spec
This commit is contained in:
parent
503b73747d
commit
70f7d9bdb2
|
|
@ -669,7 +669,7 @@ func RunCreateCluster(ctx context.Context, f *util.Factory, out io.Writer, c *Cr
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
fullGroup.AddInstanceGroupNodeLabel()
|
fullGroup.AddInstanceGroupNodeLabel()
|
||||||
if api.CloudProviderID(cluster.Spec.CloudProvider) == api.CloudProviderGCE {
|
if cluster.Spec.GetCloudProvider() == api.CloudProviderGCE {
|
||||||
fullGroup.Spec.NodeLabels["cloud.google.com/metadata-proxy-ready"] = "true"
|
fullGroup.Spec.NodeLabels["cloud.google.com/metadata-proxy-ready"] = "true"
|
||||||
}
|
}
|
||||||
fullInstanceGroups = append(fullInstanceGroups, fullGroup)
|
fullInstanceGroups = append(fullInstanceGroups, fullGroup)
|
||||||
|
|
|
||||||
|
|
@ -199,7 +199,7 @@ func RunCreateInstanceGroup(ctx context.Context, f *util.Factory, out io.Writer,
|
||||||
}
|
}
|
||||||
|
|
||||||
ig.AddInstanceGroupNodeLabel()
|
ig.AddInstanceGroupNodeLabel()
|
||||||
if kopsapi.CloudProviderID(cluster.Spec.CloudProvider) == kopsapi.CloudProviderGCE {
|
if cluster.Spec.GetCloudProvider() == kopsapi.CloudProviderGCE {
|
||||||
fmt.Println("detected a GCE cluster; labeling nodes to receive metadata-proxy.")
|
fmt.Println("detected a GCE cluster; labeling nodes to receive metadata-proxy.")
|
||||||
ig.Spec.NodeLabels["cloud.google.com/metadata-proxy-ready"] = "true"
|
ig.Spec.NodeLabels["cloud.google.com/metadata-proxy-ready"] = "true"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -218,7 +218,7 @@ func clusterOutputTable(clusters []*kopsapi.Cluster, out io.Writer) error {
|
||||||
return c.ObjectMeta.Name
|
return c.ObjectMeta.Name
|
||||||
})
|
})
|
||||||
t.AddColumn("CLOUD", func(c *kopsapi.Cluster) string {
|
t.AddColumn("CLOUD", func(c *kopsapi.Cluster) string {
|
||||||
return c.Spec.CloudProvider
|
return string(c.Spec.GetCloudProvider())
|
||||||
})
|
})
|
||||||
t.AddColumn("ZONES", func(c *kopsapi.Cluster) string {
|
t.AddColumn("ZONES", func(c *kopsapi.Cluster) string {
|
||||||
zones := sets.NewString()
|
zones := sets.NewString()
|
||||||
|
|
|
||||||
|
|
@ -239,7 +239,7 @@ func RunToolboxInstanceSelector(ctx context.Context, f *util.Factory, out io.Wri
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if kops.CloudProviderID(cluster.Spec.CloudProvider) != kops.CloudProviderAWS {
|
if cluster.Spec.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
return fmt.Errorf("cannot select instance types from non-aws cluster")
|
return fmt.Errorf("cannot select instance types from non-aws cluster")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -488,11 +488,11 @@ func completeUpdateClusterTarget(f commandutils.Factory, options *UpdateClusterO
|
||||||
cloudup.TargetDryRun,
|
cloudup.TargetDryRun,
|
||||||
}
|
}
|
||||||
for _, cp := range cloudup.TerraformCloudProviders {
|
for _, cp := range cloudup.TerraformCloudProviders {
|
||||||
if cluster.Spec.CloudProvider == string(cp) {
|
if cluster.Spec.GetCloudProvider() == cp {
|
||||||
completions = append(completions, cloudup.TargetTerraform)
|
completions = append(completions, cloudup.TargetTerraform)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if cluster.Spec.CloudProvider == string(kops.CloudProviderAWS) {
|
if cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS {
|
||||||
completions = append(completions, cloudup.TargetCloudformation)
|
completions = append(completions, cloudup.TargetCloudformation)
|
||||||
}
|
}
|
||||||
return completions, cobra.ShellCompDirectiveNoFileComp
|
return completions, cobra.ShellCompDirectiveNoFileComp
|
||||||
|
|
|
||||||
|
|
@ -267,7 +267,7 @@ func BuildNodeupModelContext(model *testutils.Model) (*NodeupModelContext, error
|
||||||
nodeupModelContext := &NodeupModelContext{
|
nodeupModelContext := &NodeupModelContext{
|
||||||
Architecture: "amd64",
|
Architecture: "amd64",
|
||||||
BootConfig: &nodeup.BootConfig{},
|
BootConfig: &nodeup.BootConfig{},
|
||||||
CloudProvider: kops.CloudProviderID(model.Cluster.Spec.CloudProvider),
|
CloudProvider: model.Cluster.Spec.GetCloudProvider(),
|
||||||
NodeupConfig: &nodeup.Config{
|
NodeupConfig: &nodeup.Config{
|
||||||
CAs: map[string]string{},
|
CAs: map[string]string{},
|
||||||
KeypairIDs: map[string]string{},
|
KeypairIDs: map[string]string{},
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ var _ acls.ACLStrategy = &gcsAclStrategy{}
|
||||||
|
|
||||||
// GetACL returns the ACL to use if this is a google cloud storage path
|
// GetACL returns the ACL to use if this is a google cloud storage path
|
||||||
func (s *gcsAclStrategy) GetACL(p vfs.Path, cluster *kops.Cluster) (vfs.ACL, error) {
|
func (s *gcsAclStrategy) GetACL(p vfs.Path, cluster *kops.Cluster) (vfs.ACL, error) {
|
||||||
if kops.CloudProviderID(cluster.Spec.CloudProvider) != kops.CloudProviderGCE {
|
if cluster.Spec.GetCloudProvider() != kops.CloudProviderGCE {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
gcsPath, ok := p.(*vfs.GSPath)
|
gcsPath, ok := p.(*vfs.GSPath)
|
||||||
|
|
|
||||||
|
|
@ -849,6 +849,10 @@ func (c *ClusterSpec) IsKopsControllerIPAM() bool {
|
||||||
return c.IsIPv6Only()
|
return c.IsIPv6Only()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *ClusterSpec) GetCloudProvider() CloudProviderID {
|
||||||
|
return CloudProviderID(c.CloudProvider)
|
||||||
|
}
|
||||||
|
|
||||||
// EnvVar represents an environment variable present in a Container.
|
// EnvVar represents an environment variable present in a Container.
|
||||||
type EnvVar struct {
|
type EnvVar struct {
|
||||||
// Name of the environment variable. Must be a C_IDENTIFIER.
|
// Name of the environment variable. Must be a C_IDENTIFIER.
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ import (
|
||||||
|
|
||||||
// UseKopsControllerForNodeBootstrap is true if nodeup should use kops-controller for bootstrapping.
|
// UseKopsControllerForNodeBootstrap is true if nodeup should use kops-controller for bootstrapping.
|
||||||
func UseKopsControllerForNodeBootstrap(cluster *kops.Cluster) bool {
|
func UseKopsControllerForNodeBootstrap(cluster *kops.Cluster) bool {
|
||||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
return true
|
return true
|
||||||
case kops.CloudProviderGCE:
|
case kops.CloudProviderGCE:
|
||||||
|
|
|
||||||
|
|
@ -218,7 +218,7 @@ func CrossValidateInstanceGroup(g *kops.InstanceGroup, cluster *kops.Cluster, cl
|
||||||
allErrs = append(allErrs, ValidateMasterInstanceGroup(g, cluster)...)
|
allErrs = append(allErrs, ValidateMasterInstanceGroup(g, cluster)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
if g.Spec.Role == kops.InstanceGroupRoleAPIServer && kops.CloudProviderID(cluster.Spec.CloudProvider) != kops.CloudProviderAWS {
|
if g.Spec.Role == kops.InstanceGroupRoleAPIServer && cluster.Spec.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec", "role"), "Apiserver role only supported on AWS"))
|
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec", "role"), "Apiserver role only supported on AWS"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -237,7 +237,7 @@ func CrossValidateInstanceGroup(g *kops.InstanceGroup, cluster *kops.Cluster, cl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderAWS {
|
if cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS {
|
||||||
if g.Spec.RootVolumeType != nil {
|
if g.Spec.RootVolumeType != nil {
|
||||||
allErrs = append(allErrs, IsValidValue(field.NewPath("spec", "rootVolumeType"), g.Spec.RootVolumeType, []string{"standard", "gp3", "gp2", "io1", "io2"})...)
|
allErrs = append(allErrs, IsValidValue(field.NewPath("spec", "rootVolumeType"), g.Spec.RootVolumeType, []string{"standard", "gp3", "gp2", "io1", "io2"})...)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ func ValidateCluster(c *kops.Cluster, strict bool) field.ErrorList {
|
||||||
requiresSubnets := true
|
requiresSubnets := true
|
||||||
requiresNetworkCIDR := true
|
requiresNetworkCIDR := true
|
||||||
requiresSubnetCIDR := true
|
requiresSubnetCIDR := true
|
||||||
switch kops.CloudProviderID(c.Spec.CloudProvider) {
|
switch c.Spec.GetCloudProvider() {
|
||||||
case "":
|
case "":
|
||||||
allErrs = append(allErrs, field.Required(fieldSpec.Child("cloudProvider"), ""))
|
allErrs = append(allErrs, field.Required(fieldSpec.Child("cloudProvider"), ""))
|
||||||
requiresSubnets = false
|
requiresSubnets = false
|
||||||
|
|
@ -133,7 +133,7 @@ func ValidateCluster(c *kops.Cluster, strict bool) field.ErrorList {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
allErrs = append(allErrs, field.Invalid(fieldSpec.Child("networkCIDR"), c.Spec.NetworkCIDR, "Cluster had an invalid networkCIDR"))
|
allErrs = append(allErrs, field.Invalid(fieldSpec.Child("networkCIDR"), c.Spec.NetworkCIDR, "Cluster had an invalid networkCIDR"))
|
||||||
}
|
}
|
||||||
if kops.CloudProviderID(c.Spec.CloudProvider) == kops.CloudProviderDO {
|
if c.Spec.GetCloudProvider() == kops.CloudProviderDO {
|
||||||
// verify if the NetworkCIDR is in a private range as per RFC1918
|
// verify if the NetworkCIDR is in a private range as per RFC1918
|
||||||
if !networkCIDR.IP.IsPrivate() {
|
if !networkCIDR.IP.IsPrivate() {
|
||||||
allErrs = append(allErrs, field.Invalid(fieldSpec.Child("networkCIDR"), c.Spec.NetworkCIDR, "Cluster had a networkCIDR outside the private IP range"))
|
allErrs = append(allErrs, field.Invalid(fieldSpec.Child("networkCIDR"), c.Spec.NetworkCIDR, "Cluster had a networkCIDR outside the private IP range"))
|
||||||
|
|
@ -300,7 +300,7 @@ func ValidateCluster(c *kops.Cluster, strict bool) field.ErrorList {
|
||||||
{
|
{
|
||||||
|
|
||||||
var k8sCloudProvider string
|
var k8sCloudProvider string
|
||||||
switch kops.CloudProviderID(c.Spec.CloudProvider) {
|
switch c.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
k8sCloudProvider = "aws"
|
k8sCloudProvider = "aws"
|
||||||
case kops.CloudProviderGCE:
|
case kops.CloudProviderGCE:
|
||||||
|
|
@ -369,7 +369,7 @@ func ValidateCluster(c *kops.Cluster, strict bool) field.ErrorList {
|
||||||
if !featureflag.VFSVaultSupport.Enabled() {
|
if !featureflag.VFSVaultSupport.Enabled() {
|
||||||
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("secretStore"), "vault VFS is an experimental feature; set `export KOPS_FEATURE_FLAGS=VFSVaultSupport`"))
|
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("secretStore"), "vault VFS is an experimental feature; set `export KOPS_FEATURE_FLAGS=VFSVaultSupport`"))
|
||||||
}
|
}
|
||||||
if kops.CloudProviderID(c.Spec.CloudProvider) != kops.CloudProviderAWS {
|
if c.Spec.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("secretStore"), "Vault secret store is only available on AWS"))
|
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("secretStore"), "Vault secret store is only available on AWS"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -377,7 +377,7 @@ func ValidateCluster(c *kops.Cluster, strict bool) field.ErrorList {
|
||||||
if !featureflag.VFSVaultSupport.Enabled() {
|
if !featureflag.VFSVaultSupport.Enabled() {
|
||||||
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("keyStore"), "vault VFS is an experimental feature; set `export KOPS_FEATURE_FLAGS=VFSVaultSupport`"))
|
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("keyStore"), "vault VFS is an experimental feature; set `export KOPS_FEATURE_FLAGS=VFSVaultSupport`"))
|
||||||
}
|
}
|
||||||
if kops.CloudProviderID(c.Spec.CloudProvider) != kops.CloudProviderAWS {
|
if c.Spec.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("keyStore"), "Vault keystore is only available on AWS"))
|
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("keyStore"), "Vault keystore is only available on AWS"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -474,7 +474,7 @@ func DeepValidate(c *kops.Cluster, groups []*kops.InstanceGroup, strict bool, cl
|
||||||
errs := CrossValidateInstanceGroup(g, c, cloud, strict)
|
errs := CrossValidateInstanceGroup(g, c, cloud, strict)
|
||||||
|
|
||||||
// Additional cloud-specific validation rules
|
// Additional cloud-specific validation rules
|
||||||
if kops.CloudProviderID(c.Spec.CloudProvider) != kops.CloudProviderAWS && len(g.Spec.Volumes) > 0 {
|
if c.Spec.GetCloudProvider() != kops.CloudProviderAWS && len(g.Spec.Volumes) > 0 {
|
||||||
errs = append(errs, field.Forbidden(field.NewPath("spec", "volumes"), "instancegroup volumes are only available with aws at present"))
|
errs = append(errs, field.Forbidden(field.NewPath("spec", "volumes"), "instancegroup volumes are only available with aws at present"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ func newValidateCluster(cluster *kops.Cluster) field.ErrorList {
|
||||||
allErrs = append(allErrs, validateClusterSpec(&cluster.Spec, cluster, field.NewPath("spec"))...)
|
allErrs = append(allErrs, validateClusterSpec(&cluster.Spec, cluster, field.NewPath("spec"))...)
|
||||||
|
|
||||||
// Additional cloud-specific validation rules
|
// Additional cloud-specific validation rules
|
||||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
allErrs = append(allErrs, awsValidateCluster(cluster)...)
|
allErrs = append(allErrs, awsValidateCluster(cluster)...)
|
||||||
case kops.CloudProviderGCE:
|
case kops.CloudProviderGCE:
|
||||||
|
|
@ -86,7 +86,7 @@ func validateClusterSpec(spec *kops.ClusterSpec, c *kops.Cluster, fieldPath *fie
|
||||||
// SSHAccess
|
// SSHAccess
|
||||||
for i, cidr := range spec.SSHAccess {
|
for i, cidr := range spec.SSHAccess {
|
||||||
if strings.HasPrefix(cidr, "pl-") {
|
if strings.HasPrefix(cidr, "pl-") {
|
||||||
if kops.CloudProviderID(spec.CloudProvider) != kops.CloudProviderAWS {
|
if spec.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
allErrs = append(allErrs, field.Invalid(fieldPath.Child("sshAccess").Index(i), cidr, "Prefix List ID only supported for AWS"))
|
allErrs = append(allErrs, field.Invalid(fieldPath.Child("sshAccess").Index(i), cidr, "Prefix List ID only supported for AWS"))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -97,7 +97,7 @@ func validateClusterSpec(spec *kops.ClusterSpec, c *kops.Cluster, fieldPath *fie
|
||||||
// KubernetesAPIAccess
|
// KubernetesAPIAccess
|
||||||
for i, cidr := range spec.KubernetesAPIAccess {
|
for i, cidr := range spec.KubernetesAPIAccess {
|
||||||
if strings.HasPrefix(cidr, "pl-") {
|
if strings.HasPrefix(cidr, "pl-") {
|
||||||
if kops.CloudProviderID(spec.CloudProvider) != kops.CloudProviderAWS {
|
if spec.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
allErrs = append(allErrs, field.Invalid(fieldPath.Child("kubernetesAPIAccess").Index(i), cidr, "Prefix List ID only supported for AWS"))
|
allErrs = append(allErrs, field.Invalid(fieldPath.Child("kubernetesAPIAccess").Index(i), cidr, "Prefix List ID only supported for AWS"))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -108,7 +108,7 @@ func validateClusterSpec(spec *kops.ClusterSpec, c *kops.Cluster, fieldPath *fie
|
||||||
// NodePortAccess
|
// NodePortAccess
|
||||||
for i, cidr := range spec.NodePortAccess {
|
for i, cidr := range spec.NodePortAccess {
|
||||||
if strings.HasPrefix(cidr, "pl-") {
|
if strings.HasPrefix(cidr, "pl-") {
|
||||||
if kops.CloudProviderID(spec.CloudProvider) != kops.CloudProviderAWS {
|
if spec.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
allErrs = append(allErrs, field.Invalid(fieldPath.Child("nodePortAccess").Index(i), cidr, "Prefix List ID only supported for AWS"))
|
allErrs = append(allErrs, field.Invalid(fieldPath.Child("nodePortAccess").Index(i), cidr, "Prefix List ID only supported for AWS"))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -244,7 +244,7 @@ func validateClusterSpec(spec *kops.ClusterSpec, c *kops.Cluster, fieldPath *fie
|
||||||
allErrs = append(allErrs, validateRollingUpdate(spec.RollingUpdate, fieldPath.Child("rollingUpdate"), false)...)
|
allErrs = append(allErrs, validateRollingUpdate(spec.RollingUpdate, fieldPath.Child("rollingUpdate"), false)...)
|
||||||
}
|
}
|
||||||
|
|
||||||
if spec.API != nil && spec.API.LoadBalancer != nil && spec.CloudProvider == "aws" {
|
if spec.API != nil && spec.API.LoadBalancer != nil && spec.GetCloudProvider() == kops.CloudProviderAWS {
|
||||||
value := string(spec.API.LoadBalancer.Class)
|
value := string(spec.API.LoadBalancer.Class)
|
||||||
allErrs = append(allErrs, IsValidValue(fieldPath.Child("class"), &value, kops.SupportedLoadBalancerClasses)...)
|
allErrs = append(allErrs, IsValidValue(fieldPath.Child("class"), &value, kops.SupportedLoadBalancerClasses)...)
|
||||||
if spec.API.LoadBalancer.SSLCertificate != "" && spec.API.LoadBalancer.Class != kops.LoadBalancerClassNetwork {
|
if spec.API.LoadBalancer.SSLCertificate != "" && spec.API.LoadBalancer.Class != kops.LoadBalancerClassNetwork {
|
||||||
|
|
@ -260,7 +260,7 @@ func validateClusterSpec(spec *kops.ClusterSpec, c *kops.Cluster, fieldPath *fie
|
||||||
}
|
}
|
||||||
|
|
||||||
if spec.WarmPool != nil {
|
if spec.WarmPool != nil {
|
||||||
if kops.CloudProviderID(spec.CloudProvider) != kops.CloudProviderAWS {
|
if spec.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec", "warmPool"), "warm pool only supported on AWS"))
|
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec", "warmPool"), "warm pool only supported on AWS"))
|
||||||
} else {
|
} else {
|
||||||
allErrs = append(allErrs, validateWarmPool(spec.WarmPool, fieldPath.Child("warmPool"))...)
|
allErrs = append(allErrs, validateWarmPool(spec.WarmPool, fieldPath.Child("warmPool"))...)
|
||||||
|
|
@ -455,7 +455,7 @@ func validateSubnets(cluster *kops.ClusterSpec, fieldPath *field.Path) field.Err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if kops.CloudProviderID(cluster.CloudProvider) != kops.CloudProviderAWS {
|
if cluster.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
for i := range subnets {
|
for i := range subnets {
|
||||||
if subnets[i].IPv6CIDR != "" {
|
if subnets[i].IPv6CIDR != "" {
|
||||||
allErrs = append(allErrs, field.Forbidden(fieldPath.Index(i).Child("ipv6CIDR"), "ipv6CIDR can only be specified for AWS"))
|
allErrs = append(allErrs, field.Forbidden(fieldPath.Index(i).Child("ipv6CIDR"), "ipv6CIDR can only be specified for AWS"))
|
||||||
|
|
@ -612,7 +612,7 @@ func validateKubeAPIServer(v *kops.KubeAPIServerConfig, c *kops.Cluster, fldPath
|
||||||
allErrs = append(allErrs, IsValidValue(fldPath.Child("authorizationMode"), &mode, []string{"ABAC", "Webhook", "Node", "RBAC", "AlwaysAllow", "AlwaysDeny"})...)
|
allErrs = append(allErrs, IsValidValue(fldPath.Child("authorizationMode"), &mode, []string{"ABAC", "Webhook", "Node", "RBAC", "AlwaysAllow", "AlwaysDeny"})...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if kops.CloudProviderID(c.Spec.CloudProvider) == kops.CloudProviderAWS {
|
if c.Spec.GetCloudProvider() == kops.CloudProviderAWS {
|
||||||
if !hasNode || !hasRBAC {
|
if !hasNode || !hasRBAC {
|
||||||
allErrs = append(allErrs, field.Required(fldPath.Child("authorizationMode"), "As of kubernetes 1.19 on AWS, authorizationMode must include RBAC and Node"))
|
allErrs = append(allErrs, field.Required(fldPath.Child("authorizationMode"), "As of kubernetes 1.19 on AWS, authorizationMode must include RBAC and Node"))
|
||||||
}
|
}
|
||||||
|
|
@ -844,7 +844,7 @@ func validateNetworking(cluster *kops.Cluster, v *kops.NetworkingSpec, fldPath *
|
||||||
}
|
}
|
||||||
optionTaken = true
|
optionTaken = true
|
||||||
|
|
||||||
if c.CloudProvider != "aws" {
|
if c.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
allErrs = append(allErrs, field.Forbidden(fldPath.Child("amazonvpc"), "amazon-vpc-routed-eni networking is supported only in AWS"))
|
allErrs = append(allErrs, field.Forbidden(fldPath.Child("amazonvpc"), "amazon-vpc-routed-eni networking is supported only in AWS"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1018,7 +1018,7 @@ func validateNetworkingCilium(cluster *kops.Cluster, v *kops.CiliumNetworkingSpe
|
||||||
allErrs = append(allErrs, IsValidValue(fldPath.Child("ipam"), &v.IPAM, []string{"hostscope", "kubernetes", "crd", "eni"})...)
|
allErrs = append(allErrs, IsValidValue(fldPath.Child("ipam"), &v.IPAM, []string{"hostscope", "kubernetes", "crd", "eni"})...)
|
||||||
|
|
||||||
if v.IPAM == kops.CiliumIpamEni {
|
if v.IPAM == kops.CiliumIpamEni {
|
||||||
if c.CloudProvider != string(kops.CloudProviderAWS) {
|
if c.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
allErrs = append(allErrs, field.Forbidden(fldPath.Child("ipam"), "Cilum ENI IPAM is supported only in AWS"))
|
allErrs = append(allErrs, field.Forbidden(fldPath.Child("ipam"), "Cilum ENI IPAM is supported only in AWS"))
|
||||||
}
|
}
|
||||||
if v.Masquerade != nil && *v.Masquerade {
|
if v.Masquerade != nil && *v.Masquerade {
|
||||||
|
|
@ -1049,7 +1049,7 @@ func validateNetworkingCilium(cluster *kops.Cluster, v *kops.CiliumNetworkingSpe
|
||||||
func validateNetworkingGCE(c *kops.ClusterSpec, v *kops.GCENetworkingSpec, fldPath *field.Path) field.ErrorList {
|
func validateNetworkingGCE(c *kops.ClusterSpec, v *kops.GCENetworkingSpec, fldPath *field.Path) field.ErrorList {
|
||||||
allErrs := field.ErrorList{}
|
allErrs := field.ErrorList{}
|
||||||
|
|
||||||
if c.CloudProvider != "gce" {
|
if c.GetCloudProvider() != kops.CloudProviderGCE {
|
||||||
allErrs = append(allErrs, field.Forbidden(fldPath, "GCE networking is supported only when on GCP"))
|
allErrs = append(allErrs, field.Forbidden(fldPath, "GCE networking is supported only when on GCP"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1510,7 +1510,7 @@ func validateNvidiaConfig(spec *kops.ClusterSpec, nvidia *kops.NvidiaGPUConfig,
|
||||||
if !fi.BoolValue(nvidia.Enabled) {
|
if !fi.BoolValue(nvidia.Enabled) {
|
||||||
return allErrs
|
return allErrs
|
||||||
}
|
}
|
||||||
if kops.CloudProviderID(spec.CloudProvider) != kops.CloudProviderAWS {
|
if spec.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
allErrs = append(allErrs, field.Forbidden(fldPath, "Nvidia is only supported on AWS"))
|
allErrs = append(allErrs, field.Forbidden(fldPath, "Nvidia is only supported on AWS"))
|
||||||
}
|
}
|
||||||
if spec.ContainerRuntime != "" && spec.ContainerRuntime != "containerd" {
|
if spec.ContainerRuntime != "" && spec.ContainerRuntime != "containerd" {
|
||||||
|
|
@ -1582,7 +1582,7 @@ func validateClusterAutoscaler(cluster *kops.Cluster, spec *kops.ClusterAutoscal
|
||||||
allErrs = append(allErrs, field.Forbidden(fldPath.Child("expander"), "Cluster autoscaler price expander is only supported on GCE"))
|
allErrs = append(allErrs, field.Forbidden(fldPath.Child("expander"), "Cluster autoscaler price expander is only supported on GCE"))
|
||||||
}
|
}
|
||||||
|
|
||||||
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderOpenstack {
|
if cluster.Spec.GetCloudProvider() == kops.CloudProviderOpenstack {
|
||||||
allErrs = append(allErrs, field.Forbidden(fldPath, "Cluster autoscaler is not supported on OpenStack"))
|
allErrs = append(allErrs, field.Forbidden(fldPath, "Cluster autoscaler is not supported on OpenStack"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1608,7 +1608,7 @@ func validateExternalDNS(cluster *kops.Cluster, spec *kops.ExternalDNSConfig, fl
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateNodeTerminationHandler(cluster *kops.Cluster, spec *kops.NodeTerminationHandlerConfig, fldPath *field.Path) (allErrs field.ErrorList) {
|
func validateNodeTerminationHandler(cluster *kops.Cluster, spec *kops.NodeTerminationHandlerConfig, fldPath *field.Path) (allErrs field.ErrorList) {
|
||||||
if kops.CloudProviderID(cluster.Spec.CloudProvider) != kops.CloudProviderAWS {
|
if cluster.Spec.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
allErrs = append(allErrs, field.Forbidden(fldPath, "Node Termination Handler supports only AWS"))
|
allErrs = append(allErrs, field.Forbidden(fldPath, "Node Termination Handler supports only AWS"))
|
||||||
}
|
}
|
||||||
return allErrs
|
return allErrs
|
||||||
|
|
|
||||||
|
|
@ -153,7 +153,7 @@ func NewConfig(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) (*Confi
|
||||||
}
|
}
|
||||||
|
|
||||||
bootConfig := BootConfig{
|
bootConfig := BootConfig{
|
||||||
CloudProvider: cluster.Spec.CloudProvider,
|
CloudProvider: string(cluster.Spec.GetCloudProvider()),
|
||||||
InstanceGroupName: instanceGroup.ObjectMeta.Name,
|
InstanceGroupName: instanceGroup.ObjectMeta.Name,
|
||||||
InstanceGroupRole: role,
|
InstanceGroupRole: role,
|
||||||
}
|
}
|
||||||
|
|
@ -216,7 +216,7 @@ func NewConfig(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) (*Confi
|
||||||
}
|
}
|
||||||
|
|
||||||
func UsesInstanceIDForNodeName(cluster *kops.Cluster) bool {
|
func UsesInstanceIDForNodeName(cluster *kops.Cluster) bool {
|
||||||
return cluster.Spec.ExternalCloudControllerManager != nil && cluster.IsKubernetesGTE("1.22") && kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderAWS
|
return cluster.Spec.ExternalCloudControllerManager != nil && cluster.IsKubernetesGTE("1.22") && cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS
|
||||||
}
|
}
|
||||||
|
|
||||||
func filterFileAssets(f []kops.FileAssetSpec, role kops.InstanceGroupRole) []kops.FileAssetSpec {
|
func filterFileAssets(f []kops.FileAssetSpec, role kops.InstanceGroupRole) []kops.FileAssetSpec {
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@ func (group *CloudInstanceGroup) AdjustNeedUpdate() {
|
||||||
func GetNodeMap(nodes []v1.Node, cluster *kopsapi.Cluster) map[string]*v1.Node {
|
func GetNodeMap(nodes []v1.Node, cluster *kopsapi.Cluster) map[string]*v1.Node {
|
||||||
nodeMap := make(map[string]*v1.Node)
|
nodeMap := make(map[string]*v1.Node)
|
||||||
|
|
||||||
if kopsapi.CloudProviderID(cluster.Spec.CloudProvider) == kopsapi.CloudProviderAzure {
|
if cluster.Spec.GetCloudProvider() == kopsapi.CloudProviderAzure {
|
||||||
for i := range nodes {
|
for i := range nodes {
|
||||||
node := &nodes[i]
|
node := &nodes[i]
|
||||||
vmName, err := toAzureVMName(node.Spec.ProviderID)
|
vmName, err := toAzureVMName(node.Spec.ProviderID)
|
||||||
|
|
|
||||||
|
|
@ -440,8 +440,8 @@ func (c *RollingUpdateCluster) drainTerminateAndWait(u *cloudinstances.CloudInst
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RollingUpdateCluster) reconcileInstanceGroup() error {
|
func (c *RollingUpdateCluster) reconcileInstanceGroup() error {
|
||||||
if api.CloudProviderID(c.Cluster.Spec.CloudProvider) != api.CloudProviderOpenstack &&
|
if c.Cluster.Spec.GetCloudProvider() != api.CloudProviderOpenstack &&
|
||||||
api.CloudProviderID(c.Cluster.Spec.CloudProvider) != api.CloudProviderDO {
|
c.Cluster.Spec.GetCloudProvider() != api.CloudProviderDO {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
rto := fi.RunTasksOptions{}
|
rto := fi.RunTasksOptions{}
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ func resolveSettings(cluster *kops.Cluster, group *kops.InstanceGroup, numInstan
|
||||||
|
|
||||||
if rollingUpdate.MaxSurge == nil {
|
if rollingUpdate.MaxSurge == nil {
|
||||||
val := intstr.FromInt(0)
|
val := intstr.FromInt(0)
|
||||||
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderAWS && !featureflag.Spotinst.Enabled() && group.Spec.Manager != kops.InstanceManagerKarpenter {
|
if cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS && !featureflag.Spotinst.Enabled() && group.Spec.Manager != kops.InstanceManagerKarpenter {
|
||||||
val = intstr.FromInt(1)
|
val = intstr.FromInt(1)
|
||||||
}
|
}
|
||||||
rollingUpdate.MaxSurge = &val
|
rollingUpdate.MaxSurge = &val
|
||||||
|
|
|
||||||
|
|
@ -139,7 +139,7 @@ func (b *BootstrapScript) buildEnvironmentVariables(cluster *kops.Cluster) (map[
|
||||||
env["S3_SECRET_ACCESS_KEY"] = os.Getenv("S3_SECRET_ACCESS_KEY")
|
env["S3_SECRET_ACCESS_KEY"] = os.Getenv("S3_SECRET_ACCESS_KEY")
|
||||||
}
|
}
|
||||||
|
|
||||||
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderOpenstack {
|
if cluster.Spec.GetCloudProvider() == kops.CloudProviderOpenstack {
|
||||||
|
|
||||||
osEnvs := []string{
|
osEnvs := []string{
|
||||||
"OS_TENANT_ID", "OS_TENANT_NAME", "OS_PROJECT_ID", "OS_PROJECT_NAME",
|
"OS_TENANT_ID", "OS_TENANT_NAME", "OS_PROJECT_ID", "OS_PROJECT_NAME",
|
||||||
|
|
@ -176,14 +176,14 @@ func (b *BootstrapScript) buildEnvironmentVariables(cluster *kops.Cluster) (map[
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderDO {
|
if cluster.Spec.GetCloudProvider() == kops.CloudProviderDO {
|
||||||
doToken := os.Getenv("DIGITALOCEAN_ACCESS_TOKEN")
|
doToken := os.Getenv("DIGITALOCEAN_ACCESS_TOKEN")
|
||||||
if doToken != "" {
|
if doToken != "" {
|
||||||
env["DIGITALOCEAN_ACCESS_TOKEN"] = doToken
|
env["DIGITALOCEAN_ACCESS_TOKEN"] = doToken
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderAWS {
|
if cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS {
|
||||||
region, err := awsup.FindRegion(cluster)
|
region, err := awsup.FindRegion(cluster)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
@ -195,7 +195,7 @@ func (b *BootstrapScript) buildEnvironmentVariables(cluster *kops.Cluster) (map[
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderAzure {
|
if cluster.Spec.GetCloudProvider() == kops.CloudProviderAzure {
|
||||||
env["AZURE_STORAGE_ACCOUNT"] = os.Getenv("AZURE_STORAGE_ACCOUNT")
|
env["AZURE_STORAGE_ACCOUNT"] = os.Getenv("AZURE_STORAGE_ACCOUNT")
|
||||||
azureEnv := os.Getenv("AZURE_ENVIRONMENT")
|
azureEnv := os.Getenv("AZURE_ENVIRONMENT")
|
||||||
if azureEnv != "" {
|
if azureEnv != "" {
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ func (b *KubeAPIServerOptionsBuilder) BuildOptions(o interface{}) error {
|
||||||
}
|
}
|
||||||
c.Image = image
|
c.Image = image
|
||||||
|
|
||||||
switch kops.CloudProviderID(clusterSpec.CloudProvider) {
|
switch clusterSpec.GetCloudProvider() {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
c.CloudProvider = "aws"
|
c.CloudProvider = "aws"
|
||||||
case kops.CloudProviderGCE:
|
case kops.CloudProviderGCE:
|
||||||
|
|
@ -109,7 +109,7 @@ func (b *KubeAPIServerOptionsBuilder) BuildOptions(o interface{}) error {
|
||||||
case kops.CloudProviderAzure:
|
case kops.CloudProviderAzure:
|
||||||
c.CloudProvider = "azure"
|
c.CloudProvider = "azure"
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("unknown cloudprovider %q", clusterSpec.CloudProvider)
|
return fmt.Errorf("unknown cloudprovider %q", clusterSpec.GetCloudProvider())
|
||||||
}
|
}
|
||||||
|
|
||||||
if clusterSpec.ExternalCloudControllerManager != nil {
|
if clusterSpec.ExternalCloudControllerManager != nil {
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ var _ loader.OptionsBuilder = &AWSCloudControllerManagerOptionsBuilder{}
|
||||||
func (b *AWSCloudControllerManagerOptionsBuilder) BuildOptions(o interface{}) error {
|
func (b *AWSCloudControllerManagerOptionsBuilder) BuildOptions(o interface{}) error {
|
||||||
clusterSpec := o.(*kops.ClusterSpec)
|
clusterSpec := o.(*kops.ClusterSpec)
|
||||||
|
|
||||||
if kops.CloudProviderID(clusterSpec.CloudProvider) != kops.CloudProviderAWS {
|
if clusterSpec.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ var _ loader.OptionsBuilder = &AWSEBSCSIDriverOptionsBuilder{}
|
||||||
|
|
||||||
func (b *AWSEBSCSIDriverOptionsBuilder) BuildOptions(o interface{}) error {
|
func (b *AWSEBSCSIDriverOptionsBuilder) BuildOptions(o interface{}) error {
|
||||||
clusterSpec := o.(*kops.ClusterSpec)
|
clusterSpec := o.(*kops.ClusterSpec)
|
||||||
if kops.CloudProviderID(clusterSpec.CloudProvider) != kops.CloudProviderAWS {
|
if clusterSpec.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -371,7 +371,7 @@ func (b *EtcdManagerBuilder) buildPod(etcdCluster kops.EtcdClusterSpec) (*v1.Pod
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
switch kops.CloudProviderID(b.Cluster.Spec.CloudProvider) {
|
switch b.Cluster.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
config.VolumeProvider = "aws"
|
config.VolumeProvider = "aws"
|
||||||
|
|
||||||
|
|
@ -427,7 +427,7 @@ func (b *EtcdManagerBuilder) buildPod(etcdCluster kops.EtcdClusterSpec) (*v1.Pod
|
||||||
config.VolumeNameTag = openstack.TagNameEtcdClusterPrefix + etcdCluster.Name
|
config.VolumeNameTag = openstack.TagNameEtcdClusterPrefix + etcdCluster.Name
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("CloudProvider %q not supported with etcd-manager", b.Cluster.Spec.CloudProvider)
|
return nil, fmt.Errorf("CloudProvider %q not supported with etcd-manager", b.Cluster.Spec.GetCloudProvider())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ var _ loader.OptionsBuilder = (*GCPCloudControllerManagerOptionsBuilder)(nil)
|
||||||
func (b *GCPCloudControllerManagerOptionsBuilder) BuildOptions(options interface{}) error {
|
func (b *GCPCloudControllerManagerOptionsBuilder) BuildOptions(options interface{}) error {
|
||||||
clusterSpec := options.(*kops.ClusterSpec)
|
clusterSpec := options.(*kops.ClusterSpec)
|
||||||
|
|
||||||
if kops.CloudProviderID(clusterSpec.CloudProvider) != kops.CloudProviderGCE {
|
if clusterSpec.GetCloudProvider() != kops.CloudProviderGCE {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ var _ loader.OptionsBuilder = &GCPPDCSIDriverOptionsBuilder{}
|
||||||
|
|
||||||
func (b *GCPPDCSIDriverOptionsBuilder) BuildOptions(o interface{}) error {
|
func (b *GCPPDCSIDriverOptionsBuilder) BuildOptions(o interface{}) error {
|
||||||
clusterSpec := o.(*kops.ClusterSpec)
|
clusterSpec := o.(*kops.ClusterSpec)
|
||||||
if kops.CloudProviderID(clusterSpec.CloudProvider) != kops.CloudProviderGCE {
|
if clusterSpec.GetCloudProvider() != kops.CloudProviderGCE {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ func (b *KubeControllerManagerOptionsBuilder) BuildOptions(o interface{}) error
|
||||||
if b.IsKubernetesGTE("1.24") {
|
if b.IsKubernetesGTE("1.24") {
|
||||||
kcm.CloudProvider = "external"
|
kcm.CloudProvider = "external"
|
||||||
} else {
|
} else {
|
||||||
switch kops.CloudProviderID(clusterSpec.CloudProvider) {
|
switch kops.CloudProviderID(clusterSpec.GetCloudProvider()) {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
kcm.CloudProvider = "aws"
|
kcm.CloudProvider = "aws"
|
||||||
|
|
||||||
|
|
@ -97,7 +97,7 @@ func (b *KubeControllerManagerOptionsBuilder) BuildOptions(o interface{}) error
|
||||||
kcm.CloudProvider = "azure"
|
kcm.CloudProvider = "azure"
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("unknown cloudprovider %q", clusterSpec.CloudProvider)
|
return fmt.Errorf("unknown cloudprovider %q", clusterSpec.GetCloudProvider())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ func (b *KubeDnsOptionsBuilder) BuildOptions(o interface{}) error {
|
||||||
clusterSpec.KubeDNS.MemoryLimit = &defaultMemoryLimit
|
clusterSpec.KubeDNS.MemoryLimit = &defaultMemoryLimit
|
||||||
}
|
}
|
||||||
|
|
||||||
if clusterSpec.IsIPv6Only() && kops.CloudProviderID(clusterSpec.CloudProvider) == kops.CloudProviderAWS {
|
if clusterSpec.IsIPv6Only() && clusterSpec.GetCloudProvider() == kops.CloudProviderAWS {
|
||||||
if len(clusterSpec.KubeDNS.UpstreamNameservers) == 0 {
|
if len(clusterSpec.KubeDNS.UpstreamNameservers) == 0 {
|
||||||
clusterSpec.KubeDNS.UpstreamNameservers = []string{"fd00:ec2::253"}
|
clusterSpec.KubeDNS.UpstreamNameservers = []string{"fd00:ec2::253"}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -122,7 +122,7 @@ func (b *KubeletOptionsBuilder) BuildOptions(o interface{}) error {
|
||||||
clusterSpec.MasterKubelet.HairpinMode = "none"
|
clusterSpec.MasterKubelet.HairpinMode = "none"
|
||||||
}
|
}
|
||||||
|
|
||||||
cloudProvider := kops.CloudProviderID(clusterSpec.CloudProvider)
|
cloudProvider := clusterSpec.GetCloudProvider()
|
||||||
|
|
||||||
clusterSpec.Kubelet.CgroupRoot = "/"
|
clusterSpec.Kubelet.CgroupRoot = "/"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ var _ loader.OptionsBuilder = &OpenStackOptionsBulder{}
|
||||||
func (b *OpenStackOptionsBulder) BuildOptions(o interface{}) error {
|
func (b *OpenStackOptionsBulder) BuildOptions(o interface{}) error {
|
||||||
clusterSpec := o.(*kops.ClusterSpec)
|
clusterSpec := o.(*kops.ClusterSpec)
|
||||||
|
|
||||||
if kops.CloudProviderID(clusterSpec.CloudProvider) != kops.CloudProviderOpenstack {
|
if clusterSpec.GetCloudProvider() != kops.CloudProviderOpenstack {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -189,7 +189,7 @@ func (b *KopsModelContext) CloudTagsForInstanceGroup(ig *kops.InstanceGroup) (ma
|
||||||
func (b *KopsModelContext) CloudTags(name string, shared bool) map[string]string {
|
func (b *KopsModelContext) CloudTags(name string, shared bool) map[string]string {
|
||||||
tags := make(map[string]string)
|
tags := make(map[string]string)
|
||||||
|
|
||||||
switch kops.CloudProviderID(b.Cluster.Spec.CloudProvider) {
|
switch b.Cluster.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
if shared {
|
if shared {
|
||||||
// If the resource is shared, we don't try to set the Name - we presume that is managed externally
|
// If the resource is shared, we don't try to set the Name - we presume that is managed externally
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,7 @@ func BuildNodeRoleSubject(igRole kops.InstanceGroupRole, enableLifecycleHookPerm
|
||||||
|
|
||||||
// AddServiceAccountRole adds the appropriate mounts / env vars to enable a pod to use a service-account role
|
// AddServiceAccountRole adds the appropriate mounts / env vars to enable a pod to use a service-account role
|
||||||
func AddServiceAccountRole(context *IAMModelContext, podSpec *corev1.PodSpec, serviceAccountRole Subject) error {
|
func AddServiceAccountRole(context *IAMModelContext, podSpec *corev1.PodSpec, serviceAccountRole Subject) error {
|
||||||
cloudProvider := kops.CloudProviderID(context.Cluster.Spec.CloudProvider)
|
cloudProvider := context.Cluster.Spec.GetCloudProvider()
|
||||||
|
|
||||||
switch cloudProvider {
|
switch cloudProvider {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ func (b *MasterVolumeBuilder) Build(c *fi.ModelBuilderContext) error {
|
||||||
}
|
}
|
||||||
sort.Strings(allMembers)
|
sort.Strings(allMembers)
|
||||||
|
|
||||||
switch kops.CloudProviderID(b.Cluster.Spec.CloudProvider) {
|
switch b.Cluster.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
err = b.addAWSVolume(c, name, volumeSize, zone, etcd, m, allMembers)
|
err = b.addAWSVolume(c, name, volumeSize, zone, etcd, m, allMembers)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -111,7 +111,7 @@ func (b *MasterVolumeBuilder) Build(c *fi.ModelBuilderContext) error {
|
||||||
case kops.CloudProviderAzure:
|
case kops.CloudProviderAzure:
|
||||||
b.addAzureVolume(c, name, volumeSize, zone, etcd, m, allMembers)
|
b.addAzureVolume(c, name, volumeSize, zone, etcd, m, allMembers)
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("unknown cloudprovider %q", b.Cluster.Spec.CloudProvider)
|
return fmt.Errorf("unknown cloudprovider %q", b.Cluster.Spec.GetCloudProvider())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -393,7 +393,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
||||||
InstanceGroups: c.InstanceGroups,
|
InstanceGroups: c.InstanceGroups,
|
||||||
}
|
}
|
||||||
|
|
||||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderGCE:
|
case kops.CloudProviderGCE:
|
||||||
{
|
{
|
||||||
gceCloud := cloud.(gce.GCECloud)
|
gceCloud := cloud.(gce.GCECloud)
|
||||||
|
|
@ -452,7 +452,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("unknown CloudProvider %q", cluster.Spec.CloudProvider)
|
return fmt.Errorf("unknown CloudProvider %q", cluster.Spec.GetCloudProvider())
|
||||||
}
|
}
|
||||||
|
|
||||||
modelContext.SSHPublicKeys = sshPublicKeys
|
modelContext.SSHPublicKeys = sshPublicKeys
|
||||||
|
|
@ -529,7 +529,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
||||||
&model.ConfigBuilder{KopsModelContext: modelContext, Lifecycle: clusterLifecycle},
|
&model.ConfigBuilder{KopsModelContext: modelContext, Lifecycle: clusterLifecycle},
|
||||||
)
|
)
|
||||||
|
|
||||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
awsModelContext := &awsmodel.AWSModelContext{
|
awsModelContext := &awsmodel.AWSModelContext{
|
||||||
KopsModelContext: modelContext,
|
KopsModelContext: modelContext,
|
||||||
|
|
@ -633,7 +633,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
||||||
)
|
)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("unknown cloudprovider %q", cluster.Spec.CloudProvider)
|
return fmt.Errorf("unknown cloudprovider %q", cluster.Spec.GetCloudProvider())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
c.TaskMap, err = l.BuildTasks(c.LifecycleOverrides)
|
c.TaskMap, err = l.BuildTasks(c.LifecycleOverrides)
|
||||||
|
|
@ -646,7 +646,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
||||||
|
|
||||||
switch c.TargetName {
|
switch c.TargetName {
|
||||||
case TargetDirect:
|
case TargetDirect:
|
||||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderGCE:
|
case kops.CloudProviderGCE:
|
||||||
target = gce.NewGCEAPITarget(cloud.(gce.GCECloud))
|
target = gce.NewGCEAPITarget(cloud.(gce.GCECloud))
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
|
|
@ -658,7 +658,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
||||||
case kops.CloudProviderAzure:
|
case kops.CloudProviderAzure:
|
||||||
target = azure.NewAzureAPITarget(cloud.(azure.AzureCloud))
|
target = azure.NewAzureAPITarget(cloud.(azure.AzureCloud))
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("direct configuration not supported with CloudProvider:%q", cluster.Spec.CloudProvider)
|
return fmt.Errorf("direct configuration not supported with CloudProvider:%q", cluster.Spec.GetCloudProvider())
|
||||||
}
|
}
|
||||||
|
|
||||||
case TargetTerraform:
|
case TargetTerraform:
|
||||||
|
|
@ -1076,7 +1076,7 @@ func ChannelForCluster(c *kops.Cluster) (*kops.Channel, error) {
|
||||||
// This is only needed currently on ContainerOS i.e. GCE, but we don't have a nice way to detect it yet
|
// This is only needed currently on ContainerOS i.e. GCE, but we don't have a nice way to detect it yet
|
||||||
func needsMounterAsset(c *kops.Cluster, instanceGroups []*kops.InstanceGroup) bool {
|
func needsMounterAsset(c *kops.Cluster, instanceGroups []*kops.InstanceGroup) bool {
|
||||||
// TODO: Do real detection of ContainerOS (but this has to work with image names, and maybe even forked images)
|
// TODO: Do real detection of ContainerOS (but this has to work with image names, and maybe even forked images)
|
||||||
switch kops.CloudProviderID(c.Spec.CloudProvider) {
|
switch c.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderGCE:
|
case kops.CloudProviderGCE:
|
||||||
return true
|
return true
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -452,8 +452,8 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
|
||||||
}
|
}
|
||||||
|
|
||||||
if b.IsKubernetesGTE("1.23") && b.IsKubernetesLT("1.26") &&
|
if b.IsKubernetesGTE("1.23") && b.IsKubernetesLT("1.26") &&
|
||||||
(kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderAWS ||
|
(b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS ||
|
||||||
kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderGCE) {
|
b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderGCE) {
|
||||||
// AWS and GCE KCM-to-CCM leader migration
|
// AWS and GCE KCM-to-CCM leader migration
|
||||||
key := "leader-migration.rbac.addons.k8s.io"
|
key := "leader-migration.rbac.addons.k8s.io"
|
||||||
|
|
||||||
|
|
@ -730,7 +730,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderAWS {
|
if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS {
|
||||||
key := "storage-aws.addons.k8s.io"
|
key := "storage-aws.addons.k8s.io"
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -746,7 +746,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderDO {
|
if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderDO {
|
||||||
key := "digitalocean-cloud-controller.addons.k8s.io"
|
key := "digitalocean-cloud-controller.addons.k8s.io"
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -762,7 +762,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderGCE {
|
if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderGCE {
|
||||||
key := "storage-gce.addons.k8s.io"
|
key := "storage-gce.addons.k8s.io"
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -810,7 +810,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
|
||||||
|
|
||||||
// The metadata-proxy daemonset conceals node metadata endpoints in GCE.
|
// The metadata-proxy daemonset conceals node metadata endpoints in GCE.
|
||||||
// It will land on nodes labeled cloud.google.com/metadata-proxy-ready=true
|
// It will land on nodes labeled cloud.google.com/metadata-proxy-ready=true
|
||||||
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderGCE {
|
if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderGCE {
|
||||||
key := "metadata-proxy.addons.k8s.io"
|
key := "metadata-proxy.addons.k8s.io"
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -825,7 +825,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderGCE {
|
if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderGCE {
|
||||||
if b.Cluster.Spec.ExternalCloudControllerManager != nil {
|
if b.Cluster.Spec.ExternalCloudControllerManager != nil {
|
||||||
key := "gcp-cloud-controller.addons.k8s.io"
|
key := "gcp-cloud-controller.addons.k8s.io"
|
||||||
{
|
{
|
||||||
|
|
@ -1008,7 +1008,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderOpenstack {
|
if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderOpenstack {
|
||||||
{
|
{
|
||||||
key := "storage-openstack.addons.k8s.io"
|
key := "storage-openstack.addons.k8s.io"
|
||||||
|
|
||||||
|
|
@ -1055,7 +1055,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderAWS {
|
if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS {
|
||||||
|
|
||||||
if b.Cluster.Spec.ExternalCloudControllerManager != nil {
|
if b.Cluster.Spec.ExternalCloudControllerManager != nil {
|
||||||
key := "aws-cloud-controller.addons.k8s.io"
|
key := "aws-cloud-controller.addons.k8s.io"
|
||||||
|
|
@ -1138,7 +1138,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderAWS && b.Cluster.Spec.KubeAPIServer.ServiceAccountIssuer != nil {
|
if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS && b.Cluster.Spec.KubeAPIServer.ServiceAccountIssuer != nil {
|
||||||
awsModelContext := &awsmodel.AWSModelContext{
|
awsModelContext := &awsmodel.AWSModelContext{
|
||||||
KopsModelContext: b.KopsModelContext,
|
KopsModelContext: b.KopsModelContext,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -217,7 +217,7 @@ func assignProxy(cluster *kops.Cluster) (*kops.EgressProxySpec, error) {
|
||||||
|
|
||||||
awsNoProxy := "169.254.169.254"
|
awsNoProxy := "169.254.169.254"
|
||||||
|
|
||||||
if cluster.Spec.CloudProvider == "aws" && !strings.Contains(cluster.Spec.EgressProxy.ProxyExcludes, awsNoProxy) {
|
if cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS && !strings.Contains(cluster.Spec.EgressProxy.ProxyExcludes, awsNoProxy) {
|
||||||
egressSlice = append(egressSlice, awsNoProxy)
|
egressSlice = append(egressSlice, awsNoProxy)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -270,7 +270,7 @@ func NewCluster(opt *NewClusterOptions, clientset simple.Clientset) (*NewCluster
|
||||||
cluster.Spec.ServiceAccountIssuerDiscovery = &api.ServiceAccountIssuerDiscoveryConfig{
|
cluster.Spec.ServiceAccountIssuerDiscovery = &api.ServiceAccountIssuerDiscoveryConfig{
|
||||||
DiscoveryStore: discoveryPath.Join(cluster.Name).Path(),
|
DiscoveryStore: discoveryPath.Join(cluster.Name).Path(),
|
||||||
}
|
}
|
||||||
if cluster.Spec.CloudProvider == string(api.CloudProviderAWS) {
|
if cluster.Spec.GetCloudProvider() == api.CloudProviderAWS {
|
||||||
cluster.Spec.ServiceAccountIssuerDiscovery.EnableAWSOIDCProvider = true
|
cluster.Spec.ServiceAccountIssuerDiscovery.EnableAWSOIDCProvider = true
|
||||||
cluster.Spec.IAM.UseServiceAccountExternalPermissions = fi.Bool(true)
|
cluster.Spec.IAM.UseServiceAccountExternalPermissions = fi.Bool(true)
|
||||||
}
|
}
|
||||||
|
|
@ -350,7 +350,7 @@ func NewCluster(opt *NewClusterOptions, clientset simple.Clientset) (*NewCluster
|
||||||
func setupVPC(opt *NewClusterOptions, cluster *api.Cluster) error {
|
func setupVPC(opt *NewClusterOptions, cluster *api.Cluster) error {
|
||||||
cluster.Spec.NetworkID = opt.NetworkID
|
cluster.Spec.NetworkID = opt.NetworkID
|
||||||
|
|
||||||
switch api.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case api.CloudProviderAWS:
|
case api.CloudProviderAWS:
|
||||||
if cluster.Spec.NetworkID == "" && len(opt.SubnetIDs) > 0 {
|
if cluster.Spec.NetworkID == "" && len(opt.SubnetIDs) > 0 {
|
||||||
cloudTags := map[string]string{}
|
cloudTags := map[string]string{}
|
||||||
|
|
@ -474,7 +474,7 @@ func setupZones(opt *NewClusterOptions, cluster *api.Cluster, allZones sets.Stri
|
||||||
|
|
||||||
var zoneToSubnetProviderID map[string]string
|
var zoneToSubnetProviderID map[string]string
|
||||||
|
|
||||||
switch api.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case api.CloudProviderGCE:
|
case api.CloudProviderGCE:
|
||||||
// On GCE, subnets are regional - we create one per region, not per zone
|
// On GCE, subnets are regional - we create one per region, not per zone
|
||||||
for _, zoneName := range allZones.List() {
|
for _, zoneName := range allZones.List() {
|
||||||
|
|
@ -661,7 +661,7 @@ func getOpenstackZoneToSubnetProviderID(spec *api.ClusterSpec, zones []string, s
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupMasters(opt *NewClusterOptions, cluster *api.Cluster, zoneToSubnetMap map[string]*api.ClusterSubnetSpec) ([]*api.InstanceGroup, error) {
|
func setupMasters(opt *NewClusterOptions, cluster *api.Cluster, zoneToSubnetMap map[string]*api.ClusterSubnetSpec) ([]*api.InstanceGroup, error) {
|
||||||
cloudProvider := api.CloudProviderID(cluster.Spec.CloudProvider)
|
cloudProvider := cluster.Spec.GetCloudProvider()
|
||||||
|
|
||||||
var masters []*api.InstanceGroup
|
var masters []*api.InstanceGroup
|
||||||
|
|
||||||
|
|
@ -815,7 +815,7 @@ func trimCommonPrefix(names []string) []string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupNodes(opt *NewClusterOptions, cluster *api.Cluster, zoneToSubnetMap map[string]*api.ClusterSubnetSpec) ([]*api.InstanceGroup, error) {
|
func setupNodes(opt *NewClusterOptions, cluster *api.Cluster, zoneToSubnetMap map[string]*api.ClusterSubnetSpec) ([]*api.InstanceGroup, error) {
|
||||||
cloudProvider := api.CloudProviderID(cluster.Spec.CloudProvider)
|
cloudProvider := cluster.Spec.GetCloudProvider()
|
||||||
|
|
||||||
var nodes []*api.InstanceGroup
|
var nodes []*api.InstanceGroup
|
||||||
|
|
||||||
|
|
@ -883,7 +883,7 @@ func setupKarpenterNodes(opt *NewClusterOptions, cluster *api.Cluster, zoneToSub
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupAPIServers(opt *NewClusterOptions, cluster *api.Cluster, zoneToSubnetMap map[string]*api.ClusterSubnetSpec) ([]*api.InstanceGroup, error) {
|
func setupAPIServers(opt *NewClusterOptions, cluster *api.Cluster, zoneToSubnetMap map[string]*api.ClusterSubnetSpec) ([]*api.InstanceGroup, error) {
|
||||||
cloudProvider := api.CloudProviderID(cluster.Spec.CloudProvider)
|
cloudProvider := cluster.Spec.GetCloudProvider()
|
||||||
|
|
||||||
var nodes []*api.InstanceGroup
|
var nodes []*api.InstanceGroup
|
||||||
|
|
||||||
|
|
@ -948,7 +948,7 @@ func setupNetworking(opt *NewClusterOptions, cluster *api.Cluster) error {
|
||||||
case "weave":
|
case "weave":
|
||||||
cluster.Spec.Networking.Weave = &api.WeaveNetworkingSpec{}
|
cluster.Spec.Networking.Weave = &api.WeaveNetworkingSpec{}
|
||||||
|
|
||||||
if cluster.Spec.CloudProvider == "aws" {
|
if cluster.Spec.GetCloudProvider() == api.CloudProviderAWS {
|
||||||
// AWS supports "jumbo frames" of 9001 bytes and weave adds up to 87 bytes overhead
|
// AWS supports "jumbo frames" of 9001 bytes and weave adds up to 87 bytes overhead
|
||||||
// sets the default to the largest number that leaves enough overhead and is divisible by 4
|
// sets the default to the largest number that leaves enough overhead and is divisible by 4
|
||||||
jumboFrameMTUSize := int32(8912)
|
jumboFrameMTUSize := int32(8912)
|
||||||
|
|
@ -1027,7 +1027,7 @@ func setupTopology(opt *NewClusterOptions, cluster *api.Cluster, allZones sets.S
|
||||||
var zoneToSubnetProviderID map[string]string
|
var zoneToSubnetProviderID map[string]string
|
||||||
var err error
|
var err error
|
||||||
if len(opt.Zones) > 0 && len(opt.UtilitySubnetIDs) > 0 {
|
if len(opt.Zones) > 0 && len(opt.UtilitySubnetIDs) > 0 {
|
||||||
switch api.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case api.CloudProviderAWS:
|
case api.CloudProviderAWS:
|
||||||
zoneToSubnetProviderID, err = getAWSZoneToSubnetProviderID(cluster.Spec.NetworkID, opt.Zones[0][:len(opt.Zones[0])-1], opt.UtilitySubnetIDs)
|
zoneToSubnetProviderID, err = getAWSZoneToSubnetProviderID(cluster.Spec.NetworkID, opt.Zones[0][:len(opt.Zones[0])-1], opt.UtilitySubnetIDs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -1065,7 +1065,7 @@ func setupTopology(opt *NewClusterOptions, cluster *api.Cluster, allZones sets.S
|
||||||
}
|
}
|
||||||
|
|
||||||
addUtilitySubnets := true
|
addUtilitySubnets := true
|
||||||
switch api.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case api.CloudProviderGCE:
|
case api.CloudProviderGCE:
|
||||||
// GCE does not need utility subnets
|
// GCE does not need utility subnets
|
||||||
addUtilitySubnets = false
|
addUtilitySubnets = false
|
||||||
|
|
@ -1103,7 +1103,7 @@ func setupTopology(opt *NewClusterOptions, cluster *api.Cluster, allZones sets.S
|
||||||
PublicName: "bastion." + cluster.Name,
|
PublicName: "bastion." + cluster.Name,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if api.CloudProviderID(cluster.Spec.CloudProvider) == api.CloudProviderGCE {
|
if cluster.Spec.GetCloudProvider() == api.CloudProviderGCE {
|
||||||
bastionGroup.Spec.Zones = allZones.List()
|
bastionGroup.Spec.Zones = allZones.List()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1123,7 +1123,7 @@ func setupTopology(opt *NewClusterOptions, cluster *api.Cluster, allZones sets.S
|
||||||
if opt.IPv6 {
|
if opt.IPv6 {
|
||||||
cluster.Spec.NonMasqueradeCIDR = "::/0"
|
cluster.Spec.NonMasqueradeCIDR = "::/0"
|
||||||
cluster.Spec.ExternalCloudControllerManager = &api.CloudControllerManagerConfig{}
|
cluster.Spec.ExternalCloudControllerManager = &api.CloudControllerManagerConfig{}
|
||||||
if api.CloudProviderID(cluster.Spec.CloudProvider) == api.CloudProviderAWS {
|
if cluster.Spec.GetCloudProvider() == api.CloudProviderAWS {
|
||||||
for i := range cluster.Spec.Subnets {
|
for i := range cluster.Spec.Subnets {
|
||||||
cluster.Spec.Subnets[i].IPv6CIDR = fmt.Sprintf("/64#%x", i)
|
cluster.Spec.Subnets[i].IPv6CIDR = fmt.Sprintf("/64#%x", i)
|
||||||
}
|
}
|
||||||
|
|
@ -1147,11 +1147,11 @@ func setupTopology(opt *NewClusterOptions, cluster *api.Cluster, allZones sets.S
|
||||||
|
|
||||||
func setupAPI(opt *NewClusterOptions, cluster *api.Cluster) error {
|
func setupAPI(opt *NewClusterOptions, cluster *api.Cluster) error {
|
||||||
// Populate the API access, so that it can be discoverable
|
// Populate the API access, so that it can be discoverable
|
||||||
klog.Infof(" Cloud Provider ID = %s", api.CloudProviderID(cluster.Spec.CloudProvider))
|
klog.Infof(" Cloud Provider ID = %s", cluster.Spec.GetCloudProvider())
|
||||||
cluster.Spec.API = &api.AccessSpec{}
|
cluster.Spec.API = &api.AccessSpec{}
|
||||||
if api.CloudProviderID(cluster.Spec.CloudProvider) == api.CloudProviderOpenstack {
|
if cluster.Spec.GetCloudProvider() == api.CloudProviderOpenstack {
|
||||||
initializeOpenstackAPI(opt, cluster)
|
initializeOpenstackAPI(opt, cluster)
|
||||||
} else if api.CloudProviderID(cluster.Spec.CloudProvider) == api.CloudProviderAzure {
|
} else if cluster.Spec.GetCloudProvider() == api.CloudProviderAzure {
|
||||||
// Do nothing to disable the use of loadbalancer for the k8s API server.
|
// Do nothing to disable the use of loadbalancer for the k8s API server.
|
||||||
// TODO(kenji): Remove this condition once we support the loadbalancer
|
// TODO(kenji): Remove this condition once we support the loadbalancer
|
||||||
// in pkg/model/azuremodel/api_loadbalancer.go.
|
// in pkg/model/azuremodel/api_loadbalancer.go.
|
||||||
|
|
@ -1192,7 +1192,7 @@ func setupAPI(opt *NewClusterOptions, cluster *api.Cluster) error {
|
||||||
cluster.Spec.API.LoadBalancer.SSLCertificate = opt.APISSLCertificate
|
cluster.Spec.API.LoadBalancer.SSLCertificate = opt.APISSLCertificate
|
||||||
}
|
}
|
||||||
|
|
||||||
if cluster.Spec.API.LoadBalancer != nil && cluster.Spec.API.LoadBalancer.Class == "" && api.CloudProviderID(cluster.Spec.CloudProvider) == api.CloudProviderAWS {
|
if cluster.Spec.API.LoadBalancer != nil && cluster.Spec.API.LoadBalancer.Class == "" && cluster.Spec.GetCloudProvider() == api.CloudProviderAWS {
|
||||||
switch opt.APILoadBalancerClass {
|
switch opt.APILoadBalancerClass {
|
||||||
case "", "classic":
|
case "", "classic":
|
||||||
cluster.Spec.API.LoadBalancer.Class = api.LoadBalancerClassClassic
|
cluster.Spec.API.LoadBalancer.Class = api.LoadBalancerClassClassic
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ func PopulateInstanceGroupSpec(cluster *kops.Cluster, input *kops.InstanceGroup,
|
||||||
}
|
}
|
||||||
|
|
||||||
if ig.Spec.Tenancy != "" && ig.Spec.Tenancy != "default" {
|
if ig.Spec.Tenancy != "" && ig.Spec.Tenancy != "default" {
|
||||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
if _, ok := awsDedicatedInstanceExceptions[ig.Spec.MachineType]; ok {
|
if _, ok := awsDedicatedInstanceExceptions[ig.Spec.MachineType]; ok {
|
||||||
return nil, fmt.Errorf("invalid dedicated instance type: %s", ig.Spec.MachineType)
|
return nil, fmt.Errorf("invalid dedicated instance type: %s", ig.Spec.MachineType)
|
||||||
|
|
@ -176,7 +176,7 @@ func PopulateInstanceGroupSpec(cluster *kops.Cluster, input *kops.InstanceGroup,
|
||||||
}
|
}
|
||||||
|
|
||||||
if cluster.Spec.Containerd != nil && cluster.Spec.Containerd.NvidiaGPU != nil && fi.BoolValue(cluster.Spec.Containerd.NvidiaGPU.Enabled) {
|
if cluster.Spec.Containerd != nil && cluster.Spec.Containerd.NvidiaGPU != nil && fi.BoolValue(cluster.Spec.Containerd.NvidiaGPU.Enabled) {
|
||||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
mt, err := awsup.GetMachineTypeInfo(cloud.(awsup.AWSCloud), ig.Spec.MachineType)
|
mt, err := awsup.GetMachineTypeInfo(cloud.(awsup.AWSCloud), ig.Spec.MachineType)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -208,7 +208,7 @@ func PopulateInstanceGroupSpec(cluster *kops.Cluster, input *kops.InstanceGroup,
|
||||||
|
|
||||||
// defaultMachineType returns the default MachineType for the instance group, based on the cloudprovider
|
// defaultMachineType returns the default MachineType for the instance group, based on the cloudprovider
|
||||||
func defaultMachineType(cloud fi.Cloud, cluster *kops.Cluster, ig *kops.InstanceGroup) (string, error) {
|
func defaultMachineType(cloud fi.Cloud, cluster *kops.Cluster, ig *kops.InstanceGroup) (string, error) {
|
||||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
if ig.Spec.Manager == kops.InstanceManagerKarpenter {
|
if ig.Spec.Manager == kops.InstanceManagerKarpenter {
|
||||||
return "", nil
|
return "", nil
|
||||||
|
|
@ -262,7 +262,7 @@ func defaultMachineType(cloud fi.Cloud, cluster *kops.Cluster, ig *kops.Instance
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
klog.V(2).Infof("Cannot set default MachineType for CloudProvider=%q, Role=%q", cluster.Spec.CloudProvider, ig.Spec.Role)
|
klog.V(2).Infof("Cannot set default MachineType for CloudProvider=%q, Role=%q", cluster.Spec.GetCloudProvider(), ig.Spec.Role)
|
||||||
return "", nil
|
return "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -278,18 +278,18 @@ func defaultImage(cluster *kops.Cluster, channel *kops.Channel, architecture arc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if kubernetesVersion != nil {
|
if kubernetesVersion != nil {
|
||||||
image := channel.FindImage(kops.CloudProviderID(cluster.Spec.CloudProvider), *kubernetesVersion, architecture)
|
image := channel.FindImage(cluster.Spec.GetCloudProvider(), *kubernetesVersion, architecture)
|
||||||
if image != nil {
|
if image != nil {
|
||||||
return image.Name
|
return image.Name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderDO:
|
case kops.CloudProviderDO:
|
||||||
return defaultDONodeImage
|
return defaultDONodeImage
|
||||||
}
|
}
|
||||||
klog.Infof("Cannot set default Image for CloudProvider=%q", cluster.Spec.CloudProvider)
|
klog.Infof("Cannot set default Image for CloudProvider=%q", cluster.Spec.GetCloudProvider())
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -211,7 +211,7 @@ func (tf *TemplateFunctions) AddTo(dest template.FuncMap, secretStore fi.SecretS
|
||||||
if c.IPIPMode != "" {
|
if c.IPIPMode != "" {
|
||||||
return c.IPIPMode
|
return c.IPIPMode
|
||||||
}
|
}
|
||||||
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderOpenstack {
|
if cluster.Spec.GetCloudProvider() == kops.CloudProviderOpenstack {
|
||||||
return "Always"
|
return "Always"
|
||||||
}
|
}
|
||||||
return "CrossSubnet"
|
return "CrossSubnet"
|
||||||
|
|
@ -399,8 +399,8 @@ func (tf *TemplateFunctions) CloudControllerConfigArgv() ([]string, error) {
|
||||||
|
|
||||||
// take the cloud provider value from clusterSpec if unset
|
// take the cloud provider value from clusterSpec if unset
|
||||||
if cluster.Spec.ExternalCloudControllerManager.CloudProvider == "" {
|
if cluster.Spec.ExternalCloudControllerManager.CloudProvider == "" {
|
||||||
if cluster.Spec.CloudProvider != "" {
|
if cluster.Spec.GetCloudProvider() != "" {
|
||||||
argv = append(argv, fmt.Sprintf("--cloud-provider=%s", cluster.Spec.CloudProvider))
|
argv = append(argv, fmt.Sprintf("--cloud-provider=%s", cluster.Spec.GetCloudProvider()))
|
||||||
} else {
|
} else {
|
||||||
return nil, fmt.Errorf("Cloud Provider is not set")
|
return nil, fmt.Errorf("Cloud Provider is not set")
|
||||||
}
|
}
|
||||||
|
|
@ -493,7 +493,7 @@ func (tf *TemplateFunctions) DNSControllerArgv() ([]string, error) {
|
||||||
argv = append(argv, fmt.Sprintf("--gossip-seed-secondary=127.0.0.1:%d", wellknownports.ProtokubeGossipMemberlist))
|
argv = append(argv, fmt.Sprintf("--gossip-seed-secondary=127.0.0.1:%d", wellknownports.ProtokubeGossipMemberlist))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
if strings.HasPrefix(os.Getenv("AWS_REGION"), "cn-") {
|
if strings.HasPrefix(os.Getenv("AWS_REGION"), "cn-") {
|
||||||
argv = append(argv, "--dns=gossip")
|
argv = append(argv, "--dns=gossip")
|
||||||
|
|
@ -506,7 +506,7 @@ func (tf *TemplateFunctions) DNSControllerArgv() ([]string, error) {
|
||||||
argv = append(argv, "--dns=digitalocean")
|
argv = append(argv, "--dns=digitalocean")
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("unhandled cloudprovider %q", cluster.Spec.CloudProvider)
|
return nil, fmt.Errorf("unhandled cloudprovider %q", cluster.Spec.GetCloudProvider())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -540,7 +540,7 @@ func (tf *TemplateFunctions) KopsControllerConfig() (string, error) {
|
||||||
cluster := tf.Cluster
|
cluster := tf.Cluster
|
||||||
|
|
||||||
config := &kopscontrollerconfig.Options{
|
config := &kopscontrollerconfig.Options{
|
||||||
Cloud: cluster.Spec.CloudProvider,
|
Cloud: string(cluster.Spec.GetCloudProvider()),
|
||||||
ConfigBase: cluster.Spec.ConfigBase,
|
ConfigBase: cluster.Spec.ConfigBase,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -572,7 +572,7 @@ func (tf *TemplateFunctions) KopsControllerConfig() (string, error) {
|
||||||
CertNames: certNames,
|
CertNames: certNames,
|
||||||
}
|
}
|
||||||
|
|
||||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
nodesRoles := sets.String{}
|
nodesRoles := sets.String{}
|
||||||
for _, ig := range tf.InstanceGroups {
|
for _, ig := range tf.InstanceGroups {
|
||||||
|
|
@ -618,7 +618,7 @@ func (tf *TemplateFunctions) KopsControllerConfig() (string, error) {
|
||||||
MaxTimeSkew: 300,
|
MaxTimeSkew: 300,
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return "", fmt.Errorf("unsupported cloud provider %s", cluster.Spec.CloudProvider)
|
return "", fmt.Errorf("unsupported cloud provider %s", cluster.Spec.GetCloudProvider())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -661,9 +661,9 @@ func (tf *TemplateFunctions) ExternalDNSArgv() ([]string, error) {
|
||||||
|
|
||||||
var argv []string
|
var argv []string
|
||||||
|
|
||||||
cloudProvider := cluster.Spec.CloudProvider
|
cloudProvider := cluster.Spec.GetCloudProvider()
|
||||||
|
|
||||||
switch kops.CloudProviderID(cloudProvider) {
|
switch cloudProvider {
|
||||||
case kops.CloudProviderAWS:
|
case kops.CloudProviderAWS:
|
||||||
argv = append(argv, "--provider=aws")
|
argv = append(argv, "--provider=aws")
|
||||||
case kops.CloudProviderGCE:
|
case kops.CloudProviderGCE:
|
||||||
|
|
@ -671,7 +671,7 @@ func (tf *TemplateFunctions) ExternalDNSArgv() ([]string, error) {
|
||||||
argv = append(argv, "--provider=google")
|
argv = append(argv, "--provider=google")
|
||||||
argv = append(argv, "--google-project="+project)
|
argv = append(argv, "--google-project="+project)
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("unhandled cloudprovider %q", cluster.Spec.CloudProvider)
|
return nil, fmt.Errorf("unhandled cloudprovider %q", cluster.Spec.GetCloudProvider())
|
||||||
}
|
}
|
||||||
|
|
||||||
argv = append(argv, "--events")
|
argv = append(argv, "--events")
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ func BuildCloud(cluster *kops.Cluster) (fi.Cloud, error) {
|
||||||
region := ""
|
region := ""
|
||||||
project := ""
|
project := ""
|
||||||
|
|
||||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
switch cluster.Spec.GetCloudProvider() {
|
||||||
case kops.CloudProviderGCE:
|
case kops.CloudProviderGCE:
|
||||||
{
|
{
|
||||||
for _, subnet := range cluster.Spec.Subnets {
|
for _, subnet := range cluster.Spec.Subnets {
|
||||||
|
|
@ -146,7 +146,7 @@ func BuildCloud(cluster *kops.Cluster) (fi.Cloud, error) {
|
||||||
cloud = azureCloud
|
cloud = azureCloud
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("unknown CloudProvider %q", cluster.Spec.CloudProvider)
|
return nil, fmt.Errorf("unknown CloudProvider %q", cluster.Spec.GetCloudProvider())
|
||||||
}
|
}
|
||||||
return cloud, nil
|
return cloud, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -184,7 +184,7 @@ func (c *NodeUpCommand) Run(out io.Writer) error {
|
||||||
|
|
||||||
cloudProvider := api.CloudProviderID(bootConfig.CloudProvider)
|
cloudProvider := api.CloudProviderID(bootConfig.CloudProvider)
|
||||||
if cloudProvider == "" {
|
if cloudProvider == "" {
|
||||||
cloudProvider = api.CloudProviderID(c.cluster.Spec.CloudProvider)
|
cloudProvider = c.cluster.Spec.GetCloudProvider()
|
||||||
}
|
}
|
||||||
|
|
||||||
err = evaluateSpec(c, &nodeupConfig, cloudProvider)
|
err = evaluateSpec(c, &nodeupConfig, cloudProvider)
|
||||||
|
|
|
||||||
|
|
@ -50,8 +50,8 @@ func (p *Prefix) String() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Prefix) Find(c *fi.Context) (*Prefix, error) {
|
func (e *Prefix) Find(c *fi.Context) (*Prefix, error) {
|
||||||
if kops.CloudProviderID(c.Cluster.Spec.CloudProvider) != kops.CloudProviderAWS {
|
if c.Cluster.Spec.GetCloudProvider() != kops.CloudProviderAWS {
|
||||||
return nil, fmt.Errorf("unsupported cloud provider: %s", c.Cluster.Spec.CloudProvider)
|
return nil, fmt.Errorf("unsupported cloud provider: %s", c.Cluster.Spec.GetCloudProvider())
|
||||||
}
|
}
|
||||||
|
|
||||||
mac, err := getInstanceMetadataFirstValue("mac")
|
mac, err := getInstanceMetadataFirstValue("mac")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue