Перейти к содержанию

Marivanna

Описание

Marivanna - это сервис для анализа Android-приложений методом байт-код анализа.

Функциональные возможности

Проведение статического анализа приложения.

Используемые топики

Переменная marivanna.1.0.taskEvents, используется для уведомления о состоянии сканирования.

БД

Redis.

Переменные сервиса

REST API container

С таблицами переменных доступа и настроек логирования можно ознакомиться в разделах «Доступ к S3», «Доступ к Redis», «Доступ к Kafka», «Настройки логирования».

Worker container

С таблицами переменных доступа и настроек логирования можно ознакомиться в разделах «Доступ к S3», «Доступ к Redis», «Доступ к Kafka», «Настройки логирования».

Настройки сервиса:

Имя переменной Описание Примечание Варианты значений Обязательно Пример значения Значение в values
STG_MARIANA_CONF_DIR Директория с конфигами mariana Если не указывать, будет применяться дефолтный путь - /app/mariana-trench - Нет /app/mariana-trench -

Схема интеграции сервиса Marivanna

Шаг 1. Получение авторизационного токена. Бэкенд монолита, используя переданные ему client_id и client_secret, авторизуется в Keycloak и получает access_token.

Шаг 2. Отправка запроса в сервис Marivanna. Запрос снабжается Authorization-заголовком, содержащим полученный access_token.

Шаг 3. Проверка входящего запроса на наличие валидного Authorization-заголовка.

Шаг 4.1. Запрос далее перенаправляется в целевой сервис (Marivanna).

Шаг 4.2. В случае невалидного Authorization-заголовка (или его отсутствия), монолиту возвращается HTTP 401.

Организация сетевого доступа

Необходимо настроить сетевую инфраструктуру таким образом, чтобы монолиту были доступны следующие ресурсы:

  1. Keycloak/Platform V IAM.
  2. Ingress (MinIO-api, OAuth2, Keycloak, а также микросервис, который закрыт backend-auth аннотацией).

Эти ресурсы должны быть доступны по протоколам и портам, соответствующим тем URL, которые были переданы в переменные окружения MARIVANNA_BASE_URL и STINGRAY_SERVICES_AUTH_URL, см. раздел «Stingray (действующий монолит)».

Первичная настройка

Дефолтные значения представлены в документации с чартом README.md.

Настройка Redis

Для настройки Redis необходимо предоставить доступ к Redis, развёрнутому в инфраструктуре и включающему следующие параметры:

  1. FQDN сервера.
  2. TCP порт для подключения.
  3. Redis namespace.
  4. Имя пользователя.
  5. Пароль.

Значения параметров 1, 2, 3 и 4 необходимо включить в файл values.yaml нашего Helm chart, параметры:

  • marivanna.redis.stgRedisHost.
  • marivanna.redis.stgRedisPort.
  • marivanna.redis.stgRedisNamespace.
  • marivanna.redis.stgRedisUser.

Примечание

Значение параметра 5 необходимо включить в состав секретов.

У пользователя должны быть включены следующие права доступа: GET, SET, DELETE, RPOP, BRPOP, LPUSH.

Настройка Kafka

Для настройки Kafka необходимо предоставить доступ к Kafka, развёрнутому в инфраструктуре и включающему следующие параметры:

  1. Если Kafka использует анонимный доступ, то:

    • адреса брокеров Kafka;
    • топик для нотификаций S3.
  2. Если Kafka использует авторизацию, то:

    • адреса брокеров Kafka;
    • топик для нотификаций S3;
    • имя пользователя Kafka;
    • пароль пользователя Kafka;
    • SASL mechanism.

Настройка S3

Для настройки S3 необходимо развернуть S3-хранилище.

Примечание

В данной документации предполагается использование MinIO.

