Add serviceExternalIPs option for calico installation (#6928)

pull/6953/head
Andrii 2020-11-25 15:34:39 +02:00 committed by GitHub
parent eb16986f32
commit 8a153ed38e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 24 additions and 0 deletions

View File

@ -93,6 +93,15 @@ This can be enabled by setting the following variable as follow in group_vars (k
calico_advertise_cluster_ips: true calico_advertise_cluster_ips: true
``` ```
Since calico 3.10, Calico supports advertising Kubernetes service ExternalIPs over BGP in addition to cluster IPs advertising.
This can be enabled by setting the following variable in group_vars (k8s-cluster/k8s-net-calico.yml)
```yml
calico_advertise_service_external_ips:
- x.x.x.x/24
- y.y.y.y/32
```
### Optional : Define global AS number ### Optional : Define global AS number
Optional parameter `global_as_num` defines Calico global AS number (`/calico/bgp/v1/global/as_num` etcd key). Optional parameter `global_as_num` defines Calico global AS number (`/calico/bgp/v1/global/as_num` etcd key).

View File

@ -38,6 +38,11 @@
# Advertise Cluster IPs # Advertise Cluster IPs
# calico_advertise_cluster_ips: true # calico_advertise_cluster_ips: true
# Advertise Service External IPs
# calico_advertise_service_external_ips:
# - x.x.x.x/24
# - y.y.y.y/32
# Choose data store type for calico: "etcd" or "kdd" (kubernetes datastore) # Choose data store type for calico: "etcd" or "kdd" (kubernetes datastore)
# calico_datastore: "etcd" # calico_datastore: "etcd"

View File

@ -22,6 +22,9 @@ global_as_num: "64512"
# defaults. The value should be a number, not a string. # defaults. The value should be a number, not a string.
# calico_mtu: 1500 # calico_mtu: 1500
# Advertise Service External IPs
calico_advertise_service_external_ips: []
# Limits for apps # Limits for apps
calico_node_memory_limit: 500M calico_node_memory_limit: 500M
calico_node_cpu_limit: 300m calico_node_cpu_limit: 300m

View File

@ -154,6 +154,12 @@
- inventory_hostname == groups['kube-master'][0] - inventory_hostname == groups['kube-master'][0]
- 'calico_conf.stdout == "0"' - 'calico_conf.stdout == "0"'
- name: Populate Service External IPs
set_fact:
_service_external_ips: "{{ _service_external_ips|default([]) + [ {'cidr': item} ] }}"
with_items: "{{ calico_advertise_service_external_ips }}"
run_once: yes
- name: "Determine nodeToNodeMesh needed state" - name: "Determine nodeToNodeMesh needed state"
set_fact: set_fact:
nodeToNodeMeshEnabled: "false" nodeToNodeMeshEnabled: "false"
@ -174,6 +180,7 @@
"spec": { "spec": {
"logSeverityScreen": "Info", "logSeverityScreen": "Info",
"nodeToNodeMeshEnabled": {{ nodeToNodeMeshEnabled|default('true') }} , "nodeToNodeMeshEnabled": {{ nodeToNodeMeshEnabled|default('true') }} ,
"serviceExternalIPs": {{ _service_external_ips|default([]) }},
"asNumber": {{ global_as_num }} }} "asNumber": {{ global_as_num }} }}
changed_when: false changed_when: false
when: when: