feat: add metrics chart and update freeleaps-service-hub Jenkinsfile
This commit is contained in:
parent
c48d515ab4
commit
bb1da229fb
@ -4,7 +4,7 @@ executeFreeleapsPipeline {
|
||||
serviceName = 'freeleaps'
|
||||
environmentSlug = 'alpha'
|
||||
// Ensure this branch exists in the freeleaps-service-hub repository
|
||||
serviceGitBranch = 'dev'
|
||||
serviceGitBranch = 'freeleaps/icecheng/metrics'
|
||||
serviceGitRepo = "https://gitea.freeleaps.mathmast.com/freeleaps/freeleaps-service-hub.git"
|
||||
serviceGitRepoType = 'monorepo'
|
||||
serviceGitCredentialsId = 'freeleaps-ops-git-credentials'
|
||||
@ -136,6 +136,27 @@ executeFreeleapsPipeline {
|
||||
imageReleaseArchitectures: ['linux/amd64', 'linux/arm64/v8'],
|
||||
registryCredentialsId: 'freeleaps-devops-docker-hub-credentials',
|
||||
semanticReleaseEnabled: true
|
||||
],
|
||||
[
|
||||
name: 'metrics',
|
||||
root: 'apps/metrcis',
|
||||
language: 'python',
|
||||
dependenciesManager: 'pip',
|
||||
requirementsFile: 'requirements.txt',
|
||||
buildCacheEnabled: true,
|
||||
buildAgentImage: 'python:3.12-slim',
|
||||
buildArtifacts: ['.'],
|
||||
lintEnabled: false,
|
||||
sastEnabled: false,
|
||||
imageRegistry: 'docker.io',
|
||||
imageRepository: 'freeleaps',
|
||||
imageName: 'devops',
|
||||
imageBuilder: 'dind',
|
||||
dockerfilePath: 'Dockerfile',
|
||||
imageBuildRoot: '.',
|
||||
imageReleaseArchitectures: ['linux/amd64', 'linux/arm64/v8'],
|
||||
registryCredentialsId: 'freeleaps-devops-docker-hub-credentials',
|
||||
semanticReleaseEnabled: true
|
||||
]
|
||||
]
|
||||
}
|
||||
6
freeleaps/helm-pkg/metrics/Chart.yaml
Normal file
6
freeleaps/helm-pkg/metrics/Chart.yaml
Normal file
@ -0,0 +1,6 @@
|
||||
apiVersion: v2
|
||||
name: metrics
|
||||
description: A Helm Chart of metrics, which part of Freeleaps Platform, powered by Freeleaps.
|
||||
type: application
|
||||
version: 0.0.1
|
||||
appVersion: "0.0.1"
|
||||
97
freeleaps/helm-pkg/metrics/templates/metrics/deployment.yaml
Normal file
97
freeleaps/helm-pkg/metrics/templates/metrics/deployment.yaml
Normal file
@ -0,0 +1,97 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
app.kubernetes.io/name: "metrics"
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
name: "metrics"
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: "metrics"
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
replicas: {{ .Values.metrics.replicas }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
app.kubernetes.io/name: "metrics"
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
annotations:
|
||||
app.kubernetes.io/config-checksum: {{ include (print $.Template.BasePath "/metrics/metrics-config.yaml") . | sha256sum }}
|
||||
spec:
|
||||
containers:
|
||||
- name: "metrics"
|
||||
image: "{{ coalesce .Values.metrics.image.registry .Values.global.registry "docker.io"}}/{{ coalesce .Values.metrics.image.repository .Values.global.repository }}/{{ .Values.metrics.image.name }}:{{ .Values.metrics.image.tag | default "latest" }}"
|
||||
imagePullPolicy: {{ .Values.metrics.image.imagePullPolicy | default "IfNotPresent" }}
|
||||
ports:
|
||||
{{- range $port := .Values.metrics.ports }}
|
||||
- containerPort: {{ $port.containerPort }}
|
||||
name: {{ $port.name }}
|
||||
protocol: {{ $port.protocol }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.resources }}
|
||||
resources:
|
||||
{{- toYaml .Values.metrics.resources | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.probes }}
|
||||
{{- if and (.Values.metrics.probes.liveness) (eq .Values.metrics.probes.liveness.type "httpGet") }}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: {{ .Values.metrics.probes.liveness.config.path }}
|
||||
port: {{ .Values.metrics.probes.liveness.config.port }}
|
||||
{{- if .Values.metrics.probes.liveness.config.initialDelaySeconds }}
|
||||
initialDelaySeconds: {{ .Values.metrics.probes.liveness.config.initialDelaySeconds }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.probes.liveness.config.periodSeconds }}
|
||||
periodSeconds: {{ .Values.metrics.probes.liveness.config.periodSeconds }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.probes.liveness.config.timeoutSeconds }}
|
||||
timeoutSeconds: {{ .Values.metrics.probes.liveness.config.timeoutSeconds }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.probes.liveness.config.successThreshold }}
|
||||
successThreshold: {{ .Values.metrics.probes.liveness.config.successThreshold }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.probes.liveness.config.failureThreshold }}
|
||||
failureThreshold: {{ .Values.metrics.probes.liveness.config.failureThreshold }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.probes.liveness.config.terminationGracePeriodSeconds }}
|
||||
terminationGracePeriodSeconds: {{ .Values.metrics.probes.liveness.config.terminationGracePeriodSeconds }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if and (.Values.metrics.probes.readiness) (eq .Values.metrics.probes.readiness.type "httpGet") }}
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: {{ .Values.metrics.probes.readiness.config.path }}
|
||||
port: {{ .Values.metrics.probes.readiness.config.port }}
|
||||
{{- if .Values.metrics.probes.readiness.config.initialDelaySeconds }}
|
||||
initialDelaySeconds: {{ .Values.metrics.probes.readiness.config.initialDelaySeconds }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.probes.readiness.config.periodSeconds }}
|
||||
periodSeconds: {{ .Values.metrics.probes.readiness.config.periodSeconds }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.probes.readiness.config.timeoutSeconds }}
|
||||
timeoutSeconds: {{ .Values.metrics.probes.readiness.config.timeoutSeconds }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.probes.readiness.config.successThreshold }}
|
||||
successThreshold: {{ .Values.metrics.probes.readiness.config.successThreshold }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.probes.readiness.config.failureThreshold }}
|
||||
failureThreshold: {{ .Values.metrics.probes.readiness.config.failureThreshold }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end}}
|
||||
env:
|
||||
{{- range $key, $value := .Values.metrics.configs }}
|
||||
- name: {{ $key | snakecase | upper }}
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: metrics-config
|
||||
key: {{ $key | snakecase | upper }}
|
||||
{{- end }}
|
||||
@ -0,0 +1,13 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: metrics-config
|
||||
namespace: {{ .Release.Namespace }}
|
||||
type: Opaque
|
||||
data:
|
||||
STARROCKS_HOST: {{ .Values.metrics.configs.starrocksHost | b64enc | quote }}
|
||||
STARROCKS_PORT: {{ .Values.metrics.configs.starrocksPort | toString | b64enc | quote }}
|
||||
STARROCKS_USER: {{ .Values.metrics.configs.starrocksUser | b64enc | quote }}
|
||||
STARROCKS_PASSWORD: {{ .Values.metrics.configs.starrocksPassword | b64enc | quote }}
|
||||
STARROCKS_DATABASE: {{ .Values.metrics.configs.starrocksDatabase | b64enc | quote }}
|
||||
PROMETHEUS_ENDPOINT: {{ .Values.metrics.configs.prometheusEndpoint | b64enc | quote }}
|
||||
26
freeleaps/helm-pkg/metrics/templates/metrics/service.yaml
Normal file
26
freeleaps/helm-pkg/metrics/templates/metrics/service.yaml
Normal file
@ -0,0 +1,26 @@
|
||||
{{ $namespace := .Release.Namespace }}
|
||||
{{ $appVersion := .Chart.AppVersion | quote }}
|
||||
{{ $releaseService := .Release.Service }}
|
||||
{{ $releaseName := .Release.Name }}
|
||||
{{- range $service := .Values.metrics.services }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ $service.name }}
|
||||
namespace: {{ $namespace }}
|
||||
labels:
|
||||
app.kubernetes.io/version: {{ $appVersion }}
|
||||
app.kubernetes.io/name: {{ $service.name | quote }}
|
||||
app.kubernetes.io/managed-by: {{ $releaseService }}
|
||||
app.kubernetes.io/instance: {{ $releaseName }}
|
||||
spec:
|
||||
ports:
|
||||
- port: {{ $service.port }}
|
||||
targetPort: {{ $service.targetPort }}
|
||||
selector:
|
||||
app.kubernetes.io/version: {{ $appVersion }}
|
||||
app.kubernetes.io/name: "metrics"
|
||||
app.kubernetes.io/managed-by: {{ $releaseService }}
|
||||
app.kubernetes.io/instance: {{ $releaseName }}
|
||||
{{- end }}
|
||||
32
freeleaps/helm-pkg/metrics/templates/metrics/vpa.yaml
Normal file
32
freeleaps/helm-pkg/metrics/templates/metrics/vpa.yaml
Normal file
@ -0,0 +1,32 @@
|
||||
{{- if .Values.metrics.vpa }}
|
||||
---
|
||||
apiVersion: autoscaling.k8s.io/v1
|
||||
kind: VerticalPodAutoscaler
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-vpa
|
||||
namespace: {{ .Release.Namespace }}
|
||||
spec:
|
||||
targetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: metrics
|
||||
resourcePolicy:
|
||||
containerPolicies:
|
||||
- containerName: '*'
|
||||
{{- if .Values.metrics.vpa.minAllowed.enabled }}
|
||||
minAllowed:
|
||||
cpu: {{ .Values.metrics.vpa.minAllowed.cpu }}
|
||||
memory: {{ .Values.metrics.vpa.minAllowed.memory }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.vpa.maxAllowed.enabled }}
|
||||
maxAllowed:
|
||||
cpu: {{ .Values.metrics.vpa.maxAllowed.cpu }}
|
||||
memory: {{ .Values.metrics.vpa.maxAllowed.memory }}
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.vpa.controlledResources }}
|
||||
controlledResources:
|
||||
{{- range .Values.metrics.vpa.controlledResources }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
71
freeleaps/helm-pkg/metrics/values.alpha.yaml
Normal file
71
freeleaps/helm-pkg/metrics/values.alpha.yaml
Normal file
@ -0,0 +1,71 @@
|
||||
global:
|
||||
registry: docker.io
|
||||
repository: freeleaps
|
||||
nodeSelector: {}
|
||||
logIngest:
|
||||
enabled: false
|
||||
metrics:
|
||||
replicas: 1
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: null
|
||||
name: metrics
|
||||
tag: "1.0.0"
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8009
|
||||
protocol: TCP
|
||||
resources:
|
||||
requests:
|
||||
cpu: '0.1'
|
||||
memory: 64Mi
|
||||
limits:
|
||||
cpu: '0.2'
|
||||
memory: 128Mi
|
||||
probes:
|
||||
liveness:
|
||||
type: httpGet
|
||||
config:
|
||||
path: /api/_/livez
|
||||
port: 8009
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 10
|
||||
successThreshold: 1
|
||||
failureThreshold: 5
|
||||
terminationGracePeriodSeconds: 30
|
||||
readiness:
|
||||
type: httpGet
|
||||
config:
|
||||
path: /api/_/readyz
|
||||
port: 8009
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 10
|
||||
successThreshold: 1
|
||||
failureThreshold: 5
|
||||
services:
|
||||
- name: metrics-service
|
||||
type: ClusterIP
|
||||
port: 8009
|
||||
targetPort: 8009
|
||||
configs:
|
||||
starrocksHost: UTC
|
||||
starrocksPort: 8009
|
||||
starrocksUser: user
|
||||
starrocksPassword: password
|
||||
starrocksDatabase: metrics
|
||||
prometheusEndpoint: http://prometheus-gateway.freeleaps-monitoring-system:9090
|
||||
vpa:
|
||||
minAllowed:
|
||||
enabled: false
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
||||
maxAllowed:
|
||||
enabled: true
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
controlledResources:
|
||||
- cpu
|
||||
- memory
|
||||
95
freeleaps/helm-pkg/metrics/values.prod.yaml
Normal file
95
freeleaps/helm-pkg/metrics/values.prod.yaml
Normal file
@ -0,0 +1,95 @@
|
||||
global:
|
||||
registry: docker.io
|
||||
repository: freeleaps
|
||||
nodeSelector: {}
|
||||
logIngest:
|
||||
enabled: false
|
||||
devops:
|
||||
replicas: 1
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: null
|
||||
name: devops
|
||||
tag: snapshot-046f9ff
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8014
|
||||
protocol: TCP
|
||||
resources:
|
||||
requests:
|
||||
cpu: '0.1'
|
||||
memory: 64Mi
|
||||
limits:
|
||||
cpu: '0.2'
|
||||
memory: 128Mi
|
||||
probes: {}
|
||||
services:
|
||||
- name: devops-service
|
||||
type: ClusterIP
|
||||
port: 8014
|
||||
targetPort: 8014
|
||||
serviceMonitor:
|
||||
enabled: false
|
||||
labels:
|
||||
release: kube-prometheus-stack
|
||||
namespace: freeleaps-monitoring-system
|
||||
interval: 30s
|
||||
scrapeTimeout: ''
|
||||
ingresses: {}
|
||||
configs:
|
||||
tz: UTC
|
||||
appName: devops
|
||||
jwtSecretKey: ''
|
||||
jwtAlgorithm: HS256
|
||||
accessTokenExpireMinutes: '3600'
|
||||
refreshTokenExpireDays: '1'
|
||||
appMongodbName: freeleaps2
|
||||
appMongodbPort: '27017'
|
||||
metricsEnabled: 'false'
|
||||
probesEnabled: 'true'
|
||||
baseGiteaUrl: https://gitea.freeleaps.mathmast.com
|
||||
baseReconcileUrl: http://freeleaps-prod-devops-reconciler-freeleaps-devops-reconciler.freeleaps-prod.svc.freeleaps.cluster:5000
|
||||
baseLokiUrl: http://loki-gateway.freeleaps-logging-system
|
||||
logBasePath: /app/log/devops
|
||||
logRetention: 30 days
|
||||
logRotation: 00:00
|
||||
logBackupFiles: '5'
|
||||
logRotationBytes: '10485760'
|
||||
mockMode: 'false'
|
||||
mockResponseDelay: '1000'
|
||||
rabbitmqHost: freeleaps-prod-rabbitmq-headless.freeleaps-prod.svc.freeleaps.cluster
|
||||
rabbitmqPort: 5672
|
||||
rabbitmqUsername: user
|
||||
rabbitmqVirtualHost: /
|
||||
rabbitmqOutputQueueName: freeleaps.devops.reconciler.output
|
||||
rabbitmqInputQueueName: freeleaps.devops.reconciler.input
|
||||
secrets:
|
||||
secretStoreRef:
|
||||
kind: FreeleapsSecretStore
|
||||
name: freeleaps-main-secret-store
|
||||
target:
|
||||
name: freeleaps-devops-prod-secrets
|
||||
creationPolicy: Owner
|
||||
refreshInterval: 30s
|
||||
data:
|
||||
- key: appMongodbUri
|
||||
remoteRef:
|
||||
key: freeleaps-prod-mongodb-uri
|
||||
type: Secret
|
||||
- key: rabbitmqPassword
|
||||
remoteRef:
|
||||
key: freeleaps-prod-rabbitmq-password
|
||||
type: Secret
|
||||
vpa:
|
||||
minAllowed:
|
||||
enabled: false
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
||||
maxAllowed:
|
||||
enabled: true
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
controlledResources:
|
||||
- cpu
|
||||
- memory
|
||||
71
freeleaps/helm-pkg/metrics/values.yaml
Normal file
71
freeleaps/helm-pkg/metrics/values.yaml
Normal file
@ -0,0 +1,71 @@
|
||||
global:
|
||||
registry: docker.io
|
||||
repository: freeleaps
|
||||
nodeSelector: {}
|
||||
logIngest:
|
||||
enabled: false
|
||||
metrics:
|
||||
replicas: 1
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: null
|
||||
name: metrics
|
||||
tag: "1.0.0"
|
||||
imagePullPolicy: IfNotPresent
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8009
|
||||
protocol: TCP
|
||||
resources:
|
||||
requests:
|
||||
cpu: '0.1'
|
||||
memory: 64Mi
|
||||
limits:
|
||||
cpu: '0.2'
|
||||
memory: 128Mi
|
||||
probes:
|
||||
liveness:
|
||||
type: httpGet
|
||||
config:
|
||||
path: /api/_/livez
|
||||
port: 8009
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 10
|
||||
successThreshold: 1
|
||||
failureThreshold: 5
|
||||
terminationGracePeriodSeconds: 30
|
||||
readiness:
|
||||
type: httpGet
|
||||
config:
|
||||
path: /api/_/readyz
|
||||
port: 8009
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 10
|
||||
successThreshold: 1
|
||||
failureThreshold: 5
|
||||
services:
|
||||
- name: metrics-service
|
||||
type: ClusterIP
|
||||
port: 8009
|
||||
targetPort: 8009
|
||||
configs:
|
||||
starrocksHost: ""
|
||||
starrocksPort: 8009
|
||||
starrocksUser: ""
|
||||
starrocksPassword: ""
|
||||
starrocksDatabase: ""
|
||||
prometheusEndpoint: ""
|
||||
vpa:
|
||||
minAllowed:
|
||||
enabled: false
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
||||
maxAllowed:
|
||||
enabled: true
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
controlledResources:
|
||||
- cpu
|
||||
- memory
|
||||
@ -135,6 +135,27 @@ executeFreeleapsPipeline {
|
||||
imageReleaseArchitectures: ['linux/amd64', 'linux/arm64/v8'],
|
||||
registryCredentialsId: 'freeleaps-devops-docker-hub-credentials',
|
||||
semanticReleaseEnabled: true
|
||||
],
|
||||
[
|
||||
name: 'metrics',
|
||||
root: 'apps/metrcis',
|
||||
language: 'python',
|
||||
dependenciesManager: 'pip',
|
||||
requirementsFile: 'requirements.txt',
|
||||
buildCacheEnabled: true,
|
||||
buildAgentImage: 'python:3.12-slim',
|
||||
buildArtifacts: ['.'],
|
||||
lintEnabled: false,
|
||||
sastEnabled: false,
|
||||
imageRegistry: 'docker.io',
|
||||
imageRepository: 'freeleaps',
|
||||
imageName: 'devops',
|
||||
imageBuilder: 'dind',
|
||||
dockerfilePath: 'Dockerfile',
|
||||
imageBuildRoot: '.',
|
||||
imageReleaseArchitectures: ['linux/amd64', 'linux/arm64/v8'],
|
||||
registryCredentialsId: 'freeleaps-devops-docker-hub-credentials',
|
||||
semanticReleaseEnabled: true
|
||||
]
|
||||
]
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user