При установке MinIO необходимо задать параметры нотификаций о событиях в Kafka, а именно переменные окружения:

  1. Если Kafka использует анонимный доступ, то:

    • MINIO_NOTIFY_KAFKA_ENABLE_NO_AUTH=on.
    • MINIO_NOTIFY_KAFKA_BROKERS_NO_AUTH - адреса брокеров Kafka.
    • MINIO_NOTIFY_KAFKA_TOPIC_NO_AUTH - топик для нотификаций S3.
  2. Если Kafka использует авторизацию, то:

    • MINIO_NOTIFY_KAFKA_ENABLE=on.
    • MINIO_NOTIFY_KAFKA_BROKERS - адреса брокеров Kafka.
    • MINIO_NOTIFY_KAFKA_TOPIC - топик для нотификаций S3.
    • MINIO_NOTIFY_KAFKA_SASL_USERNAME - имя пользователя Kafka.
    • MINIO_NOTIFY_KAFKA_SASL_PASSWORD - пароль пользователя Kafka.
    • MINIO_NOTIFY_KAFKA_SASL_MECHANISM - SASL mechanism.

Также необходимо создать бакет и ключи для авторизации в S3 API.

Необходимо предоставить доступ к S3-сервису, развёрнутому в инфраструктуре и включающему следующие параметры:

  1. URL для подключений к S3 API.
  2. Название бакета.
  3. Название региона.
  4. AWS access key.
  5. AWS secret key.

Значения параметров 1, 2 и 3 необходимо включить в файл values.yaml нашего Helm chart, параметры:

  • marivanna.s3.stgS3EndpointUrl;
  • marivanna.s3.stgS3Bucket;
  • marivanna.s3.stgS3Region.

Примечание

Значение параметров 4 и 5 необходимо включить в состав секретов.

Настройка OAuth2-proxy

Шаги по настройке OAuth2-proxy описаны в соответствующем разделе.

Примечание

Настройка OAuth2-proxy не входит непосредственно в установку сервиса Marivanna. При этом правильная настройка OAuth2-proxy является необходимым условием для интеграции сервиса Marivanna.

Настройка авторизации

Шаги по настройке авторизации описаны в соответствующем разделе.

Настройка Ingress

Для настройки Ingress на проксирование трафика к OAuth2-proxy и Marivanna сервису необходимо внести следующие изменения в values.yaml:

marivanna:
    ingress:
        enabled: true
        className: nginx-internal
        annotations:
            nginx.ingress.kubernetes.io/preserve-trailing-slash: "true"
            nginx.ingress.kubernetes.io/auth-url: https://oauth2-proxy.cluster.local/oauth2/auth
            nginx.ingress.kubernetes.io/auth-response-headers: x-authrequest-access-token
            nginx.ingress.kubernetes.io/proxy-buffer-size: 16k
            nginx.ingress.kubernetes.io/proxy-body-size: 500m
            nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
            nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
        hosts:
            - host: marivanna.cluster.local
              paths:
                - path: /
                  pathType: ImplementationSpecific
        tls:
            - secretName: XXX
              hosts:
                - marivanna.cluster.local
-------------------------------------------------------------------------------------------------
oauth2-proxy:
    ingress:
        enabled: true
        className: nginx-internal
        annotations:
            nginx.ingress.kubernetes.io/proxy-buffer-size: 16k
        hosts:
            - host: oauth2-proxy.cluster.local
              paths:
                - path: /
                  pathType: ImplementationSpecific
        tls:
            - secretName: k8s-secret
              hosts:
                - oauth2-proxy.cluster.local

Необходимо указать актуальный ingress class, tls secrets для https, актуальные hosts, в аннотации marivanna auth-url указать Ingress oauth2-proxy host и /oauth2/auth.

Конфигурация сервисов

Stingray (действующий монолит)

