Skip to content

Commit

Permalink
Refactor prepare package for external use
Browse files Browse the repository at this point in the history
  • Loading branch information
Ullaakut committed Mar 13, 2020
1 parent 68f8f6c commit 8116418
Show file tree
Hide file tree
Showing 15 changed files with 671 additions and 263 deletions.
8 changes: 5 additions & 3 deletions cmd/maesh/maesh.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,11 @@ func maeshCommand(iConfig *cmd.MaeshConfiguration) error {
return fmt.Errorf("error building clients: %v", err)
}

prepare := preparepkg.NewPrepare(log, clients)
if err = prepare.CheckCluster(); err != nil {
return fmt.Errorf("error during cluster check: %v", err)
prep := preparepkg.NewPrepare(log, clients)

_, err = prep.CheckDNSProvider()
if err != nil {
return fmt.Errorf("no valid DNS provider found: %v", err)
}

minHTTPPort := int32(5000)
Expand Down
14 changes: 11 additions & 3 deletions cmd/prepare/prepare.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,16 +45,24 @@ func prepareCommand(pConfig *cmd.PrepareConfig) error {

p := prepare.NewPrepare(log, clients)

if err = p.CheckCluster(); err != nil {
provider, err := p.CheckDNSProvider()
if err != nil {
return fmt.Errorf("error during cluster check: %v", err)
}

if err = p.StartInformers(pConfig.SMI); err != nil {
return fmt.Errorf("error during informer check: %v, this can be caused by pre-existing objects in your cluster that do not conform to the spec", err)
}

if err = p.PatchDNS(pConfig.Namespace, pConfig.ClusterDomain); err != nil {
return fmt.Errorf("error initializing cluster: %v", err)
switch provider {
case prepare.CoreDNS:
if err := p.ConfigureCoreDNS(pConfig.ClusterDomain, pConfig.Namespace); err != nil {
return fmt.Errorf("unable to configure CoreDNS: %v", err)
}
case prepare.KubeDNS:
if err := p.ConfigureKubeDNS(); err != nil {
return fmt.Errorf("unable to configure KubeDNS: %v", err)
}
}

return nil
Expand Down
11 changes: 11 additions & 0 deletions pkg/prepare/fixtures/checkdnsprovider_kubedns.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: kube-dns
namespace: kube-system
spec:
template:
spec:
containers:
- name: titi
image: titi/toto:latest
11 changes: 11 additions & 0 deletions pkg/prepare/fixtures/checkdnsprovider_no_provider.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: notaprovider
namespace: kube-system
spec:
template:
spec:
containers:
- name: titi
image: titi/toto:latest
13 changes: 13 additions & 0 deletions pkg/prepare/fixtures/checkdnsprovider_supported_version.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: coredns
namespace: kube-system
spec:
template:
spec:
containers:
- name: coredns
image: image-registry.canonical.com:5000/cdk/coredns/coredns-amd64:1.6.9
- name: titi
image: titi/toto:latest
13 changes: 13 additions & 0 deletions pkg/prepare/fixtures/checkdnsprovider_unsupported_version.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: coredns
namespace: kube-system
spec:
template:
spec:
containers:
- name: coredns
image: coredns-amd64:0.4.2
- name: titi
image: titi/toto:latest
64 changes: 64 additions & 0 deletions pkg/prepare/fixtures/configurecoredns_already_patched.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: coredns
namespace: kube-system
spec:
template:
spec:
volumes:
- configMap:
name: "other-cfgmap"
- configMap:
name: "coredns-cfgmap"
---
apiVersion: v1
kind: ConfigMap
metadata:
name: other-cfgmap
namespace: kube-system
---
apiVersion: v1
kind: ConfigMap
metadata:
name: coredns-cfgmap
namespace: kube-system
labels:
maesh-patched: "true"
data:
Corefile: |
.:53 {
errors
health {
lameduck 5s
}
ready
kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
maesh:53 {
errors
rewrite continue {
name regex ([a-zA-Z0-9-_]*)\.([a-zv0-9-_]*)\.maesh toto-{1}-6d61657368-{2}.toto.svc.titi
answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\.toto\.svc\.titi {1}.{2}.maesh
}
kubernetes titi in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
5 changes: 5 additions & 0 deletions pkg/prepare/fixtures/configurecoredns_missing_configmap.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: coredns
namespace: kube-system
Empty file.
45 changes: 45 additions & 0 deletions pkg/prepare/fixtures/configurecoredns_not_patched.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: coredns
namespace: kube-system
spec:
template:
spec:
volumes:
- configMap:
name: "other-cfgmap"
- configMap:
name: "coredns-cfgmap"
---
apiVersion: v1
kind: ConfigMap
metadata:
name: other-cfgmap
namespace: kube-system
---
apiVersion: v1
kind: ConfigMap
metadata:
name: coredns-cfgmap
namespace: kube-system
data:
Corefile: |
.:53 {
errors
health {
lameduck 5s
}
ready
kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
27 changes: 27 additions & 0 deletions pkg/prepare/fixtures/configurekubedns_already_patched.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: kube-dns
namespace: kube-system
spec:
template:
spec:
volumes:
- configMap:
name: "kubedns-cfgmap"
---
apiVersion: v1
kind: ConfigMap
metadata:
name: kubedns-cfgmap
namespace: kube-system
labels:
maesh-patched: "true"
---
apiVersion: v1
kind: Service
metadata:
name: coredns
namespace: maesh
spec:
clusterIP: "1.2.3.4"
Empty file.
25 changes: 25 additions & 0 deletions pkg/prepare/fixtures/configurekubedns_not_patched.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: kube-dns
namespace: kube-system
spec:
template:
spec:
volumes:
- configMap:
name: "kubedns-cfgmap"
---
apiVersion: v1
kind: ConfigMap
metadata:
name: kubedns-cfgmap
namespace: kube-system
---
apiVersion: v1
kind: Service
metadata:
name: coredns
namespace: maesh
spec:
clusterIP: "1.2.3.4"

0 comments on commit 8116418

Please sign in to comment.