Add env vars, update tests

This commit is contained in:
Justin SB 2019-09-02 08:02:39 -07:00
parent 7fb83d9918
commit 97f552778f
No known key found for this signature in database
GPG Key ID: 8DEC5C8217494E37
15 changed files with 445 additions and 30 deletions

View File

@ -97,7 +97,7 @@ func (c *RollingUpdateCluster) RollingUpdate(groups map[string]*cloudinstances.C
defer wg.Done()
g, err := NewRollingUpdateInstanceGroup(c.Cloud, group, c.K8sClient)
g, err := NewRollingUpdateInstanceGroup(c.Cloud, group)
if err == nil {
err = g.RollingUpdate(c, cluster, instanceGroups, true, c.BastionInterval, c.ValidationTimeout)
}
@ -125,7 +125,7 @@ func (c *RollingUpdateCluster) RollingUpdate(groups map[string]*cloudinstances.C
// and we don't want to roll all the masters at the same time. See issue #284
for _, group := range masterGroups {
g, err := NewRollingUpdateInstanceGroup(c.Cloud, group, c.K8sClient)
g, err := NewRollingUpdateInstanceGroup(c.Cloud, group)
if err == nil {
err = g.RollingUpdate(c, cluster, instanceGroups, false, c.MasterInterval, c.ValidationTimeout)
}
@ -159,7 +159,7 @@ func (c *RollingUpdateCluster) RollingUpdate(groups map[string]*cloudinstances.C
defer wg.Done()
for k, group := range nodeGroups {
g, err := NewRollingUpdateInstanceGroup(c.Cloud, group, c.K8sClient)
g, err := NewRollingUpdateInstanceGroup(c.Cloud, group)
if err == nil {
err = g.RollingUpdate(c, cluster, instanceGroups, false, c.NodeInterval, c.ValidationTimeout)
}

View File

@ -149,5 +149,5 @@ func AssertMatchesFile(t *testing.T, actual string, p string) {
t.Logf("to update golden output automatically, run hack/update-expected.sh")
t.Fatalf("output did not match expected for %q", p)
t.Errorf("output did not match expected for %q", p)
}

View File

@ -399,9 +399,10 @@ resource "google_compute_instance_template" "master-us-test1-a-ha-gce-example-co
}
metadata = {
cluster-name = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-a-ha-gce-example-com_metadata_cluster-name")}"
ssh-keys = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-a-ha-gce-example-com_metadata_ssh-keys")}"
startup-script = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-a-ha-gce-example-com_metadata_startup-script")}"
cluster-name = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-a-ha-gce-example-com_metadata_cluster-name")}"
kops-k8s-io-instance-group-name = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-a-ha-gce-example-com_metadata_kops-k8s-io-instance-group-name")}"
ssh-keys = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-a-ha-gce-example-com_metadata_ssh-keys")}"
startup-script = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-a-ha-gce-example-com_metadata_startup-script")}"
}
tags = ["ha-gce-example-com-k8s-io-role-master"]
@ -439,9 +440,10 @@ resource "google_compute_instance_template" "master-us-test1-b-ha-gce-example-co
}
metadata = {
cluster-name = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-b-ha-gce-example-com_metadata_cluster-name")}"
ssh-keys = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-b-ha-gce-example-com_metadata_ssh-keys")}"
startup-script = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-b-ha-gce-example-com_metadata_startup-script")}"
cluster-name = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-b-ha-gce-example-com_metadata_cluster-name")}"
kops-k8s-io-instance-group-name = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-b-ha-gce-example-com_metadata_kops-k8s-io-instance-group-name")}"
ssh-keys = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-b-ha-gce-example-com_metadata_ssh-keys")}"
startup-script = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-b-ha-gce-example-com_metadata_startup-script")}"
}
tags = ["ha-gce-example-com-k8s-io-role-master"]
@ -479,9 +481,10 @@ resource "google_compute_instance_template" "master-us-test1-c-ha-gce-example-co
}
metadata = {
cluster-name = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-c-ha-gce-example-com_metadata_cluster-name")}"
ssh-keys = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-c-ha-gce-example-com_metadata_ssh-keys")}"
startup-script = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-c-ha-gce-example-com_metadata_startup-script")}"
cluster-name = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-c-ha-gce-example-com_metadata_cluster-name")}"
kops-k8s-io-instance-group-name = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-c-ha-gce-example-com_metadata_kops-k8s-io-instance-group-name")}"
ssh-keys = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-c-ha-gce-example-com_metadata_ssh-keys")}"
startup-script = "${file("${path.module}/data/google_compute_instance_template_master-us-test1-c-ha-gce-example-com_metadata_startup-script")}"
}
tags = ["ha-gce-example-com-k8s-io-role-master"]
@ -519,9 +522,10 @@ resource "google_compute_instance_template" "nodes-ha-gce-example-com" {
}
metadata = {
cluster-name = "${file("${path.module}/data/google_compute_instance_template_nodes-ha-gce-example-com_metadata_cluster-name")}"
ssh-keys = "${file("${path.module}/data/google_compute_instance_template_nodes-ha-gce-example-com_metadata_ssh-keys")}"
startup-script = "${file("${path.module}/data/google_compute_instance_template_nodes-ha-gce-example-com_metadata_startup-script")}"
cluster-name = "${file("${path.module}/data/google_compute_instance_template_nodes-ha-gce-example-com_metadata_cluster-name")}"
kops-k8s-io-instance-group-name = "${file("${path.module}/data/google_compute_instance_template_nodes-ha-gce-example-com_metadata_kops-k8s-io-instance-group-name")}"
ssh-keys = "${file("${path.module}/data/google_compute_instance_template_nodes-ha-gce-example-com_metadata_ssh-keys")}"
startup-script = "${file("${path.module}/data/google_compute_instance_template_nodes-ha-gce-example-com_metadata_startup-script")}"
}
tags = ["ha-gce-example-com-k8s-io-role-node"]

View File

@ -6,7 +6,7 @@ metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
k8s-app: kops-controller
version: v1.14.0-alpha.1
version: v1.16.0-alpha.1
spec:
replicas: 1
selector:
@ -17,7 +17,7 @@ spec:
labels:
k8s-addon: kops-controller.addons.k8s.io
k8s-app: kops-controller
version: v1.14.0-alpha.1
version: v1.16.0-alpha.1
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ''
spec:
@ -36,11 +36,11 @@ spec:
{{ range $arg := KopsControllerArgv }}
- "{{ $arg }}"
{{ end }}
{{- if .EgressProxy }}
{{- if KopsSystemEnv }}
env:
{{ range $name, $value := ProxyEnv }}
- name: {{ $name }}
value: {{ $value }}
{{ range $var := KopsSystemEnv }}
- name: {{ $var.Name }}
value: {{ $var.Value }}
{{ end }}
{{- end }}
resources:

View File

@ -115,7 +115,7 @@ func (b *BootstrapChannelBuilder) buildAddons() *channelsapi.Addons {
{
key := "kops-controller.addons.k8s.io"
version := "1.14.0-alpha.1"
version := "1.16.0-alpha.1"
{
location := key + "/k8s-1.16.yaml"
@ -129,7 +129,6 @@ func (b *BootstrapChannelBuilder) buildAddons() *channelsapi.Addons {
KubernetesVersion: ">=1.16.0-alpha.0",
Id: id,
})
manifests[key+"-"+id] = "addons/" + location
}
}

View File

@ -40,13 +40,13 @@ func TestBootstrapChannelBuilder_BuildTasks(t *testing.T) {
h.SetupMockAWS()
runChannelBuilderTest(t, "simple")
runChannelBuilderTest(t, "kopeio-vxlan")
runChannelBuilderTest(t, "weave")
runChannelBuilderTest(t, "cilium")
runChannelBuilderTest(t, "simple", []string{"dns-controller.addons.k8s.io-k8s-1.12", "kops-controller.addons.k8s.io-k8s-1.16"})
// Use cilium networking, proxy
runChannelBuilderTest(t, "cilium", []string{"dns-controller.addons.k8s.io-k8s-1.12", "kops-controller.addons.k8s.io-k8s-1.16"})
runChannelBuilderTest(t, "weave", []string{})
}
func runChannelBuilderTest(t *testing.T, key string) {
func runChannelBuilderTest(t *testing.T, key string, addonManifests []string) {
basedir := path.Join("tests/bootstrapchannelbuilder/", key)
clusterYamlPath := path.Join(basedir, "cluster.yaml")
@ -122,7 +122,7 @@ func runChannelBuilderTest(t *testing.T, key string) {
testutils.AssertMatchesFile(t, actualManifest, expectedManifestPath)
}
for _, k := range []string{"dns-controller.addons.k8s.io-k8s-1.12" /*, "kops-controller.addons.k8s.io-k8s-1.16"*/} {
for _, k := range []string{"dns-controller.addons.k8s.io-k8s-1.12", "kops-controller.addons.k8s.io-k8s-1.16"} {
name := cluster.ObjectMeta.Name + "-addons-" + k
manifestTask := context.Tasks[name]
if manifestTask == nil {

View File

@ -35,6 +35,7 @@ import (
"strings"
"text/template"
corev1 "k8s.io/api/core/v1"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/dns"
"k8s.io/kops/pkg/featureflag"
@ -42,6 +43,7 @@ import (
"k8s.io/kops/pkg/resources/spotinst"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/gce"
"k8s.io/kops/util/pkg/env"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/klog"
@ -101,6 +103,8 @@ func (tf *TemplateFunctions) AddTo(dest template.FuncMap, secretStore fi.SecretS
dest["ProxyEnv"] = tf.ProxyEnv
dest["KopsSystemEnv"] = tf.KopsSystemEnv
dest["DO_TOKEN"] = func() string {
return os.Getenv("DIGITALOCEAN_ACCESS_TOKEN")
}
@ -311,3 +315,10 @@ func (tf *TemplateFunctions) ProxyEnv() map[string]string {
}
return envs
}
// KopsSystemEnv builds the env vars for a system component
func (tf *TemplateFunctions) KopsSystemEnv() []corev1.EnvVar {
envMap := env.BuildSystemComponentEnvVars(&tf.cluster.Spec)
return envMap.ToEnvVars()
}

View File

@ -0,0 +1,90 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
k8s-app: kops-controller
version: v1.16.0-alpha.1
name: kops-controller
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
k8s-app: kops-controller
template:
metadata:
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ""
labels:
k8s-addon: kops-controller.addons.k8s.io
k8s-app: kops-controller
version: v1.16.0-alpha.1
spec:
containers:
- command:
- /usr/bin/kops-controller
- --cloud=aws
- --config=memfs://clusters.example.com/minimal.example.com
- --metrics-addr=0
- --v=2
image: kope/kops-controller:1.14.0-alpha.1
name: kops-controller
resources:
requests:
cpu: 50m
memory: 50Mi
dnsPolicy: Default
hostNetwork: true
nodeSelector:
node-role.kubernetes.io/master: ""
serviceAccount: kops-controller
tolerations:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
name: kops-controller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
name: kops-controller
rules:
- apiGroups:
- ""
resources:
- nodes
verbs:
- get
- list
- watch
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
name: kops-controller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kops-controller
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: system:serviceaccount:kube-system:kops-controller

View File

@ -4,6 +4,14 @@ metadata:
name: bootstrap
spec:
addons:
- id: k8s-1.16
kubernetesVersion: '>=1.16.0-alpha.0'
manifest: kops-controller.addons.k8s.io/k8s-1.16.yaml
manifestHash: de5108cf5c9a46a8dc13643428cbaddd0875b948
name: kops-controller.addons.k8s.io
selector:
k8s-addon: kops-controller.addons.k8s.io
version: 1.16.0-alpha.1
- manifest: core.addons.k8s.io/v1.4.0.yaml
manifestHash: 3ffe9ac576f9eec72e2bdfbd2ea17d56d9b17b90
name: core.addons.k8s.io

View File

@ -0,0 +1,99 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
k8s-app: kops-controller
version: v1.16.0-alpha.1
name: kops-controller
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
k8s-app: kops-controller
template:
metadata:
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ""
labels:
k8s-addon: kops-controller.addons.k8s.io
k8s-app: kops-controller
version: v1.16.0-alpha.1
spec:
containers:
- command:
- /usr/bin/kops-controller
- --cloud=aws
- --config=memfs://clusters.example.com/minimal.example.com
- --metrics-addr=0
- --v=2
env:
- name: NO_PROXY
value: noproxy.example.com,127.0.0.1,localhost,api.minimal.example.com,minimal.example.com,100.64.0.1,100.64.0.0/10,169.254.169.254,172.20.0.0/16
- name: http_proxy
value: http://proxy.example.com
- name: https_proxy
value: http://proxy.example.com
- name: no_proxy
value: noproxy.example.com,127.0.0.1,localhost,api.minimal.example.com,minimal.example.com,100.64.0.1,100.64.0.0/10,169.254.169.254,172.20.0.0/16
image: kope/kops-controller:1.14.0-alpha.1
name: kops-controller
resources:
requests:
cpu: 50m
memory: 50Mi
dnsPolicy: Default
hostNetwork: true
nodeSelector:
node-role.kubernetes.io/master: ""
serviceAccount: kops-controller
tolerations:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
name: kops-controller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
name: kops-controller
rules:
- apiGroups:
- ""
resources:
- nodes
verbs:
- get
- list
- watch
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
name: kops-controller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kops-controller
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: system:serviceaccount:kube-system:kops-controller

View File

@ -4,6 +4,14 @@ metadata:
name: bootstrap
spec:
addons:
- id: k8s-1.16
kubernetesVersion: '>=1.16.0-alpha.0'
manifest: kops-controller.addons.k8s.io/k8s-1.16.yaml
manifestHash: 3b77645897d2641c5ab2de0729b9689b31d63c58
name: kops-controller.addons.k8s.io
selector:
k8s-addon: kops-controller.addons.k8s.io
version: 1.16.0-alpha.1
- manifest: core.addons.k8s.io/v1.4.0.yaml
manifestHash: 3ffe9ac576f9eec72e2bdfbd2ea17d56d9b17b90
name: core.addons.k8s.io

View File

@ -0,0 +1,90 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
k8s-app: kops-controller
version: v1.16.0-alpha.1
name: kops-controller
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
k8s-app: kops-controller
template:
metadata:
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ""
labels:
k8s-addon: kops-controller.addons.k8s.io
k8s-app: kops-controller
version: v1.16.0-alpha.1
spec:
containers:
- command:
- /usr/bin/kops-controller
- --cloud=aws
- --config=memfs://clusters.example.com/minimal.example.com
- --metrics-addr=0
- --v=2
image: kope/kops-controller:1.14.0-alpha.1
name: kops-controller
resources:
requests:
cpu: 50m
memory: 50Mi
dnsPolicy: Default
hostNetwork: true
nodeSelector:
node-role.kubernetes.io/master: ""
serviceAccount: kops-controller
tolerations:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
name: kops-controller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
name: kops-controller
rules:
- apiGroups:
- ""
resources:
- nodes
verbs:
- get
- list
- watch
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
name: kops-controller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kops-controller
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: system:serviceaccount:kube-system:kops-controller

View File

@ -4,6 +4,14 @@ metadata:
name: bootstrap
spec:
addons:
- id: k8s-1.16
kubernetesVersion: '>=1.16.0-alpha.0'
manifest: kops-controller.addons.k8s.io/k8s-1.16.yaml
manifestHash: de5108cf5c9a46a8dc13643428cbaddd0875b948
name: kops-controller.addons.k8s.io
selector:
k8s-addon: kops-controller.addons.k8s.io
version: 1.16.0-alpha.1
- manifest: core.addons.k8s.io/v1.4.0.yaml
manifestHash: 3ffe9ac576f9eec72e2bdfbd2ea17d56d9b17b90
name: core.addons.k8s.io

View File

@ -0,0 +1,90 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
k8s-app: kops-controller
version: v1.16.0-alpha.1
name: kops-controller
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
k8s-app: kops-controller
template:
metadata:
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ""
labels:
k8s-addon: kops-controller.addons.k8s.io
k8s-app: kops-controller
version: v1.16.0-alpha.1
spec:
containers:
- command:
- /usr/bin/kops-controller
- --cloud=aws
- --config=memfs://clusters.example.com/minimal.example.com
- --metrics-addr=0
- --v=2
image: kope/kops-controller:1.14.0-alpha.1
name: kops-controller
resources:
requests:
cpu: 50m
memory: 50Mi
dnsPolicy: Default
hostNetwork: true
nodeSelector:
node-role.kubernetes.io/master: ""
serviceAccount: kops-controller
tolerations:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
name: kops-controller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
name: kops-controller
rules:
- apiGroups:
- ""
resources:
- nodes
verbs:
- get
- list
- watch
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
name: kops-controller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kops-controller
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: system:serviceaccount:kube-system:kops-controller

View File

@ -4,6 +4,14 @@ metadata:
name: bootstrap
spec:
addons:
- id: k8s-1.16
kubernetesVersion: '>=1.16.0-alpha.0'
manifest: kops-controller.addons.k8s.io/k8s-1.16.yaml
manifestHash: de5108cf5c9a46a8dc13643428cbaddd0875b948
name: kops-controller.addons.k8s.io
selector:
k8s-addon: kops-controller.addons.k8s.io
version: 1.16.0-alpha.1
- manifest: core.addons.k8s.io/v1.4.0.yaml
manifestHash: 3ffe9ac576f9eec72e2bdfbd2ea17d56d9b17b90
name: core.addons.k8s.io