# Shares the same Authentik OAuth2 provider/client_id as home's GitLab # (infrastructure/authentik/gitlab-blueprint.yaml has both redirect_uris # registered). Same Vault path (secret/gitlab-oauth) home's copy reads # from - vps-eso-reader policy widened to allow this one extra path # (infrastructure/vps-eso/manifests/clustersecretstore.yaml's policy, # applied live via vault CLI, not git-tracked - matches how every other # Vault policy/auth-method in this repo is set up). # # `provider` key added 2026-08-21: found live that GITLAB_OMNIBUS_CONFIG # (this app's values.yaml extraEnv) is an omnibus-image-only convention # the CNG webservice image never processes - see the matching comment # in apps/gitlab/manifests/external-secret-oidc.yaml (home) for the # full story. The real mechanism needs this key to hold a whole # YAML-encoded provider block, not raw client_id/secret strings. apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: name: gitlab-oidc namespace: gitlab spec: refreshInterval: 1h secretStoreRef: kind: ClusterSecretStore name: vault-backend target: name: gitlab-oidc-secret creationPolicy: Owner template: type: Opaque data: GITLAB_OIDC_CLIENT_ID: "{{ .clientId }}" GITLAB_OIDC_CLIENT_SECRET: "{{ .clientSecret }}" provider: | name: openid_connect label: Authentik args: name: openid_connect scope: - openid - profile - email response_type: code issuer: 'https://auth.kube.huskypup.net/application/o/gitlab/' discovery: true client_auth_method: query uid_field: sub send_scope_to_token_endpoint: true pkce: true client_options: identifier: '{{ .clientId }}' secret: '{{ .clientSecret }}' redirect_uri: 'https://gitlab.vps.huskypup.net/users/auth/openid_connect/callback' data: - secretKey: clientId remoteRef: key: gitlab-oauth property: client-id - secretKey: clientSecret remoteRef: key: gitlab-oauth property: client-secret