Fix k8s+OC order, install pool.service before addons
(crerry picked from commit 470b3312d63207c0d7c14678143cc57225b6c5be)
Change-Id: I165e4c79cdcf0664565f49785ae2e2789eff8b68
diff --git a/src/com/mirantis/mk/Orchestrate.groovy b/src/com/mirantis/mk/Orchestrate.groovy
index ba6efc8..feec82c 100644
--- a/src/com/mirantis/mk/Orchestrate.groovy
+++ b/src/com/mirantis/mk/Orchestrate.groovy
@@ -640,6 +640,7 @@
def installKubernetesControl(master, extra_tgt = '') {
def salt = new com.mirantis.mk.Salt()
+ def first_target
salt.fullRefresh(master, "* ${extra_tgt}")
// Bootstrap all nodes
@@ -653,23 +654,40 @@
// Install docker
salt.enforceState(master, "I@docker:host ${extra_tgt}", 'docker.host')
+ // If network engine is not opencontrail, run addons state for kubernetes
+ if (!salt.getPillar(master, "I@kubernetes:master ${extra_tgt}", 'kubernetes:master:network:opencontrail:enabled')) {
+ salt.enforceState(master, "I@kubernetes:master ${extra_tgt}", 'kubernetes.master.kube-addons')
+ }
+
// Install Kubernetes pool and Calico
- salt.enforceState(master, "I@kubernetes:master ${extra_tgt}", 'kubernetes.master.kube-addons')
salt.enforceState(master, "I@kubernetes:master ${extra_tgt}", 'kubernetes.pool')
if (salt.testTarget(master, "I@etcd:server:setup ${extra_tgt}")) {
// Setup etcd server
- salt.enforceState(master, "I@kubernetes:master and *01* ${extra_tgt}", 'etcd.server.setup')
+ first_target = salt.getFirstMinion(master, "I@kubernetes:master ${extra_tgt}")
+ salt.enforceState(master, "${first_target} ${extra_tgt}", 'etcd.server.setup')
}
// Run k8s master at *01* to simplify namespaces creation
- salt.enforceStateWithExclude(master, "I@kubernetes:master and *01* ${extra_tgt}", "kubernetes.master", "kubernetes.master.setup")
+ first_target = salt.getFirstMinion(master, "I@kubernetes:master ${extra_tgt}")
- // Run k8s without master.setup
- salt.enforceStateWithExclude(master, "I@kubernetes:master ${extra_tgt}", "kubernetes", "kubernetes.master.setup")
+ // If network engine is opencontrail, run master state for kubernetes without kube-addons
+ // The kube-addons state will be called later only in case of opencontrail
+ if (salt.getPillar(master, "I@kubernetes:master ${extra_tgt}", 'kubernetes:master:network:opencontrail:enabled')) {
+ // Run k8s on first node without master.setup and master.kube-addons
+ salt.enforceStateWithExclude(master, "${first_target} ${extra_tgt}", "kubernetes.master", "kubernetes.master.setup,kubernetes.master.kube-addons")
+ // Run k8s without master.setup and master.kube-addons
+ salt.enforceStateWithExclude(master, "I@kubernetes:master ${extra_tgt}", "kubernetes", "kubernetes.master.setup,kubernetes.master.kube-addons")
+ } else {
+ // Run k8s on first node without master.setup and master.kube-addons
+ salt.enforceStateWithExclude(master, "${first_target} ${extra_tgt}", "kubernetes.master", "kubernetes.master.setup")
+ // Run k8s without master.setup
+ salt.enforceStateWithExclude(master, "I@kubernetes:master ${extra_tgt}", "kubernetes", "kubernetes.master.setup")
+ }
// Run k8s master setup
- salt.enforceState(master, "I@kubernetes:master and *01* ${extra_tgt}", 'kubernetes.master.setup')
+ first_target = salt.getFirstMinion(master, "I@kubernetes:master ${extra_tgt}")
+ salt.enforceState(master, "${first_target} ${extra_tgt}", 'kubernetes.master.setup')
// Restart kubelet
salt.runSaltProcessStep(master, "I@kubernetes:master ${extra_tgt}", 'service.restart', ['kubelet'])
@@ -720,6 +738,16 @@
salt.cmdRun(master, "I@docker:swarm:role:master ${extra_tgt}", 'docker node ls')
}
+// Setup addons for kubernetes - For OpenContrail network engine
+// Use after compute nodes are ready, because K8s addons like DNS should be placed on cmp nodes
+def setupKubeAddonForContrail(master, extra_tgt = '') {
+ def salt = new com.mirantis.mk.Salt()
+
+ if (salt.getPillar(master, "I@kubernetes:master ${extra_tgt}", 'kubernetes:master:network:opencontrail:enabled')){
+ // Setup Addons for Kubernetes only in case of OpenContrail is used as neteork engine
+ salt.enforceState(master, "I@kubernetes:master ${extra_tgt}", 'kubernetes.master.kube-addons')
+ }
+}
def installCicd(master, extra_tgt = '') {
def salt = new com.mirantis.mk.Salt()