diff --git a/CHANGELOG.md b/CHANGELOG.md index 28fcdd86a8255a1c8898b2fd96e320e0f79c0179..3047188a47b6bc8628809eb83c3307efc4a5ea63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,25 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), --- +## [8.8.1-bb.0] (2024-01-24) + +### Changed + +- update gluon 0.5.3 -> 0.5.14 +- registry1.dso.mil/ironbank/gitlab/gitlab/certificates 17.7.2 -> 17.8.1 +- registry1.dso.mil/ironbank/gitlab/gitlab/gitaly 17.7.2 -> 17.8.1 +- registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-base 17.7.2 -> 17.8.1 +- registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-container-registry 17.7.2 -> 17.8.1 +- registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-exporter 17.7.2 -> 17.8.1 +- registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-mailroom 17.7.2 -> 17.8.1 +- registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-pages 17.7.2 -> 17.8.1 +- registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-shell 17.7.2 -> 17.8.1 +- registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-sidekiq 17.7.2 -> 17.8.1 +- registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-toolbox 17.7.2 -> 17.8.1 +- registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-webservice 17.7.2 -> 17.8.1 +- registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-workhorse 17.7.2 -> 17.8.1 +- registry1.dso.mil/ironbank/gitlab/gitlab/kubectl 17.7.2 -> 17.8.1 + ## [8.7.4-bb.1] (2024-01-22) ### Changed diff --git a/README.md b/README.md index 346553c396d8533699f9961cea5903c6abcf217c..9f478da604c32fecdf440b7266741b94c2870b14 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ <!-- Warning: Do not manually edit this file. See notes on gluon + helm-docs at the end of this file for more information. --> # gitlab -   +   GitLab is the most comprehensive AI-powered DevSecOps Platform. @@ -48,7 +48,7 @@ helm install gitlab chart/ | global.image | object | `{}` | | | global.pod.labels | object | `{}` | | | global.edition | string | `"ee"` | | -| global.gitlabVersion | string | `"17.7.2"` | | +| global.gitlabVersion | string | `"17.8.1"` | | | global.application.create | bool | `false` | | | global.application.links | list | `[]` | | | global.application.allowClusterRoles | bool | `true` | | @@ -362,7 +362,7 @@ helm install gitlab chart/ | global.workhorse.tls.enabled | bool | `false` | | | global.webservice.workerTimeout | int | `60` | | | global.certificates.image.repository | string | `"registry1.dso.mil/ironbank/gitlab/gitlab/certificates"` | | -| global.certificates.image.tag | string | `"17.7.2"` | | +| global.certificates.image.tag | string | `"17.8.1"` | | | global.certificates.image.pullSecrets[0].name | string | `"private-registry"` | | | global.certificates.init.securityContext.capabilities.drop[0] | string | `"ALL"` | | | global.certificates.init.securityContext.runAsUser | int | `65534` | | @@ -399,13 +399,13 @@ helm install gitlab chart/ | global.certificates.customCAs[29].secret | string | `"ca-certs-dod-trust-anchors-self-signed"` | | | global.certificates.customCAs[30].secret | string | `"ca-certs-eca"` | | | global.kubectl.image.repository | string | `"registry1.dso.mil/ironbank/gitlab/gitlab/kubectl"` | | -| global.kubectl.image.tag | string | `"17.7.2"` | | +| global.kubectl.image.tag | string | `"17.8.1"` | | | global.kubectl.image.pullSecrets[0].name | string | `"private-registry"` | | | global.kubectl.securityContext.runAsUser | int | `65534` | | | global.kubectl.securityContext.fsGroup | int | `65534` | | | global.kubectl.securityContext.seccompProfile.type | string | `"RuntimeDefault"` | | | global.gitlabBase.image.repository | string | `"registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-base"` | | -| global.gitlabBase.image.tag | string | `"17.7.2"` | | +| global.gitlabBase.image.tag | string | `"17.8.1"` | | | global.gitlabBase.image.pullSecrets[0].name | string | `"private-registry"` | | | global.serviceAccount.enabled | bool | `true` | | | global.serviceAccount.create | bool | `true` | | @@ -790,7 +790,7 @@ helm install gitlab chart/ | registry.resources.requests.cpu | string | `"200m"` | | | registry.resources.requests.memory | string | `"1024Mi"` | | | registry.image.repository | string | `"registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-container-registry"` | | -| registry.image.tag | string | `"17.7.2"` | | +| registry.image.tag | string | `"17.8.1"` | | | registry.image.pullSecrets[0].name | string | `"private-registry"` | | | registry.ingress.enabled | bool | `false` | | | registry.metrics.enabled | bool | `true` | | @@ -850,7 +850,7 @@ helm install gitlab chart/ | gitlab.toolbox.replicas | int | `1` | | | gitlab.toolbox.antiAffinityLabels.matchLabels.app | string | `"gitaly"` | | | gitlab.toolbox.image.repository | string | `"registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-toolbox"` | | -| gitlab.toolbox.image.tag | string | `"17.7.2"` | | +| gitlab.toolbox.image.tag | string | `"17.8.1"` | | | gitlab.toolbox.image.pullSecrets[0].name | string | `"private-registry"` | | | gitlab.toolbox.init.resources.requests.cpu | string | `"200m"` | | | gitlab.toolbox.init.resources.requests.memory | string | `"200Mi"` | | @@ -887,7 +887,7 @@ helm install gitlab chart/ | gitlab.gitlab-exporter.resources.requests.memory | string | `"200Mi"` | | | gitlab.gitlab-exporter.capabilities.drop[0] | string | `"ALL"` | | | gitlab.gitlab-exporter.image.repository | string | `"registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-exporter"` | | -| gitlab.gitlab-exporter.image.tag | string | `"17.7.2"` | | +| gitlab.gitlab-exporter.image.tag | string | `"17.8.1"` | | | gitlab.gitlab-exporter.image.pullSecrets[0].name | string | `"private-registry"` | | | gitlab.gitlab-exporter.metrics.enabled | bool | `true` | | | gitlab.gitlab-exporter.metrics.port | int | `9168` | | @@ -909,7 +909,7 @@ helm install gitlab chart/ | gitlab.migrations.resources.requests.cpu | string | `"500m"` | | | gitlab.migrations.resources.requests.memory | string | `"1.5G"` | | | gitlab.migrations.image.repository | string | `"registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-toolbox"` | | -| gitlab.migrations.image.tag | string | `"17.7.2"` | | +| gitlab.migrations.image.tag | string | `"17.8.1"` | | | gitlab.migrations.image.pullSecrets[0].name | string | `"private-registry"` | | | gitlab.migrations.securityContext.runAsUser | int | `1000` | | | gitlab.migrations.securityContext.runAsGroup | int | `1000` | | @@ -933,14 +933,14 @@ helm install gitlab chart/ | gitlab.webservice.resources.requests.cpu | string | `"300m"` | | | gitlab.webservice.resources.requests.memory | string | `"2.5G"` | | | gitlab.webservice.image.repository | string | `"registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-webservice"` | | -| gitlab.webservice.image.tag | string | `"17.7.2"` | | +| gitlab.webservice.image.tag | string | `"17.8.1"` | | | gitlab.webservice.image.pullSecrets[0].name | string | `"private-registry"` | | | gitlab.webservice.workhorse.resources.limits.cpu | string | `"600m"` | | | gitlab.webservice.workhorse.resources.limits.memory | string | `"2.5G"` | | | gitlab.webservice.workhorse.resources.requests.cpu | string | `"600m"` | | | gitlab.webservice.workhorse.resources.requests.memory | string | `"2.5G"` | | | gitlab.webservice.workhorse.image | string | `"registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-workhorse"` | | -| gitlab.webservice.workhorse.tag | string | `"17.7.2"` | | +| gitlab.webservice.workhorse.tag | string | `"17.8.1"` | | | gitlab.webservice.workhorse.pullSecrets[0].name | string | `"private-registry"` | | | gitlab.webservice.workhorse.metrics.enabled | bool | `true` | | | gitlab.webservice.workhorse.metrics.serviceMonitor.enabled | bool | `true` | | @@ -951,7 +951,7 @@ helm install gitlab chart/ | gitlab.webservice.metrics.serviceMonitor.enabled | bool | `true` | | | gitlab.webservice.helmTests.enabled | bool | `false` | | | gitlab.sidekiq.image.repository | string | `"registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-sidekiq"` | | -| gitlab.sidekiq.image.tag | string | `"17.7.2"` | | +| gitlab.sidekiq.image.tag | string | `"17.8.1"` | | | gitlab.sidekiq.image.pullSecrets[0].name | string | `"private-registry"` | | | gitlab.sidekiq.init.resources.limits.cpu | string | `"200m"` | | | gitlab.sidekiq.init.resources.limits.memory | string | `"200Mi"` | | @@ -969,7 +969,7 @@ helm install gitlab chart/ | gitlab.sidekiq.containerSecurityContext.runAsGroup | int | `1000` | | | gitlab.sidekiq.containerSecurityContext.capabilities.drop[0] | string | `"ALL"` | | | gitlab.gitaly.image.repository | string | `"registry1.dso.mil/ironbank/gitlab/gitlab/gitaly"` | | -| gitlab.gitaly.image.tag | string | `"17.7.2"` | | +| gitlab.gitaly.image.tag | string | `"17.8.1"` | | | gitlab.gitaly.image.pullSecrets[0].name | string | `"private-registry"` | | | gitlab.gitaly.init.resources.limits.cpu | string | `"200m"` | | | gitlab.gitaly.init.resources.limits.memory | string | `"200Mi"` | | @@ -989,7 +989,7 @@ helm install gitlab chart/ | gitlab.gitaly.containerSecurityContext.runAsGroup | int | `1000` | | | gitlab.gitaly.containerSecurityContext.capabilities.drop[0] | string | `"ALL"` | | | gitlab.gitlab-shell.image.repository | string | `"registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-shell"` | | -| gitlab.gitlab-shell.image.tag | string | `"17.7.2"` | | +| gitlab.gitlab-shell.image.tag | string | `"17.8.1"` | | | gitlab.gitlab-shell.image.pullSecrets[0].name | string | `"private-registry"` | | | gitlab.gitlab-shell.init.resources.limits.cpu | string | `"200m"` | | | gitlab.gitlab-shell.init.resources.limits.memory | string | `"200Mi"` | | @@ -1007,15 +1007,15 @@ helm install gitlab chart/ | gitlab.gitlab-shell.containerSecurityContext.runAsGroup | int | `1000` | | | gitlab.gitlab-shell.containerSecurityContext.capabilities.drop[0] | string | `"ALL"` | | | gitlab.mailroom.image.repository | string | `"registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-mailroom"` | | -| gitlab.mailroom.image.tag | string | `"17.7.2"` | | +| gitlab.mailroom.image.tag | string | `"17.8.1"` | | | gitlab.mailroom.image.pullSecrets[0].name | string | `"private-registry"` | | | gitlab.mailroom.containerSecurityContext.capabilities.drop[0] | string | `"ALL"` | | | gitlab.gitlab-pages.service.customDomains.type | string | `"ClusterIP"` | | | gitlab.gitlab-pages.image.repository | string | `"registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-pages"` | | -| gitlab.gitlab-pages.image.tag | string | `"17.7.2"` | | +| gitlab.gitlab-pages.image.tag | string | `"17.8.1"` | | | gitlab.gitlab-pages.containerSecurityContext.capabilities.drop[0] | string | `"ALL"` | | | gitlab.praefect.image.repository | string | `"registry1.dso.mil/ironbank/gitlab/gitlab/gitaly"` | | -| gitlab.praefect.image.tag | string | `"17.7.2"` | | +| gitlab.praefect.image.tag | string | `"17.8.1"` | | | gitlab.praefect.init.resources.limits.cpu | string | `"200m"` | | | gitlab.praefect.init.resources.limits.memory | string | `"200Mi"` | | | gitlab.praefect.init.resources.requests.cpu | string | `"200m"` | | diff --git a/chart/.gitlab-ci.yml b/chart/.gitlab-ci.yml index e5cc6f01cacf0ef75095ddb88dc0f957c82c4219..b4853e2e1170f0e188295d302971f0e4a9f4d894 100644 --- a/chart/.gitlab-ci.yml +++ b/chart/.gitlab-ci.yml @@ -50,7 +50,7 @@ variables: DEBIAN_VERSION: bookworm RUBY_VERSION: "3.1.5" CI_TOOLS_VERSION: "4.22.0" - GITLAB_QA_VERSION: "14.20.0" + GITLAB_QA_VERSION: "15.0.0" # STRICT_VERSIONS is used in RSpecs to ensure exact version match for tools like "helm" and "kubectl" STRICT_VERSIONS: "true" KUBE_CRD_SCHEMA_URL: "https://raw.githubusercontent.com/kubernetes/kubernetes/master/api/openapi-spec/v3/apis__apiextensions.k8s.io__v1_openapi.json" @@ -238,6 +238,8 @@ trigger_review_current: - job: pin_image_versions rules: - !reference [.rule:skip_if_fork] + - if: '$PIPELINE_TYPE == "DOCS_PIPELINE"' + when: never - if: '$CI_PIPELINE_SOURCE != "pipeline" && $CI_PIPELINE_SOURCE != "parent_pipeline" && $PIPELINE_TYPE =~ /DEFAULT_BRANCH_PIPELINE$/ ' - if: '$CI_PIPELINE_SOURCE != "pipeline" && $CI_PIPELINE_SOURCE != "parent_pipeline" && $PIPELINE_TYPE =~ /STABLE_BRANCH_PIPELINE$/ ' - if: '$CI_PIPELINE_SOURCE != "pipeline" && $CI_PIPELINE_SOURCE != "parent_pipeline"' @@ -248,6 +250,8 @@ trigger_review_current: .trigger_review_current: rules: - !reference [.rule:skip_if_fork] + - if: '$PIPELINE_TYPE == "DOCS_PIPELINE"' + when: never - if: '$CI_PIPELINE_SOURCE != "pipeline" && $CI_PIPELINE_SOURCE != "parent_pipeline"' # Triggered from CNG - if: '$CI_PIPELINE_SOURCE == "pipeline" && $TEST_BRANCH == "true"' @@ -263,6 +267,8 @@ trigger_review_secondary: optional: true - job: pin_image_versions rules: + - if: '$PIPELINE_TYPE == "DOCS_PIPELINE"' + when: never - !reference [.rule:skip_if_fork] - if: '$CI_PIPELINE_SOURCE != "pipeline" && $CI_PIPELINE_SOURCE != "parent_pipeline"' when: manual @@ -271,6 +277,8 @@ trigger_review_secondary: .trigger_review_secondary: rules: + - if: '$PIPELINE_TYPE == "DOCS_PIPELINE"' + when: never - !reference [.rule:skip_if_fork] - if: '$CI_PIPELINE_SOURCE != "pipeline" && $CI_PIPELINE_SOURCE != "parent_pipeline"' - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' @@ -281,8 +289,10 @@ trigger_review_secondary: include: - local: .gitlab-ci.yml strategy: depend + forward: + pipeline_variables: true inherit: - variables: + variables: - PIPELINE_TYPE - REVIEW_REF_PREFIX - LIMIT_TO diff --git a/chart/.gitlab/ci/checks.yml b/chart/.gitlab/ci/checks.yml index 983b999b55ddcb3d951fbf66f11940531c62fac8..9106ece354207019ccef2532e67baec00c7558b0 100644 --- a/chart/.gitlab/ci/checks.yml +++ b/chart/.gitlab/ci/checks.yml @@ -64,6 +64,22 @@ check_docs_links: - if: '$PIPELINE_TYPE =~ /MR_PIPELINE$/' - if: '$PIPELINE_TYPE =~ /BRANCH_PIPELINE$/' +# https://github.com/zegl/kube-score +# Initially motivated to detect duplicated environment variable definitions +kube-score: + image: + name: "zegl/kube-score:v1.19.0@sha256:94137f32ce139dc9fbdbbd380249025e4d378c282ff151a100b981cdeeb923b6" + entrypoint: [""] + stage: prepare + script: + - helm dependency build + - helm template . --set certmanager-issuer.email=gitlab@example.com > /tmp/test.yaml + - /kube-score score --ignore-container-cpu-limit --ignore-container-memory-limit --ignore-test "container-image-pull-policy,container-security-context-user-group-id,container-ephemeral-storage-request-and-limit,container-security-context-readonlyrootfilesystem,pod-probes,pod-networkpolicy,container-resources,deployment-has-poddisruptionbudget,deployment-replicas,deployment-has-host-podantiaffinity" /tmp/test.yaml + rules: + - if: '$PIPELINE_TYPE == "DOCS_PIPELINE"' + - if: '$PIPELINE_TYPE =~ /MR_PIPELINE$/' + - if: '$PIPELINE_TYPE =~ /BRANCH_PIPELINE$/' + lint_package: stage: preflight when: always @@ -100,4 +116,3 @@ specs_without_cluster: - if: '$PIPELINE_TYPE == "AUTO_DEPLOY_PIPELINE"' - if: '$PIPELINE_TYPE == "RELEASE_PIPELINE"' needs: ['lint_package'] - diff --git a/chart/.gitlab/ci/operator.gitlab-ci.yml b/chart/.gitlab/ci/operator.gitlab-ci.yml index 1f538d8a747ba6eef8badb54c6e78303e2b5a7a2..b1571eb07747437acd07c01b2ed91099c7ad9730 100644 --- a/chart/.gitlab/ci/operator.gitlab-ci.yml +++ b/chart/.gitlab/ci/operator.gitlab-ci.yml @@ -6,9 +6,10 @@ trigger_operator_test: variables: CHARTS_REF: "${CI_COMMIT_SHA}" TRIGGER_PROJECT: "${CI_PROJECT_PATH}" + PIPELINE_TYPE: "${PIPELINE_TYPE}" inherit: variables: false - when: manual rules: - - if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PIPELINE_SOURCE == "merge_request_event"' - + - if: '$PIPELINE_TYPE == "DOCS_PIPELINE"' + when: never + - when: manual diff --git a/chart/.gitlab/ci/review-docs.yml b/chart/.gitlab/ci/review-docs.yml index 1ee9775b8aa240e6761c2ab18e98b5bfd9f5f32a..8f3077adb342e561b31c657b780edbab19929923 100644 --- a/chart/.gitlab/ci/review-docs.yml +++ b/chart/.gitlab/ci/review-docs.yml @@ -4,6 +4,7 @@ stage: review cache: {} dependencies: [] + needs: [] before_script: - gem install gitlab --no-doc # We need to download the script rather than clone the repo since the diff --git a/chart/CHANGELOG.md b/chart/CHANGELOG.md index 32602ce3666d08fd0012f42520ef6f6ecf5a8e96..6f878037675655957ca8e8e362373e6e992dba68 100644 --- a/chart/CHANGELOG.md +++ b/chart/CHANGELOG.md @@ -2,6 +2,30 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. +## 8.8.1 (2025-01-22) + +No changes. + +## 8.8.0 (2025-01-15) + +### Added (1 change) + +- [Support configuring redis database number](https://gitlab.com/gitlab-org/charts/gitlab/-/commit/8338b2142ebb22b256420adb656addd7a7e2be95) by @gpongelli ([merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/3995)) + +### Fixed (3 changes) + +- [Remove duplicate TZ keys in Gitaly StatefulSet](https://gitlab.com/gitlab-org/charts/gitlab/-/commit/344ee5e80a92b8880187f60c4f8833e42e01c9d2) ([merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/4046)) +- [Revert certmanager-issuer time zone change](https://gitlab.com/gitlab-org/charts/gitlab/-/commit/703c18ffc1feab1cda16c02f7acca70f871aac11) ([merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/4043)) +- [Shared Secrets: consume idiomatic returns from yq](https://gitlab.com/gitlab-org/charts/gitlab/-/commit/19e1aa90c41e3559959f27b4a3baf67669905400) ([merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/4039)) + +### Changed (5 changes) + +- [Update dependency gitlab-exporter to v15.1.0](https://gitlab.com/gitlab-org/charts/gitlab/-/commit/13bc443fde1001e18db458f3d123ae05efe7a285) ([merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/4055)) +- [Add ttlSecondsAfterFinished to certmanager_issuer](https://gitlab.com/gitlab-org/charts/gitlab/-/commit/b9b3698b41916d69bb82c467ebbe0d1aa3473bc2) ([merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/4053)) +- [Update dependency container-registry to v4.15.0-gitlab](https://gitlab.com/gitlab-org/charts/gitlab/-/commit/7d9b71c4adc0078424aa1e9ebfb65efd49ae20a9) ([merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/4059)) +- [Update Helm release gitlab-runner to v0.72.0](https://gitlab.com/gitlab-org/charts/gitlab/-/commit/13515980ce6275fff3d8241b73725a48f443d2fb) ([merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/4038)) +- [Update dependency gitlab-qa to v15](https://gitlab.com/gitlab-org/charts/gitlab/-/commit/a1b4854886a67007690053b6f7606636d9703f53) ([merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/4032)) + ## 8.7.4 (2025-01-15) No changes. @@ -16,12 +40,6 @@ No changes. - [Revert certmanager-issuer time zone change](https://gitlab.com/gitlab-org/charts/gitlab/-/commit/99befdf99b7f07639d7b6ceb83ea8b534085bbe3) ([merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/4044)) -## 8.7.1 (2024-12-20) - -### Fixed (1 change) - -- [Shared Secrets: consume idiomatic returns from yq](https://gitlab.com/gitlab-org/charts/gitlab/-/commit/19e1aa90c41e3559959f27b4a3baf67669905400) ([merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/4039)) - ## 8.7.0 (2024-12-18) ### Added (3 changes) @@ -40,6 +58,10 @@ No changes. - [Update dependency container-registry to v4.14.0-gitlab](https://gitlab.com/gitlab-org/charts/gitlab/-/commit/dcc8ce8e48d88f5ff1aee9f0aa67bf4b505de585) ([merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/4017)) - [Update Helm release gitlab-runner to v0.71.0](https://gitlab.com/gitlab-org/charts/gitlab/-/commit/45c82f324306ca23d68384a65103ec889c1b6cee) ([merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/4011)) +## 8.6.3 (2025-01-08) + +No changes. + ## 8.6.2 (2024-12-10) No changes. @@ -69,6 +91,10 @@ No changes. - [Update Helm release gitlab-runner to v0.70.0](https://gitlab.com/gitlab-org/charts/gitlab/-/commit/ea3833fd35e5d201c96e9da5b4892b610df19781) ([merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/3955)) - [Bump nginx-controller from 1.3.1 to 1.11.2](https://gitlab.com/gitlab-org/charts/gitlab/-/commit/c8f6090ec807dde86d4f6fd92803ada8b125868e) ([merge request](https://gitlab.com/gitlab-org/charts/gitlab/-/merge_requests/3901)) +## 8.5.5 (2025-01-08) + +No changes. + ## 8.5.4 (2024-12-10) No changes. diff --git a/chart/Chart.yaml b/chart/Chart.yaml index 2c289c66f63bae519f515a753e316f2f59a5da50..71fef3b9ad8f2e3ba63ecf42aca50088d822add9 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -1,8 +1,8 @@ --- apiVersion: v1 name: gitlab -version: 8.7.4-bb.1 -appVersion: 17.7.2 +version: 8.8.1-bb.0 +appVersion: 17.8.1 description: GitLab is the most comprehensive AI-powered DevSecOps Platform. keywords: - gitlab @@ -16,7 +16,7 @@ maintainers: annotations: bigbang.dev/maintenanceTrack: bb_integrated bigbang.dev/applicationVersions: | - - Gitlab: 17.7.2 + - Gitlab: 17.8.1 bigbang.dev/upstreamReleaseNotesMarkdown: | The [upstream chart's release notes](https://gitlab.com/gitlab-org/charts/gitlab/-/blob/master/CHANGELOG.md) may help when reviewing this package. helm.sh/images: | @@ -27,29 +27,29 @@ annotations: condition: redis.install image: registry1.dso.mil/ironbank/bitnami/redis:7.4.2 - name: alpine-certificates - image: registry1.dso.mil/ironbank/gitlab/gitlab/certificates:17.7.2 + image: registry1.dso.mil/ironbank/gitlab/gitlab/certificates:17.8.1 - name: cfssl-self-sign condition: shared-secrets.enabled image: registry1.dso.mil/ironbank/gitlab/gitlab/cfssl-self-sign:1.6.1 - name: gitaly - image: registry1.dso.mil/ironbank/gitlab/gitlab/gitaly:17.7.2 + image: registry1.dso.mil/ironbank/gitlab/gitlab/gitaly:17.8.1 - name: gitlab-container-registry condition: registry.enabled - image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-container-registry:17.7.2 + image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-container-registry:17.8.1 - name: gitlab-shell - image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-shell:17.7.2 + image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-shell:17.8.1 - name: gitlab-sidekiq - image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-sidekiq:17.7.2 + image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-sidekiq:17.8.1 - name: gitlab-toolbox - image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-toolbox:17.7.2 + image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-toolbox:17.8.1 - name: gitlab-webservice - image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-webservice:17.7.2 + image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-webservice:17.8.1 - name: gitlab-workhorse - image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-workhorse:17.7.2 + image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-workhorse:17.8.1 - name: gitlab-pages - image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-pages:17.7.2 + image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-pages:17.8.1 - name: kubectl - image: registry1.dso.mil/ironbank/gitlab/gitlab/kubectl:17.7.2 + image: registry1.dso.mil/ironbank/gitlab/gitlab/kubectl:17.8.1 - name: mc image: registry1.dso.mil/ironbank/opensource/minio/mc:RELEASE.2024-10-02T08-27-28Z - name: minio @@ -61,10 +61,10 @@ annotations: condition: upgradeCheck.enabled image: registry1.dso.mil/ironbank/redhat/ubi/ubi9:9.5 - name: gitlab-base - image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-base:17.7.2 + image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-base:17.8.1 - name: gitlab-exporter condition: gitlab.gitlab-exporter.enabled - image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-exporter:17.7.2 + image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-exporter:17.8.1 - name: bbtests condition: bbtests.enabled image: registry1.dso.mil/bigbang-ci/gitlab-tester:0.0.4 diff --git a/chart/Kptfile b/chart/Kptfile index 355dd35eda1eb253c1dd68a47751832ec13c0a0f..322c3cb8f7dead42f9f2f0f921d266429a2a4c5a 100644 --- a/chart/Kptfile +++ b/chart/Kptfile @@ -5,7 +5,7 @@ metadata: upstream: type: git git: - commit: 6ac93b61b25b1e7db4d7dc0c7549d1f85670887e + commit: c9cc7286394007b8b8f1e04649658a089aeee4a0 repo: https://gitlab.com/gitlab-org/charts/gitlab directory: / - ref: v8.7.4 + ref: v8.8.1 diff --git a/chart/charts/certmanager-issuer/Chart.yaml b/chart/charts/certmanager-issuer/Chart.yaml index 8c74e23757f1c021c919a9a80365feee600f7f2c..c4d1ac1f489a61d74cbd127a402898e7f7a1c258 100644 --- a/chart/charts/certmanager-issuer/Chart.yaml +++ b/chart/charts/certmanager-issuer/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v1 name: certmanager-issuer -version: 0.1.0 +version: 0.2.0 appVersion: 0.2.2 description: Configuration Job to add LetsEncrypt Issuer to cert-manager keywords: diff --git a/chart/charts/certmanager-issuer/templates/issuer-job.yaml b/chart/charts/certmanager-issuer/templates/issuer-job.yaml index 4bb5adce82fa8c36a35cad0e753783a2399dd068..6c5dd8fbdec098313f6851b4ebcead806a494827 100644 --- a/chart/charts/certmanager-issuer/templates/issuer-job.yaml +++ b/chart/charts/certmanager-issuer/templates/issuer-job.yaml @@ -10,6 +10,7 @@ metadata: {{- include "gitlab.commonLabels" . | nindent 4 }} spec: activeDeadlineSeconds: 300 + ttlSecondsAfterFinished: {{ .Values.ttlSecondsAfterFinished }} template: metadata: labels: diff --git a/chart/charts/certmanager-issuer/values.yaml b/chart/charts/certmanager-issuer/values.yaml index 3f13384a60585bf5336cff3491229cabcb6ae13d..b5660f2e4a28e414c84680682b2545643f444408 100644 --- a/chart/charts/certmanager-issuer/values.yaml +++ b/chart/charts/certmanager-issuer/values.yaml @@ -26,3 +26,5 @@ common: labels: {} useNewIngressForCerts: false + +ttlSecondsAfterFinished: 1800 diff --git a/chart/charts/gitlab-runner-0.71.0.tgz b/chart/charts/gitlab-runner-0.71.0.tgz deleted file mode 100644 index 7c208e5223edaec89cfc7f30b682c9a4edd7c3d3..0000000000000000000000000000000000000000 Binary files a/chart/charts/gitlab-runner-0.71.0.tgz and /dev/null differ diff --git a/chart/charts/gitlab-runner-0.72.0.tgz b/chart/charts/gitlab-runner-0.72.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..54d30273f02d3226024c11e2f7f4d1433a6ebc39 Binary files /dev/null and b/chart/charts/gitlab-runner-0.72.0.tgz differ diff --git a/chart/charts/gitlab/charts/geo-logcursor/Chart.yaml b/chart/charts/gitlab/charts/geo-logcursor/Chart.yaml index 2f359384f68d00d4b12fbef7402e05e95dd0d389..73a0aec9d58eee964f4ebacc779803a1c2be05b8 100644 --- a/chart/charts/gitlab/charts/geo-logcursor/Chart.yaml +++ b/chart/charts/gitlab/charts/geo-logcursor/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: geo-logcursor -version: 8.7.4 -appVersion: v17.7.2 +version: 8.8.1 +appVersion: v17.8.1 description: GitLab Geo logcursor keywords: - gitlab diff --git a/chart/charts/gitlab/charts/gitaly/Chart.yaml b/chart/charts/gitlab/charts/gitaly/Chart.yaml index 9ad46f50bc2318900579cdd2584bf0902f2ea04f..bf5e20bd35a39e8d789d38e9a1cbf026017a4f69 100644 --- a/chart/charts/gitlab/charts/gitaly/Chart.yaml +++ b/chart/charts/gitlab/charts/gitaly/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: gitaly -version: 8.7.4 -appVersion: 17.7.2 +version: 8.8.1 +appVersion: 17.8.1 description: Git RPC service for handling all the git calls made by GitLab keywords: - gitlab diff --git a/chart/charts/gitlab/charts/gitaly/templates/_statefulset_spec.yaml b/chart/charts/gitlab/charts/gitaly/templates/_statefulset_spec.yaml index 60d26ec1bcc87c7cfc94d553dc968fd14874f1ba..0655eed4cac7208aa725a756018785f381f78c74 100644 --- a/chart/charts/gitlab/charts/gitaly/templates/_statefulset_spec.yaml +++ b/chart/charts/gitlab/charts/gitaly/templates/_statefulset_spec.yaml @@ -49,6 +49,9 @@ spec: prometheus.io/path: {{ $.Values.metrics.path }} {{- end }} spec: + {{- if .Values.shareProcessNamespace }} + shareProcessNamespace: {{ .Values.shareProcessNamespace }} + {{- end }} {{- if .Values.tolerations }} tolerations: {{- toYaml .Values.tolerations | nindent 8 }} diff --git a/chart/charts/gitlab/charts/gitaly/values.yaml b/chart/charts/gitlab/charts/gitaly/values.yaml index 8adba3ddf5fa8b483bbf99973b19472b78c75c51..4051387a1a930f618e9267b0a3dbf8c6ad8a6e42 100644 --- a/chart/charts/gitlab/charts/gitaly/values.yaml +++ b/chart/charts/gitlab/charts/gitaly/values.yaml @@ -33,6 +33,10 @@ common: podLabels: {} serviceLabels: {} +# Allows process namespace sharing within the pod +# This makes processes in a container visible to all other containers in the same pod. +shareProcessNamespace: false + init: image: {} # repository: diff --git a/chart/charts/gitlab/charts/gitlab-exporter/Chart.yaml b/chart/charts/gitlab/charts/gitlab-exporter/Chart.yaml index 2f96cbed2e317c03144c3e8c6b79500146653b1f..0bd52d6f08bf6a2627ef060433bbf0861e645c6f 100644 --- a/chart/charts/gitlab/charts/gitlab-exporter/Chart.yaml +++ b/chart/charts/gitlab/charts/gitlab-exporter/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: gitlab-exporter -version: 8.7.4 -appVersion: 15.0.0 +version: 8.8.1 +appVersion: 15.1.0 description: Exporter for GitLab Prometheus metrics (e.g. CI, pull mirrors) keywords: - gitlab diff --git a/chart/charts/gitlab/charts/gitlab-pages/Chart.yaml b/chart/charts/gitlab/charts/gitlab-pages/Chart.yaml index 8e5eaa92ac4d54c2ad1780ee9b49f039ed12556c..d1b8634547f7dc14f724360cf751893cf10b8856 100644 --- a/chart/charts/gitlab/charts/gitlab-pages/Chart.yaml +++ b/chart/charts/gitlab/charts/gitlab-pages/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: gitlab-pages -version: 8.7.4 -appVersion: 17.7.2 +version: 8.8.1 +appVersion: 17.8.1 description: Daemon for serving static websites from GitLab projects keywords: - gitlab diff --git a/chart/charts/gitlab/charts/gitlab-shell/Chart.yaml b/chart/charts/gitlab/charts/gitlab-shell/Chart.yaml index d52df87ade274518ac5d777ed6ec32101abf3e7e..1d89b64b91e699605da75ff3675ecdae8fd74814 100644 --- a/chart/charts/gitlab/charts/gitlab-shell/Chart.yaml +++ b/chart/charts/gitlab/charts/gitlab-shell/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v1 name: gitlab-shell -version: 8.7.4 +version: 8.8.1 appVersion: 14.39.0 description: sshd for Gitlab keywords: diff --git a/chart/charts/gitlab/charts/kas/Chart.yaml b/chart/charts/gitlab/charts/kas/Chart.yaml index f6846cc57c8b30c8d38a736439f3c1927a5920fb..ac5ca7d79b24193fd2075e5e2d50c5b0c43119ba 100644 --- a/chart/charts/gitlab/charts/kas/Chart.yaml +++ b/chart/charts/gitlab/charts/kas/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: kas -version: 8.7.4 -appVersion: 17.7.2 +version: 8.8.1 +appVersion: 17.8.1 description: GitLab Agent Server keywords: - agent diff --git a/chart/charts/gitlab/charts/kas/templates/_helpers.tpl b/chart/charts/gitlab/charts/kas/templates/_helpers.tpl index 0ce08c57d47214a0ae734d6ebf4964915b3ab771..72f66b6598e6290973ab8969a4865ace04357791 100644 --- a/chart/charts/gitlab/charts/kas/templates/_helpers.tpl +++ b/chart/charts/gitlab/charts/kas/templates/_helpers.tpl @@ -29,7 +29,8 @@ username: {{ .redisMergedConfig.user }} {{- end -}} {{- if .redisMergedConfig.password.enabled }} password_file: /etc/kas/redis/{{ printf "%s-password" (default "redis" .redisConfigName) }} -{{- end -}} +{{- end }} +database_index: {{ .redisMergedConfig.database }} {{- if not .redisMergedConfig.sentinels }} server: address: {{ template "gitlab.redis.host" . }}:{{ template "gitlab.redis.port" . }} diff --git a/chart/charts/gitlab/charts/mailroom/Chart.yaml b/chart/charts/gitlab/charts/mailroom/Chart.yaml index 1eb041c4bbf903b878f810066443aef42e765396..24902cb351102b8d92a3d867b4694751ec9a8432 100644 --- a/chart/charts/gitlab/charts/mailroom/Chart.yaml +++ b/chart/charts/gitlab/charts/mailroom/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: mailroom -version: 8.7.4 -appVersion: v17.7.2 +version: 8.8.1 +appVersion: v17.8.1 description: Handling incoming emails keywords: - gitlab diff --git a/chart/charts/gitlab/charts/migrations/Chart.yaml b/chart/charts/gitlab/charts/migrations/Chart.yaml index 8e84db026a0341d4a5651f7c8784599d3bfa3afc..1f4f4bd7bd2158f4faf3c31004a09548e35e8dca 100644 --- a/chart/charts/gitlab/charts/migrations/Chart.yaml +++ b/chart/charts/gitlab/charts/migrations/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: migrations -version: 8.7.4 -appVersion: v17.7.2 +version: 8.8.1 +appVersion: v17.8.1 description: Database migrations and other versioning tasks for upgrading Gitlab keywords: - gitlab diff --git a/chart/charts/gitlab/charts/praefect/Chart.yaml b/chart/charts/gitlab/charts/praefect/Chart.yaml index 7edb2000b641f6f03e1f7b06f4c119039ba3357c..7ee128f082f4702358aa99a47a0366589cc082bc 100644 --- a/chart/charts/gitlab/charts/praefect/Chart.yaml +++ b/chart/charts/gitlab/charts/praefect/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: praefect -version: 8.7.4 -appVersion: 17.7.2 +version: 8.8.1 +appVersion: 17.8.1 description: Praefect is a router and transaction manager for Gitaly, and a required component for running a Gitaly Cluster. keywords: diff --git a/chart/charts/gitlab/charts/sidekiq/Chart.yaml b/chart/charts/gitlab/charts/sidekiq/Chart.yaml index 7c8fd79cae833f14be0b18eda6914a003be6b981..38f892a765819734dedfac9c346a51cc32f9662c 100644 --- a/chart/charts/gitlab/charts/sidekiq/Chart.yaml +++ b/chart/charts/gitlab/charts/sidekiq/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: sidekiq -version: 8.7.4 -appVersion: v17.7.2 +version: 8.8.1 +appVersion: v17.8.1 description: Gitlab Sidekiq for asynchronous task processing in rails keywords: - gitlab diff --git a/chart/charts/gitlab/charts/spamcheck/Chart.yaml b/chart/charts/gitlab/charts/spamcheck/Chart.yaml index 043c3e0a76f348371117a0f90d7458b2ed129776..904cf9fb0fd72523086b30a430cb9cd2c4779d74 100644 --- a/chart/charts/gitlab/charts/spamcheck/Chart.yaml +++ b/chart/charts/gitlab/charts/spamcheck/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v1 name: spamcheck -version: 8.7.4 +version: 8.8.1 appVersion: 1.2.3 description: GitLab Anti-Spam Engine keywords: diff --git a/chart/charts/gitlab/charts/toolbox/Chart.yaml b/chart/charts/gitlab/charts/toolbox/Chart.yaml index 910d4f891bffa4d2e7a767227adefbfa0c44a8f5..f9a3ed1dc9d21024aa2fb48c881f6882b3f76483 100644 --- a/chart/charts/gitlab/charts/toolbox/Chart.yaml +++ b/chart/charts/gitlab/charts/toolbox/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: toolbox -version: 8.7.4 -appVersion: v17.7.2 +version: 8.8.1 +appVersion: v17.8.1 description: For manually running rake tasks through kubectl keywords: - gitlab diff --git a/chart/charts/gitlab/charts/webservice/Chart.yaml b/chart/charts/gitlab/charts/webservice/Chart.yaml index 8092ba7bf8c01f988e20709bd64dc7446cee7563..423762d9b4a332eb26d3c6047a765f2c316c91c7 100644 --- a/chart/charts/gitlab/charts/webservice/Chart.yaml +++ b/chart/charts/gitlab/charts/webservice/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: webservice -version: 8.7.4 -appVersion: v17.7.2 +version: 8.8.1 +appVersion: v17.8.1 description: HTTP server for Gitlab keywords: - gitlab diff --git a/chart/charts/gitlab/charts/webservice/templates/_helpers.tpl b/chart/charts/gitlab/charts/webservice/templates/_helpers.tpl index a320e36ee79fe9aafd87ed461b4b8bb7296d0d1d..21fd7be309faf80449941fb18192d6d21a1452bb 100644 --- a/chart/charts/gitlab/charts/webservice/templates/_helpers.tpl +++ b/chart/charts/gitlab/charts/webservice/templates/_helpers.tpl @@ -268,6 +268,7 @@ Return the workhorse redis configuration. {{- end }} {{- include "gitlab.redis.selectedMergedConfig" . -}} [redis] +DB = {{ .redisMergedConfig.database }} {{- if not .redisMergedConfig.sentinels }} {{- $userinfo := "" }} {{- if .redisMergedConfig.user }} diff --git a/chart/charts/gitlab/templates/_redis.tpl b/chart/charts/gitlab/templates/_redis.tpl index 8f5841e5f0dff6b4fded4a8621e255df28a67906..a026d49847876039adfdda52359e7b3a979cb6fc 100644 --- a/chart/charts/gitlab/templates/_redis.tpl +++ b/chart/charts/gitlab/templates/_redis.tpl @@ -31,6 +31,16 @@ to 6379 default {{- default 6379 .redisMergedConfig.port -}} {{- end -}} +{{/* +Return the redis database +If the redis database is provided, it will use that, otherwise it will fallback +to 0 default +*/}} +{{- define "gitlab.redis.database" -}} +{{- include "gitlab.redis.configMerge" . -}} +{{- default 0 .redisMergedConfig.database -}} +{{- end -}} + {{/* Return the redis scheme, or redis. Allowing people to use rediss clusters */}} @@ -49,7 +59,7 @@ Return the redis scheme, or redis. Allowing people to use rediss clusters Return the redis url. */}} {{- define "gitlab.redis.url" -}} -{{ template "gitlab.redis.scheme" . }}://{{ template "gitlab.redis.url.user" . }}{{ template "gitlab.redis.url.password" . }}{{ template "gitlab.redis.host" . }}:{{ template "gitlab.redis.port" . }} +{{ template "gitlab.redis.scheme" . }}://{{ template "gitlab.redis.url.user" . }}{{ template "gitlab.redis.url.password" . }}{{ template "gitlab.redis.host" . }}:{{ template "gitlab.redis.port" . }}/{{ template "gitlab.redis.database" . }} {{- end -}} {{/* @@ -134,6 +144,7 @@ sentinels: {{- if not (kindIs "map" (get $.redisMergedConfig "password")) -}} {{- $_ := set $.redisMergedConfig "password" $.Values.global.redis.auth -}} {{- end -}} +{{- $_ := set $.redisMergedConfig "database" (default 0 .Values.global.redis.database) -}} {{- range $key := keys $.Values.global.redis.auth -}} {{- if not (hasKey $.redisMergedConfig.password $key) -}} {{- $_ := set $.redisMergedConfig.password $key (index $.Values.global.redis.auth $key) -}} diff --git a/chart/charts/gluon-0.5.12.tgz b/chart/charts/gluon-0.5.12.tgz deleted file mode 100644 index 002bdc40c2d4eb3144041bde2fab7d61a60c84d4..0000000000000000000000000000000000000000 Binary files a/chart/charts/gluon-0.5.12.tgz and /dev/null differ diff --git a/chart/charts/gluon-0.5.14.tgz b/chart/charts/gluon-0.5.14.tgz new file mode 100644 index 0000000000000000000000000000000000000000..c99d9e0f44b4d35311fda2b49ee005cbbea4fb67 Binary files /dev/null and b/chart/charts/gluon-0.5.14.tgz differ diff --git a/chart/charts/registry/Chart.yaml b/chart/charts/registry/Chart.yaml index b101e619616b64eb1147881bab558685add1aa40..417fe95a9e350888017113e2553a24d730a1f054 100644 --- a/chart/charts/registry/Chart.yaml +++ b/chart/charts/registry/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: registry version: 0.7.0 -appVersion: 'v4.14.0-gitlab' +appVersion: 'v4.15.0-gitlab' description: Stateless, highly scalable application that stores and lets you distribute container images details: Container Registry component of GitLab diff --git a/chart/charts/registry/values.yaml b/chart/charts/registry/values.yaml index ac9fb2fd0570af288d40ec8b9ee94423015198fb..1838859af77b890b5b5ac23bceaf1fd6f84a8ca6 100644 --- a/chart/charts/registry/values.yaml +++ b/chart/charts/registry/values.yaml @@ -1,6 +1,6 @@ image: repository: registry.gitlab.com/gitlab-org/build/cng/gitlab-container-registry - tag: 'v4.14.0-gitlab' + tag: 'v4.15.0-gitlab' # pullPolicy: IfNotPresent # pullSecrets: [] diff --git a/chart/danger/chart-version/Dangerfile b/chart/danger/chart-version/Dangerfile new file mode 100644 index 0000000000000000000000000000000000000000..70bd1f9efa43293dea934656011ca051f5234822 --- /dev/null +++ b/chart/danger/chart-version/Dangerfile @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +if helper.all_changed_files.detect(-> { false }) { |filename| filename == 'charts/certmanager-issuer/templates/issuer-job.yaml' } + failure <<~MSG + Jobs templates are immutable. Changing it breaks upgrades if there's an existing job with the same name. + Please bump the certmanager-issuer chart version, so that it gets a different generated name + as per [globals Jobs documentation](https://docs.gitlab.com/charts/charts/globals.html#jobs). + MSG +end diff --git a/chart/doc/advanced/external-gitaly/external-omnibus-gitaly.md b/chart/doc/advanced/external-gitaly/external-omnibus-gitaly.md index 09c1c18644aefee3c8ea1c326526948f4de68c38..8e9562f6c3e3b106e3100646da8f432c23d59ea9 100644 --- a/chart/doc/advanced/external-gitaly/external-omnibus-gitaly.md +++ b/chart/doc/advanced/external-gitaly/external-omnibus-gitaly.md @@ -56,7 +56,7 @@ gitlab_kas['enable'] = false prometheus['enable'] = false alertmanager['enable'] = false -# If you don't run a seperate monitoring node you can +# If you don't run a separate monitoring node you can # Enable Prometheus access & disable these extra services # This makes Prometheus listen on all interfaces. You must use firewalls to restrict access to this address/port. # prometheus['listen_address'] = '0.0.0.0:9090' diff --git a/chart/doc/advanced/external-redis/index.md b/chart/doc/advanced/external-redis/index.md index c2431d97937a60b0445c9c048fbf463446b3989e..18bad8c961421290ed061cf0f46a78939bed3b10 100644 --- a/chart/doc/advanced/external-redis/index.md +++ b/chart/doc/advanced/external-redis/index.md @@ -28,6 +28,7 @@ You must set the following parameters: Items below can be further customized if you are not using the defaults: - `global.redis.port`: The port the database is available on, defaults to `6379`. +- `global.redis.database`: The database to connect to on the Redis server, defaults to `0`. For example, pass these values via Helm's `--set` flag while deploying: diff --git a/chart/doc/charts/certmanager-issuer/index.md b/chart/doc/charts/certmanager-issuer/index.md index 457bbecf203259f35bf829c85fbf8ed5d70e980e..bf11cf550eae40236081b0c86b8d262b64a7e140 100644 --- a/chart/doc/charts/certmanager-issuer/index.md +++ b/chart/doc/charts/certmanager-issuer/index.md @@ -60,3 +60,4 @@ to the `helm install` command using the `--set` flags: | `containerSecurityContext.allowPrivilegeEscalation` | `false` | Controls whether a process can gain more privileges than its parent process | | `containerSecurityContext.runAsNonRoot` | `true` | Controls whether the container runs with a non-root user | | `containerSecurityContext.capabilities.drop` | `[ "ALL" ]` | Removes [Linux capabilities](https://man7.org/linux/man-pages/man7/capabilities.7.html) for the container | +| `ttlSecondsAfterFinished` | `1800` | Controls when a finished job becomes eligible for cascading removal. | diff --git a/chart/doc/charts/gitlab/gitaly/index.md b/chart/doc/charts/gitlab/gitaly/index.md index 12e3769be9c5b712b4d6d7d1da120054100bccf5..a1c06077a788ba822b2d43cc72bc55d567bf5f41 100644 --- a/chart/doc/charts/gitlab/gitaly/index.md +++ b/chart/doc/charts/gitlab/gitaly/index.md @@ -86,6 +86,7 @@ the `helm install` command using the `--set` flags. | `securityContext.fsGroupChangePolicy` | | Policy for changing ownership and permission of the volume (requires Kubernetes 1.23) | | `securityContext.runAsUser` | `1000` | User ID under which the pod should be started | | `securityContext.seccompProfile.type` | `RuntimeDefault` | Seccomp profile to use | +| `shareProcessNamespace` | `false` | Allows making container processes visible to all other contains in the same pod | | `containerSecurityContext` | | Override container [securityContext](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#securitycontext-v1-core) under which the Gitaly container is started | | `containerSecurityContext.runAsUser` | `1000` | Allow overwriting of the specific security context user ID under which the Gitaly container is started | | `containerSecurityContext.allowPrivilegeEscalation` | `false` | Controls whether a process of the Gitaly container can gain more privileges than its parent process | diff --git a/chart/doc/charts/gitlab/migrations/index.md b/chart/doc/charts/gitlab/migrations/index.md index c4df87b1d276fbd2d909cdf8688a6a72619c0c49..adf1715db1fb59f7c83ece055767e084bbf4084e 100644 --- a/chart/doc/charts/gitlab/migrations/index.md +++ b/chart/doc/charts/gitlab/migrations/index.md @@ -79,7 +79,6 @@ Table below contains all the possible charts configurations that can be supplied | `extraVolumeMounts` | List of extra volumes mounts to do | | | `extraEnv` | List of extra environment variables to expose | | | `extraEnvFrom` | List of extra environment variables from other data sources to expose| | -| `bootsnap.enabled` | Enable the Bootsnap cache for Rails | `true` | | `priorityClassName` | [Priority class](https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/) assigned to pods. | | ## Chart configuration examples diff --git a/chart/doc/charts/globals.md b/chart/doc/charts/globals.md index 4541ffc5de82cab54b78a54b4bc04797cb962fbc..4f67a15443f8fb733df1b48fcf1b623115036058 100644 --- a/chart/doc/charts/globals.md +++ b/chart/doc/charts/globals.md @@ -256,7 +256,7 @@ with the `-fips` extension to the image tag. --set global.image.tagSuffix="-fips" ``` -## Custom timezone for all containers +## Custom timezone for all containers If you wish to set a custom timezone for all the GitLab containers, you can use the `global.time_zone` key. Refer to `TZ identifier` on the [List of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) for the available values. Default is `UTC`. @@ -460,6 +460,7 @@ global: redis: host: redis.example.com serviceName: redis + database: 7 port: 6379 auth: enabled: true @@ -476,6 +477,7 @@ global: | `host` | String | | The hostname of the Redis server with the database to use. This can be omitted in lieu of `serviceName`. | | `serviceName` | String | `redis` | The name of the `service` which is operating the Redis database. If this is present, and `host` is not, the chart will template the hostname of the service (and current `.Release.Name`) in place of the `host` value. This is convenient when using Redis as a part of the overall GitLab chart. | | `port` | Integer | `6379` | The port on which to connect to the Redis server. | +| `database` | Integer | `0` | The database to connect to on the Redis server. | | `user` | String | | The user used to authenticate against Redis (Redis 6.0+). | | `auth.enabled` | Boolean | true | The `auth.enabled` provides a toggle for using a password with the Redis instance. | | `auth.key` | String | | The `auth.key` attribute for Redis defines the name of the key in the secret (below) that contains the password. | @@ -1362,10 +1364,10 @@ This property has two sub-keys: `secret` and `key`. - `key` is the name of the key in the secret which houses the YAML block. Defaults to `connection`. Valid configuration keys can be found in the [GitLab Job Artifacts Administration](https://docs.gitlab.com/ee/administration/job_artifacts.html#s3-compatible-connection-settings) -documentation. This matches to [Fog](https://github.com/fog), and is different between +documentation. This matches to [Fog](https://github.com/fog/fog.github.com), and is different between provider modules. -Examples for [AWS](https://fog.io/storage/#using-amazon-s3-and-fog) and [Google](https://fog.io/storage/#google-cloud-storage) +Examples for [AWS](https://fog.github.io/storage/#using-amazon-s3-and-fog) and [Google](https://fog.github.io/storage/#google-cloud-storage) providers can be found in [`examples/objectstorage`](https://gitlab.com/gitlab-org/charts/gitlab/tree/master/examples/objectstorage). - [`rails.s3.yaml`](https://gitlab.com/gitlab-org/charts/gitlab/-/blob/master/examples/objectstorage/rails.s3.yaml) diff --git a/chart/doc/charts/registry/index.md b/chart/doc/charts/registry/index.md index 07fa999e73adfb2c95108edc10213987771b915e..1b6501691bb03df56a8421ad123c2ed795a1ef10 100644 --- a/chart/doc/charts/registry/index.md +++ b/chart/doc/charts/registry/index.md @@ -76,7 +76,7 @@ registry: interval: 24h dryrun: false image: - tag: 'v4.14.0-gitlab' + tag: 'v4.15.0-gitlab' pullPolicy: IfNotPresent annotations: service: @@ -187,7 +187,7 @@ If you chose to deploy this chart as a standalone, remove the `registry` at the | `image.pullPolicy` | | Pull policy for the registry image | | `image.pullSecrets` | | Secrets to use for image repository | | `image.repository` | `registry.gitlab.com/gitlab-org/build/cng/gitlab-container-registry` | Registry image | -| `image.tag` | `v4.14.0-gitlab` | Version of the image to use | +| `image.tag` | `v4.15.0-gitlab` | Version of the image to use | | `init.image.repository` | | initContainer image | | `init.image.tag` | | initContainer image tag | | `init.containerSecurityContext` | | initContainer specific [securityContext](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#securitycontext-v1-core) | @@ -430,7 +430,7 @@ You can change the included version of the Registry and `pullPolicy`. Default settings: -- `tag: 'v4.14.0-gitlab'` +- `tag: 'v4.15.0-gitlab'` - `pullPolicy: 'IfNotPresent'` ## Configuring the `service` diff --git a/chart/doc/development/ci.md b/chart/doc/development/ci.md index e26d459c74b6a458d4209998a63e38aefef62b5f..7990f69778543e63a28a7fa3b68752c16ccf719e 100644 --- a/chart/doc/development/ci.md +++ b/chart/doc/development/ci.md @@ -8,8 +8,8 @@ ### LIMIT_TO -`LIMIT_TO` allows to isolate singular logical block of pipeline and *only* execute that block skipping all other blocks. This allows for faster iteration as developer may choose to test only a singular platform before code is ready for more thorough testing. It also allows for external pipeline invocations for very specific scenarios. +`LIMIT_TO` allows to isolate singular logical block of pipeline and *only* execute that block skipping all other blocks. This allows for faster iteration as developer may choose to test only a singular platform before code is ready for more thorough testing. It also allows for external pipeline invocations for very specific scenarios. `LIMIT_TO` accepts only a single value. -Empty value implies that there are no limits and that pipeline shall be executed in full. +Empty value implies that there are no limits and that pipeline shall be executed in full. diff --git a/chart/doc/installation/cloud/index.md b/chart/doc/installation/cloud/index.md index ee8df737bc9a68c6c62610a66631c356cd9a0646..5fe63b0cdf1a372be97f1258b5c5e4813593ca12 100644 --- a/chart/doc/installation/cloud/index.md +++ b/chart/doc/installation/cloud/index.md @@ -39,7 +39,7 @@ We welcome reports made to our [issue tracker](https://gitlab.com/gitlab-org/cha Some GitLab features might not work on deprecated releases or releases older than the releases listed above. -For some components, like the [agent for Kubernetes](https://docs.gitlab.com/ee/user/clusters/agent/#gitlab-agent-for-kubernetes-supported-cluster-versions) and [GitLab Operator](https://docs.gitlab.com/operator/installation.html#kubernetes), GitLab might support different cluster releases. +For some components, like the [agent for Kubernetes](https://docs.gitlab.com/ee/user/clusters/agent/) and [GitLab Operator](https://docs.gitlab.com/operator/installation.html), GitLab might support different cluster releases. WARNING: Kubernetes nodes must use the x86-64 architecture. diff --git a/chart/doc/installation/secrets.md b/chart/doc/installation/secrets.md index fd653c2916cb88319133836f597e4b631bc8afea..d59af5c63a0065ce3dc98fa68bf80478d0abed8d 100644 --- a/chart/doc/installation/secrets.md +++ b/chart/doc/installation/secrets.md @@ -224,6 +224,8 @@ This secret is referenced by the `global.praefect.authToken.secret` setting. ### GitLab Rails secret +> - The `active_record_encryption_*` keys were added in [GitLab 17.8](../releases/8_0.md#upgrade-to-880). + Replace `<name>` with the name of the release. ```shell @@ -250,9 +252,6 @@ This secret is referenced by the `global.railsSecrets.secret` setting. It is **not recommended** to rotate this secret as it contains the database encryption keys. If the secret is rotated, the result will be the same behavior exhibited [when the secrets file is lost](https://docs.gitlab.com/ee/administration/backup_restore/backup_gitlab.html#when-the-secrets-file-is-lost). -NOTE: -The `encrypted_settings_key_base` was added in GitLab `13.7`, and will be required for GitLab `14.0`. - ### GitLab Workhorse secret Generate the workhorse secret. This must have a length of 32 characters and diff --git a/chart/doc/installation/upgrade.md b/chart/doc/installation/upgrade.md index 22ab06abe6bbe2bdd9ad13334e00b4d39654fcf7..fc4e3e0df4f8922fa11fe459d681ba29ec9b1dbf 100644 --- a/chart/doc/installation/upgrade.md +++ b/chart/doc/installation/upgrade.md @@ -21,9 +21,7 @@ Because the GitLab chart versions don't follow the same numbering as GitLab vers see the [version mappings](version_mappings.md) between them. NOTE: -**Zero-downtime upgrades** are not available with the GitLab charts. -Ongoing work to support this feature can be tracked via -[the GitLab Operator epic](https://gitlab.com/groups/gitlab-org/cloud-native/-/epics/52). +**Zero-downtime upgrades** are not available with the GitLab charts but can be achieved by using [GitLab Operator](https://docs.gitlab.com/operator/gitlab_upgrades.html). We also recommend that you take a [backup](../backup-restore/index.md) first. Also note that you must provide all values using `helm upgrade --set key=value` syntax or `-f values.yaml` instead of diff --git a/chart/doc/installation/version_mappings.md b/chart/doc/installation/version_mappings.md index bb95df50dbfe8564dc8166189913f68185ec4b28..33d29f606578b638dd68b076092018c85a353d85 100644 --- a/chart/doc/installation/version_mappings.md +++ b/chart/doc/installation/version_mappings.md @@ -33,14 +33,17 @@ The table below maps some of the key previous supported chart versions and suppo | Chart version | GitLab version | |---------------|----------------| +| 8.8.1 | 17.8.1 | +| 8.8.0 | 17.8.0 | | 8.7.4 | 17.7.2 | | 8.7.3 | 17.7.1 | | 8.7.2 | 17.7.0 | -| 8.7.1 | 17.7.0 | | 8.7.0 | 17.7.0 | +| 8.6.3 | 17.6.3 | | 8.6.2 | 17.6.2 | | 8.6.1 | 17.6.1 | | 8.6.0 | 17.6.0 | +| 8.5.5 | 17.5.5 | | 8.5.4 | 17.5.4 | | 8.5.3 | 17.5.3 | | 8.5.2 | 17.5.2 | diff --git a/chart/doc/releases/8_0.md b/chart/doc/releases/8_0.md index 9bb2a83f371f56a62f16fc484713400add3d0368..2bb5f5a9ba943fbc2a9f323bdb8414ead2236150 100644 --- a/chart/doc/releases/8_0.md +++ b/chart/doc/releases/8_0.md @@ -20,6 +20,41 @@ See [GitLab 17 changes](https://docs.gitlab.com/ee/update/versions/gitlab_17_cha To upgrade to the `8.0` version of the chart, you first need to upgrade to the latest `7.11.x` release of the chart. Check the [version mapping details](../installation/version_mappings.md) for the latest patch. +### Upgrade to 8.8.0 + +If you disabled the [`shared-secrets` job](../charts/shared-secrets.md#disable-functionality), +you'll need to manually create three new secrets. If you have it enabled (default behavior), then there's nothing to do, as the new secrets will be auto-generated. + +- `active_record_encryption_primary_key` +- `active_record_encryption_deterministic_key` +- `active_record_encryption_key_derivation_salt` + +The secrets format can be seen in [the GitLab Rails secrets section](../installation/secrets.md#gitlab-rails-secret). + +Here are the steps to populate these 3 secrets: + +1. [Back up the secrets](../backup-restore/backup.md#back-up-the-secrets). +1. Generate 3 different 32-chars random strings –one for each of the new secrets– with `LC_ALL=C < /dev/urandom tr -dc 'a-zA-Z0-9' | head -c 32` +1. Add the secrets at the end of `gitlab-secrets.yaml`: + + ```yaml + active_record_encryption_primary_key: + - "<first 32-chars random string>" + active_record_encryption_deterministic_key: + - "<second 32-chars random string>" + active_record_encryption_key_derivation_salt: "<third 32-chars random string>" + ``` + +1. Create a new `secret` resource (replace `<name>` with the name of the release): + + ```shell + kubectl create secret generic <name>-rails-secret-v2 --from-file=gitlab-secrets.yaml + ``` + +1. Update the `global.railsSecrets.secret` in your `values.yaml` file to point to the new `<name>-rails-secret-v2` secret resource. +1. Upgrade the GitLab Chart release with this new value, but making sure other old values still apply (for example, [don't use the `--reuse-values` flag](../installation/upgrade.md)). +1. Confirm that GitLab is working as expected. If it is, it should be safe to delete the old `<name>-rails-secret` secret resource. + ### Upgrade to 8.6.0 The `app` label of the Job that performs the database migrations for the registry metadata database has diff --git a/chart/requirements.lock b/chart/requirements.lock index e89ef718c740c925e28dad1bba6f356066b27c5f..b3a85663b6a1fae42451813b89f70094f6ff6229 100644 --- a/chart/requirements.lock +++ b/chart/requirements.lock @@ -22,7 +22,7 @@ dependencies: version: 12.5.2 - name: gitlab-runner repository: https://charts.gitlab.io/ - version: 0.71.0 + version: 0.72.0 - name: redis repository: https://charts.bitnami.com/bitnami version: 16.13.2 @@ -37,12 +37,12 @@ dependencies: version: 1.4.3 - name: gluon repository: oci://registry1.dso.mil/bigbang - version: 0.5.12 + version: 0.5.14 - name: traefik repository: https://helm.traefik.io/traefik version: 10.19.4 - name: kubernetes-ingress repository: https://haproxytech.github.io/helm-charts version: 1.32.0 -digest: sha256:21dd06b33ea0567bdece9abb2a3dff308e4d9111d4f3c91667e8d12c7d7e92d0 -generated: "2025-01-15T13:08:24.330905-05:00" +digest: sha256:c426626626761ac60ff8acc301c56da4af0a16aaf92c915c0ff04c40a30ea109 +generated: "2025-01-24T17:56:34.90962225-06:00" diff --git a/chart/requirements.yaml b/chart/requirements.yaml index 2fda5f93e1736cdf61146dc6ebf7463a7fafd0c5..81c452430c5bc2176e9d6f7261465e893742c68a 100644 --- a/chart/requirements.yaml +++ b/chart/requirements.yaml @@ -21,7 +21,7 @@ dependencies: repository: https://charts.bitnami.com/bitnami condition: postgresql.install - name: gitlab-runner - version: 0.71.0 + version: 0.72.0 repository: https://charts.gitlab.io/ condition: gitlab-runner.install - name: redis @@ -40,7 +40,7 @@ dependencies: repository: https://charts.gitlab.io/ condition: gitlab-zoekt.install - name: gluon - version: "0.5.12" + version: "0.5.14" repository: "oci://registry1.dso.mil/bigbang" - name: traefik repository: https://helm.traefik.io/traefik diff --git a/chart/spec/configuration/certmanager_issuer_spec.rb b/chart/spec/configuration/certmanager_issuer_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..af35dbecc3fc610361f33f8f69a0ba896458f5c4 --- /dev/null +++ b/chart/spec/configuration/certmanager_issuer_spec.rb @@ -0,0 +1,96 @@ +# frozen_string_literal: true + +require 'spec_helper' +require 'hash_deep_merge' +require 'helm_template_helper' +require 'yaml' + +describe 'certmanager_issuer configuration' do + let(:default_values) do + HelmTemplate.defaults + end + + let(:required_resources) do + %w[Role RoleBinding ServiceAccount] + end + + context 'default chart values' do + it 'creates certmanager_issuer related resources with default values' do + template = HelmTemplate.new(default_values) + + required_resources.each do |resource| + resource_name = "#{resource}/test-certmanager-issuer" + + expect(template.resources_by_kind(resource)[resource_name]).to be_present + end + + jobs = template.resources_by_kind("Job") + issuer_job = jobs.find { |key, _| key.start_with?("Job/test-issuer-") }.last + + # Expectation for the metadata name prefix + expect(issuer_job["metadata"]["name"]).to match(/^test-issuer-[a-f0-9]+$/) + + # Expectation for the container image needs to be a regex to work for master and stable branches. + expect(issuer_job["spec"]["template"]["spec"]["containers"][0]["image"]).to match(%r{^registry\.gitlab\.com/gitlab-org/build/cng/kubectl:(v\d+\.\d+\.\d+|master)$}) + + # Expectation for the rest of the structure + expect(issuer_job).to include( + "apiVersion" => "batch/v1", + "kind" => "Job", + "metadata" => include( + "namespace" => "default", + "labels" => { + "app" => "certmanager-issuer", + "chart" => "certmanager-issuer-0.2.0", + "release" => "test", + "heritage" => "Helm" + } + ), + "spec" => include( + "activeDeadlineSeconds" => 300, + "ttlSecondsAfterFinished" => 1800, + "template" => include( + "metadata" => { "labels" => { "app" => "certmanager-issuer", "release" => "test" } }, + "spec" => include( + "securityContext" => { "runAsUser" => 65534, "fsGroup" => 65534, "seccompProfile" => { "type" => "RuntimeDefault" } }, + "serviceAccountName" => "test-certmanager-issuer", + "restartPolicy" => "OnFailure", + "containers" => include( + include( + "name" => "create-issuer", + "command" => ["/bin/bash", "/scripts/create-issuer", "/scripts/issuer.yml"], + "securityContext" => { + "allowPrivilegeEscalation" => false, + "capabilities" => { "drop" => ["ALL"] }, + "runAsGroup" => 65534, + "runAsNonRoot" => true, + "runAsUser" => 65534 + }, + "volumeMounts" => [{ "name" => "scripts", "mountPath" => "/scripts" }], + "resources" => { "requests" => { "cpu" => "50m" } } + ) + ), + "volumes" => [{ "name" => "scripts", "configMap" => { "name" => "test-certmanager-issuer-certmanager" } }] + ) + ) + ) + ) + end + end + + context 'when configureCertmanager is disabled' do + it 'does not create any certmanager_issuer related resource' do + template = HelmTemplate.new(default_values.deep_merge!( + { 'global' => { 'ingress' => { 'configureCertmanager' => false } } }) + ) + + required_resources.each do |resource| + resource_name = "#{resource}/test-certmanager-issuer" + + expect(template.resources_by_kind(resource)[resource_name]).to be_nil + end + + expect(template.resources_by_kind("Job").keys.select { |k| k.start_with?("Job/test-issuer-") }).to be_empty + end + end +end diff --git a/chart/spec/configuration/gitaly_spec.rb b/chart/spec/configuration/gitaly_spec.rb index 422a152b82615abb772175695e7a551908b0d973..98a9bc28a4bed0186acf69b09a7fea70feb75010 100644 --- a/chart/spec/configuration/gitaly_spec.rb +++ b/chart/spec/configuration/gitaly_spec.rb @@ -527,6 +527,42 @@ describe 'Gitaly configuration' do end end + context 'shareProcessNamespace' do + let(:values) do + YAML.safe_load(%( + gitlab: + gitaly: + shareProcessNamespace: #{share_process_namespace_enabled} + )).merge(default_values) + end + + let(:gitaly_stateful_set) { 'StatefulSet/test-gitaly' } + + context 'when enabled' do + let(:share_process_namespace_enabled) { true } + + it 'enables shareProcessNamespace' do + t = HelmTemplate.new(values) + gitaly_set = t.resources_by_kind('StatefulSet').select { |key| key == gitaly_stateful_set } + gitaly_template_spec = gitaly_set[gitaly_stateful_set]['spec']['template']['spec'] + expect(gitaly_template_spec).to include( + 'shareProcessNamespace' => true + ) + end + end + + context 'when not enabled' do + let(:share_process_namespace_enabled) { false } + + it 'does not set shareProcessNamespace' do + t = HelmTemplate.new(values) + gitaly_set = t.resources_by_kind('StatefulSet').select { |key| key == gitaly_stateful_set } + gitaly_template_spec = gitaly_set[gitaly_stateful_set]['spec']['template']['spec'] + expect(gitaly_template_spec).not_to include('shareProcessNamespace') + end + end + end + context 'cgroups' do let(:values) do YAML.safe_load(%( diff --git a/chart/spec/configuration/gitlab_exporter_spec.rb b/chart/spec/configuration/gitlab_exporter_spec.rb index d5550ff29ffc0d105cd26dc9c926ddf1acce00a4..e69420211947e684d9ed499df233a297eded90aa 100644 --- a/chart/spec/configuration/gitlab_exporter_spec.rb +++ b/chart/spec/configuration/gitlab_exporter_spec.rb @@ -35,11 +35,26 @@ describe 'gitlab-exporter configuration' do it 'configures Redis' do expect(template.exit_code).to eq(0), "Unexpected error code #{template.exit_code} -- #{template.stderr}" - expect(sidekiq_config['opts']['redis_url']).to eq("redis://:#{password}@test-redis-master.default.svc:6379") + expect(sidekiq_config['opts']['redis_url']).to eq("redis://:#{password}@test-redis-master.default.svc:6379/0") expect(sidekiq_config['opts']).not_to include('redis_sentinels') end end + context 'with custom redis database value' do + let(:values) do + YAML.safe_load(%( + global: + redis: + database: 4 + )).deep_merge(default_values) + end + + it 'configures Redis' do + expect(template.exit_code).to eq(0), "Unexpected error code #{template.exit_code} -- #{template.stderr}" + expect(sidekiq_config['opts']['redis_url']).to eq("redis://:#{password}@test-redis-master.default.svc:6379/4") + end + end + context 'When customer provides additional labels' do let(:values) do YAML.safe_load(%( @@ -103,7 +118,7 @@ describe 'gitlab-exporter configuration' do it 'configures Sentinels' do expect(template.exit_code).to eq(0), "Unexpected error code #{template.exit_code} -- #{template.stderr}" - expect(sidekiq_config['opts']['redis_url']).to eq("redis://:#{password}@global.host:6379") + expect(sidekiq_config['opts']['redis_url']).to eq("redis://:#{password}@global.host:6379/0") expect(sidekiq_config['opts']['redis_sentinels']).to eq( [ { 'host' => 'sentinel1.example.com', 'port' => 26379 }, @@ -131,7 +146,7 @@ describe 'gitlab-exporter configuration' do it 'configures Sentinels' do expect(template.exit_code).to eq(0), "Unexpected error code #{template.exit_code} -- #{template.stderr}" - expect(sidekiq_config['opts']['redis_url']).to eq("redis://:#{password}@queues.redis.host:6379") + expect(sidekiq_config['opts']['redis_url']).to eq("redis://:#{password}@queues.redis.host:6379/0") expect(sidekiq_config['opts']['redis_sentinels']).to eq( [ { 'host' => 'sentinel1.example.com', 'port' => 26379 }, @@ -164,7 +179,7 @@ describe 'gitlab-exporter configuration' do it 'configures Sentinels with password' do expect(template.exit_code).to eq(0), "Unexpected error code #{template.exit_code} -- #{template.stderr}" - expect(sidekiq_config['opts']['redis_url']).to eq("redis://:#{password}@global.host:6379") + expect(sidekiq_config['opts']['redis_url']).to eq("redis://:#{password}@global.host:6379/0") expect(sidekiq_config['opts']['redis_sentinel_password']).to eq(RuntimeTemplate::JUNK_PASSWORD) expect(sidekiq_config['opts']['redis_sentinels']).to eq( [ diff --git a/chart/spec/configuration/kas_spec.rb b/chart/spec/configuration/kas_spec.rb index b8bbf86e8a1cc1acac1bd8765ff2462d81ea5eaf..ffec4c9b3fddba8335f2f84a060dd1eb320819e7 100644 --- a/chart/spec/configuration/kas_spec.rb +++ b/chart/spec/configuration/kas_spec.rb @@ -290,6 +290,19 @@ describe 'kas configuration' do )) end + let(:sentinels_database) do + YAML.safe_load(%( + redis: + host: global.host + database: 6 + sentinels: + - host: sentinel1.example.com + port: 26379 + - host: sentinel2.example.com + port: 26379 + )) + end + context 'when redis is disabled' do let(:kas_values) do default_kas_values.deep_merge!(YAML.safe_load(%( @@ -336,9 +349,28 @@ describe 'kas configuration' do end end + context 'when global redis has database value' do + let(:kas_values) do + default_kas_values.deep_merge!(YAML.safe_load(%( + global: + redis: + database: 3 + ))) + end + + it 'has set url' do + expect(config_yaml_data['redis']).to include(YAML.safe_load(%( + database_index: 3 + server: + address: test-redis-master.default.svc:6379 + ))) + end + end + context 'when no sentinel is setup' do it 'takes the global redis config' do expect(config_yaml_data['redis']).to include(YAML.safe_load(%( + database_index: 0 password_file: /etc/kas/redis/redis-password server: address: test-redis-master.default.svc:6379 @@ -359,6 +391,28 @@ describe 'kas configuration' do it 'takes the global sentinel redis config' do expect(config_yaml_data['redis']).to include(YAML.safe_load(%( + database_index: 0 + sentinel: + addresses: + - sentinel1.example.com:26379 + - sentinel2.example.com:26379 + master_name: global.host + ))) + end + end + + context 'when sentinel and database are setup' do + let(:kas_values) do + vals = default_kas_values + vals['global'].deep_merge!(sentinels_database) + vals.deep_merge!('redis' => { 'install' => false }) + end + + it_behaves_like 'mounts global redis secret' + + it 'takes the global sentinel and database redis config' do + expect(config_yaml_data['redis']).to include(YAML.safe_load(%( + database_index: 6 sentinel: addresses: - sentinel1.example.com:26379 @@ -439,6 +493,7 @@ describe 'kas configuration' do let(:sentinels) { {} } it 'configures a sharedState server config' do expect(config_yaml_data['redis']).to include(YAML.safe_load(%( + database_index: 0 password_file: /etc/kas/redis/sharedState-password server: address: shared.redis:6378 diff --git a/chart/spec/configuration/mailroom_spec.rb b/chart/spec/configuration/mailroom_spec.rb index 1b94ccc49adc39412e67bf6c992b9b6c307557b4..fcdaeb5c1464ae3c8879d62632e135c8a5aa78d6 100644 --- a/chart/spec/configuration/mailroom_spec.rb +++ b/chart/spec/configuration/mailroom_spec.rb @@ -330,13 +330,27 @@ describe 'Mailroom configuration' do t = HelmTemplate.new(values) expect(t.exit_code).to eq(0) # configure the external-redis server, port, secret - expect(t.dig('ConfigMap/test-mailroom','data','mail_room.yml')).to include("external-redis:9999") + expect(t.dig('ConfigMap/test-mailroom','data','mail_room.yml')).to include("external-redis:9999/0") projected_volume = t.projected_volume_sources('Deployment/test-mailroom','init-mailroom-secrets') redis_mount = projected_volume.select { |item| item['secret']['name'] == "external-redis-secret" } expect(redis_mount.length).to eq(1) expect(t.dig('ConfigMap/test-mailroom','data','mail_room.yml')).not_to include(":sentinels:") end + it 'Populates configured database host, port, password' do + local = YAML.safe_load(%( + global: + redis: + host: external-redis + port: 9999 + database: 7 + )) + t = HelmTemplate.new(values.deep_merge(local)) + expect(t.exit_code).to eq(0) + # configure the external-redis server, port, secret + expect(t.dig('ConfigMap/test-mailroom','data','mail_room.yml')).to include("external-redis:9999/7") + end + it 'Populates Sentinels, when configured' do local = YAML.safe_load(%( global: diff --git a/chart/spec/configuration/redis_spec.rb b/chart/spec/configuration/redis_spec.rb index dd5db4230b04f7b7330a5ba0e5f47dc425f3091f..5f5720c1eacbf7ab30883d655c80396e342a003d 100644 --- a/chart/spec/configuration/redis_spec.rb +++ b/chart/spec/configuration/redis_spec.rb @@ -45,6 +45,26 @@ describe 'Redis configuration' do expect(resque_yml.dig('production', 'write_timeout')).to eq(5) end end + + context 'custom redis database value' do + let(:values) do + YAML.safe_load(%( + global: + redis: + host: resque.redis + port: 6379 + database: 4 + redis: + install: false + )).deep_merge(default_values) + end + + it 'configures Redis' do + t = HelmTemplate.new(values) + expect(t.exit_code).to eq(0), "Unexpected error code #{template.exit_code} -- #{template.stderr}" + expect(t.dig('ConfigMap/test-webservice','data','resque.yml.erb')).to include("resque.redis:6379/4") + end + end end describe 'global.redis.auth.enabled' do diff --git a/chart/spec/configuration/workhorse_spec.rb b/chart/spec/configuration/workhorse_spec.rb index d8c27b583799c79b2e16420cd0c0fa95340aa8d0..7240bf9b34f82d5e58d7141b13af360cdebcc51c 100644 --- a/chart/spec/configuration/workhorse_spec.rb +++ b/chart/spec/configuration/workhorse_spec.rb @@ -155,18 +155,50 @@ describe 'Workhorse configuration' do context 'configuring dedicated redis' do let(:template) { HelmTemplate.new(values) } + context 'with default redis database' do + let(:values) do + YAML.safe_load(%( + global: + redis: + host: global.redis + auth: + enabled: true + secret: global-secret + redis: + install: false + )).deep_merge(default_values) + end + + it 'renders the global redis config' do + toml = render_toml(raw_toml) + + expect(toml.keys).to match_array(%w[shutdown_timeout listeners image_resizer redis]) + + redis_config = toml['redis'] + + expect(redis_config.keys).to match_array(%w[URL Password DB]) + expect(redis_config['URL']).to eq('redis://global.redis:6379') + expect(redis_config['DB']).to eq(0) + expect(redis_config['Password']).to eq(global_redis_password) + + expect(template.dig("ConfigMap/test-workhorse-default", 'data', 'workhorse-config.toml.tpl')).to include('redis/redis-password') + expect(template.dig('ConfigMap/test-workhorse-default', 'data', 'configure')).to include('init-config/redis/redis-password') + end + end + context 'with global redis' do let(:values) do YAML.safe_load(%( global: redis: host: global.redis + database: 3 auth: enabled: true secret: global-secret redis: install: false - )).merge(default_values) + )).deep_merge(default_values) end it 'renders the global redis config' do @@ -176,8 +208,9 @@ describe 'Workhorse configuration' do redis_config = toml['redis'] - expect(redis_config.keys).to match_array(%w[URL Password]) + expect(redis_config.keys).to match_array(%w[URL Password DB]) expect(redis_config['URL']).to eq('redis://global.redis:6379') + expect(redis_config['DB']).to eq(3) expect(redis_config['Password']).to eq(global_redis_password) expect(template.dig("ConfigMap/test-workhorse-default", 'data', 'workhorse-config.toml.tpl')).to include('redis/redis-password') @@ -210,8 +243,9 @@ describe 'Workhorse configuration' do expect(toml.keys).to match_array(%w[shutdown_timeout listeners image_resizer redis]) redis_config = toml['redis'] - expect(redis_config.keys).to match_array(%w[URL Password]) + expect(redis_config.keys).to match_array(%w[URL Password DB]) expect(redis_config['URL']).to eq('redis://workhorse.redis:6379') + expect(redis_config['DB']).to eq(0) expect(redis_config['Password']).to eq(workhorse_redis_password) expect(template.dig("ConfigMap/test-workhorse-default", 'data', 'workhorse-config.toml.tpl')).to include('redis/workhorse-password') expect(template.dig('ConfigMap/test-workhorse-default', 'data', 'configure')).to include('init-config/redis/workhorse-password') @@ -228,8 +262,9 @@ describe 'Workhorse configuration' do expect(toml.keys).to match_array(%w[shutdown_timeout listeners image_resizer redis]) redis_config = toml['redis'] - expect(redis_config.keys).to match_array(%w[URL]) + expect(redis_config.keys).to match_array(%w[URL DB]) expect(redis_config['URL']).to eq('redis://workhorse.redis:6379') + expect(redis_config['DB']).to eq(0) end end end @@ -254,8 +289,9 @@ describe 'Workhorse configuration' do expect(toml.keys).to match_array(%w[shutdown_timeout listeners image_resizer redis]) redis_config = toml['redis'] - expect(redis_config.keys).to match_array(%w[URL Password]) + expect(redis_config.keys).to match_array(%w[URL Password DB]) expect(redis_config['URL']).to eq('redis://redis-user@workhorse.redis:6379') + expect(redis_config['DB']).to eq(0) expect(redis_config['Password']).to eq(workhorse_redis_password) expect(template.dig("ConfigMap/test-workhorse-default", 'data', 'workhorse-config.toml.tpl')).to include('redis/workhorse-password') expect(template.dig('ConfigMap/test-workhorse-default', 'data', 'configure')).to include('init-config/redis/workhorse-password') @@ -269,6 +305,7 @@ describe 'Workhorse configuration' do global: redis: host: global.redis + database: 7 auth: enabled: true secret: global-secret @@ -290,20 +327,22 @@ describe 'Workhorse configuration' do expect(toml.keys).to match_array(%w[shutdown_timeout listeners image_resizer redis]) redis_config = toml['redis'] - expect(redis_config.keys).to match_array(%w[URL Password]) + expect(redis_config.keys).to match_array(%w[URL Password DB]) expect(redis_config['URL']).to eq('redis://workhorse-redis-user@workhorse.redis:6379') + expect(redis_config['DB']).to eq(7) expect(redis_config['Password']).to eq(workhorse_redis_password) expect(template.dig("ConfigMap/test-workhorse-default", 'data', 'workhorse-config.toml.tpl')).to include('redis/workhorse-password') expect(template.dig('ConfigMap/test-workhorse-default', 'data', 'configure')).to include('init-config/redis/workhorse-password') end end - context 'with redis sentinel' do + context 'with redis sentinel and database' do let(:values) do YAML.safe_load(%( global: redis: host: global.redis + database: 9 auth: enabled: true secret: global-secret @@ -334,10 +373,11 @@ describe 'Workhorse configuration' do expect(toml.keys).to match_array(%w[shutdown_timeout listeners image_resizer redis]) redis_config = toml['redis'] - expect(redis_config.keys).to match_array(%w[Password SentinelMaster Sentinel]) + expect(redis_config.keys).to match_array(%w[Password SentinelMaster Sentinel DB]) expect(redis_config['SentinelMaster']).to eq('workhorse.redis') expect(redis_config['Sentinel']).to match_array(%w[tcp://s1.workhorse.redis:26379 tcp://s2.workhorse.redis:26379]) expect(redis_config['Password']).to eq(workhorse_redis_password) + expect(redis_config['DB']).to eq(9) expect(template.dig("ConfigMap/test-workhorse-default", "data", 'workhorse-config.toml.tpl')).to include('redis/workhorse-password') expect(template.dig('ConfigMap/test-workhorse-default', 'data', 'configure')).to include('init-config/redis/workhorse-password') end @@ -353,7 +393,7 @@ describe 'Workhorse configuration' do expect(toml.keys).to match_array(%w[shutdown_timeout listeners image_resizer redis]) redis_config = toml['redis'] - expect(redis_config.keys).to match_array(%w[SentinelMaster Sentinel]) + expect(redis_config.keys).to match_array(%w[SentinelMaster Sentinel DB]) expect(redis_config['SentinelMaster']).to eq('workhorse.redis') expect(redis_config['Sentinel']).to match_array(%w[tcp://s1.workhorse.redis:26379 tcp://s2.workhorse.redis:26379]) end @@ -397,11 +437,12 @@ describe 'Workhorse configuration' do expect(toml.keys).to match_array(%w[shutdown_timeout listeners image_resizer redis]) redis_config = toml['redis'] - expect(redis_config.keys).to match_array(%w[Password SentinelMaster Sentinel SentinelPassword]) + expect(redis_config.keys).to match_array(%w[Password SentinelMaster Sentinel SentinelPassword DB]) expect(redis_config['SentinelMaster']).to eq('workhorse.redis') expect(redis_config['Sentinel']).to match_array(%w[tcp://s1.workhorse.redis:26379 tcp://s2.workhorse.redis:26379]) expect(redis_config['Password']).to eq(workhorse_redis_password) expect(redis_config['SentinelPassword']).to eq(global_redis_sentinel_password) + expect(redis_config['DB']).to eq(0) expect(template.exit_code).to eq(0), "Unexpected error code #{template.exit_code} -- #{template.stderr}" diff --git a/chart/spec/gitlab_test_helper.rb b/chart/spec/gitlab_test_helper.rb index 33808c0b70b2775ee4928040a2bf9be9a9b3a038..93b4c3ae969f509fcd3b8dfc9a0e8bcdb9cd26d4 100644 --- a/chart/spec/gitlab_test_helper.rb +++ b/chart/spec/gitlab_test_helper.rb @@ -150,7 +150,9 @@ module Gitlab filters="#{filters},release=#{ENV['RELEASE_NAME']}" end - stdout, status = Open3.capture2e("kubectl rollout status #{type} -l'#{filters}' --timeout=#{kube_timeout_parse('KUBE_ROLLOUT_TIMEOUT')}") + cmd = "kubectl rollout status #{type} -l'#{filters}' --timeout=#{kube_timeout_parse('KUBE_ROLLOUT_TIMEOUT')}" + puts "Executing in Namespace #{ENV['KUBE_NAMESPACE']}: #{cmd}" + stdout, status = Open3.capture2e(cmd) raise stdout unless status.success? end diff --git a/chart/templates/_redis.tpl b/chart/templates/_redis.tpl index 7ba03e59ee1624e64cd046b8ed7dc0ed8dcc4769..7935acf010448fc736812cad1354bc05ebba887e 100644 --- a/chart/templates/_redis.tpl +++ b/chart/templates/_redis.tpl @@ -15,7 +15,7 @@ Build a dict of redis configuration {{- if and $.Values.global.redis.redisYmlOverride $.redisConfigName -}} {{- $hasOverrideSecret = (kindIs "map" (dig $.redisConfigName "password" "" $.Values.global.redis.redisYmlOverride)) -}} {{- end -}} -{{- range $want := list "host" "port" "scheme" "user" -}} +{{- range $want := list "host" "port" "scheme" "user" "database" -}} {{- $_ := set $.redisMergedConfig $want (pluck $want (index $.Values.global.redis $.redisConfigName) $.Values.global.redis | first) -}} {{- end -}} {{- if and $hasOverrideSecret $.usingOverride -}} diff --git a/chart/values.yaml b/chart/values.yaml index 6ebcac5ec67fa08aa7ec3a263515a585f1223b2d..2a929b284ced51dc281a3cee6742a9594c52d191 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -57,7 +57,7 @@ global: edition: ee ## https://docs.gitlab.com/charts/charts/globals#gitlab-version - gitlabVersion: "17.7.2" + gitlabVersion: "17.8.1" ## https://docs.gitlab.com/charts/charts/globals#application-resource application: @@ -193,6 +193,7 @@ global: # writeTimeout: 1 # host: redis.hostedsomewhere.else # port: 6379 + # database: 0 # user: webservice # sentinels: # - host: @@ -825,7 +826,7 @@ global: certificates: image: repository: registry1.dso.mil/ironbank/gitlab/gitlab/certificates - tag: 17.7.2 + tag: 17.8.1 pullSecrets: - name: private-registry init: @@ -874,7 +875,7 @@ global: kubectl: image: repository: registry1.dso.mil/ironbank/gitlab/gitlab/kubectl - tag: 17.7.2 + tag: 17.8.1 pullSecrets: - name: private-registry securityContext: @@ -891,7 +892,7 @@ global: # 1. UBI does not have the newly required /scripts/set-config template generator in its entrypoint. # a. trying gitlab-base per https://repo1.dso.mil/dsop/gitlab/gitlab/gitlab-base/-/issues/77 repository: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-base - tag: "17.7.2" + tag: "17.8.1" pullSecrets: - name: private-registry @@ -1478,7 +1479,7 @@ registry: memory: 1024Mi image: repository: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-container-registry - tag: 17.7.2 + tag: 17.8.1 pullSecrets: - name: private-registry ingress: @@ -1618,7 +1619,7 @@ gitlab: app: gitaly image: repository: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-toolbox - tag: 17.7.2 + tag: 17.8.1 pullSecrets: - name: private-registry init: @@ -1695,7 +1696,7 @@ gitlab: - ALL image: repository: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-exporter - tag: 17.7.2 + tag: 17.8.1 pullSecrets: - name: private-registry metrics: @@ -1740,7 +1741,7 @@ gitlab: memory: 1.5G image: repository: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-toolbox - tag: 17.7.2 + tag: 17.8.1 pullSecrets: - name: private-registry securityContext: @@ -1789,7 +1790,7 @@ gitlab: memory: 2.5G # = 2 * 1.25G assuming there are 2 workerProcesses configured image: repository: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-webservice - tag: 17.7.2 + tag: 17.8.1 pullSecrets: - name: private-registry workhorse: @@ -1802,7 +1803,7 @@ gitlab: cpu: 600m memory: 2.5G image: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-workhorse - tag: 17.7.2 + tag: 17.8.1 pullSecrets: - name: private-registry metrics: @@ -1826,7 +1827,7 @@ gitlab: sidekiq: image: repository: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-sidekiq - tag: 17.7.2 + tag: 17.8.1 pullSecrets: - name: private-registry init: @@ -1863,7 +1864,7 @@ gitlab: gitaly: image: repository: registry1.dso.mil/ironbank/gitlab/gitlab/gitaly - tag: 17.7.2 + tag: 17.8.1 pullSecrets: - name: private-registry init: @@ -1904,7 +1905,7 @@ gitlab: gitlab-shell: image: repository: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-shell - tag: 17.7.2 + tag: 17.8.1 pullSecrets: - name: private-registry init: @@ -1948,7 +1949,7 @@ gitlab: mailroom: image: repository: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-mailroom - tag: 17.7.2 + tag: 17.8.1 pullSecrets: - name: private-registry containerSecurityContext: @@ -1965,7 +1966,7 @@ gitlab: type: ClusterIP image: repository: registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-pages - tag: 17.7.2 + tag: 17.8.1 containerSecurityContext: capabilities: drop: @@ -1976,7 +1977,7 @@ gitlab: praefect: image: repository: registry1.dso.mil/ironbank/gitlab/gitlab/gitaly - tag: 17.7.2 + tag: 17.8.1 init: resources: limits: diff --git a/tests/images.txt b/tests/images.txt index 4a0d41c595abbec97746f5f26ea491b4f7e87ade..a2e288edd45c562991020280dab6459769e588a1 100644 --- a/tests/images.txt +++ b/tests/images.txt @@ -1,2 +1,2 @@ -registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-exporter:17.7.2 -registry1.dso.mil/ironbank/gitlab/gitlab/kubectl:17.7.2 +registry1.dso.mil/ironbank/gitlab/gitlab/gitlab-exporter:17.8.1 +registry1.dso.mil/ironbank/gitlab/gitlab/kubectl:17.8.1