From 610882c57de1698cd14c4faaa11f88d1b3942dee Mon Sep 17 00:00:00 2001 From: thaoduc Date: Wed, 8 Oct 2025 23:29:36 +0700 Subject: [PATCH] asd --- label-studio/.helmignore | 23 + label-studio/Chart.yaml | 24 + label-studio/label-studio-1.1.tgz | Bin 0 -> 8204 bytes label-studio/templates/NOTES.txt | 35 + label-studio/templates/_helpers.tpl | 62 ++ label-studio/templates/deployment.yaml | 78 ++ label-studio/templates/hpa.yaml | 32 + label-studio/templates/httproute.yaml | 38 + label-studio/templates/ingress.yaml | 43 + label-studio/templates/service.yaml | 15 + label-studio/templates/serviceaccount.yaml | 13 + .../templates/tests/test-connection.yaml | 15 + label-studio/values.yaml | 774 ++++++++++++++++++ 13 files changed, 1152 insertions(+) create mode 100644 label-studio/.helmignore create mode 100644 label-studio/Chart.yaml create mode 100644 label-studio/label-studio-1.1.tgz create mode 100644 label-studio/templates/NOTES.txt create mode 100644 label-studio/templates/_helpers.tpl create mode 100644 label-studio/templates/deployment.yaml create mode 100644 label-studio/templates/hpa.yaml create mode 100644 label-studio/templates/httproute.yaml create mode 100644 label-studio/templates/ingress.yaml create mode 100644 label-studio/templates/service.yaml create mode 100644 label-studio/templates/serviceaccount.yaml create mode 100644 label-studio/templates/tests/test-connection.yaml create mode 100644 label-studio/values.yaml diff --git a/label-studio/.helmignore b/label-studio/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/label-studio/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/label-studio/Chart.yaml b/label-studio/Chart.yaml new file mode 100644 index 0000000..6b14e97 --- /dev/null +++ b/label-studio/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: label-studio +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 1.1 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/label-studio/label-studio-1.1.tgz b/label-studio/label-studio-1.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4ce6f9f8a04b93d7115d8631b976346b0196bcb9 GIT binary patch literal 8204 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 y+3z@%t$;)rbxn27es2YH5wZw(|29Vc + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + storageClass: "" + size: 10Gi + accessModes: + - ReadWriteOnce + annotations: {} + existingClaim: "" + resourcePolicy: "" + azure: + storageAccountName: "" + storageAccountKey: "" + storageAccountNameExistingSecret: "" + storageAccountNameExistingSecretKey: "" + storageAccountKeyExistingSecret: "" + storageAccountKeyExistingSecretKey: "" + containerName: "" + folder: "" + urlExpirationSecs: "86400" + gcs: + projectID: "" + applicationCredentialsJSON: "" + applicationCredentialsJSONExistingSecret: "" + applicationCredentialsJSONExistingSecretKey: "" + bucket: "" + folder: "" + urlExpirationSecs: "86400" + + featureFlags: { } + # File name of a shell script to load additional template environment variables from. + # This is useful when using Vault. + # "- /vault/secrets/config" + envInjectSources: [] + + ## @param app.cmdWrapper Additional commands to run prior to starting App. Useful to run wrappers before startup command + ## e.g: + ## cmdWrapper: "newrelic-admin run-program" + ## + cmdWrapper: "" + + # File names of a custom SSL root certs. These filename will be appended to existing root certs. + # "- /tmp/my_cool_root_cert" + customCaCerts: [ ] + +app: + # Update strategy - only really applicable for deployments with RWO PVs attached + # If replicas = 1, an update can get "stuck", as the previous pod remains attached to the + # PV, and the "incoming" pod can never start. Changing the strategy to "Recreate" will + # terminate the single previous pod, so that the new, incoming pod can attach to the PV + deploymentStrategy: + type: RollingUpdate + + deploymentAnnotations: { } + + replicas: 1 + + NameOverride: "" + FullnameOverride: "" + labels: { } + podLabels: { } + + ## @param app.args Override default container args (useful when using custom images) + ## + args: + - "label-studio-uwsgi" + + resources: + requests: {} + ## Example: + # memory: "600Mi" + # cpu: "250m" + limits: {} + ## Example: + # memory: "4000Mi" + # cpu: "4" + + initContainer: + resources: + requests: {} + ## Example: + # memory: 384Mi + # cpu: 250m + limits: {} + ## Example: + # memory: 512Mi + # cpu: 500m + + nginx: + args: + - "nginx" + extraEnvironmentVars: {} + extraEnvironmentSecrets: {} + resources: + requests: {} + ## Example + ## memory: 384Mi + ## cpu: 250m + limits: {} + ## Example: + ## memory: 1G + ## cpu: 1000m + livenessProbe: + enabled: true + tcpSocket: + port: 8085 + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 3 + failureThreshold: 3 + successThreshold: 1 + readinessProbe: + enabled: true + httpGet: + path: /nginx_health + port: 8085 + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 1 + successThreshold: 1 + + # extraEnvironmentVars is a list of extra environment variables to set in the + # app deployment. + extraEnvironmentVars: { } + # KUBERNETES_SERVICE_HOST: kubernetes.default.svc + + # extraEnvironmentSecrets is a list of extra environment variables to set in the + # app deployment. + extraEnvironmentSecrets: { } + # MYSQL_PASSWORD: + # secretName: mysql_secret + # secretKey: password + + # nodeSelector labels for pod assignment, formatted as a multi-line string or YAML map. + # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector + # Example: + # nodeSelector: + # beta.kubernetes.io/arch: amd64 + nodeSelector: { } + + topologySpreadConstraints: [ ] + + dnsPolicy: "ClusterFirst" + + enableServiceLinks: false + + shareProcessNamespace: false + + automountServiceAccountToken: true + + # Extra k8s annotations to attach to the app pods + # This can either be YAML or a YAML-formatted multi-line templated string map + # of the annotations to apply to the app pods + annotations: { } + + # Extra k8s labels to attach to Label Studio Enterprise. + # Provide a YAML map of k8s labels. + extraLabels: { } + + affinity: { } + + # Toleration Settings for app pods + # Provide either a multi-line string or YAML matching the Toleration array + # in a PodSpec. + tolerations: [] + + # Used to define custom readinessProbe settings + readinessProbe: + enabled: true + httpGet: + path: /health + port: 8000 + scheme: HTTP + # When a probe fails, Kubernetes will try failureThreshold times before giving up + failureThreshold: 1 + # Number of seconds after the container has started before probe initiates + initialDelaySeconds: 60 + # How often (in seconds) to perform the probe + periodSeconds: 5 + # Minimum consecutive successes for the probe to be considered successful after having failed + successThreshold: 1 + # Number of seconds after which the probe times out. + timeoutSeconds: 1 + # Used to enable a livenessProbe for the pods + livenessProbe: + enabled: true + tcpSocket: + port: 8000 + # When a probe fails, Kubernetes will try failureThreshold times before giving up + failureThreshold: 3 + # Number of seconds after the container has started before probe initiates + initialDelaySeconds: 10 + # How often (in seconds) to perform the probe + periodSeconds: 10 + # Minimum consecutive successes for the probe to be considered successful after having failed + successThreshold: 1 + # Number of seconds after which the probe times out. + timeoutSeconds: 5 + + service: + type: ClusterIP + port: 80 + targetPort: 8085 + portName: service + annotations: { } + sessionAffinity: "None" + sessionAffinityConfig: { } + + ingress: + enabled: false + # For Kubernetes >= 1.18 you should specify the ingress-controller using the field ingressClassName + # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress + className: "" + annotations: { } + ## Examples: + ## kubernetes.io/tls-acme: "true" + host: "" + # You may need to set this to '/*' in order to use this with ALB ingress controllers. + path: / + ## Extra paths to prepend to the host configuration. This is useful when working with annotation based services. + extraPaths: [] + pathType: ImplementationSpecific + ## Examples: + ## - path: /* + ## backend: + ## serviceName: ssl-redirect + ## servicePort: use-annotation + tls: [ ] + ## Examples: + ## - secretName: chart-example-tls + ## hosts: + ## - app.heartex.local + ## @param api.ingress.extraHosts An array with additional hostname(s) to be covered with the ingress record + ## e.g: + ## extraHosts: + ## - name: app.humansignal.local + ## path: / + ## + extraHosts: [ ] + + # Definition of the serviceAccount used to run Label Studio Enterprise + serviceAccount: + # Specifies whether to create a service account + create: true + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + # Extra k8s annotations for the serviceAccount definition. This can either be + # YAML or a YAML-formatted multi-line templated string map of the + # k8s annotations to apply to the serviceAccount. + annotations: {} + + # Array to add extra volumes + extraVolumes: [ ] + # Array to add extra mounts (normally used with extraVolumes) + extraVolumeMounts: [ ] + + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param app.podSecurityContext.enabled Enable pod Security Context + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param containerSecurityContext.enabled Enable container Security Context + ## @param containerSecurityContext.runAsNonRoot Avoid running as root User + ## @param containerSecurityContext.allowPrivilegeEscalation Controls whether a process can gain more privileges than its parent process + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + runAsNonRoot: true + allowPrivilegeEscalation: false + + ## RBAC configuration + ## + rbac: + ## @param rbac.create Specifies whether RBAC resources should be created + ## + create: false + ## @param app.rbac.rules Custom RBAC rules to set + ## e.g: + ## rules: + ## - apiGroups: + ## - "" + ## resources: + ## - pods + ## verbs: + ## - get + ## - list + ## + rules: [] + + contextPath: / + ## @param app.cmdWrapper Additional commands to run prior to starting App. Useful to run wrappers before startup command + ## e.g: + ## cmdWrapper: "newrelic-admin run-program" + ## + cmdWrapper: "" + + ## Minimal number of seconds preStop hook waits before LS is stopped to finish processing requests + ## Note: must be set to lower value than terminationGracePeriodSeconds so that preStop hook finishes + ## before grace period expires + preStopDelaySeconds: 15 + # Seconds LS pod needs to terminate gracefully + terminationGracePeriodSeconds: 30 + + ## Add additional init containers to the App Deployment pod + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + ## e.g: + ## initContainers: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## command: ['sh', '-c', 'echo "hello world"'] + ## + initContainers: [ ] + + ## Add additional init containers to the App Deployment pod after sql migration + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ + ## e.g: + ## postMigrationInitContainers: + ## - name: your-image-name + ## image: your-image + ## imagePullPolicy: Always + ## command: ['sh', '-c', 'echo "hello world"'] + ## + postMigrationInitContainers: [ ] + + ## Pod Disruption Budget configuration + ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb + ## @param app.pdb.create Enable/disable a Pod Disruption Budget creation + ## @param app.pdb.minAvailable Minimum number/percentage of pods that should remain scheduled + ## @param app.pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable. Defaults to `1` if both `app.pdb.minAvailable` and `app.pdb.maxUnavailable` are empty. + ## + pdb: + create: false + minAvailable: "" + maxUnavailable: "" + + +migrationJob: + enabled: false + # For Helm hooks, you can use: + # "helm.sh/hook": pre-install,pre-upgrade + # "helm.sh/hook-weight": "0" + # "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + # For ArgoCD, you can also use: + # "argocd.argoproj.io/hook": PreSync + # "argocd.argoproj.io/hook-delete-policy": BeforeHookCreation + annotations: {} + +rqworker: + enabled: true + + NameOverride: "" + FullnameOverride: "" + labels: {} + podLabels: {} + + deploymentStrategy: + type: Recreate + + deploymentAnnotations: { } + + autoscaling: + enabled: false + scalingType: deployment + + queues: + high: + replicas: 1 + args: '"high"' + resources: + requests: {} + limits: {} + scaledOptions: + minReplicaCount: 0 + maxReplicaCount: 5 + pollingInterval: 5 + cooldownPeriod: 60 + listLength: 10 + low: + replicas: 1 + args: '"low"' + resources: + requests: {} + limits: {} + scaledOptions: + minReplicaCount: 0 + maxReplicaCount: 5 + pollingInterval: 5 + cooldownPeriod: 60 + listLength: 10 + default: + replicas: 4 + args: '"default"' + resources: + requests: {} + limits: {} + scaledOptions: + minReplicaCount: 0 + maxReplicaCount: 5 + pollingInterval: 5 + cooldownPeriod: 60 + listLength: 10 + critical: + replicas: 1 + args: '"critical"' + resources: + requests: {} + limits: {} + scaledOptions: + minReplicaCount: 0 + maxReplicaCount: 5 + pollingInterval: 5 + cooldownPeriod: 60 + listLength: 10 + # Default fallback in the case if queue-specific resources are not set + resources: + requests: {} + ## memory: "256Mi" + ## cpu: "250m" + limits: {} + ## Example: + ## memory: "1500Mi" + ## cpu: "1" + + pdb: + create: false + minAvailable: "" + maxUnavailable: "" + + # extraEnvironmentVars is a list of extra environment variables to set in the + # rqworker deployment. + extraEnvironmentVars: { } + # KUBERNETES_SERVICE_HOST: kubernetes.default.svc + + # extraEnvironmentSecrets is a list of extra environment variables to set in the + # rqworker deployment. + extraEnvironmentSecrets: { } + # MYSQL_PASSWORD: + # secretName: mysql_secret + # secretKey: password + + # nodeSelector labels for pod assignment, formatted as a multi-line string or YAML map. + # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector + # Example: + # nodeSelector: + # beta.kubernetes.io/arch: amd64 + nodeSelector: { } + + topologySpreadConstraints: [ ] + + dnsPolicy: "ClusterFirst" + + enableServiceLinks: false + + shareProcessNamespace: false + + automountServiceAccountToken: true + + # Extra k8s annotations to attach to the rqworker pods + # This can either be YAML or a YAML-formatted multi-line templated string map + # of the annotations to apply to the rqworker pods + annotations: { } + + # Extra k8s labels to attach to the rqworker + # This should be a YAML map of the labels to apply to the rqworker + extraLabels: { } + + affinity: { } + + # Toleration Settings for rqworker pods + # Provide either a multi-line string or YAML matching the Toleration array + # in a PodSpec. + tolerations: [] + + # Used to define custom readinessProbe settings + readinessProbe: + enabled: false + path: /version + # When a probe fails, Kubernetes will try failureThreshold times before giving up + failureThreshold: 2 + # Number of seconds after the container has started before probe initiates + initialDelaySeconds: 60 + # How often (in seconds) to perform the probe + periodSeconds: 5 + # Minimum consecutive successes for the probe to be considered successful after having failed + successThreshold: 1 + # Number of seconds after which the probe times out. + timeoutSeconds: 3 + # Used to enable a livenessProbe for the pods + livenessProbe: + enabled: false + path: "/health" + # When a probe fails, Kubernetes will try failureThreshold times before giving up + failureThreshold: 2 + # Number of seconds after the container has started before probe initiates + initialDelaySeconds: 60 + # How often (in seconds) to perform the probe + periodSeconds: 5 + # Minimum consecutive successes for the probe to be considered successful after having failed + successThreshold: 1 + # Number of seconds after which the probe times out. + timeoutSeconds: 3 + + # Definition of the serviceAccount used to run rqworker for Label Studio Enterprise + serviceAccount: + # Specifies whether to create a service account + create: true + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + # Extra k8s annotations for the serviceAccount definition. This can either be + # YAML or a YAML-formatted multi-line templated string map of the + # k8s annotations to apply to the serviceAccount. + annotations: { } + + # Array to add extra volumes + extraVolumes: [ ] + # Array to add extra mounts (normally used with extraVolumes) + extraVolumeMounts: [ ] + + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param rqworker.podSecurityContext.enabled Enable pod Security Context + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param containerSecurityContext.enabled Enable container Security Context + ## @param containerSecurityContext.runAsNonRoot Avoid running as root User + ## @param containerSecurityContext.allowPrivilegeEscalation Controls whether a process can gain more privileges than its parent process + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + runAsNonRoot: true + allowPrivilegeEscalation: false + + ## RBAC configuration + ## + rbac: + ## @param rbac.create Specifies whether RBAC resources should be created + ## + create: false + ## @param rqworker.rbac.rules Custom RBAC rules to set + ## e.g: + ## rules: + ## - apiGroups: + ## - "" + ## resources: + ## - pods + ## verbs: + ## - get + ## - list + ## + rules: [] + + ## @param app.cmdWrapper Additional commands to run prior to starting App. Useful to run wrappers before startup command + ## e.g: + ## cmdWrapper: "newrelic-admin run-program" + ## + cmdWrapper: "" + + # Seconds rqworker pod needs to terminate gracefully + terminationGracePeriodSeconds: 30 + +# [Enterprise Only] +enterprise: + enabled: false + # This value refers to a Kubernetes secret that you have + # created that contains your enterprise license. + enterpriseLicense: + # The name of the Kubernetes secret that holds the enterprise license. The + # secret must be in the same namespace that Label Studio Enterprise is installed into. + secretName: "" + # The key within the Kubernetes secret that holds the enterprise license. + secretKey: "license" + +postgresql: + enabled: true + clusterDomain: cluster.local + architecture: standalone + image: + repository: bitnamilegacy/postgresql + tag: 13.18.0 + auth: + username: "labelstudio" + password: "labelstudio" + database: "labelstudio" + volumePermissions: + image: + repository: bitnamilegacy/os-shell + metrics: + image: + repository: bitnamilegacy/postgres-exporter + global: + security: + allowInsecureImages: true + +redis: + enabled: false + clusterDomain: cluster.local + architecture: standalone + master: + enableServiceLinks: false + auth: + enabled: false + image: + repository: bitnamilegacy/redis + sentinel: + image: + repository: bitnamilegacy/redis-sentinel + kubectl: + image: + repository: bitnamilegacy/kubectl + sysctl: + image: + repository: bitnamilegacy/os-shell + metrics: + image: + repository: bitnamilegacy/redis-exporter + volumePermissions: + image: + repository: bitnamilegacy/os-shell + global: + security: + allowInsecureImages: true + +ci: false +clusterDomain: cluster.local + +checkConfig: + skipEnvValues: false + +cronjob: + enabled: false + jobs: {} + annotations: {} + NameOverride: "" + FullnameOverride: "" + +metrics: + enabled: false + serviceMonitor: + enabled: false + annotations: {} + labels: {} + jobLabel: "" + honorLabels: false + interval: "" + scrapeTimeout: "" + metricRelabelings: [] + relabelings: [] + selector: {} + + uwsgiExporter: + enabled: false + image: + registry: "docker.io" + repository: "timonwong/uwsgi-exporter" + tag: "v1.3.0" + pullPolicy: "Always" + pullSecrets: [ ] + + containerSecurityContext: + enabled: true + allowPrivilegeEscalation: false + readOnlyRootFilesystem: false + runAsUser: 1001 + + resources: + requests: { } + ## Example: + # cpu: "200m" + # memory: "64Mi" + limits: { } + # cpu: "20m" + # memory: "128Mi" + + livenessProbe: + enabled: false + httpGet: + path: "/-/healthy" + port: "uwsgimetrics" + initialDelaySeconds: 2 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + successThreshold: 1 + + readinessProbe: + enabled: false + httpGet: + path: "/metrics" + port: "uwsgimetrics" + initialDelaySeconds: 2 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + successThreshold: 1