chore(placement): add uwsgi (#623)
diff --git a/charts/placement/templates/bin/_placement-api.sh.tpl b/charts/placement/templates/bin/_placement-api.sh.tpl
index 2b1b12d..c38fc36 100644
--- a/charts/placement/templates/bin/_placement-api.sh.tpl
+++ b/charts/placement/templates/bin/_placement-api.sh.tpl
@@ -20,39 +20,11 @@
COMMAND="${@:-start}"
function start () {
-
- cp -a $(type -p placement-api) /var/www/cgi-bin/placement/
-
- if [ -f /etc/apache2/envvars ]; then
- # Loading Apache2 ENV variables
- source /etc/apache2/envvars
- # The directory below has to be created due to the fact that
- # libapache2-mod-wsgi-py3 doesn't create it in contrary by libapache2-mod-wsgi
- mkdir -p ${APACHE_RUN_DIR}
- fi
-
- # Get rid of stale pid file if present.
- rm -f /var/run/apache2/*.pid
-
- # Start Apache2
- {{- if .Values.conf.software.apache2.a2enmod }}
- {{- range .Values.conf.software.apache2.a2enmod }}
- a2enmod {{ . }}
- {{- end }}
- {{- end }}
- {{- if .Values.conf.software.apache2.a2dismod }}
- {{- range .Values.conf.software.apache2.a2dismod }}
- a2dismod {{ . }}
- {{- end }}
- {{- end }}
- exec {{ .Values.conf.software.apache2.binary }} {{ .Values.conf.software.apache2.start_parameters }}
+ exec uwsgi --ini /etc/placement/placement-api-uwsgi.ini
}
function stop () {
- if [ -f /etc/apache2/envvars ]; then
- source /etc/apache2/envvars
- fi
- {{ .Values.conf.software.apache2.binary }} -k graceful-stop
+ kill -TERM 1
}
$COMMAND
diff --git a/charts/placement/templates/configmap-etc.yaml b/charts/placement/templates/configmap-etc.yaml
index c5880af..e34b2c6 100644
--- a/charts/placement/templates/configmap-etc.yaml
+++ b/charts/placement/templates/configmap-etc.yaml
@@ -57,6 +57,12 @@
{{- if empty .Values.conf.placement.keystone_authtoken.memcache_secret_key -}}
{{- $_ := set .Values.conf.placement.keystone_authtoken "memcache_secret_key" ( default ( randAlphaNum 64 ) .Values.endpoints.oslo_cache.auth.memcache_secret_key ) -}}
{{- end -}}
+
+{{- if empty (index .Values.conf.placement_api_uwsgi.uwsgi "http-socket") -}}
+{{- $http_socket_port := tuple "placement" "service" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" | toString }}
+{{- $http_socket := printf "0.0.0.0:%s" $http_socket_port }}
+{{- $_ := set .Values.conf.placement_api_uwsgi.uwsgi "http-socket" $http_socket -}}
+{{- end -}}
---
apiVersion: v1
kind: Secret
@@ -66,6 +72,6 @@
data:
policy.yaml: {{ toYaml .Values.conf.policy | b64enc }}
placement.conf: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.placement | b64enc }}
+ placement-api-uwsgi.ini: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.placement_api_uwsgi | b64enc }}
logging.conf: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.logging | b64enc }}
-{{- include "helm-toolkit.snippets.values_template_renderer" (dict "envAll" $envAll "template" .Values.conf.wsgi_placement "key" "wsgi-placement.conf" "format" "Secret" ) | indent 2 }}
{{- end }}
diff --git a/charts/placement/templates/deployment.yaml b/charts/placement/templates/deployment.yaml
index 605f952..3082216 100644
--- a/charts/placement/templates/deployment.yaml
+++ b/charts/placement/templates/deployment.yaml
@@ -86,14 +86,14 @@
scheme: {{ tuple "placement" "service" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_scheme_lookup" | upper }}
path: /
port: {{ tuple "placement" "service" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
- initialDelaySeconds: 15
+ initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
scheme: {{ tuple "placement" "service" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_scheme_lookup" | upper }}
path: /
port: {{ tuple "placement" "service" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
- initialDelaySeconds: 50
+ initialDelaySeconds: 5
periodSeconds: 10
volumeMounts:
- name: pod-tmp
@@ -108,6 +108,10 @@
mountPath: /etc/placement/placement.conf
subPath: placement.conf
readOnly: true
+ - name: placement-etc
+ mountPath: /etc/placement/placement-api-uwsgi.ini
+ subPath: placement-api-uwsgi.ini
+ readOnly: true
{{- if .Values.conf.placement.DEFAULT.log_config_append }}
- name: placement-etc
mountPath: {{ .Values.conf.placement.DEFAULT.log_config_append }}
diff --git a/charts/placement/values.yaml b/charts/placement/values.yaml
index 4a702ac..2f4b353 100644
--- a/charts/placement/values.yaml
+++ b/charts/placement/values.yaml
@@ -61,18 +61,6 @@
port: 30778
conf:
- software:
- apache2:
- binary: apache2
- start_parameters: -DFOREGROUND
- # Enable/Disable modules
- # a2enmod:
- # - headers
- # - rewrite
- # a2dismod:
- # - status
- a2enmod: null
- a2dismod: null
policy: {}
placement:
DEFAULT:
@@ -148,35 +136,23 @@
formatter_default:
format: "%(message)s"
datefmt: "%Y-%m-%d %H:%M:%S"
- wsgi_placement: |
- Listen 0.0.0.0:{{ tuple "placement" "service" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
- LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
- LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy
- SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
- CustomLog /dev/stdout combined env=!forwarded
- CustomLog /dev/stdout proxy env=forwarded
- <VirtualHost *:{{ tuple "placement" "service" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}>
- WSGIDaemonProcess placement-api processes=4 threads=1 user=placement group=placement display-name=%{GROUP}
- WSGIProcessGroup placement-api
- WSGIScriptAlias / /var/www/cgi-bin/placement/placement-api
- WSGIApplicationGroup %{GLOBAL}
- WSGIPassAuthorization On
- <IfVersion >= 2.4>
- ErrorLogFormat "%{cu}t %M"
- </IfVersion>
- ErrorLog /dev/stdout
- SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
- CustomLog /dev/stdout combined env=!forwarded
- CustomLog /dev/stdout proxy env=forwarded
- </VirtualHost>
- Alias /placement /var/www/cgi-bin/placement/placement-api
- <Location /placement>
- SetHandler wsgi-script
- Options +ExecCGI
- WSGIProcessGroup placement-api
- WSGIApplicationGroup %{GLOBAL}
- WSGIPassAuthorization On
- </Location>
+ placement_api_uwsgi:
+ uwsgi:
+ processes: 4
+ add-header: "Connection: close"
+ buffer-size: 65535
+ die-on-term: true
+ enable-threads: true
+ exit-on-reload: false
+ hook-master-start: unix_signal:15 gracefully_kill_them_all
+ lazy-apps: true
+ log-x-forwarded-for: true
+ master: true
+ procname-prefix-spaced: "placement-api:"
+ route-user-agent: '^kube-probe.* donotlog:'
+ thunder-lock: true
+ worker-reload-mercy: 80
+ wsgi-file: /var/lib/openstack/bin/placement-api
endpoints:
cluster_domain_suffix: cluster.local