Test local llm to generate some content

This commit is contained in:
2026-03-22 19:29:27 +03:00
parent 4659b0089e
commit da823e7898
11 changed files with 732 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
Thank you for installing {{ .Chart.Name }}.
Your release is named {{ .Release.Name }}.
To get started with your service, you can:
1. Check the status of your deployment:
helm status {{ .Release.Name }}
2. Get the service URL:
kubectl get svc {{ include "payouts.fullname" . }}
3. Access your service logs:
kubectl logs -l app={{ include "payouts.fullname" . }}
4. To view the configuration, check the ConfigMap:
kubectl get configmap {{ include "payouts.fullname" . }}-config -o yaml
5. To update your secrets (YooKassa API keys), create a secret with:
kubectl create secret generic {{ include "payouts.fullname" . }}-secrets \\
--from-literal=yookassa-base-key='YOUR_BASE_KEY' \\
--from-literal=yookassa-base-secret='YOUR_BASE_SECRET' \\
--from-literal=yookassa-payment-key='YOUR_PAYMENT_KEY' \\
--from-literal=yookassa-payment-secret='YOUR_PAYMENT_SECRET'
6. To access your service via ingress (if enabled), check the ingress rules:
kubectl get ingress {{ include "payouts.fullname" . }}
For more information, please refer to the documentation.

View File

@@ -0,0 +1,61 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "payouts.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "payouts.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "payouts.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "payouts.labels" -}}
helm.sh/chart: {{ include "payouts.chart" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "payouts.selectorLabels" -}}
app.kubernetes.io/name: {{ include "payouts.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Service account name
*/}}
{{- define "payouts.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "payouts.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,47 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "payouts.fullname" . }}-config
labels:
{{- include "payouts.labels" . | nindent 4 }}
data:
# Server configuration
SERVER_PORT: {{ .Values.server.port | quote }}
SERVER_WRITETIMEOUT: {{ .Values.server.writeTimeout | quote }}
SERVER_READTIMEOUT: {{ .Values.server.readTimeout | quote }}
SERVER_ENABLEPPROFENDPOINTS: {{ .Values.server.enablePProfEndpoints | quote }}
# Database configuration
DATABASE_TYPE: {{ .Values.database.type | quote }}
DATABASE_CONNECTION: {{ .Values.database.connection | quote }}
DATABASE_LOGLEVEL: {{ .Values.database.logLevel | quote }}
DATABASE_TRACEREQUESTS: {{ .Values.database.traceRequests | quote }}
# Cache configuration
CACHE_TTL: {{ .Values.cache.ttl | quote }}
# Logging configuration
LOG_LEVEL: {{ .Values.log.level | quote }}
LOG_FILEPATH: {{ .Values.log.filePath | quote }}
LOG_TEXTOUTPUT: {{ .Values.log.textOutput | quote }}
LOG_STDOUTENABLED: {{ .Values.log.stdoutEnabled | quote }}
LOG_FILEENABLED: {{ .Values.log.fileEnabled | quote }}
LOG_FLUENTENABLED: {{ .Values.log.fluentEnabled | quote }}
# Metrics configuration
METRICS_ENDPOINT: {{ .Values.metrics.endpoint | quote }}
METRICS_HISTOGRAMBUCKETS: {{ .Values.metrics.histogramBuckets | quote }}
METRICS_HTTP_HISTOGRAMENABLED: {{ .Values.metrics.http.histogramEnabled | quote }}
METRICS_HTTP_BUCKETS: {{ .Values.metrics.http.buckets | quote }}
# YooKassa configuration
YOOKASSA_BASEURL: {{ .Values.yookassa.baseUrl | quote }}
YOOKASSA_TIMEOUT: {{ .Values.yookassa.timeout | quote }}
YOOKASSA_RETRY_ENABLED: {{ .Values.yookassa.retry.enabled | quote }}
YOOKASSA_RETRY_COUNT: {{ .Values.yookassa.retry.count | quote }}
YOOKASSA_RETRY_WAITTIME: {{ .Values.yookassa.retry.waitTime | quote }}
YOOKASSA_RETRY_MAXWAITTIME: {{ .Values.yookassa.retry.maxWaitTime | quote }}
YOOKASSA_TEST: {{ .Values.yookassa.test | quote }}
YOOKASSA_CHECKALLOWEDCALLBACKADDRESS: {{ .Values.yookassa.checkAllowedCallbackAddress | quote }}
YOOKASSA_ALLOWEDCALLBACKSUBNETS: {{ .Values.yookassa.allowedCallbackSubnets | quote }}
YOOKASSA_CALLBACKPROCESSTIMEOUT: {{ .Values.yookassa.callbackProcessTimeout | quote }}

View File

