chart 3.0
This commit is contained in:
@@ -2,22 +2,6 @@
|
||||
{{- if $cfg.enabled }}
|
||||
{{- $name := include "nanabushPlayer.serviceName" . -}}
|
||||
{{- $secretName := include "nanabushPlayer.secretName" . -}}
|
||||
{{/*
|
||||
Nanabush Player — проигрыватель учебных материалов: SCORM 1.2 и 2004, cmi5,
|
||||
xAPI, нативные курсы, тесты и эссе.
|
||||
|
||||
Как это работает:
|
||||
* HRBox выпускает launch-тикет, подписанный общим ключом ticketHs256,
|
||||
и отправляет браузер на https://<домен>{{ include "nanabushPlayer.basePath" . }}/start;
|
||||
* плеер проверяет подпись, audience и issuer, заводит свою сессию;
|
||||
* за пакетом курса и для отправки отчётов плеер ходит обратно в HRBox по
|
||||
внутрикластерному адресу — только он и разрешён в allowlist;
|
||||
* учебные события копятся в Redis Streams и досылаются форвардером,
|
||||
поэтому короткая недоступность HRBox не теряет прогресс.
|
||||
|
||||
Ограничения on-premise описаны в values.yaml рядом с app.nanabushPlayer.
|
||||
Полный контракт — docs/nanabush-player-deployment.md в репозитории HRBox.
|
||||
*/}}
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
@@ -49,9 +33,6 @@ spec:
|
||||
prometheus.io/path: "/metrics"
|
||||
{{- end }}
|
||||
spec:
|
||||
# Плееру не нужен доступ к API Kubernetes, а исполняет он содержимое,
|
||||
# загруженное пользователями, — поэтому токен не монтируется, процесс
|
||||
# не root, корневая файловая система только на чтение.
|
||||
automountServiceAccountToken: false
|
||||
terminationGracePeriodSeconds: {{ $cfg.terminationGracePeriodSeconds }}
|
||||
{{- include "hrbox.imagePullSecrets" . | nindent 6 }}
|
||||
@@ -89,8 +70,6 @@ spec:
|
||||
{{- else }}
|
||||
value: "off"
|
||||
{{- end }}
|
||||
# Путь монтирования не входит в audience: audience — это origin
|
||||
# браузера, иначе сломались бы проверки на стороне клиента.
|
||||
- name: PLAYER_BASE_PATH
|
||||
value: {{ include "nanabushPlayer.basePath" . | quote }}
|
||||
- name: PLAYER_AUDIENCE
|
||||
@@ -103,16 +82,12 @@ spec:
|
||||
name: {{ $secretName | quote }}
|
||||
key: {{ required "Нужно имя ключа ticketHs256 в секрете Nanabush Player" $cfg.existingSecret.keys.ticketHs256 | quote }}
|
||||
{{- with $cfg.existingSecret.keys.ticketKeys }}
|
||||
# Кольцо ключей: подпись проверяется ключом, выбранным по kid из
|
||||
# тикета, поэтому во время ротации работают обе версии HRBox.
|
||||
- name: PLAYER_TICKET_KEYS
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName | quote }}
|
||||
key: {{ . | quote }}
|
||||
{{- with $cfg.ticket.keylessAcceptedUntil }}
|
||||
# Только на первую раскатку: принимать тикеты без kid от версии
|
||||
# HRBox, которая ещё не знает про кольцо ключей.
|
||||
- name: PLAYER_TICKET_KEYLESS_UNTIL
|
||||
value: {{ . | quote }}
|
||||
{{- end }}
|
||||
@@ -139,8 +114,6 @@ spec:
|
||||
{{- end }}
|
||||
- name: PLAYER_REDIS_KEY_PREFIX
|
||||
value: {{ include "nanabushPlayer.redisKeyPrefix" . | quote }}
|
||||
# Обратный канал: единственный разрешённый адрес — внутрикластерный
|
||||
# HRBox. Так пакет курса не сможет заставить плеер сходить наружу.
|
||||
- name: PLAYER_PACKAGE_FETCH_SCHEMES
|
||||
value: {{ $cfg.backchannel.schemes | quote }}
|
||||
- name: PLAYER_PACKAGE_FETCH_ALLOWLIST
|
||||
@@ -222,8 +195,6 @@ spec:
|
||||
type: ClusterIP
|
||||
selector:
|
||||
service: {{ $name }}
|
||||
# Порт метрик наружу намеренно не публикуется: содержимое курсов приходит
|
||||
# с того же origin и не должно читать эксплуатационные метрики.
|
||||
ports:
|
||||
- name: http
|
||||
port: {{ .Values.app.nanabushPlayer.service.port }}
|
||||
|
||||
Reference in New Issue
Block a user