From 68fafd030d822ecc3313f70dc249715527999251 Mon Sep 17 00:00:00 2001 From: Smaine Kahlouch Date: Wed, 23 Mar 2016 17:27:06 +0100 Subject: [PATCH] choose between gce and aws cloud providers --- .travis.yml | 2 +- inventory/group_vars/all.yml | 5 +++++ requirements.yml | 10 +++------- roles/kubernetes/preinstall/tasks/main.yml | 5 +++++ roles/network_plugin/calico/defaults/main.yml | 4 +++- roles/network_plugin/calico/tasks/main.yml | 6 +++--- tests/support/aws.groovy | 2 +- 7 files changed, 21 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7718318e6..00e27304e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -128,7 +128,7 @@ script: -e cloud_region=${CLOUD_REGION} # Create cluster - - "$HOME/.local/bin/ansible-playbook -i inventory/inventory.ini -u $SSH_USER -e ansible_ssh_user=$SSH_USER $SSH_ARGS -b --become-user=root -e '{\"cloud_provider\": true}' $LOG_LEVEL -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} cluster.yml" + - "$HOME/.local/bin/ansible-playbook -i inventory/inventory.ini -u $SSH_USER -e ansible_ssh_user=$SSH_USER $SSH_ARGS -b --become-user=root -e cloud_provider=gce $LOG_LEVEL -e kube_network_plugin=${KUBE_NETWORK_PLUGIN} cluster.yml" # Tests Cases ## Test Master API - $HOME/.local/bin/ansible-playbook -i inventory/inventory.ini tests/testcases/010_check-apiserver.yml $LOG_LEVEL diff --git a/inventory/group_vars/all.yml b/inventory/group_vars/all.yml index 0b239af7d..0fe6b5d86 100644 --- a/inventory/group_vars/all.yml +++ b/inventory/group_vars/all.yml @@ -101,6 +101,11 @@ dns_domain: "{{ cluster_name }}" skydns_server: "{{ kube_service_addresses|ipaddr('net')|ipaddr(3)|ipaddr('address') }}" dns_server: "{{ kube_service_addresses|ipaddr('net')|ipaddr(2)|ipaddr('address') }}" +# There are some changes specific to the cloud providers +# for instance we need to encapsulate packets with some network plugins +# If set the possible values are either 'gce' or 'aws' +# cloud_provider: + # For multi masters architecture: # kube-proxy doesn't support multiple apiservers for the time being so you'll need to configure your own loadbalancer # This domain name will be inserted into the /etc/hosts file of all servers diff --git a/requirements.yml b/requirements.yml index da00d4dd9..6f5f931e6 100644 --- a/requirements.yml +++ b/requirements.yml @@ -1,17 +1,13 @@ --- -- src: https://gitlab.com/kubespray-ansibl8s/k8s-common.git +- src: https://gitlab.com/kubespray-ansibl8s/k8s-dashboard.git path: roles/apps scm: git -- src: https://gitlab.com/kubespray-ansibl8s/k8s-kubedns.git - path: roles/apps - scm: git - -- src: https://gitlab.com/kubespray-ansibl8s/k8s-kube-ui.git +- src: https://gitlab.com/kubespray-ansibl8s/k8s-common.git path: roles/apps scm: git -- src: https://gitlab.com/kubespray-ansibl8s/k8s-fabric8.git +- src: https://gitlab.com/kubespray-ansibl8s/k8s-kubedns.git path: roles/apps scm: git diff --git a/roles/kubernetes/preinstall/tasks/main.yml b/roles/kubernetes/preinstall/tasks/main.yml index 0bcc03e0a..be9515a2d 100644 --- a/roles/kubernetes/preinstall/tasks/main.yml +++ b/roles/kubernetes/preinstall/tasks/main.yml @@ -46,6 +46,11 @@ owner: kube when: ansible_service_mgr in ["sysvinit","upstart"] +- name: check cloud_provider value + fail: + msg: "If set the 'cloud_provider' var must be set eithe to 'gce' or 'aws'" + when: cloud_provider is defined and cloud_provider not in ['gce', 'aws'] + - name: Create cni directories file: path: "{{ item }}" diff --git a/roles/network_plugin/calico/defaults/main.yml b/roles/network_plugin/calico/defaults/main.yml index 5aa701249..91a281106 100644 --- a/roles/network_plugin/calico/defaults/main.yml +++ b/roles/network_plugin/calico/defaults/main.yml @@ -1,4 +1,6 @@ --- # Enables Internet connectivity from containers nat_outgoing: true -# cloud_provider: no + +# cloud_provider can only be set to 'gce' or 'aws' +# cloud_provider: diff --git a/roles/network_plugin/calico/tasks/main.yml b/roles/network_plugin/calico/tasks/main.yml index d2f477032..c112bbdc7 100644 --- a/roles/network_plugin/calico/tasks/main.yml +++ b/roles/network_plugin/calico/tasks/main.yml @@ -51,19 +51,19 @@ - name: Calico | Configure calico network pool command: "{{ bin_dir }}/calicoctl pool add {{ kube_pods_subnet }}" run_once: true - when: calico_conf.status == 404 and (cloud_provider is not defined or cloud_provider != True) + when: calico_conf.status == 404 and cloud_provider is not defined and not nat_outgoing|default(false) or (nat_outgoing|default(false) and peer_with_router|default(false)) - name: Calico | Configure calico network pool for cloud command: "{{ bin_dir }}/calicoctl pool add {{ kube_pods_subnet }} --ipip --nat-outgoing" run_once: true - when: calico_conf.status == 404 and cloud_provider is defined and cloud_provider == True + when: calico_conf.status == 404 and cloud_provider is defined - name: Calico | Configure calico network pool with nat outgoing command: "{{ bin_dir}}/calicoctl pool add {{ kube_pods_subnet }} --nat-outgoing" run_once: true - when: calico_conf.status == 404 and (cloud_provider is not defined or cloud_provider != True) + when: calico_conf.status == 404 and cloud_provider is not defined and nat_outgoing|default(false) and not peer_with_router|default(false) - name: Calico | Get calico configuration from etcd diff --git a/tests/support/aws.groovy b/tests/support/aws.groovy index 1d472b845..e49b3517b 100644 --- a/tests/support/aws.groovy +++ b/tests/support/aws.groovy @@ -58,7 +58,7 @@ def install_cluster(inventory_path, credentialsId, network_plugin) { extraVars: [ kube_network_plugin: network_plugin ], - extras: "-e '{\"cloud_provider\": true}'", + extras: "-e cloud_provider=aws", colorized: true ) }