feat(ql3): establish 3.0 incubation baseline

This commit is contained in:
whyour
2026-08-12 00:25:26 +08:00
parent 4bf92dcfeb
commit c699c32461
2817 changed files with 779642 additions and 653 deletions
@@ -0,0 +1,98 @@
apiVersion: batch/v1
kind: Job
metadata:
name: ql3-prompt-output-gc
namespace: qinglong3-system
labels:
app.kubernetes.io/name: ql3-prompt-output-gc
app.kubernetes.io/component: ai-maintenance
app.kubernetes.io/part-of: qinglong3
qinglong.io/execution-model: caller-driven
spec:
backoffLimit: 0
activeDeadlineSeconds: 300
ttlSecondsAfterFinished: 600
template:
metadata:
labels:
app.kubernetes.io/name: ql3-prompt-output-gc
app.kubernetes.io/component: ai-maintenance
app.kubernetes.io/part-of: qinglong3
qinglong.io/execution-model: caller-driven
spec:
serviceAccountName: ql3-prompt-output-gc
automountServiceAccountToken: false
enableServiceLinks: false
restartPolicy: Never
securityContext:
runAsNonRoot: true
runAsUser: 10001
runAsGroup: 10001
fsGroup: 10001
seccompProfile:
type: RuntimeDefault
containers:
- name: collector
image: qinglong3-cluster-admin:3.0.0-alpha.0
imagePullPolicy: IfNotPresent
command:
- node
- /opt/qinglong/node_modules/@qinglong/cluster-admin/dist/prompt-output/retention/promptOutputGcCli.js
args:
- run
- --policy-file
- /var/run/qinglong3/prompt-output-retention/retention-policies.json
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- ALL
env:
- name: QL3_PROMPT_OUTPUT_GC_LIMIT
value: '32'
- name: QL3_POSTGRES_TLS_MODE
value: verify-full
- name: QL3_POSTGRES_TLS_CA_FILE
value: /var/run/secrets/qinglong3/postgres-ai-maintenance/ca.crt
- name: QL3_POSTGRES_APPLICATION_NAME
value: qinglong3-prompt-output-gc
- name: QL3_POSTGRES_AI_MAINTENANCE_URL
valueFrom:
secretKeyRef:
name: ql3-cluster-ai-maintenance
key: postgres-ai-maintenance-url
- name: QL3_POSTGRES_TLS_SERVERNAME
valueFrom:
secretKeyRef:
name: ql3-cluster-ai-maintenance
key: postgres-tls-servername
resources:
requests:
cpu: 25m
memory: 48Mi
limits:
cpu: 250m
memory: 128Mi
volumeMounts:
- name: policies
mountPath: /var/run/qinglong3/prompt-output-retention
readOnly: true
- name: postgres-ca
mountPath: /var/run/secrets/qinglong3/postgres-ai-maintenance
readOnly: true
volumes:
- name: policies
configMap:
name: ql3-prompt-output-retention-policies
defaultMode: 292
items:
- key: retention-policies.json
path: retention-policies.json
- name: postgres-ca
secret:
secretName: ql3-cluster-ai-maintenance
defaultMode: 292
items:
- key: postgres-ca.crt
path: ca.crt
@@ -0,0 +1,7 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- service-account.yaml
- job.yaml
- network-policy.yaml
@@ -0,0 +1,31 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: ql3-prompt-output-gc
namespace: qinglong3-system
labels:
app.kubernetes.io/name: ql3-prompt-output-gc
app.kubernetes.io/component: ai-maintenance
app.kubernetes.io/part-of: qinglong3
spec:
podSelector:
matchLabels:
app.kubernetes.io/name: ql3-prompt-output-gc
app.kubernetes.io/component: ai-maintenance
policyTypes:
- Ingress
- Egress
ingress: []
egress:
- to:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: kube-system
podSelector:
matchLabels:
k8s-app: kube-dns
ports:
- protocol: UDP
port: 53
- protocol: TCP
port: 53
@@ -0,0 +1,10 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: ql3-prompt-output-gc
namespace: qinglong3-system
labels:
app.kubernetes.io/name: ql3-prompt-output-gc
app.kubernetes.io/component: ai-maintenance
app.kubernetes.io/part-of: qinglong3
automountServiceAccountToken: false
@@ -0,0 +1,33 @@
- op: replace
path: /spec/template/spec/containers/0/env
value:
- name: QL3_PROMPT_OUTPUT_GC_LIMIT
value: '32'
- name: QL3_POSTGRES_TLS_MODE
value: verify-full
- name: QL3_POSTGRES_TLS_CA_FILE
value: /var/run/secrets/qinglong3/postgres-ai-maintenance/ca.crt
- name: QL3_POSTGRES_AI_MAINTENANCE_HOST
value: ql3-postgres-rw.qinglong3-system.svc
- name: QL3_POSTGRES_AI_MAINTENANCE_PORT
value: '5432'
- name: QL3_POSTGRES_AI_MAINTENANCE_DATABASE
value: qinglong
- name: QL3_POSTGRES_AI_MAINTENANCE_USER
valueFrom:
secretKeyRef:
name: ql3-postgres-ai-maintenance-auth
key: username
- name: QL3_POSTGRES_AI_MAINTENANCE_PASSWORD
valueFrom:
secretKeyRef:
name: ql3-postgres-ai-maintenance-auth
key: password
- name: QL3_POSTGRES_TLS_SERVERNAME
value: ql3-postgres-rw.qinglong3-system.svc
- op: replace
path: /spec/template/spec/volumes/1/secret/secretName
value: ql3-postgres-ca
- op: replace
path: /spec/template/spec/volumes/1/secret/items/0/key
value: ca.crt
@@ -0,0 +1,24 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../base
patches:
- path: job-patch.yaml
target:
group: batch
version: v1
kind: Job
name: ql3-prompt-output-gc
- path: network-policy-patch.yaml
target:
group: networking.k8s.io
version: v1
kind: NetworkPolicy
name: ql3-prompt-output-gc
images:
- name: qinglong3-cluster-admin
newName: registry.example.com/qinglong/qinglong3-cluster-admin
digest: sha256:0000000000000000000000000000000000000000000000000000000000000000
@@ -0,0 +1,26 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: ql3-prompt-output-gc
namespace: qinglong3-system
spec:
egress:
- to:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: kube-system
podSelector:
matchLabels:
k8s-app: kube-dns
ports:
- protocol: UDP
port: 53
- protocol: TCP
port: 53
- to:
- podSelector:
matchLabels:
cnpg.io/cluster: ql3-postgres
ports:
- protocol: TCP
port: 5432
@@ -0,0 +1,9 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: ql3-prompt-output-retention-policies
namespace: qinglong3-system
immutable: true
data:
retention-policies.json: |
{"schemaVersion":1,"policies":[{"projectId":"replace-with-project-id","policy":{"revision":"default-v1","retentionMs":86400000},"policyDigest":"ff00e296187bf31f0ff82c4f68e422c101416443e651cf7d624833d59f5b583c"}]}