mirror of https://github.com/kubernetes/kops.git
Refactor to clean up TemplateFunctions
We had some fields that were duplicated; this was confusing and seemed likely to cause (subtle) bugs.
This commit is contained in:
parent
121c0aaa31
commit
af09f50fef
|
@ -534,11 +534,8 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
|||
}
|
||||
|
||||
tf := &TemplateFunctions{
|
||||
cluster: cluster,
|
||||
instanceGroups: c.InstanceGroups,
|
||||
tags: clusterTags,
|
||||
region: region,
|
||||
modelContext: modelContext,
|
||||
KopsModelContext: *modelContext,
|
||||
tags: clusterTags,
|
||||
}
|
||||
|
||||
l.Tags = clusterTags
|
||||
|
@ -771,7 +768,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
|||
return fmt.Errorf("unknown cloudprovider %q", cluster.Spec.CloudProvider)
|
||||
}
|
||||
|
||||
l.TemplateFunctions["Masters"] = tf.modelContext.MasterInstanceGroups
|
||||
l.TemplateFunctions["Masters"] = tf.MasterInstanceGroups
|
||||
|
||||
err = tf.AddTo(l.TemplateFunctions, secretStore)
|
||||
if err != nil {
|
||||
|
|
|
@ -91,11 +91,10 @@ func runChannelBuilderTest(t *testing.T, key string, addonManifests []string) {
|
|||
}
|
||||
|
||||
tf := &TemplateFunctions{
|
||||
cluster: cluster,
|
||||
modelContext: &model.KopsModelContext{
|
||||
KopsModelContext: model.KopsModelContext{
|
||||
Cluster: cluster,
|
||||
Region: "us-east-1",
|
||||
},
|
||||
region: "us-east-1",
|
||||
}
|
||||
tf.AddTo(templates.TemplateFunctions, secretStore)
|
||||
|
||||
|
|
|
@ -258,13 +258,11 @@ func (c *populateClusterSpec) run(clientset simple.Clientset) error {
|
|||
return err
|
||||
}
|
||||
|
||||
modelContext := &model.KopsModelContext{
|
||||
Cluster: cluster,
|
||||
}
|
||||
tf := &TemplateFunctions{
|
||||
cluster: cluster,
|
||||
tags: tags,
|
||||
modelContext: modelContext,
|
||||
KopsModelContext: model.KopsModelContext{
|
||||
Cluster: cluster,
|
||||
},
|
||||
tags: tags,
|
||||
}
|
||||
|
||||
templateFunctions := make(template.FuncMap)
|
||||
|
@ -326,7 +324,7 @@ func (c *populateClusterSpec) run(clientset simple.Clientset) error {
|
|||
fullCluster := &kopsapi.Cluster{}
|
||||
*fullCluster = *cluster
|
||||
fullCluster.Spec = *completed
|
||||
tf.cluster = fullCluster
|
||||
tf.Cluster = fullCluster
|
||||
|
||||
if errs := validation.ValidateCluster(fullCluster, true); len(errs) != 0 {
|
||||
return fmt.Errorf("Completed cluster failed validation: %v", errs.ToAggregate())
|
||||
|
|
|
@ -54,22 +54,21 @@ import (
|
|||
|
||||
// TemplateFunctions provides a collection of methods used throughout the templates
|
||||
type TemplateFunctions struct {
|
||||
cluster *kops.Cluster
|
||||
instanceGroups []*kops.InstanceGroup
|
||||
modelContext *model.KopsModelContext
|
||||
region string
|
||||
tags sets.String
|
||||
model.KopsModelContext
|
||||
tags sets.String
|
||||
}
|
||||
|
||||
// AddTo defines the available functions we can use in our YAML models.
|
||||
// If we are trying to get a new function implemented it MUST
|
||||
// be defined here.
|
||||
func (tf *TemplateFunctions) AddTo(dest template.FuncMap, secretStore fi.SecretStore) (err error) {
|
||||
cluster := tf.Cluster
|
||||
|
||||
dest["EtcdScheme"] = tf.EtcdScheme
|
||||
dest["SharedVPC"] = tf.SharedVPC
|
||||
dest["ToJSON"] = tf.ToJSON
|
||||
dest["UseBootstrapTokens"] = tf.modelContext.UseBootstrapTokens
|
||||
dest["UseEtcdTLS"] = tf.modelContext.UseEtcdTLS
|
||||
dest["UseBootstrapTokens"] = tf.UseBootstrapTokens
|
||||
dest["UseEtcdTLS"] = tf.UseEtcdTLS
|
||||
// Remember that we may be on a different arch from the target. Hard-code for now.
|
||||
dest["Arch"] = func() string { return "amd64" }
|
||||
dest["replace"] = func(s, find, replace string) string {
|
||||
|
@ -82,7 +81,7 @@ func (tf *TemplateFunctions) AddTo(dest template.FuncMap, secretStore fi.SecretS
|
|||
sprigTxtFuncMap := sprig.TxtFuncMap()
|
||||
dest["indent"] = sprigTxtFuncMap["indent"]
|
||||
|
||||
dest["ClusterName"] = tf.modelContext.ClusterName
|
||||
dest["ClusterName"] = tf.ClusterName
|
||||
dest["HasTag"] = tf.HasTag
|
||||
dest["WithDefaultBool"] = func(v *bool, defaultValue bool) bool {
|
||||
if v != nil {
|
||||
|
@ -92,22 +91,22 @@ func (tf *TemplateFunctions) AddTo(dest template.FuncMap, secretStore fi.SecretS
|
|||
}
|
||||
|
||||
dest["GetInstanceGroup"] = tf.GetInstanceGroup
|
||||
dest["CloudTags"] = tf.modelContext.CloudTagsForInstanceGroup
|
||||
dest["CloudTags"] = tf.CloudTagsForInstanceGroup
|
||||
dest["KubeDNS"] = func() *kops.KubeDNSConfig {
|
||||
return tf.cluster.Spec.KubeDNS
|
||||
return cluster.Spec.KubeDNS
|
||||
}
|
||||
|
||||
dest["NodeLocalDNSClusterIP"] = func() string {
|
||||
if tf.cluster.Spec.KubeProxy.ProxyMode == "ipvs" {
|
||||
return tf.cluster.Spec.KubeDNS.ServerIP
|
||||
if cluster.Spec.KubeProxy.ProxyMode == "ipvs" {
|
||||
return cluster.Spec.KubeDNS.ServerIP
|
||||
}
|
||||
return "__PILLAR__CLUSTER__DNS__"
|
||||
}
|
||||
dest["NodeLocalDNSServerIP"] = func() string {
|
||||
if tf.cluster.Spec.KubeProxy.ProxyMode == "ipvs" {
|
||||
if cluster.Spec.KubeProxy.ProxyMode == "ipvs" {
|
||||
return ""
|
||||
}
|
||||
return tf.cluster.Spec.KubeDNS.ServerIP
|
||||
return cluster.Spec.KubeDNS.ServerIP
|
||||
}
|
||||
dest["NodeLocalDNSHealthCheck"] = func() string {
|
||||
return fmt.Sprintf("%d", wellknownports.NodeLocalDNSHealthCheck)
|
||||
|
@ -121,7 +120,7 @@ func (tf *TemplateFunctions) AddTo(dest template.FuncMap, secretStore fi.SecretS
|
|||
// TODO: Only for GCE?
|
||||
dest["EncodeGCELabel"] = gce.EncodeGCELabel
|
||||
dest["Region"] = func() string {
|
||||
return tf.region
|
||||
return tf.Region
|
||||
}
|
||||
|
||||
if featureflag.EnableExternalCloudController.Enabled() {
|
||||
|
@ -143,8 +142,8 @@ func (tf *TemplateFunctions) AddTo(dest template.FuncMap, secretStore fi.SecretS
|
|||
}
|
||||
}
|
||||
|
||||
if tf.cluster.Spec.Networking != nil && tf.cluster.Spec.Networking.Flannel != nil {
|
||||
flannelBackendType := tf.cluster.Spec.Networking.Flannel.Backend
|
||||
if cluster.Spec.Networking != nil && cluster.Spec.Networking.Flannel != nil {
|
||||
flannelBackendType := cluster.Spec.Networking.Flannel.Backend
|
||||
if flannelBackendType == "" {
|
||||
klog.Warningf("Defaulting flannel backend to udp (not a recommended configuration)")
|
||||
flannelBackendType = "udp"
|
||||
|
@ -152,7 +151,7 @@ func (tf *TemplateFunctions) AddTo(dest template.FuncMap, secretStore fi.SecretS
|
|||
dest["FlannelBackendType"] = func() string { return flannelBackendType }
|
||||
}
|
||||
|
||||
if tf.cluster.Spec.Networking != nil && tf.cluster.Spec.Networking.Weave != nil {
|
||||
if cluster.Spec.Networking != nil && cluster.Spec.Networking.Weave != nil {
|
||||
weavesecretString := ""
|
||||
weavesecret, _ := secretStore.Secret("weavepassword")
|
||||
if weavesecret != nil {
|
||||
|
@ -166,7 +165,7 @@ func (tf *TemplateFunctions) AddTo(dest template.FuncMap, secretStore fi.SecretS
|
|||
dest["WeaveSecret"] = func() string { return weavesecretString }
|
||||
}
|
||||
|
||||
if tf.cluster.Spec.Networking != nil && tf.cluster.Spec.Networking.Cilium != nil {
|
||||
if cluster.Spec.Networking != nil && cluster.Spec.Networking.Cilium != nil {
|
||||
ciliumsecretString := ""
|
||||
ciliumsecret, _ := secretStore.Secret("ciliumpassword")
|
||||
if ciliumsecret != nil {
|
||||
|
@ -195,7 +194,7 @@ func (tf *TemplateFunctions) ToJSON(data interface{}) string {
|
|||
|
||||
// EtcdScheme parses and grabs the protocol to the etcd cluster
|
||||
func (tf *TemplateFunctions) EtcdScheme() string {
|
||||
if tf.modelContext.UseEtcdTLS() {
|
||||
if tf.UseEtcdTLS() {
|
||||
return "https"
|
||||
}
|
||||
|
||||
|
@ -204,7 +203,7 @@ func (tf *TemplateFunctions) EtcdScheme() string {
|
|||
|
||||
// SharedVPC is a simple helper function which makes the templates for a shared VPC clearer
|
||||
func (tf *TemplateFunctions) SharedVPC() bool {
|
||||
return tf.cluster.SharedVPC()
|
||||
return tf.Cluster.SharedVPC()
|
||||
}
|
||||
|
||||
// HasTag returns true if the specified tag is set
|
||||
|
@ -215,53 +214,54 @@ func (tf *TemplateFunctions) HasTag(tag string) bool {
|
|||
|
||||
// GetInstanceGroup returns the instance group with the specified name
|
||||
func (tf *TemplateFunctions) GetInstanceGroup(name string) (*kops.InstanceGroup, error) {
|
||||
for _, ig := range tf.instanceGroups {
|
||||
if ig.ObjectMeta.Name == name {
|
||||
return ig, nil
|
||||
}
|
||||
ig := tf.KopsModelContext.FindInstanceGroup(name)
|
||||
if ig == nil {
|
||||
return nil, fmt.Errorf("InstanceGroup %q not found", name)
|
||||
}
|
||||
return nil, fmt.Errorf("InstanceGroup %q not found", name)
|
||||
return ig, nil
|
||||
}
|
||||
|
||||
// CloudControllerConfigArgv returns the args to external cloud controller
|
||||
func (tf *TemplateFunctions) CloudControllerConfigArgv() ([]string, error) {
|
||||
if tf.cluster.Spec.ExternalCloudControllerManager == nil {
|
||||
cluster := tf.Cluster
|
||||
|
||||
if cluster.Spec.ExternalCloudControllerManager == nil {
|
||||
return nil, fmt.Errorf("ExternalCloudControllerManager is nil")
|
||||
}
|
||||
var argv []string
|
||||
|
||||
if tf.cluster.Spec.ExternalCloudControllerManager.Master != "" {
|
||||
argv = append(argv, fmt.Sprintf("--master=%s", tf.cluster.Spec.ExternalCloudControllerManager.Master))
|
||||
if cluster.Spec.ExternalCloudControllerManager.Master != "" {
|
||||
argv = append(argv, fmt.Sprintf("--master=%s", cluster.Spec.ExternalCloudControllerManager.Master))
|
||||
}
|
||||
if tf.cluster.Spec.ExternalCloudControllerManager.LogLevel != 0 {
|
||||
argv = append(argv, fmt.Sprintf("--v=%d", tf.cluster.Spec.ExternalCloudControllerManager.LogLevel))
|
||||
if cluster.Spec.ExternalCloudControllerManager.LogLevel != 0 {
|
||||
argv = append(argv, fmt.Sprintf("--v=%d", cluster.Spec.ExternalCloudControllerManager.LogLevel))
|
||||
} else {
|
||||
argv = append(argv, "--v=2")
|
||||
}
|
||||
if tf.cluster.Spec.ExternalCloudControllerManager.CloudProvider != "" {
|
||||
argv = append(argv, fmt.Sprintf("--cloud-provider=%s", tf.cluster.Spec.ExternalCloudControllerManager.CloudProvider))
|
||||
} else if tf.cluster.Spec.CloudProvider != "" {
|
||||
argv = append(argv, fmt.Sprintf("--cloud-provider=%s", tf.cluster.Spec.CloudProvider))
|
||||
if cluster.Spec.ExternalCloudControllerManager.CloudProvider != "" {
|
||||
argv = append(argv, fmt.Sprintf("--cloud-provider=%s", cluster.Spec.ExternalCloudControllerManager.CloudProvider))
|
||||
} else if cluster.Spec.CloudProvider != "" {
|
||||
argv = append(argv, fmt.Sprintf("--cloud-provider=%s", cluster.Spec.CloudProvider))
|
||||
} else {
|
||||
return nil, fmt.Errorf("Cloud Provider is not set")
|
||||
}
|
||||
if tf.cluster.Spec.ExternalCloudControllerManager.ClusterName != "" {
|
||||
argv = append(argv, fmt.Sprintf("--cluster-name=%s", tf.cluster.Spec.ExternalCloudControllerManager.ClusterName))
|
||||
if cluster.Spec.ExternalCloudControllerManager.ClusterName != "" {
|
||||
argv = append(argv, fmt.Sprintf("--cluster-name=%s", cluster.Spec.ExternalCloudControllerManager.ClusterName))
|
||||
}
|
||||
if tf.cluster.Spec.ExternalCloudControllerManager.ClusterCIDR != "" {
|
||||
argv = append(argv, fmt.Sprintf("--cluster-cidr=%s", tf.cluster.Spec.ExternalCloudControllerManager.ClusterCIDR))
|
||||
if cluster.Spec.ExternalCloudControllerManager.ClusterCIDR != "" {
|
||||
argv = append(argv, fmt.Sprintf("--cluster-cidr=%s", cluster.Spec.ExternalCloudControllerManager.ClusterCIDR))
|
||||
}
|
||||
if tf.cluster.Spec.ExternalCloudControllerManager.AllocateNodeCIDRs != nil {
|
||||
argv = append(argv, fmt.Sprintf("--allocate-node-cidrs=%t", *tf.cluster.Spec.ExternalCloudControllerManager.AllocateNodeCIDRs))
|
||||
if cluster.Spec.ExternalCloudControllerManager.AllocateNodeCIDRs != nil {
|
||||
argv = append(argv, fmt.Sprintf("--allocate-node-cidrs=%t", *cluster.Spec.ExternalCloudControllerManager.AllocateNodeCIDRs))
|
||||
}
|
||||
if tf.cluster.Spec.ExternalCloudControllerManager.ConfigureCloudRoutes != nil {
|
||||
argv = append(argv, fmt.Sprintf("--configure-cloud-routes=%t", *tf.cluster.Spec.ExternalCloudControllerManager.ConfigureCloudRoutes))
|
||||
if cluster.Spec.ExternalCloudControllerManager.ConfigureCloudRoutes != nil {
|
||||
argv = append(argv, fmt.Sprintf("--configure-cloud-routes=%t", *cluster.Spec.ExternalCloudControllerManager.ConfigureCloudRoutes))
|
||||
}
|
||||
if tf.cluster.Spec.ExternalCloudControllerManager.CIDRAllocatorType != nil && *tf.cluster.Spec.ExternalCloudControllerManager.CIDRAllocatorType != "" {
|
||||
argv = append(argv, fmt.Sprintf("--cidr-allocator-type=%s", *tf.cluster.Spec.ExternalCloudControllerManager.CIDRAllocatorType))
|
||||
if cluster.Spec.ExternalCloudControllerManager.CIDRAllocatorType != nil && *cluster.Spec.ExternalCloudControllerManager.CIDRAllocatorType != "" {
|
||||
argv = append(argv, fmt.Sprintf("--cidr-allocator-type=%s", *cluster.Spec.ExternalCloudControllerManager.CIDRAllocatorType))
|
||||
}
|
||||
if tf.cluster.Spec.ExternalCloudControllerManager.UseServiceAccountCredentials != nil {
|
||||
argv = append(argv, fmt.Sprintf("--use-service-account-credentials=%t", *tf.cluster.Spec.ExternalCloudControllerManager.UseServiceAccountCredentials))
|
||||
if cluster.Spec.ExternalCloudControllerManager.UseServiceAccountCredentials != nil {
|
||||
argv = append(argv, fmt.Sprintf("--use-service-account-credentials=%t", *cluster.Spec.ExternalCloudControllerManager.UseServiceAccountCredentials))
|
||||
} else {
|
||||
argv = append(argv, fmt.Sprintf("--use-service-account-credentials=%t", true))
|
||||
}
|
||||
|
@ -271,20 +271,22 @@ func (tf *TemplateFunctions) CloudControllerConfigArgv() ([]string, error) {
|
|||
|
||||
// DNSControllerArgv returns the args to the DNS controller
|
||||
func (tf *TemplateFunctions) DNSControllerArgv() ([]string, error) {
|
||||
cluster := tf.Cluster
|
||||
|
||||
var argv []string
|
||||
|
||||
argv = append(argv, "/usr/bin/dns-controller")
|
||||
|
||||
// @check if the dns controller has custom configuration
|
||||
if tf.cluster.Spec.ExternalDNS == nil {
|
||||
if cluster.Spec.ExternalDNS == nil {
|
||||
argv = append(argv, []string{"--watch-ingress=false"}...)
|
||||
|
||||
klog.V(4).Infof("watch-ingress=false set on dns-controller")
|
||||
} else {
|
||||
// @check if the watch ingress is set
|
||||
var watchIngress bool
|
||||
if tf.cluster.Spec.ExternalDNS.WatchIngress != nil {
|
||||
watchIngress = fi.BoolValue(tf.cluster.Spec.ExternalDNS.WatchIngress)
|
||||
if cluster.Spec.ExternalDNS.WatchIngress != nil {
|
||||
watchIngress = fi.BoolValue(cluster.Spec.ExternalDNS.WatchIngress)
|
||||
}
|
||||
|
||||
if watchIngress {
|
||||
|
@ -292,45 +294,45 @@ func (tf *TemplateFunctions) DNSControllerArgv() ([]string, error) {
|
|||
klog.Warningln("this may cause problems with previously defined services: https://github.com/kubernetes/kops/issues/2496")
|
||||
}
|
||||
argv = append(argv, fmt.Sprintf("--watch-ingress=%t", watchIngress))
|
||||
if tf.cluster.Spec.ExternalDNS.WatchNamespace != "" {
|
||||
argv = append(argv, fmt.Sprintf("--watch-namespace=%s", tf.cluster.Spec.ExternalDNS.WatchNamespace))
|
||||
if cluster.Spec.ExternalDNS.WatchNamespace != "" {
|
||||
argv = append(argv, fmt.Sprintf("--watch-namespace=%s", cluster.Spec.ExternalDNS.WatchNamespace))
|
||||
}
|
||||
}
|
||||
|
||||
if dns.IsGossipHostname(tf.cluster.Spec.MasterInternalName) {
|
||||
if dns.IsGossipHostname(cluster.Spec.MasterInternalName) {
|
||||
argv = append(argv, "--dns=gossip")
|
||||
|
||||
// Configuration specifically for the DNS controller gossip
|
||||
if tf.cluster.Spec.DNSControllerGossipConfig != nil {
|
||||
if tf.cluster.Spec.DNSControllerGossipConfig.Protocol != nil {
|
||||
argv = append(argv, "--gossip-protocol="+*tf.cluster.Spec.DNSControllerGossipConfig.Protocol)
|
||||
if cluster.Spec.DNSControllerGossipConfig != nil {
|
||||
if cluster.Spec.DNSControllerGossipConfig.Protocol != nil {
|
||||
argv = append(argv, "--gossip-protocol="+*cluster.Spec.DNSControllerGossipConfig.Protocol)
|
||||
}
|
||||
if tf.cluster.Spec.DNSControllerGossipConfig.Listen != nil {
|
||||
argv = append(argv, "--gossip-listen="+*tf.cluster.Spec.DNSControllerGossipConfig.Listen)
|
||||
if cluster.Spec.DNSControllerGossipConfig.Listen != nil {
|
||||
argv = append(argv, "--gossip-listen="+*cluster.Spec.DNSControllerGossipConfig.Listen)
|
||||
}
|
||||
if tf.cluster.Spec.DNSControllerGossipConfig.Secret != nil {
|
||||
argv = append(argv, "--gossip-secret="+*tf.cluster.Spec.DNSControllerGossipConfig.Secret)
|
||||
if cluster.Spec.DNSControllerGossipConfig.Secret != nil {
|
||||
argv = append(argv, "--gossip-secret="+*cluster.Spec.DNSControllerGossipConfig.Secret)
|
||||
}
|
||||
|
||||
if tf.cluster.Spec.DNSControllerGossipConfig.Seed != nil {
|
||||
argv = append(argv, "--gossip-seed="+*tf.cluster.Spec.DNSControllerGossipConfig.Seed)
|
||||
if cluster.Spec.DNSControllerGossipConfig.Seed != nil {
|
||||
argv = append(argv, "--gossip-seed="+*cluster.Spec.DNSControllerGossipConfig.Seed)
|
||||
} else {
|
||||
argv = append(argv, fmt.Sprintf("--gossip-seed=127.0.0.1:%d", wellknownports.ProtokubeGossipWeaveMesh))
|
||||
}
|
||||
|
||||
if tf.cluster.Spec.DNSControllerGossipConfig.Secondary != nil {
|
||||
if tf.cluster.Spec.DNSControllerGossipConfig.Secondary.Protocol != nil {
|
||||
argv = append(argv, "--gossip-protocol-secondary="+*tf.cluster.Spec.DNSControllerGossipConfig.Secondary.Protocol)
|
||||
if cluster.Spec.DNSControllerGossipConfig.Secondary != nil {
|
||||
if cluster.Spec.DNSControllerGossipConfig.Secondary.Protocol != nil {
|
||||
argv = append(argv, "--gossip-protocol-secondary="+*cluster.Spec.DNSControllerGossipConfig.Secondary.Protocol)
|
||||
}
|
||||
if tf.cluster.Spec.DNSControllerGossipConfig.Secondary.Listen != nil {
|
||||
argv = append(argv, "--gossip-listen-secondary="+*tf.cluster.Spec.DNSControllerGossipConfig.Secondary.Listen)
|
||||
if cluster.Spec.DNSControllerGossipConfig.Secondary.Listen != nil {
|
||||
argv = append(argv, "--gossip-listen-secondary="+*cluster.Spec.DNSControllerGossipConfig.Secondary.Listen)
|
||||
}
|
||||
if tf.cluster.Spec.DNSControllerGossipConfig.Secondary.Secret != nil {
|
||||
argv = append(argv, "--gossip-secret-secondary="+*tf.cluster.Spec.DNSControllerGossipConfig.Secondary.Secret)
|
||||
if cluster.Spec.DNSControllerGossipConfig.Secondary.Secret != nil {
|
||||
argv = append(argv, "--gossip-secret-secondary="+*cluster.Spec.DNSControllerGossipConfig.Secondary.Secret)
|
||||
}
|
||||
|
||||
if tf.cluster.Spec.DNSControllerGossipConfig.Secondary.Seed != nil {
|
||||
argv = append(argv, "--gossip-seed-secondary="+*tf.cluster.Spec.DNSControllerGossipConfig.Secondary.Seed)
|
||||
if cluster.Spec.DNSControllerGossipConfig.Secondary.Seed != nil {
|
||||
argv = append(argv, "--gossip-seed-secondary="+*cluster.Spec.DNSControllerGossipConfig.Secondary.Seed)
|
||||
} else {
|
||||
argv = append(argv, fmt.Sprintf("--gossip-seed-secondary=127.0.0.1:%d", wellknownports.ProtokubeGossipMemberlist))
|
||||
}
|
||||
|
@ -344,7 +346,7 @@ func (tf *TemplateFunctions) DNSControllerArgv() ([]string, error) {
|
|||
argv = append(argv, fmt.Sprintf("--gossip-seed-secondary=127.0.0.1:%d", wellknownports.ProtokubeGossipMemberlist))
|
||||
}
|
||||
} else {
|
||||
switch kops.CloudProviderID(tf.cluster.Spec.CloudProvider) {
|
||||
switch kops.CloudProviderID(cluster.Spec.CloudProvider) {
|
||||
case kops.CloudProviderAWS:
|
||||
if strings.HasPrefix(os.Getenv("AWS_REGION"), "cn-") {
|
||||
argv = append(argv, "--dns=gossip")
|
||||
|
@ -357,11 +359,11 @@ func (tf *TemplateFunctions) DNSControllerArgv() ([]string, error) {
|
|||
argv = append(argv, "--dns=digitalocean")
|
||||
|
||||
default:
|
||||
return nil, fmt.Errorf("unhandled cloudprovider %q", tf.cluster.Spec.CloudProvider)
|
||||
return nil, fmt.Errorf("unhandled cloudprovider %q", cluster.Spec.CloudProvider)
|
||||
}
|
||||
}
|
||||
|
||||
zone := tf.cluster.Spec.DNSZone
|
||||
zone := cluster.Spec.DNSZone
|
||||
if zone != "" {
|
||||
if strings.Contains(zone, ".") {
|
||||
// match by name
|
||||
|
@ -381,9 +383,11 @@ func (tf *TemplateFunctions) DNSControllerArgv() ([]string, error) {
|
|||
|
||||
// KopsControllerConfig returns the yaml configuration for kops-controller
|
||||
func (tf *TemplateFunctions) KopsControllerConfig() (string, error) {
|
||||
cluster := tf.Cluster
|
||||
|
||||
config := &kopscontrollerconfig.Options{
|
||||
Cloud: tf.cluster.Spec.CloudProvider,
|
||||
ConfigBase: tf.cluster.Spec.ConfigBase,
|
||||
Cloud: cluster.Spec.CloudProvider,
|
||||
ConfigBase: cluster.Spec.ConfigBase,
|
||||
}
|
||||
|
||||
// To avoid indentation problems, we marshal as json. json is a subset of yaml
|
||||
|
@ -397,7 +401,6 @@ func (tf *TemplateFunctions) KopsControllerConfig() (string, error) {
|
|||
|
||||
// KopsControllerArgv returns the args to kops-controller
|
||||
func (tf *TemplateFunctions) KopsControllerArgv() ([]string, error) {
|
||||
|
||||
var argv []string
|
||||
|
||||
argv = append(argv, "/usr/bin/kops-controller")
|
||||
|
@ -411,19 +414,21 @@ func (tf *TemplateFunctions) KopsControllerArgv() ([]string, error) {
|
|||
}
|
||||
|
||||
func (tf *TemplateFunctions) ExternalDNSArgv() ([]string, error) {
|
||||
cluster := tf.Cluster
|
||||
|
||||
var argv []string
|
||||
|
||||
cloudProvider := tf.cluster.Spec.CloudProvider
|
||||
cloudProvider := cluster.Spec.CloudProvider
|
||||
|
||||
switch kops.CloudProviderID(cloudProvider) {
|
||||
case kops.CloudProviderAWS:
|
||||
argv = append(argv, "--provider=aws")
|
||||
case kops.CloudProviderGCE:
|
||||
project := tf.cluster.Spec.Project
|
||||
project := cluster.Spec.Project
|
||||
argv = append(argv, "--provider=google")
|
||||
argv = append(argv, "--google-project="+project)
|
||||
default:
|
||||
return nil, fmt.Errorf("unhandled cloudprovider %q", tf.cluster.Spec.CloudProvider)
|
||||
return nil, fmt.Errorf("unhandled cloudprovider %q", cluster.Spec.CloudProvider)
|
||||
}
|
||||
|
||||
argv = append(argv, "--source=ingress")
|
||||
|
@ -432,8 +437,10 @@ func (tf *TemplateFunctions) ExternalDNSArgv() ([]string, error) {
|
|||
}
|
||||
|
||||
func (tf *TemplateFunctions) ProxyEnv() map[string]string {
|
||||
cluster := tf.Cluster
|
||||
|
||||
envs := map[string]string{}
|
||||
proxies := tf.cluster.Spec.EgressProxy
|
||||
proxies := cluster.Spec.EgressProxy
|
||||
if proxies == nil {
|
||||
return envs
|
||||
}
|
||||
|
@ -458,7 +465,7 @@ func (tf *TemplateFunctions) ProxyEnv() map[string]string {
|
|||
|
||||
// KopsSystemEnv builds the env vars for a system component
|
||||
func (tf *TemplateFunctions) KopsSystemEnv() []corev1.EnvVar {
|
||||
envMap := env.BuildSystemComponentEnvVars(&tf.cluster.Spec)
|
||||
envMap := env.BuildSystemComponentEnvVars(&tf.Cluster.Spec)
|
||||
|
||||
return envMap.ToEnvVars()
|
||||
}
|
||||
|
@ -467,7 +474,7 @@ func (tf *TemplateFunctions) KopsSystemEnv() []corev1.EnvVar {
|
|||
// with tag specified to k8s version
|
||||
func (tf *TemplateFunctions) OpenStackCCM() string {
|
||||
var tag string
|
||||
parsed, err := util.ParseKubernetesVersion(tf.cluster.Spec.KubernetesVersion)
|
||||
parsed, err := util.ParseKubernetesVersion(tf.Cluster.Spec.KubernetesVersion)
|
||||
if err != nil {
|
||||
tag = "latest"
|
||||
} else {
|
||||
|
|
|
@ -200,9 +200,9 @@ func Test_TemplateFunctions_CloudControllerConfigArgv(t *testing.T) {
|
|||
}
|
||||
for _, testCase := range tests {
|
||||
t.Run(testCase.desc, func(t *testing.T) {
|
||||
tf := &TemplateFunctions{
|
||||
cluster: testCase.cluster,
|
||||
}
|
||||
tf := &TemplateFunctions{}
|
||||
tf.Cluster = testCase.cluster
|
||||
|
||||
actual, error := tf.CloudControllerConfigArgv()
|
||||
if !reflect.DeepEqual(error, testCase.expectedError) {
|
||||
t.Errorf("Error differs: %+v instead of %+v", error, testCase.expectedError)
|
||||
|
@ -260,7 +260,8 @@ func Test_executeTemplate(t *testing.T) {
|
|||
tpl := template.New(filepath.Base(templateFileAbsolutePath))
|
||||
|
||||
funcMap := make(template.FuncMap)
|
||||
templateFunctions := TemplateFunctions{cluster: testCase.cluster}
|
||||
templateFunctions := TemplateFunctions{}
|
||||
templateFunctions.Cluster = testCase.cluster
|
||||
templateFunctions.AddTo(funcMap, nil)
|
||||
|
||||
tpl.Funcs(funcMap)
|
||||
|
|
Loading…
Reference in New Issue