Необходимо пробросить следующие переменные окружения в backend-контейнер:

  1. MARIVANNA_CLIENT_ID - client_id OAUTH2-клиента, созданного для авторизации доступа из монолита к Marivanna-сервису.

  2. MARIVANNA_CLIENT_SECRET - client_secret OAUTH2-клиента, созданного для авторизации доступа из монолита к Marivanna-сервису.

  3. MARIVANNA_BASE_URL - URL, запросы на который проксируются с помощью Ingress в Marivanna-сервис.

  4. STINGRAY_SERVICES_AUTH_URL - URL, запросы на который проксируются с помощью Ingress в Keycloak token API (например, https://keycloak.dev.company.ru/realms/stingray/protocol/openid-connect/token) / Platform V IAM.

После этого необходимо выполнить перезапуск:

docker exec stingray-maintenance django-admin maintenance engines preserve
docker-compose down
docker-compose up -d
docker exec stingray-maintenance django-admin maintenance engines recreate

Деплой сервисов

Для деплоя сервисов необходимо заполнить следующие параметры в values.yaml:

marivanna:
    # marivanna.enabled -- Enable/Disable marivanna service
    enabled: true
    # marivanna.replicaCount -- Number of replica marivanna service
    replicaCount: 1

    image:
        # marivanna.image.registry -- Registry place image marivanna service
        registry: cr.yandex
        # marivanna.image.repository -- Repository place image marivanna service
        repository: stingray/marivanna
        # marivanna.image.tag -- Tag image marivanna service
        tag: latest
        # marivanna.image.pullPolicy -- Pull policy marivanna service (IfNotPresent / Always / Never )
        pullPolicy: IfNotPresent
        # marivanna.image.debug -- Enable/Disable debug mode
        debug: 0

    redis:
        # marivanna.redis.stgRedisHost -- FQDN Redis server
        stgRedisHost: redis.cluster.local
        # marivanna.redis.stgRedisPort -- Redis port (default 6379)
        stgRedisPort: 6379
        # marivanna.redis.stgRedisNamespace -- Redis namespace (default 0)
        stgRedisNamespace: 0
        # marivanna.redis.stgRedisUser -- Redis username connect
        stgRedisUser: stingray-user
        # marivanna.redis.stgRedisPass -- Redis password secrets from env
        stgRedisPass: XXX

    s3:
        # marivanna.s3.stgS3EndpointURL -- URL adress API S3 storage
        stgS3EndpointURL: https://minio-api.cluster.local
        # marivanna.s3.stgS3Bucket -- Default Bucket s3 work
        stgS3Bucket: stingray
        # marivanna.s3.stgS3AccessKey -- Access Key API compliant s3 storage aka AWS_ACCESS_KEY_ID
        stgS3AccessKey: XX
        # marivanna.s3.stgS3SecretKey -- Secret Key API compliant s3 storage aka AWS_SECRET_ACCESS_KEY
        stgS3SecretKey: XXXX
        # marivanna.s3.stgS3Region -- The Default region name identifies the AWS Region whose servers you want to send your requests to by default. aka AWS_DEFAULT_REGION default values us-west-2
        stgS3Region: yandex-stingray-1
    # marivanna.imagePullSecrets -- Secrets of extracting an image from a private registry
    # imagePullSecrets:
        # - name: registrypullsecret
        mode:
            file:
                enabled: true
                config:
                    name: "conf.cfg"
                    path: "/configs"
                secrets:
                    name: "secrets.cfg"
                    path: "/secrets"
            env:
                enabled: false # marivanna.serviceAccount -- Default service account
    serviceAccount:
        create: true
        automount: true
        annotations: {}
        name: ""
    # marivanna.podAnnotations -- Custom pod annotations
    podAnnotations: {}
    # marivanna.podLabels -- Custom pod labels
    podLabels: {}
    # marivanna.podSecurityContext -- Custom pod security context
    podSecurityContext: {}
    securityContext:
        capabilities:
            drop:
                - ALL
        readOnlyRootFilesystem: true
        runAsNonRoot: true
        runAsUser: 1000
    service:
        # marivanna.service.type -- Service type marivanna
        type: ClusterIP
        # marivanna.service.port -- Port forward service
        port: 8000
    ingress:
        # marivanna.ingress.enable -- Enable/Disable ingress marivanna service
        enabled: true
        # marivanna.className Ingress class use marivanna service
        className: nginx-internal
        annotations:
            nginx.ingress.kubernetes.io/preserve-trailing-slash: "true"
            nginx.ingress.kubernetes.io/auth-url: https://oauth2-proxy.k8s.stingray.dev/oauth2/auth
            nginx.ingress.kubernetes.io/auth-response-headers: x-authrequest-access-token
            nginx.ingress.kubernetes.io/proxy-buffer-size: 16k
            nginx.ingress.kubernetes.io/proxy-body-size: 500m
            nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
            nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
        hosts:
            - host: marivanna.cluster.local
              paths:
                - path: /
                  pathType: ImplementationSpecific
        tls:
            - secretName: XXX
              hosts:
                - marivanna.cluster.local
    resources:
        rest:
            limits:
                cpu: 200m
                memory: 1Gi
            requests:
                cpu: 100m
                memory: 256Mi
        worker:
            limits:
                cpu: 3000m
                memory: 14Gi
            requests:
                cpu: 300m
                memory: 6Gi

    nodeSelector:
        # marivanna.nodeSelector.node-group -- Example node selector
        node-group: internal

oauth2-proxy:
    # oauth2-proxy.enable -- Enable/Disable oauth2-proxy service
    enabled: true
    namespaceOverride: ""
    # oauth2-proxy.kubeVersion -- Force the target Kubernetes version (it uses Helm `.Capabilities` if not set).
    kubeVersion: null
    # oauth2-proxy.config -- Oauth client configuration specifics
    config:
        annotations: {}
        clientID: "client-id-keycloak-client-oauth2"
        clientSecret: "client-secret-keycloak-client-oauth2"
        cookieSecret: "(сгенерировать с помощью команды openssl rand -base64 32 | head -c 32 | base64 )"
        configFile: |-
            provider = "keycloak-oidc"
            provider_display_name = "Keycloak"
            oidc_issuer_url = "https://keycloak.cluster.local/realms/stingray"
            email_domains = [ "*" ]
            insecure_oidc_allow_unverified_email = true
            skip_jwt_bearer_tokens = true
            code_challenge_method = "S256"
            set_xauthrequest = true
            set_authorization_header = true
            cookie_secure = true
            cookie_domains = [ ".cluster.local" ]
            whitelist_domains = [ "*.cluster.local:*" ]
            skip_auth_routes = [ "/internal/.*" ]
            cookie_refresh = "1m"
            cookie_expire = "10m"
    alphaConfig:
        # oauth2-proxy.alphaConfig.enabled -- Enable/Disable oauth2-proxy alphaConfig
        enabled: false
        # oauth2-proxy.alphaConfig.annotations -- Add config annotations annotations: {}
        # oauth2-proxy.alphaConfig.serverConfigData -- Arbitrary configuration data to append to the server section
        serverConfigData: {}
        # oauth2-proxy.alphaConfig.metricsConfigData -- Arbitrary configuration data to append to the metrics section
        metricsConfigData: {}
        # oauth2-proxy.alphaConfig.configData -- Arbitrary configuration data to append
        configData: {}
        # oauth2-proxy.alphaConfig.configFile -- Arbitrary configuration to append
        # This is treated as a Go template and rendered with the root context
        configFile: ""
        # oauth2-proxy.alphaConfig.existingConfig -- Use an existing config map (see secret-alpha.yaml for required fields)
        existingConfig: null
        # oauth2-proxy.alphaConfig.existingSecret -- Use an existing secret
        existingSecret: null
    image:
        # oauth2-proxy.image.repository -- Repository place image oauth2-proxy service
        repository: quay.io/oauth2-proxy/oauth2-proxy
        # oauth2-proxy.image.tag -- Tag image oauth2-proxy service
        tag: ""
        # oauth2-proxy.image.pullPolicy -- Pull policy image oauth2-proxy service
        pullPolicy: IfNotPresent
    # oauth2-proxy.extraArgs -- Extra arguments for oauth2-proxy service
    extraArgs:
        - "--config=/etc/oauth2_proxy/oauth2_proxy.cfg"
    # oauth2-proxy.extraEnv -- Extra environment variables for oauth2-proxy
    service
    extraEnv: []
    # oauth2-proxy.customLabels -- Custom labels to add into metadata
    customLabels: {}
    # To authorize individual email addresses
    # That is part of extraArgs but since this needs special treatment we
    need to do a separate section
    authenticatedEmailsFile:
        enabled: false
        # oauth2-proxy.authenticatedEmailsFile.persistence -- Defines how the email addresses file will be projected, via a configmap or secret
        persistence: configmap
        # oauth2-proxy.authenticatedEmailsFile.template -- template is the name of the configmap what contains the email user list but has been configured without this chart.
        template: ""
        # oauth2-proxy.authenticatedEmailsFile.restrictedUserAccessKey -- The configmap/secret key under which the list of email access is stored
        # Defaults to "restricted_user_access" if not filled-in, but can be overridden to allow flexibility
        restrictedUserAccessKey: ""
        # oauth2-proxy.authenticatedEmailsFile.restricted_access -- If you override the config with restricted_access it will configure a user list within this chart what takes care of the
        # config map resource.
        restricted_access: ""
        annotations: {}
        # helm.sh/resource-policy: keep
    service:
        # oauth2-proxy.service.type -- Service type oauth2-proxy
        type: ClusterIP
        # oauth2-proxy.service.portNumber -- Service port number oauth2-proxy
        portNumber: 80
        # oauth2-proxy.service.appProtocol -- Protocol set on the oauth2-
        proxy service
        appProtocol: http
        # oauth2-proxy.service.annotations -- Service annotations
        annotations: {}
    # oauth2-proxy.serviceAccount -- Create or use ServiceAccount
    serviceAccount:
        # oauth2-proxy.serviceAccount.enabled -- Specifies whether a ServiceAccount should be created
        enabled: true
        # oauth2-proxy.serviceAccount.name -- The name of the ServiceAccount to use.
        ## If not set and create is true, a name is generated using the fullname template
        name: service-account
        automountServiceAccountToken: true
        annotations: {}
    ingress:
        # oauth2-proxy.ingress.enabled -- Enable/Disable ingress oauth2-proxy service
        enabled: true
        # oauth2-proxy.ingress.className -- Class name ingress oauth2-proxy service
        className: nginx-internal
        # oauth2-proxy.ingress.path -- Path to oauth2-proxy service 
        path: /
        # oauth2-proxy.ingress.pathType -- Only used if API capabilities (networking.k8s.io/v1) allow it
        pathType: ImplementationSpecific
        # oauth2-proxy.ingress.hosts -- Used to create an Ingress record.
        hosts:
            - oauth2-proxy.cluster.local
        # oauth2-proxy.ingress.annotations -- Ingress annotations oauth2-proxy service
        annotations:
            nginx.ingress.kubernetes.io/proxy-buffer-size: 16k
        # oauth2-proxy.ingress.tls -- TLS config for ingress oauth2-proxy service
        tls:
            # oauth2-proxy.ingress.tls.secretName -- Secret name with certificate
            - secretName: XXX
              hosts:
                - oauth2-proxy.cluster.local
    # oauth2-proxy.resources -- Resources config for oauth2-proxy service
    resources:
        # oauth2-proxy.resources.limits -- Resource limits for oauth2-proxy service
        limits:
            # oauth2-proxy.resources.limits.cpu -- CPU limits
            cpu: 100m
            # oauth2-proxy.resources.limits.memory -- Memory limits
            memory: 300Mi
        # oauth2-proxy.resources.requests -- Resource requests for oauth2-proxy service
        requests:
            # oauth2-proxy.resources.requests.cpu -- CPU requests
            cpu: 100m
            # oauth2-proxy.resources.requests.memory -- Memory requests
            memory: 300Mi
    # oauth2-proxy.extraVolumes -- Extra volumes for oauth2-proxy service
    extraVolumes: []
    # - name: ca-bundle-cert
    #   secret:
    #       secretName: <secret-name>

    # oauth2-proxy.extraVolumeMounts -- Extra volume mounts for oauth2-proxy service
    extraVolumeMounts: []
    # - mountPath: /etc/ssl/certs/
    #   name: ca-bundle-cert
    # oauth2-proxy.extraContainers -- Additional containers to be added to the pod.
    extraContainers: []
    # - name: my-sidecar
    #   image: nginx:latest
    priorityClassName: ""
    # oauth2-proxy.hostAliases -- hostAliases is a list of aliases to be added to /etc/hosts for network name resolution
    hostAliases: []
    # oauth2-proxy.topologySpreadConstraints - Topology Spread Constraints configuration
    topologySpreadConstraints: []
    # oauth2-proxy.affinity -- Affinity for pod assignment affinity: {}
    # oauth2-proxy.tolerations -- Tolerations for pod assignment
    tolerations: []
    # oauth2-proxy.nodeSelector -- Node labels for pod assignment
    nodeSelector:
        node-group: external
    # oauth2-proxy.proxyVarsAsSecrets -- Whether to use secrets instead of environment values for setting up OAUTH2_PROXY variables
    proxyVarsAsSecrets: true
    # oauth2-proxy.livenessProbe -- Configure Kubernetes liveness probes.
    livenessProbe:
        enabled: true
        initialDelaySeconds: 0
        timeoutSeconds: 1
    # oauth2-proxy.readinessProbe -- Configure Kubernetes readiness probes.
    readinessProbe:
        enabled: true
        initialDelaySeconds: 0
        timeoutSeconds: 5
        periodSeconds: 10
        successThreshold: 1
    # oauth2-proxy.securotyContext -- Configure Kubernetes security context for container
    securityContext:
        enabled: true
        allowPrivilegeEscalation: false
        capabilities:
            drop:
                - ALL
        readOnlyRootFilesystem: true
        runAsNonRoot: true
        runAsUser: 2000
        runAsGroup: 2000
        seccompProfile:
            type: RuntimeDefault
    deploymentAnnotations: {}
    # oauth2-proxy.podAnnotations -- Custom pod annotations
    podAnnotations: {}
    # oauth2-proxy.podLabels -- Custom pod labels
    podLabels: {}
    # oauth2-proxy.replicaCount -- Number of replica marivanna service
    replicaCount: 1
    revisionHistoryLimit: 10
    strategy: {}
    # oauth2-proxy.podDisruptionBudget -- PodDisruptionBudget settings
    podDisruptionBudget:
        enabled: true
        minAvailable: 1
    # oauth2-proxy.podSecurityContext -- Configure Kubernetes security context for pod
    podSecurityContext: {}
    # oauth2-proxy.httpScheme -- whether to use http or https
    httpScheme: http
    initContainers:
        # if the redis sub-chart is enabled, wait for it to be ready
        # before starting the proxy
        # creates a role binding to get, list, watch, the redis master pod
        # if service account is enabled
        waitForRedis:
            enabled: true
            image:
                repository: docker.io/bitnami/kubectl
                pullPolicy: IfNotPresent
            # uses the kubernetes version of the cluster
            # the chart is deployed on, if not set
            kubectlVersion: ""
            securityContext:
                enabled: true
                allowPrivilegeEscalation: false
                capabilities:
                    drop:
                        - ALL
                readOnlyRootFilesystem: true
                runAsNonRoot: true
                runAsUser: 65534
                runAsGroup: 65534
                seccompProfile:
                    type: RuntimeDefault
            timeout: 180
            resources: {}
            # limits:
            # cpu: 100m
            # memory: 300Mi
            # requests:
            # cpu: 100m
            # memory: 300Mi
    # oauth2-proxy.htpasswdFile -- Additionally authenticate against a htpasswd file. Entries must be created with "htpasswd -B" for bcrypt encryption.
    # Alternatively supply an existing secret which contains the required information.
    htpasswdFile:
        enabled: false
        existingSecret: ""
        entries: []
        # One row for each user
        # example:
        # entries:
        #   - testuser:$2y$05$gY6dgXqjuzFhwdhsiFe7seM9q9Tile4Y3E.CBpAZJffkeiLaC21Gy
    # oauth2-proxy.sessionStorage -- Configure the session storage type, between cookie and redis
    sessionStorage:
        # oauth2-proxy.sessionStorage.type -- Can be one of the supported session storage cookie|redis
        type: cookie
        redis:
            # oauth2-proxy.sessionStorage.redis.existingSecret -- Name of the Kubernetes secret containing the redis & redis sentinel password values (see also `sessionStorage.redis.passwordKey`)
            existingSecret: ""
            # oauth2-proxy.sessionStorage.redis.password -- Redis password value. Applicable for all Redis configurations. Taken from redis subchart secret if not set. `sessionStorage.redis.existingSecret` takes precedence
            password: ""
            # oauth2-proxy.sessionStorage.redis.passwordKey -- Key of the Kubernetes secret data containing the redis password value
            passwordKey: redis-password
            # oauth2-proxy.sessionStorage.redis.clientType -- Can be one of standalone|cluster|sentinel
            clientType: standalone
            standalone:
                # oauth2-proxy.sessionStorage.redis.standalone.conectionUrl -- URL of redis standalone server for redis session storage (e.g. `redis://HOST[:PORT]`). Automatically generated if not set
                connectionUrl: ""
            cluster:
                # oauth2-proxy.sessionStorage.redis.connectionUrls -- List of Redis cluster connection URLs (e.g. `["redis://127.0.0.1:8000", "redis://127.0.0.1:8000"]`)
                connectionUrls: []
            sentinel:
                # oauth2-proxy.sessionStorage.redis.sentinel.existingSecret -- Name of the Kubernetes secret containing the redis sentinel password value (see also `sessionStorage.redis.sentinel.passwordKey`). Default: `sessionStorage.redis.existingSecret`
                existingSecret: ""
                # oauth2-proxy.sessionStorage.redis.sentinel.password -- Redis sentinel password. Used only for sentinel connection; any redis node passwords need to use `sessionStorage.redis.password`
                password: ""
                # oauth2-proxy.sessionStorage.redis.sentinel.passwordKey -- Key of the Kubernetes secret data containing the redis sentinel password value
                passwordKey: redis-sentinel-password
                # oauth2-proxy.sessionStorage.redis.sentinel.masterName -- Redis sentinel master name
                masterName: ""
                # oauth2-proxy.sessionStorage.redis.sentinel.connectionUrls -- List of Redis sentinel connection URLs (e.g. `["redis://127.0.0.1:8000", "redis://127.0.0.1:8000"]`)
                connectionUrls: []
    # oauth2-proxy.redis -- Enables and configure the automatic deployment of the redis subchart
    redis:
        # oauth2-proxy.redis.enabled -- provision an instance of the redis sub-chart
        enabled: false
    # oauth2-proxy.checkDeprecation -- Enables apiVersion deprecation checks
    checkDeprecation: true
    metrics:
        # oauth2-proxy.metrics.enabled -- Enable Prometheus metrics endpoint
        enabled: true
        # oauth2-proxy.metrics.port -- Serve Prometheus metrics on this port
        port: 44180
        # when service.type is NodePort ...
        # nodePort: 44180
        # oauth2-proxy.metrics.service -- Protocol set on the service for the
        metrics port
        service:
            appProtocol: http
        serviceMonitor:
            # oauth2-proxy.metrics.serviceMonitor.enabled – Enable Prometheus Operator ServiceMonitor
            enabled: false
            # oauth2-proxy.metrics.serviceMonitor.namespace -- Define the namespace where to deploy the ServiceMonitor resource
            namespace: ""
            # oauth2-proxy.metrics.serviceMonitor.prometheusInstance -- Prometheus Instance definition
            prometheusInstance: default
            # oauth2-proxy.metrics.serviceMonitor.interval – Prometheus scrape interval
            interval: 60s
            # oauth2-proxy.metrics.serviceMonitor.scrapeTimeout -- Prometheus scrape timeout
            scrapeTimeout: 30s
            # oauth2-proxy.metrics.serviceMonitor.labels -- Add custom labels to the ServiceMonitor resource
            labels: {}
            # oauth2-proxy.metrics.serviceMonitor.scheme -- HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS.
            scheme: ""
            # oauth2-proxy.metrics.serviceMonitor.tlsConfig -- TLS configuration to use when scraping the endpoint. For example if using istio mTLS.
            tlsConfig: {}
            # oauth2-proxy.metrics.serviceMonitor.bearerTokenFile -- Path to bearer token file.
            bearerTokenFile: ""
            # oauth2-proxy.metrics.serviceMonitor.annotations -- Used to pass annotations that are used by the Prometheus installed in your cluster to select Service Monitors to work with
            annotations: {}
            # oauth2-proxy.metrics.serviceMonitor.metricRelabelings -- Metric relabel configs to apply to samples before ingestion.
            metricRelabelings: []
            # oauth2-proxy.metrics.serviceMonitor.relabelings -- Relabel configs to apply to samples before ingestion.
            relabelings: []
    # oauth2-proxy.extraObjects -- Extra K8s manifests to deploy
    extraObjects: []
К началу