@@ -0,0 +1,151 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "payouts.fullname" . }}
labels:
{{- include "payouts.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "payouts.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "payouts.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "payouts.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: {{ .Values.server.port | replace ":" "" }}
protocol: TCP
livenessProbe:
httpGet:
path: /health
port: http
readinessProbe:
httpGet:
path: /ready
port: http
env:
# Server configuration
- name: SERVER_PORT
value: {{ .Values.server.port | quote }}
- name: SERVER_WRITETIMEOUT
value: {{ .Values.server.writeTimeout | quote }}
- name: SERVER_READTIMEOUT
value: {{ .Values.server.readTimeout | quote }}
- name: SERVER_ENABLEPPROFENDPOINTS
value: {{ .Values.server.enablePProfEndpoints | quote }}
# Database configuration
- name: DATABASE_TYPE
value: {{ .Values.database.type | quote }}
- name: DATABASE_CONNECTION
value: {{ .Values.database.connection | quote }}
- name: DATABASE_LOGLEVEL
value: {{ .Values.database.logLevel | quote }}
- name: DATABASE_TRACEREQUESTS
value: {{ .Values.database.traceRequests | quote }}
# Cache configuration
- name: CACHE_TTL
value: {{ .Values.cache.ttl | quote }}
# Logging configuration
- name: LOG_LEVEL
value: {{ .Values.log.level | quote }}
- name: LOG_FILEPATH
value: {{ .Values.log.filePath | quote }}
- name: LOG_TEXTOUTPUT
value: {{ .Values.log.textOutput | quote }}
- name: LOG_STDOUTENABLED
value: {{ .Values.log.stdoutEnabled | quote }}
- name: LOG_FILEENABLED
value: {{ .Values.log.fileEnabled | quote }}
- name: LOG_FLUENTENABLED
value: {{ .Values.log.fluentEnabled | quote }}
# Metrics configuration
- name: METRICS_ENDPOINT
value: {{ .Values.metrics.endpoint | quote }}
- name: METRICS_HISTOGRAMBUCKETS
value: {{ .Values.metrics.histogramBuckets | quote }}
- name: METRICS_HTTP_HISTOGRAMENABLED
value: {{ .Values.metrics.http.histogramEnabled | quote }}
- name: METRICS_HTTP_BUCKETS
value: {{ .Values.metrics.http.buckets | quote }}
# YooKassa configuration
- name: YOOKASSA_BASEURL
value: {{ .Values.yookassa.baseUrl | quote }}
- name: YOOKASSA_TIMEOUT
value: {{ .Values.yookassa.timeout | quote }}
- name: YOOKASSA_RETRY_ENABLED
value: {{ .Values.yookassa.retry.enabled | quote }}
- name: YOOKASSA_RETRY_COUNT
value: {{ .Values.yookassa.retry.count | quote }}
- name: YOOKASSA_RETRY_WAITTIME
value: {{ .Values.yookassa.retry.waitTime | quote }}
- name: YOOKASSA_RETRY_MAXWAITTIME
value: {{ .Values.yookassa.retry.maxWaitTime | quote }}
- name: YOOKASSA_TEST
value: {{ .Values.yookassa.test | quote }}
- name: YOOKASSA_CHECKALLOWEDCALLBACKADDRESS
value: {{ .Values.yookassa.checkAllowedCallbackAddress | quote }}
- name: YOOKASSA_ALLOWEDCALLBACKSUBNETS
value: {{ .Values.yookassa.allowedCallbackSubnets | quote }}
- name: YOOKASSA_CALLBACKPROCESSTIMEOUT
value: {{ .Values.yookassa.callbackProcessTimeout | quote }}
# Secrets from Kubernetes secrets
- name: YOOKASSA_APIBASEKEY
valueFrom:
secretKeyRef:
name: {{ include "payouts.fullname" . }}-secrets
key: yookassa-base-key
- name: YOOKASSA_APIBASESECRET
valueFrom:
secretKeyRef:
name: {{ include "payouts.fullname" . }}-secrets
key: yookassa-base-secret
- name: YOOKASSA_APIPAYMENTKEY
valueFrom:
secretKeyRef:
name: {{ include "payouts.fullname" . }}-secrets
key: yookassa-payment-key
- name: YOOKASSA_APIPAYMENTSECRET
valueFrom:
secretKeyRef:
name: {{ include "payouts.fullname" . }}-secrets
key: yookassa-payment-secret
resources:
{{- toYaml .Values.resources | nindent 12 }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}

View File

@@ -0,0 +1,41 @@
{{- if .Values.ingress.enabled -}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ include "payouts.fullname" . }}
labels:
{{- include "payouts.labels" . | nindent 4 }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.className }}
ingressClassName: {{ .Values.ingress.className }}
{{- end }}
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .paths }}
- path: {{ .path }}
pathType: {{ .pathType }}
backend:
service:
name: {{ include "payouts.fullname" $ }}
port:
number: {{ $.Values.service.port }}
{{- end }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,13 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ include "payouts.fullname" . }}-secrets
labels:
{{- include "payouts.labels" . | nindent 4 }}
type: Opaque
data:
# YooKassa API keys (these will be base64 encoded when applied)
yookassa-base-key: {{ .Values.secrets.yookassa.baseKey | b64enc | quote }}
yookassa-base-secret: {{ .Values.secrets.yookassa.baseSecret | b64enc | quote }}
yookassa-payment-key: {{ .Values.secrets.yookassa.paymentKey | b64enc | quote }}
yookassa-payment-secret: {{ .Values.secrets.yookassa.paymentSecret | b64enc | quote }}

View File

@@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "payouts.fullname" . }}
labels:
{{- include "payouts.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
{{- include "payouts.selectorLabels" . | nindent 4 }}