Я хочу, чтобы мое приложение, работающее в кластере 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.
Есть ли у кого-нибудь подобная установка или опыт работы в этом направлении?
Я не могу найти нигде, где говорится, что служба LoadBalancer (без входа) обрабатывает завершение tls. Как мне заставить мои сертификаты использоваться здесь? Где вы видите эту информацию? Я не использую вход.
Для 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. Ниже приведена команда для этого:
Как только это будет сделано, ваш 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 и создать и установить локальный сертификат.
В Kubernetes завершение TLS обычно выполняется балансировщиком нагрузки, а не вашими модулями.