questions:
- variable: controller.kind
  type: enum
  options:
    - deployment
    - daemonset
  default: deployment
  description: "The kind of the Ingress controller installation - deployment or daemonset."
  label: Installation Kind
  group: "Settings"
- variable: imageDefault
  default: true
  description: "Use default Docker image"
  label: Use Default Image
  type: boolean
  group: "Settings"
  show_subquestion_if: false
  subquestions:
  - variable: controller.nginxplus
    default: false
    description: "Deploys the Ingress controller for NGINX Plus."
    label: Deploy NGINX Plus
    type: boolean
    group: "NGINX Plus"
  - variable: controller.appprotect.enable
    default: false
    description: "Enable the App Protect module in the Ingress Controller."
    label: Enable the App Protect module.
    type: boolean
  - variable: controller.appprotectdos.enable
    default: false
    description: "Enable the App Protect DoS module in the Ingress Controller."
    label: Enable the App Protect DoS module.
    type: boolean
  - variable: controller.image.repository
    default: nginx/nginx-ingress
    description: "The image repository of the Ingress controller."
    type: string
    label: NGINX Ingress Controller Image Repository
    required: true
  - variable: controller.image.tag
    description: "The tag of the Ingress controller image."
    type: string
    label: NGINX Ingress Controller Image Tag
    required: true
  - variable: controller.image.pullPolicy
    type: enum
    options:
      - IfNotPresent
      - Always
      - Never
    default: IfNotPresent
    description: "The pull policy for the Ingress controller image."
    label: NGINX Ingress Controller Image Pull Policy
  - variable: controller.serviceAccount.imagePullSecretName
    default: ""
    description: "The name of the secret containing docker registry credentials. Secret must exist in the same namespace as the helm release."
    type: string
    label: Image Pull Secret Name
- variable: controller.defaultTLS.secret
  default: ""
  description: "The secret with a TLS certificate and key for the default HTTPS server. The value must follow the following format: `<namespace>/<name>`."
  label: TLS Secret
  type: string
  group: "Settings"
- variable: controller.ingressClass
  default: nginx
  description: "A class of the Ingress controller. The Ingress controller only processes Ingress resources that belong to its class - i.e. have the annotation `[kubernetes.io/ingress.class]` equal to the class. Additionally, the Ingress controller processes Ingress resources that do not have that annotation which can be disabled by setting the [-use-ingress-class-only] flag."
  label: Ingress Class
  type: string
  group: "Settings"
  required: true
  subquestions:
  - variable: controller.useIngressClassOnly
    default: false
    description: "Ignore Ingress resources without the `[kubernetes.io/ingress.class]` annotation."
    label: Use Ingress Class Only
    type: boolean
    group: "Settings"
- variable: controller.enableCustomResources
  default: true
  label: Enable Custom Resources
  type: boolean
  group: "Settings"
  show_subquestion_if: true
  subquestions:
  - variable: controller.globalConfiguration.create
    default: true
    description: "Creates the GlobalConfiguration custom resource."
    label: Create GlobalConfiguration Custom Resource
    type: boolean
    group: "Settings"
  - variable: controller.enableOIDC
    default: false
    description: "Enables OIDC policies."
    label: Enable OIDC policies
    type: boolean
    group: "Settings"
  - variable: controller.enableCertManager
    default: false
    description: "Enables cert manager for Virtual Server resources."
    label: Enable cert manager for Virtual Server resources
    type: boolean
    group: "Settings"
  - variable: controller.enableExternalDNS
    default: false
    description: "Enables external-dns for Virtual Server resources."
    label: Enable external-dns for Virtual Server resources
    type: boolean
    group: "Settings"
- variable: controller.watchNamespace
  default: ""
  description: "Comma-separated list of namespaces to watch for Ingress resources. By default the Ingress controller watches all namespaces."
  label: Watch Namespace
  type: string
  group: "Settings"
- variable: controller.service.create
  default: true
  description: "Creates a service to expose the Ingress controller pods."
  label: Create a Service
  type: boolean
  group: "Service"
  show_subquestion_if: true
  subquestions:
  - variable: controller.service.type
    type: enum
    options:
      - LoadBalancer
      - NodePort
    default: LoadBalancer
    description: "The type of service to create for the Ingress controller."
    label: Type of Service
- variable: controller.service.httpPort.enable
  default: true
  description: "Enables the HTTP port for the Ingress controller service."
  label: Enable HTTP Port
  type: boolean
  group: "Service"
  show_subquestion_if: true
  subquestions:
  - variable: controller.service.httpPort.port
    default: 80
    description: "The HTTP port of the Ingress controller service."
    label: HTTP Port
    type: int
    required: true
- variable: controller.service.httpsPort.enable
  default: true
  description: "Enables the HTTPS port for the Ingress controller service."
  label: Enable HTTPS Port
  type: boolean
  group: "Service"
  show_subquestion_if: true
  subquestions:
  - variable: controller.service.httpsPort.port
    default: 443
    description: "The HTTPS port of the Ingress controller service."
    label: HTTPS Port
    type: int
    required: true
- variable: prometheus.create
  default: false
  description: "Expose NGINX or NGINX Plus metrics in the Prometheus format."
  label: Enable Exposing Prometheus Metrics
  type: boolean
  group: "Prometheus"
  show_subquestion_if: true
  subquestions:
  - variable: prometheus.port
    default: 9113
    description: "Configures the port to scrape the metrics."
    label: Prometheus Port
    type: int
    required: true
  - variable: prometheus.scheme
    default: http
    description: "Configures the HTTP scheme to use for connections to the Prometheus endpoint."
    label: Prometheus Scheme
    type: string
    required: true
  - variable: prometheus.secret
    default: ""
    description: "The namespace / name of a Kubernetes TLS Secret. If specified, this secret is used to secure the Prometheus endpoint with TLS connections."
    label: Prometheus Secret
    type: string