From f705eba7eda5fa3c143217233bcc431165a1a6cd Mon Sep 17 00:00:00 2001 From: Gabriel Totusek Date: Thu, 2 May 2019 11:43:01 -0700 Subject: [PATCH 1/4] Add support for kubernetes tolerations, nodeSelector, and affinity --- installer/roles/kubernetes/tasks/main.yml | 35 ++++++++++--------- .../kubernetes/templates/deployment.yml.j2 | 12 +++++++ .../templates/management-pod.yml.j2 | 12 +++++++ .../templates/postgresql-values.yml.j2 | 33 +++++++++++++++++ 4 files changed, 75 insertions(+), 17 deletions(-) create mode 100644 installer/roles/kubernetes/templates/postgresql-values.yml.j2 diff --git a/installer/roles/kubernetes/tasks/main.yml b/installer/roles/kubernetes/tasks/main.yml index 31eb4efcda..8f53c4cbae 100644 --- a/installer/roles/kubernetes/tasks/main.yml +++ b/installer/roles/kubernetes/tasks/main.yml @@ -78,27 +78,28 @@ - postgres_svc_details is defined and postgres_svc_details.rc != 0 - openshift_host is defined -- name: Deploy and Activate Postgres (Kubernetes) - shell: | - helm repo update --tiller-namespace={{ tiller_namespace | default('kube-system') }} - helm upgrade {{ postgresql_service_name }} --install \ - --namespace {{ kubernetes_namespace }} \ - --set postgresqlUsername={{ pg_username }} \ - --set postgresqlPassword={{ pg_password | quote }} \ - --set postgresqlDatabase={{ pg_database }} \ - --set persistence.size={{ pg_volume_capacity|default('5')}}Gi \ - --version="2.0.0" \ - --tiller-namespace={{ tiller_namespace | default('kube-system') }} \ - {{ '--set persistence.storageClass='+pg_persistence_storageClass if pg_persistence_storageClass is defined else ' ' }} \ - {{ '--set resources.limits.cpu='+(pg_cpu_limit | string)+'m' if pg_cpu_limit is defined else ' ' }} \ - {{ '--set resources.limits.memory='+(pg_mem_limit | string)+'Gi' if pg_mem_limit is defined else ' ' }} \ - stable/postgresql +- name: Deploy PostgreSQL (Kubernetes) + block: + - name: Template PostgreSQL Deployment (Kubernetes) + set_fact: + pg_values: "{{ lookup('template', 'postgresql-values.yml.j2') }}" + no_log: yes + + - name: Deploy and Activate Postgres (Kubernetes) + shell: | + helm repo update --tiller-namespace={{ tiller_namespace | default('kube-system') }} + echo {{ pg_values | quote }} | helm upgrade {{ postgresql_service_name }} --install \ + --namespace {{ kubernetes_namespace }} \ + --version="5.3.9" \ + --tiller-namespace={{ tiller_namespace | default('kube-system') }} \ + --values - \ + stable/postgresql + register: kubernetes_pg_activate + no_log: yes when: - pg_hostname is not defined or pg_hostname == '' - postgres_svc_details is defined and postgres_svc_details.rc != 0 - kubernetes_context is defined - register: kubernetes_pg_activate - no_log: yes - name: Set postgresql hostname to helm package service (Kubernetes) set_fact: diff --git a/installer/roles/kubernetes/templates/deployment.yml.j2 b/installer/roles/kubernetes/templates/deployment.yml.j2 index fb75bc9d14..8e9f234c20 100644 --- a/installer/roles/kubernetes/templates/deployment.yml.j2 +++ b/installer/roles/kubernetes/templates/deployment.yml.j2 @@ -324,6 +324,18 @@ spec: {% endif %} {% if memcached_cpu_limit is defined %} cpu: "{{ memcached_cpu_limit }}m" +{% endif %} +{% if tolerations is defined %} + tolerations: +{{ tolerations | to_nice_yaml(indent=2) | indent(width=8, indentfirst=True) }} +{% endif %} +{% if node_selector is defined %} + nodeSelector: +{{ node_selector | to_nice_yaml(indent=2) | indent(width=8, indentfirst=True) }} +{% endif %} +{% if affinity is defined %} + affinity: +{{ affinity | to_nice_yaml(indent=2) | indent(width=8, indentfirst=True) }} {% endif %} volumes: {% if ca_trust_dir is defined %} diff --git a/installer/roles/kubernetes/templates/management-pod.yml.j2 b/installer/roles/kubernetes/templates/management-pod.yml.j2 index 12197019c1..9cb35932ce 100644 --- a/installer/roles/kubernetes/templates/management-pod.yml.j2 +++ b/installer/roles/kubernetes/templates/management-pod.yml.j2 @@ -32,6 +32,18 @@ spec: {% endif %} {% if management_cpu_limit is defined %} cpu: "{{ management_cpu_limit }}m" +{% endif %} +{% if tolerations is defined %} + tolerations: +{{ tolerations | to_nice_yaml(indent=2) | indent(width=4, indentfirst=True) }} +{% endif %} +{% if node_selector is defined %} + nodeSelector: +{{ node_selector | to_nice_yaml(indent=2) | indent(width=4, indentfirst=True) }} +{% endif %} +{% if affinity is defined %} + affinity: +{{ affinity | to_nice_yaml(indent=2) | indent(width=4, indentfirst=True) }} {% endif %} volumes: - name: {{ kubernetes_deployment_name }}-application-config diff --git a/installer/roles/kubernetes/templates/postgresql-values.yml.j2 b/installer/roles/kubernetes/templates/postgresql-values.yml.j2 new file mode 100644 index 0000000000..fcf4a06d6b --- /dev/null +++ b/installer/roles/kubernetes/templates/postgresql-values.yml.j2 @@ -0,0 +1,33 @@ +postgresqlUsername: {{ pg_username }} +postgresqlPassword: {{ pg_password }} +postgresqlDatabase: {{ pg_database }} +persistence: + size: {{ pg_volume_capacity|default('5') }}Gi +{% if pg_persistence_storageClass is defined %} + storageClass: {{ pg_persistence_storageClass }} +{% endif %} +{% if pg_cpu_limit is defined or pg_mem_limit is defined %} +resources: + limits: +{% if pg_cpu_limit is defined %} + cpu: {{ pg_cpu_limit | string }}m +{% endif %} +{% if pg_mem_limit is defined %} + memory: {{ pg_mem_limit | string }}Gi +{% endif %} +{% endif %} +{% if tolerations is defined or node_selector is defined or affinity is defined %} +master: +{% if tolerations is defined %} + tolerations: +{{ tolerations | to_nice_yaml(indent=2) | indent(width=4, indentfirst=True) }} +{% endif %} +{% if node_selector is defined %} + nodeSelector: +{{ node_selector | to_nice_yaml(indent=2) | indent(width=4, indentfirst=True) }} +{% endif %} +{% if affinity is defined %} + affinity: +{{ affinity | to_nice_yaml(indent=2) | indent(width=4, indentfirst=True) }} +{% endif %} +{% endif %} From 90e5b0a12d7eb193505b1d404679c11149f044a0 Mon Sep 17 00:00:00 2001 From: Gabriel Totusek Date: Sun, 11 Aug 2019 23:16:43 -0700 Subject: [PATCH 2/4] Update postgres helm chart to v6.2.1 --- installer/roles/kubernetes/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/roles/kubernetes/tasks/main.yml b/installer/roles/kubernetes/tasks/main.yml index 8f53c4cbae..b85f6b2176 100644 --- a/installer/roles/kubernetes/tasks/main.yml +++ b/installer/roles/kubernetes/tasks/main.yml @@ -90,7 +90,7 @@ helm repo update --tiller-namespace={{ tiller_namespace | default('kube-system') }} echo {{ pg_values | quote }} | helm upgrade {{ postgresql_service_name }} --install \ --namespace {{ kubernetes_namespace }} \ - --version="5.3.9" \ + --version="6.2.1" \ --tiller-namespace={{ tiller_namespace | default('kube-system') }} \ --values - \ stable/postgresql From d932a70eff459ff0459bb63a88cd18a98e4cf068 Mon Sep 17 00:00:00 2001 From: Gabriel Totusek Date: Mon, 12 Aug 2019 00:43:09 -0700 Subject: [PATCH 3/4] Downgrade postgres helm chart to v5.3.13 --- installer/roles/kubernetes/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/roles/kubernetes/tasks/main.yml b/installer/roles/kubernetes/tasks/main.yml index b85f6b2176..37756cef4b 100644 --- a/installer/roles/kubernetes/tasks/main.yml +++ b/installer/roles/kubernetes/tasks/main.yml @@ -90,7 +90,7 @@ helm repo update --tiller-namespace={{ tiller_namespace | default('kube-system') }} echo {{ pg_values | quote }} | helm upgrade {{ postgresql_service_name }} --install \ --namespace {{ kubernetes_namespace }} \ - --version="6.2.1" \ + --version="5.3.13" \ --tiller-namespace={{ tiller_namespace | default('kube-system') }} \ --values - \ stable/postgresql From 794808cd105b1b477d98ae0d934bef7d6e14dbd8 Mon Sep 17 00:00:00 2001 From: Gabriel Totusek Date: Mon, 12 Aug 2019 02:40:25 -0700 Subject: [PATCH 4/4] Fix compatibility with postgresql helm chart v6.0.0+ --- installer/roles/kubernetes/tasks/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/installer/roles/kubernetes/tasks/main.yml b/installer/roles/kubernetes/tasks/main.yml index 37756cef4b..812f6b6715 100644 --- a/installer/roles/kubernetes/tasks/main.yml +++ b/installer/roles/kubernetes/tasks/main.yml @@ -90,7 +90,7 @@ helm repo update --tiller-namespace={{ tiller_namespace | default('kube-system') }} echo {{ pg_values | quote }} | helm upgrade {{ postgresql_service_name }} --install \ --namespace {{ kubernetes_namespace }} \ - --version="5.3.13" \ + --version="6.2.1" \ --tiller-namespace={{ tiller_namespace | default('kube-system') }} \ --values - \ stable/postgresql @@ -103,7 +103,7 @@ - name: Set postgresql hostname to helm package service (Kubernetes) set_fact: - pg_hostname: "{{ postgresql_service_name }}-postgresql" + pg_hostname: "{{ postgresql_service_name }}" when: - pg_hostname is not defined or pg_hostname == '' - kubernetes_context is defined