Запустите веб-сервер nginx как отдельный модуль в пространстве имен

#nginx #kubernetes #kubernetes-helm #helm3

Вопрос:

У меня есть приложение, которое обслуживает статический контент с помощью веб-сервера nginx, вот как nginx.conf выглядит фактический файл

 upstream app_api {
    server web:8000;
}

server {

    listen 80;
    client_max_body_size 100M;

    location / {
        proxy_pass http://chp_api;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    proxy_read_timeout 3600;
    }

    location /staticfiles/ {
    alias /home/chp_api/web/staticfiles/;
    }
}
 

Для того, чтобы преобразовать это в диаграмму управления и запустить nginx как отдельный модуль в пространстве имен приложений. Я следовал этому кодексу.
Вот мое nginx-config.yaml досье

 {{- if .Values.nginx.enabled -}}
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "app.fullname" . }}-nginxconfig
  labels:
    app.kubernetes.io/name: {{ include "app.fullname" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}
    app.kubernetes.io/managed-by: {{ .Release.Service }}
data:
  nginx.conf: |-
{{- if .Values.nginx.config.default }}

    upstream app_api {
        server web:8000;
    }

    server {
        listen 80;

        # set max upload size
        client_max_body_size 100M;

        location / {
            proxy_pass http://app_api;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_redirect off;
            proxy_read_timeout 3600;
        }

        location /staticfiles/ {
            alias /home/app_api/web/staticfiles/;
        }
    }
{{- else }}
{{ .Values.nginx.config.custom | indent 4 }}
{{- end }}
{{- end }}
 

Ценности.файл yaml для nginx выглядит так

 nginx:
  enabled: false
  image:
    repository: nginx
    tag: alpine
    pullPolicy: IfNotPresent

  config:
    default: true

  resources: {}

 

Но я не вижу, чтобы создавался отдельный модуль для веб-сервера nginx, за исключением модуля для приложения. Могу ли я, пожалуйста, знать, что я делаю не так, я новичок в kubernetes и диаграмме руля.

Комментарии:

1. глядя на приведенные выше манифесты, кажется, что вы развертываете только карту конфигурации, чтобы развернуть веб-сервер nginx в качестве модуля, вам следует развернуть ресурсы «Модуль» или «Развертывание», в которых используется только что созданная вами карта конфигурации.

2. @saurabh_garg, Могу я, пожалуйста, узнать, как? Или, если вы могли бы поделиться со мной примером, который будет очень полезен, я очень новичок в k8 и helm

3. Вот пример из официальной документации k8s kubernetes.io/docs/tasks/configure-pod-container/… Если вы новичок в k8, то я бы посоветовал разобраться в ресурсах и их использовании в k8s, прежде чем двигаться дальше. Хорошим местом для начала обучения и практики является kubernetes.io/docs/home

4. Значения , которые вы показываете, также заданы nginx: { enabled: false } , поэтому условие вокруг всей отображаемой вами карты конфигурации завершится ошибкой, и карта конфигурации не будет сгенерирована. Как указывает @saurabh_garg, вам также потребуется развертывание для фактического запуска сервера Nginx (возможно, на основе пользовательского образа, включающего файлы, которые вы обслуживаете).

5. Привет @merilstack. Есть какие-нибудь новости?

Ответ №1:

Учитывая, что вы новичок в k8s и Helm, и предоставленное репозиторий не объясняет, как создать развертывание шаг за шагом, я бы предложил взглянуть на официальную документацию, где вы можете узнать, как развернуть простое развертывание nginx и управлять им дальше.