Browse Source
Add etcd-events cluster for kube-apiserver (#2385)
Add etcd-events cluster for kube-apiserver (#2385)
Add etcd-events cluster for kube-apiserverpull/2398/merge
committed by
Matthew Mosesohn
17 changed files with 309 additions and 4 deletions
Split View
Diff Options
-
1roles/etcd/defaults/main.yml
-
27roles/etcd/handlers/main.yml
-
44roles/etcd/tasks/configure.yml
-
10roles/etcd/tasks/install_docker.yml
-
47roles/etcd/tasks/join_etcd-events_member.yml
-
47roles/etcd/tasks/join_etcd_member.yml
-
12roles/etcd/tasks/main.yml
-
7roles/etcd/tasks/refresh_config.yml
-
15roles/etcd/tasks/set_cluster_health.yml
-
18roles/etcd/templates/etcd-events-docker.service.j2
-
16roles/etcd/templates/etcd-events-host.service.j2
-
26roles/etcd/templates/etcd-events.env.j2
-
22roles/etcd/templates/etcd-events.j2
-
3roles/kubernetes/master/templates/manifests/kube-apiserver.manifest.j2
-
13roles/kubespray-defaults/defaults/main.yaml
-
4roles/reset/tasks/main.yml
-
1tests/files/gce_centos7-flannel-addons.yml
@ -0,0 +1,47 @@ |
|||
--- |
|||
- name: Join Member | Add member to cluster |
|||
shell: "{{ bin_dir }}/etcdctl --endpoints={{ etcd_events_access_addresses }} member add {{ etcd_member_name }} {{ etcd_events_peer_url }}" |
|||
register: member_add_result |
|||
until: member_add_result.rc == 0 |
|||
retries: 4 |
|||
delay: "{{ retry_stagger | random + 3 }}" |
|||
when: target_node == inventory_hostname |
|||
environment: |
|||
ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/node-{{ inventory_hostname }}.pem" |
|||
ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/node-{{ inventory_hostname }}-key.pem" |
|||
|
|||
- include_tasks: refresh_config.yml |
|||
vars: |
|||
etcd_events_peer_addresses: >- |
|||
{% for host in groups['etcd'] -%} |
|||
{%- if hostvars[host]['etcd_events_member_in_cluster'].rc == 0 -%} |
|||
{{ "etcd"+loop.index|string }}=https://{{ hostvars[host].access_ip | default(hostvars[host].ip | default(hostvars[host].ansible_default_ipv4['address'])) }}:2382, |
|||
{%- endif -%} |
|||
{%- if loop.last -%} |
|||
{{ etcd_member_name }}={{ etcd_events_peer_url }} |
|||
{%- endif -%} |
|||
{%- endfor -%} |
|||
when: target_node == inventory_hostname |
|||
|
|||
- name: Join Member | reload systemd |
|||
command: systemctl daemon-reload |
|||
when: target_node == inventory_hostname |
|||
|
|||
- name: Join Member | Ensure etcd-events is running |
|||
service: |
|||
name: etcd-events |
|||
state: started |
|||
enabled: yes |
|||
when: target_node == inventory_hostname |
|||
|
|||
- name: Join Member | Ensure member is in etcd-events cluster |
|||
shell: "{{ bin_dir }}/etcdctl --no-sync --endpoints={{ etcd_events_access_addresses }} member list | grep -q {{ etcd_events_access_address }}" |
|||
register: etcd_events_member_in_cluster |
|||
changed_when: false |
|||
check_mode: no |
|||
tags: |
|||
- facts |
|||
when: target_node == inventory_hostname |
|||
environment: |
|||
ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/node-{{ inventory_hostname }}.pem" |
|||
ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/node-{{ inventory_hostname }}-key.pem" |
@ -0,0 +1,47 @@ |
|||
--- |
|||
- name: Join Member | Add member to cluster |
|||
shell: "{{ bin_dir }}/etcdctl --endpoints={{ etcd_access_addresses }} member add {{ etcd_member_name }} {{ etcd_peer_url }}" |
|||
register: member_add_result |
|||
until: member_add_result.rc == 0 |
|||
retries: 4 |
|||
delay: "{{ retry_stagger | random + 3 }}" |
|||
when: target_node == inventory_hostname |
|||
environment: |
|||
ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/node-{{ inventory_hostname }}.pem" |
|||
ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/node-{{ inventory_hostname }}-key.pem" |
|||
|
|||
- include_tasks: refresh_config.yml |
|||
vars: |
|||
etcd_peer_addresses: >- |
|||
{% for host in groups['etcd'] -%} |
|||
{%- if hostvars[host]['etcd_member_in_cluster'].rc == 0 -%} |
|||
{{ "etcd"+loop.index|string }}=https://{{ hostvars[host].access_ip | default(hostvars[host].ip | default(hostvars[host].ansible_default_ipv4['address'])) }}:2380, |
|||
{%- endif -%} |
|||
{%- if loop.last -%} |
|||
{{ etcd_member_name }}={{ etcd_peer_url }} |
|||
{%- endif -%} |
|||
{%- endfor -%} |
|||
when: target_node == inventory_hostname |
|||
|
|||
- name: Join Member | reload systemd |
|||
command: systemctl daemon-reload |
|||
when: target_node == inventory_hostname |
|||
|
|||
- name: Join Member | Ensure etcd is running |
|||
service: |
|||
name: etcd |
|||
state: started |
|||
enabled: yes |
|||
when: target_node == inventory_hostname |
|||
|
|||
- name: Join Member | Ensure member is in cluster |
|||
shell: "{{ bin_dir }}/etcdctl --no-sync --endpoints={{ etcd_access_addresses }} member list | grep -q {{ etcd_access_address }}" |
|||
register: etcd_member_in_cluster |
|||
changed_when: false |
|||
check_mode: no |
|||
tags: |
|||
- facts |
|||
when: target_node == inventory_hostname |
|||
environment: |
|||
ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/node-{{ inventory_hostname }}.pem" |
|||
ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/node-{{ inventory_hostname }}-key.pem" |
@ -0,0 +1,18 @@ |
|||
[Unit] |
|||
Description=etcd docker wrapper |
|||
Wants=docker.socket |
|||
After=docker.service |
|||
|
|||
[Service] |
|||
User=root |
|||
PermissionsStartOnly=true |
|||
EnvironmentFile=-/etc/etcd-events.env |
|||
ExecStart={{ bin_dir }}/etcd-events |
|||
ExecStartPre=-{{ docker_bin_dir }}/docker rm -f {{ etcd_member_name }}-events |
|||
ExecStop={{ docker_bin_dir }}/docker stop {{ etcd_member_name }}-events |
|||
Restart=always |
|||
RestartSec=15s |
|||
TimeoutStartSec=30s |
|||
|
|||
[Install] |
|||
WantedBy=multi-user.target |
@ -0,0 +1,16 @@ |
|||
[Unit] |
|||
Description=etcd |
|||
After=network.target |
|||
|
|||
[Service] |
|||
Type=notify |
|||
User=root |
|||
EnvironmentFile=/etc/etcd-events.env |
|||
ExecStart={{ bin_dir }}/etcd |
|||
NotifyAccess=all |
|||
Restart=always |
|||
RestartSec=10s |
|||
LimitNOFILE=40000 |
|||
|
|||
[Install] |
|||
WantedBy=multi-user.target |
@ -0,0 +1,26 @@ |
|||
ETCD_DATA_DIR={{ etcd_events_data_dir }} |
|||
ETCD_ADVERTISE_CLIENT_URLS={{ etcd_events_client_url }} |
|||
ETCD_INITIAL_ADVERTISE_PEER_URLS={{ etcd_events_peer_url }} |
|||
ETCD_INITIAL_CLUSTER_STATE={% if etcd_cluster_is_healthy.rc != 0 | bool %}new{% else %}existing{% endif %} |
|||
|
|||
ETCD_METRICS={{ etcd_metrics }} |
|||
ETCD_LISTEN_CLIENT_URLS=https://{{ etcd_address }}:2381,https://127.0.0.1:2381 |
|||
ETCD_ELECTION_TIMEOUT={{ etcd_election_timeout }} |
|||
ETCD_HEARTBEAT_INTERVAL={{ etcd_heartbeat_interval }} |
|||
ETCD_INITIAL_CLUSTER_TOKEN=k8s_events_etcd |
|||
ETCD_LISTEN_PEER_URLS=https://{{ etcd_address }}:2382 |
|||
ETCD_NAME={{ etcd_member_name }}-events |
|||
ETCD_PROXY=off |
|||
ETCD_INITIAL_CLUSTER={{ etcd_events_peer_addresses }} |
|||
ETCD_AUTO_COMPACTION_RETENTION={{ etcd_compaction_retention }} |
|||
|
|||
# TLS settings |
|||
ETCD_TRUSTED_CA_FILE={{ etcd_cert_dir }}/ca.pem |
|||
ETCD_CERT_FILE={{ etcd_cert_dir }}/member-{{ inventory_hostname }}.pem |
|||
ETCD_KEY_FILE={{ etcd_cert_dir }}/member-{{ inventory_hostname }}-key.pem |
|||
ETCD_CLIENT_CERT_AUTH={{ etcd_secure_client | lower}} |
|||
|
|||
ETCD_PEER_TRUSTED_CA_FILE={{ etcd_cert_dir }}/ca.pem |
|||
ETCD_PEER_CERT_FILE={{ etcd_cert_dir }}/member-{{ inventory_hostname }}.pem |
|||
ETCD_PEER_KEY_FILE={{ etcd_cert_dir }}/member-{{ inventory_hostname }}-key.pem |
|||
ETCD_PEER_CLIENT_CERT_AUTH={{ etcd_peer_client_auth }} |
@ -0,0 +1,22 @@ |
|||
#!/bin/bash |
|||
{{ docker_bin_dir }}/docker run \ |
|||
--restart=on-failure:5 \ |
|||
--env-file=/etc/etcd-events.env \ |
|||
--net=host \ |
|||
-v /etc/ssl/certs:/etc/ssl/certs:ro \ |
|||
-v {{ etcd_cert_dir }}:{{ etcd_cert_dir }}:ro \ |
|||
-v {{ etcd_events_data_dir }}:{{ etcd_events_data_dir }}:rw \ |
|||
{% if etcd_memory_limit is defined %} |
|||
--memory={{ etcd_memory_limit|regex_replace('Mi', 'M') }} \ |
|||
{% endif %} |
|||
--oom-kill-disable \ |
|||
{% if etcd_cpu_limit is defined %} |
|||
--cpu-shares={{ etcd_cpu_limit|regex_replace('m', '') }} \ |
|||
{% endif %} |
|||
{% if etcd_blkio_weight is defined %} |
|||
--blkio-weight={{ etcd_blkio_weight }} \ |
|||
{% endif %} |
|||
--name={{ etcd_member_name }}-events \ |
|||
{{ etcd_image_repo }}:{{ etcd_image_tag }} \ |
|||
/usr/local/bin/etcd \ |
|||
"$@" |
Write
Preview
Loading…
Cancel
Save