diff --git a/README.md b/README.md index a1f007e..10f8ae7 100644 --- a/README.md +++ b/README.md @@ -1121,21 +1121,22 @@ To comply with the Gitea helm chart definition of the digest parameter, a "custo ### deployment -| Name | Description | Value | -| ------------------------------------------ | ---------------------------------------------------------------- | ------ | -| `resources` | Kubernetes resources | `{}` | -| `schedulerName` | Use an alternate scheduler, e.g. "stork" | `""` | -| `tolerations` | Tolerations for the deployment | `[]` | -| `topologySpreadConstraints` | TopologySpreadConstraints for the deployment | `[]` | -| `priorityClassName` | priorityClassName for the deployment | `""` | -| `deployment.enabled` | Enable the deployment of Gitea. | `true` | -| `deployment.annotations` | Annotations for the Gitea deployment to be created | `{}` | -| `deployment.labels` | Labels for the deployment | `{}` | -| `deployment.affinity` | Affinity for the deployment. | `{}` | -| `deployment.dnsConfig` | dnsConfig of the Gitea deployment. | `{}` | -| `deployment.gitea.env` | Additional environment variables to pass to the Gitea container. | `[]` | -| `deployment.nodeSelector` | NodeSelector for the deployment | `{}` | -| `deployment.terminationGracePeriodSeconds` | How long to wait until forcefully kill the pod | `60` | +| Name | Description | Value | +| ------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------ | +| `schedulerName` | Use an alternate scheduler, e.g. "stork" | `""` | +| `tolerations` | Tolerations for the deployment | `[]` | +| `topologySpreadConstraints` | TopologySpreadConstraints for the deployment | `[]` | +| `deployment.enabled` | Enable the deployment of Gitea. | `true` | +| `deployment.annotations` | Annotations for the Gitea deployment to be created | `{}` | +| `deployment.labels` | Labels for the deployment | `{}` | +| `deployment.affinity` | Affinity for the deployment. | `{}` | +| `deployment.dnsConfig` | dnsConfig of the Gitea deployment. | `{}` | +| `deployment.gitea.env` | Additional environment variables to pass to the Gitea container. | `[]` | +| `deployment.gitea.resources` | Compute Resources required by Gitea container. Cannot be updated. | `nil` | +| `deployment.nodeSelector` | NodeSelector for the deployment | `{}` | +| `deployment.priorityClassName` | priorityClassName for the deployment | `""` | +| `deployment.resources` | Resources is the total amount of CPU and Memory resources required by all containers in the pod. | `{}` | +| `deployment.terminationGracePeriodSeconds` | How long to wait until forcefully kill the pod | `60` | ### Secret diff --git a/templates/gitea/deployment.yaml b/templates/gitea/deployment.yaml index 6926159..e6288de 100644 --- a/templates/gitea/deployment.yaml +++ b/templates/gitea/deployment.yaml @@ -72,8 +72,8 @@ spec: {{- if (or .Values.serviceAccount.create .Values.serviceAccount.name) }} serviceAccountName: {{ include "gitea.serviceAccountName" . }} {{- end }} - {{- if .Values.priorityClassName }} - priorityClassName: "{{ .Values.priorityClassName }}" + {{- if .Values.deployment.priorityClassName }} + priorityClassName: "{{ .Values.deployment.priorityClassName }}" {{- end }} {{- if $hostUsers }} hostUsers: {{ $hostUsers }} @@ -354,13 +354,15 @@ spec: value: /data - name: GITEA_TEMP value: /tmp/gitea - {{- if and (hasKey .Values.resources "limits") (hasKey .Values.resources.limits "cpu") }} + {{- with .Values.deployment.gitea.resources }} + {{- if and (hasKey . "limits") (hasKey (.limits | default dict) "cpu") }} - name: GOMAXPROCS valueFrom: resourceFieldRef: divisor: "1" resource: limits.cpu {{- end }} + {{- end }} - name: TMPDIR value: /tmp/gitea {{- if .Values.image.rootless }} @@ -402,7 +404,7 @@ spec: {{- include "gitea.deployment.probe" .Values.gitea.startupProbe | nindent 12 }} {{- end }} resources: - {{- toYaml .Values.resources | nindent 12 }} + {{- toYaml (.Values.deployment.gitea.resources | default dict) | nindent 12 }} {{- if $runtimeContainerSecurityContext }} securityContext: {{- $runtimeContainerSecurityContext | nindent 12 }} @@ -442,6 +444,10 @@ spec: {{- if .Values.deployment.dnsConfig }} dnsConfig: {{- toYaml .Values.deployment.dnsConfig | nindent 8 }} + {{- end }} + {{- with .Values.deployment.resources }} + resources: + {{- toYaml . | nindent 8 }} {{- end }} volumes: - name: init diff --git a/templates/gitea/deprecation.yaml b/templates/gitea/deprecation.yaml index 6fcc647..92b82e6 100644 --- a/templates/gitea/deprecation.yaml +++ b/templates/gitea/deprecation.yaml @@ -59,4 +59,14 @@ {{- if .Values.nodeSelector -}} {{- fail "`nodeSelector` does no longer exist. Please refer to the changelog and configure `deployment.nodeSelector` instead." -}} {{- end -}} + + {{/* PRIORITY CLASS NAME */}} + {{- if .Values.priorityClassName -}} + {{- fail "`priorityClassName` does no longer exist. Please refer to the changelog and configure `deployment.priorityClassName` instead." -}} + {{- end -}} + + {{/* RESOURCES */}} + {{- if .Values.resources -}} + {{- fail "`resources` does no longer exist. Please refer to the changelog and configure `deployment.gitea.resources` instead." -}} + {{- end -}} {{- end -}} diff --git a/unittests/helm/deployment/basic.yaml b/unittests/helm/deployment/basic.yaml index 6ceed48..1f9a3de 100644 --- a/unittests/helm/deployment/basic.yaml +++ b/unittests/helm/deployment/basic.yaml @@ -126,6 +126,19 @@ tests: options: - name: ndots value: "2" + - it: priorityClassName is undefined + template: templates/gitea/deployment.yaml + asserts: + - notExists: + path: spec.template.spec.priorityClassName + - it: priorityClassName is defined + template: templates/gitea/deployment.yaml + set: + deployment.priorityClassName: high-priority + asserts: + - equal: + path: spec.template.spec.priorityClassName + value: high-priority - it: "injects TMP_EXISTING_ENVS_FILE as environment variable to 'init-app-ini' init container" template: templates/gitea/deployment.yaml @@ -173,7 +186,7 @@ tests: - it: CPU resources are defined as well as GOMAXPROCS template: templates/gitea/deployment.yaml set: - resources: + deployment.gitea.resources: limits: cpu: 200ms memory: 200Mi @@ -198,6 +211,45 @@ tests: requests: cpu: 100ms memory: 100Mi + - it: container resources default to an empty map and GOMAXPROCS is omitted + template: templates/gitea/deployment.yaml + asserts: + - equal: + path: spec.template.spec.containers[0].resources + value: {} + - notContains: + path: spec.template.spec.containers[0].env + content: + name: GOMAXPROCS + valueFrom: + resourceFieldRef: + divisor: "1" + resource: limits.cpu + - it: pod level resources are undefined + template: templates/gitea/deployment.yaml + asserts: + - notExists: + path: spec.template.spec.resources + - it: pod level resources are defined + template: templates/gitea/deployment.yaml + set: + deployment.resources: + limits: + cpu: 500m + memory: 512Mi + requests: + cpu: 250m + memory: 256Mi + asserts: + - equal: + path: spec.template.spec.resources + value: + limits: + cpu: 500m + memory: 512Mi + requests: + cpu: 250m + memory: 256Mi - it: Init containers have correct volumeMount path template: templates/gitea/deployment.yaml set: diff --git a/unittests/helm/deployment/deprecations.yaml b/unittests/helm/deployment/deprecations.yaml index dedcb4d..187cd51 100644 --- a/unittests/helm/deployment/deprecations.yaml +++ b/unittests/helm/deployment/deprecations.yaml @@ -46,6 +46,20 @@ tests: asserts: - failedTemplate: errorMessage: "`nodeSelector` does no longer exist. Please refer to the changelog and configure `deployment.nodeSelector` instead." + - it: fails when the removed `priorityClassName` value is set + set: + priorityClassName: high-priority + asserts: + - failedTemplate: + errorMessage: "`priorityClassName` does no longer exist. Please refer to the changelog and configure `deployment.priorityClassName` instead." + - it: fails when the removed `resources` value is set + set: + resources: + limits: + cpu: 100m + asserts: + - failedTemplate: + errorMessage: "`resources` does no longer exist. Please refer to the changelog and configure `deployment.gitea.resources` instead." - it: skips the deprecation checks when `checkDeprecation` is disabled set: checkDeprecation: false @@ -59,6 +73,10 @@ tests: - 192.0.2.1 nodeSelector: foo: bar + priorityClassName: high-priority + resources: + limits: + cpu: 100m asserts: - hasDocuments: count: 0 diff --git a/values.yaml b/values.yaml index f4bc763..4dc05c5 100644 --- a/values.yaml +++ b/values.yaml @@ -292,20 +292,6 @@ gatewayAPI: body: {} # maxSize: 100m -## @section deployment -# -## @param resources Kubernetes resources -resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi ## Use an alternate scheduler, e.g. "stork". ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ @@ -319,9 +305,7 @@ tolerations: [] ## @param topologySpreadConstraints TopologySpreadConstraints for the deployment topologySpreadConstraints: [] -## @param priorityClassName priorityClassName for the deployment -priorityClassName: "" - +## @section deployment deployment: ## @param deployment.enabled Enable the deployment of Gitea. ## @param deployment.annotations Annotations for the Gitea deployment to be created @@ -367,9 +351,42 @@ deployment: # - name: VARIABLE # value: my-value + ## @param deployment.gitea.resources Compute Resources required by Gitea container. Cannot be updated. + ## @skip deployment.gitea.resources.claims Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + ## @skip deployment.gitea.resources.limits Limits describes the maximum amount of compute resources allowed for this container. + ## @skip deployment.gitea.resources.requests Requests describes the minimum amount of compute resources required for this container. + resources: + # claims: [] + # - name: "" + # request: "" + # limits: + # ephemeral: 100Mi + # cpu: 100m + # memory: 128Mi + # requests: + # ephemeral: 100Mi + # cpu: 100m + # memory: 128Mi + ## @param deployment.nodeSelector NodeSelector for the deployment nodeSelector: {} + ## @param deployment.priorityClassName priorityClassName for the deployment + priorityClassName: "" + + ## @param deployment.resources Resources is the total amount of CPU and Memory resources required by all containers in the pod. + ## @skip deployment.resources.limits Limits describes the maximum amount of compute resources allowed. + ## @skip deployment.resources.requests Requests describes the minimum amount of compute resources required. + resources: {} + # limits: + # ephemeral: 100Mi + # cpu: 100m + # memory: 128Mi + # requests: + # ephemeral: 100Mi + # cpu: 100m + # memory: 128Mi + ## @param deployment.terminationGracePeriodSeconds How long to wait until forcefully kill the pod terminationGracePeriodSeconds: 60