Конфигурация, позволяющая веб-серверу использовать сертификаты, установленные при развертывании Kubernetes

Я хочу, чтобы мое приложение, работающее в кластере Kubernetes, использовало сертификат, смонтированный в томе, определенном в моем файле Deployment.yaml.

Я не использую вход, вместо этого у меня настроен сервис как LoadBalancer. Я не могу найти, как заставить эту службу обрабатывать завершение tls. Поэтому я пошел другим путем, где мне нужно смонтировать и использовать сертификат внутри модуля.

Я установил секрет, содержащий информацию о сертификате, в файле Deployment.yaml приложения. Модуль запущен и работает и успешно нашел этот секрет. Единственная проблема заключается в том, что веб-сервер не настроен на использование сертификата, поэтому мой сайт недоступен. Как настроить веб-сервер на использование сертификата? Можно ли это установить с помощью команды в файле докеров?

Веб-сервер работает: предварительный просмотр запуска npm

Проверяем файл package.json, это: "preview": "предварительный просмотр"

Могу ли я настроить Vite для использования сертификатов, хранящихся в контейнере Kubernetes? Можно ли установить это в моем файле докеров?

раздел развертывания, в котором установлен сертификат

          volumeMounts:
            - name: cert-volume
              mountPath: "/etc/ssl/certs"
              readOnly: true
      volumes:
        - name: cert-volume
          secret:
            secretName: my-secret

Я проверил онлайн и не вижу особого способа заставить мой веб-сервер npm использовать этот сертификат для завершения TLS. Я подозреваю, что я могу добавить что-то в package.json или непосредственно в файл docker, чтобы указать на этот каталог в моем контейнере kubernetes.

Есть ли у кого-нибудь подобная установка или опыт работы в этом направлении?

В Kubernetes завершение TLS обычно выполняется балансировщиком нагрузки, а не вашими модулями.

Jonas 23.08.2024 00:57

Я не могу найти нигде, где говорится, что служба LoadBalancer (без входа) обрабатывает завершение tls. Как мне заставить мои сертификаты использоваться здесь? Где вы видите эту информацию? Я не использую вход.

elementmg 23.08.2024 01:12
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
2
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Для ViteJS вам необходимо настроить параметр server.https, как указано в https://vitejs.dev/config/server-options.html#server-https

Как минимум, вам необходимо передать ключ и сертификат этому параметру, как показано в https://nodejs.org/api/https.html#httpscreateserveroptions-requestlistener.

Пример:

import { defineConfig } from 'vite';
import fs from 'fs';

export default defineConfig({
  server: {
    https: {
      key: fs.readFileSync('/path/to/key.pem'),
      cert: fs.readFileSync('/path/to/cert.pem'),
    },
  },
});

Поскольку вы используете Vite в качестве веб-сервера, вам необходимо будет выполнить некоторые настройки, специфичные для Vite. Сервер Vite можно настроить на использование TLS/SSL, изменив ваш vite.config.js, однако вам необходимо указать путь к вашему сертификату. Обратитесь к этой официальной документации для настройки Vite, включая параметры сервера.

А поскольку веб-сервер запущен: npm runПредварительный просмотр, проще всего использовать пакет vite-plugin-mkcert. Ниже приведена команда для этого:

  • npm и vite-plugin-mkcert -D

Как только это будет сделано, ваш vite.config.js будет выглядеть так:

import { defineConfig } from 'vite'
import mkcert from 'vite-plugin-mkcert'

export default defineConfig({
  server: { https: true }, // Not needed for Vite 5+
  plugins: [ mkcert() ]
})

После этого он установит локальный сертификат в вашу систему и в количество установленных браузеров.

Вы также можете запустить свой сервер Vite с помощью следующей команды:

$ npm run dev -- --host

При этом флаг --host передается в командную строку vite. Вы увидите такой вывод:

vite v2.7.9 dev server running at:

  > Local:    http://localhost:3000/
  > Network:  http://192.168.4.68:3000/

  ready in 237ms.

У меня есть определенный сертификат, который я должен использовать, который хранится в кластере Kubernetes. Я не могу использовать mkcert и создать и установить локальный сертификат.

elementmg 23.08.2024 17:09

Другие вопросы по теме