Wolfgang Kulhanek
2020-03-10 93757c5fbd015faf35e12db4464d51b6acc291de
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
---
- name: Define {{ machineset_group.name }} machinesets
  k8s:
    state: present
    definition: "{{ lookup('template', 'aws-machineset.yml.j2') | from_yaml }}"
  # Iterate through availability zones in reverse order as it makes the math
  # easier to scale zone "a" before "b" to match expected behavior.
  loop: "{{ aws_worker_availability_zones[::-1] }}"
  loop_control:
    label: "{{ machineset_name }}"
    loop_var: aws_worker_availability_zone
    index_var: loop_index
  vars:
    availability_zone: "{{ aws_worker_availability_zone.name }}"
    availability_zone_region: "{{ aws_worker_availability_zone.region }}"
    availability_zone_subnet: "{{ aws_worker_availability_zone.subnet }}"
    aws_instance_type: >-
      {{ machineset_group.aws_instance_type | default(default_aws_instance_type) }}
    aws_root_volume_size: >-
      {{ machineset_group.aws_root_volume_size | default(default_aws_root_volume_size) }}
    machineset_name: >-
      {{ [cluster_label, machineset_group.name, availability_zone] | join('-') }}
    machineset_group_node_labels: >-
      {{ machineset_group.node_labels
       | default({'node-role.kubernetes.io/' + machineset_group.role: ''}
           if machineset_group.role|default(False) else {})
      }}
    machineset_group_total_replicas: >-
      {{ machineset_group.total_replicas
       | default(machineset_group.total_replicas_min)
       | default(0)
      }}
    machineset_replicas: >-
      {{ (
        (machineset_group_total_replicas|int + loop_index) / aws_worker_availability_zones|count
      ) | int }}
 
- name: Define {{ machineset_group.name }} machineautoscalers
  k8s:
    state: present
    definition: "{{ lookup('template', 'machineautoscaler.yml.j2') | from_yaml }}"
  # Iterate through availability zones in reverse order as it makes the math
  # easier to scale zone "a" before "b" to match expected behavior.
  loop: "{{ aws_worker_availability_zones[::-1] }}"
  loop_control:
    label: "{{ machineset_name }}"
    loop_var: aws_worker_availability_zone
    index_var: loop_index
  vars:
    availability_zone: "{{ aws_worker_availability_zone.name }}"
    machineset_name: >-
      {{ [cluster_label, machineset_group.name, availability_zone] | join('-') }}
    machineset_min_replicas: >-
      {{ (
         (machineset_group.total_replicas_min|default(0) + loop_index) /
         aws_worker_availability_zones|count
      ) | int }}
    machineset_max_replicas: >-
      {{ (
         (machineset_group.total_replicas_max|default(100) + loop_index) /
         aws_worker_availability_zones|count
      ) | int }}
  when: machineset_group.autoscale | default(False) | bool