Add kops-controller to default adddons

This commit is contained in:
Justin SB 2019-07-08 10:24:39 -04:00
parent 3ccc84dcf8
commit 6cb341dfeb
No known key found for this signature in database
GPG Key ID: 8DEC5C8217494E37
4 changed files with 145 additions and 0 deletions

View File

@ -148,6 +148,17 @@ func (a *AssetBuilder) RemapImage(image string) (string, error) {
} }
} }
if strings.HasPrefix(image, "kope/kops-controller:") {
// To use user-defined DNS Controller:
// 1. DOCKER_REGISTRY=[your docker hub repo] make kops-controller-push
// 2. export KOPSCONTROLLER_IMAGE=[your docker hub repo]
// 3. make kops and create/apply cluster
override := os.Getenv("KOPSCONTROLLER_IMAGE")
if override != "" {
image = override
}
}
if a.AssetsLocation != nil && a.AssetsLocation.ContainerProxy != nil { if a.AssetsLocation != nil && a.AssetsLocation.ContainerProxy != nil {
containerProxy := strings.TrimRight(*a.AssetsLocation.ContainerProxy, "/") containerProxy := strings.TrimRight(*a.AssetsLocation.ContainerProxy, "/")
normalized := image normalized := image

View File

@ -0,0 +1,95 @@
kind: Deployment
apiVersion: apps/v1
metadata:
name: kops-controller
namespace: kube-system
labels:
k8s-addon: kops-controller.addons.k8s.io
k8s-app: kops-controller
version: v1.14.0-alpha.1
spec:
replicas: 1
selector:
matchLabels:
k8s-app: kops-controller
template:
metadata:
labels:
k8s-addon: kops-controller.addons.k8s.io
k8s-app: kops-controller
version: v1.14.0-alpha.1
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ''
spec:
tolerations:
- key: "node-role.kubernetes.io/master"
effect: NoSchedule
nodeSelector:
node-role.kubernetes.io/master: ""
dnsPolicy: Default # Don't use cluster DNS (we are likely running before kube-dns)
hostNetwork: true
serviceAccount: kops-controller
containers:
- name: kops-controller
image: kope/kops-controller:1.14.0-alpha.1
command:
{{ range $arg := KopsControllerArgv }}
- "{{ $arg }}"
{{ end }}
{{- if .EgressProxy }}
env:
{{ range $name, $value := ProxyEnv }}
- name: {{ $name }}
value: {{ $value }}
{{ end }}
{{- end }}
resources:
requests:
cpu: 50m
memory: 50Mi
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: kops-controller
namespace: kube-system
labels:
k8s-addon: kops-controller.addons.k8s.io
---
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

@ -113,6 +113,26 @@ func (b *BootstrapChannelBuilder) buildAddons() *channelsapi.Addons {
addons.Kind = "Addons" addons.Kind = "Addons"
addons.ObjectMeta.Name = "bootstrap" addons.ObjectMeta.Name = "bootstrap"
{
key := "kops-controller.addons.k8s.io"
version := "1.14.0-alpha.1"
{
location := key + "/k8s-1.16.yaml"
id := "k8s-1.16"
addons.Spec.Addons = append(addons.Spec.Addons, &channelsapi.AddonSpec{
Name: fi.String(key),
Version: fi.String(version),
Selector: map[string]string{"k8s-addon": key},
Manifest: fi.String(location),
KubernetesVersion: ">=1.16.0-alpha.0",
Id: id,
})
manifests[key+"-"+id] = "addons/" + location
}
}
{ {
key := "core.addons.k8s.io" key := "core.addons.k8s.io"
version := "1.4.0" version := "1.4.0"

View File

@ -89,6 +89,7 @@ func (tf *TemplateFunctions) AddTo(dest template.FuncMap, secretStore fi.SecretS
return tf.cluster.Spec.KubeDNS return tf.cluster.Spec.KubeDNS
} }
dest["KopsControllerArgv"] = tf.KopsControllerArgv
dest["DnsControllerArgv"] = tf.DnsControllerArgv dest["DnsControllerArgv"] = tf.DnsControllerArgv
dest["ExternalDnsArgv"] = tf.ExternalDnsArgv dest["ExternalDnsArgv"] = tf.ExternalDnsArgv
@ -247,6 +248,24 @@ func (tf *TemplateFunctions) DnsControllerArgv() ([]string, error) {
return argv, nil return argv, nil
} }
// KopsControllerArgv returns the args to kops-controller
func (tf *TemplateFunctions) KopsControllerArgv() ([]string, error) {
var argv []string
argv = append(argv, "/usr/bin/kops-controller")
argv = append(argv, "--cloud="+tf.cluster.Spec.CloudProvider)
argv = append(argv, "--config="+tf.cluster.Spec.ConfigBase)
// Disable metrics (avoid port conflicts, also risky because we are host network)
argv = append(argv, "--metrics-addr=0")
// Verbose, but not crazy logging
argv = append(argv, "--v=2")
return argv, nil
}
func (tf *TemplateFunctions) ExternalDnsArgv() ([]string, error) { func (tf *TemplateFunctions) ExternalDnsArgv() ([]string, error) {
var argv []string var argv []string