---
# Source: kubernetes-ingress/templates/controller-serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kubernetes-ingress
  namespace: default
  labels:
    app.kubernetes.io/name: kubernetes-ingress
    app.kubernetes.io/instance: kubernetes-ingress
    helm.sh/chart: kubernetes-ingress-1.52.0
    app.kubernetes.io/version: "3.2.9"
    app.kubernetes.io/managed-by: Helm
---
# Source: kubernetes-ingress/templates/controller-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: kubernetes-ingress
  namespace: default
  labels:
    app.kubernetes.io/name: kubernetes-ingress
    app.kubernetes.io/instance: kubernetes-ingress
    helm.sh/chart: kubernetes-ingress-1.52.0
    app.kubernetes.io/version: "3.2.9"
    app.kubernetes.io/managed-by: Helm
---
# Source: kubernetes-ingress/templates/clusterrole.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: kubernetes-ingress
  labels:
    app.kubernetes.io/name: kubernetes-ingress
    app.kubernetes.io/instance: kubernetes-ingress
    helm.sh/chart: kubernetes-ingress-1.52.0
    app.kubernetes.io/version: "3.2.9"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  - endpoints
  - nodes
  - pods
  - services
  - namespaces
  - events
  - serviceaccounts
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - "extensions"
  - "networking.k8s.io"
  resources:
  - ingresses
  - ingresses/status
  - ingressclasses
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - "extensions"
  - "networking.k8s.io"
  resources:
  - ingresses/status
  verbs:
  - update
- apiGroups:
  - ""
  resources:
  - secrets
  verbs:
  - get
  - list
  - watch
  - create
  - patch
  - update
- apiGroups:
  - discovery.k8s.io
  resources:
  - endpointslices
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - core.haproxy.org
  resources:
    - "*"
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - ingress.v1.haproxy.org
  - ingress.v1.haproxy.com
  - ingress.v3.haproxy.org
  - ingress.v3.haproxy.com
  resources:
    - "*"
  verbs:
  - get
  - list
  - watch
  - update
- apiGroups:
  - "apiextensions.k8s.io"
  resources:
  - customresourcedefinitions
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - "apps"
  resources:
  - replicasets
  - deployments
  - daemonsets
  verbs:
  - get
  - list
  - watch
---
# Source: kubernetes-ingress/templates/clusterrolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-ingress
  labels:
    app.kubernetes.io/name: kubernetes-ingress
    app.kubernetes.io/instance: kubernetes-ingress
    helm.sh/chart: kubernetes-ingress-1.52.0
    app.kubernetes.io/version: "3.2.9"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: kubernetes-ingress
subjects:
- kind: ServiceAccount
  name: kubernetes-ingress
  namespace: default
---
# Source: kubernetes-ingress/templates/controller-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: kubernetes-ingress
  namespace: default
  labels:
    app.kubernetes.io/name: kubernetes-ingress
    app.kubernetes.io/instance: kubernetes-ingress
    helm.sh/chart: kubernetes-ingress-1.52.0
    app.kubernetes.io/version: "3.2.9"
    app.kubernetes.io/managed-by: Helm
spec:
  type: NodePort
  ports:
    - name: http
      port: 80
      protocol: TCP
      appProtocol: http
      targetPort: http
    - name: https
      port: 443
      protocol: TCP
      appProtocol: https
      targetPort: https
    - name: quic
      port: 443
      protocol: UDP
      appProtocol: https
      targetPort: quic
    - name: stat
      port: 1024
      protocol: TCP
      targetPort: stat
    - name: admin
      port: 6060
      protocol: TCP
      targetPort: admin
  selector:
    app.kubernetes.io/name: kubernetes-ingress
    app.kubernetes.io/instance: kubernetes-ingress
  externalIPs:
---
# Source: kubernetes-ingress/templates/controller-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubernetes-ingress
  namespace: default
  labels:
    app.kubernetes.io/name: kubernetes-ingress
    app.kubernetes.io/instance: kubernetes-ingress
    helm.sh/chart: kubernetes-ingress-1.52.0
    app.kubernetes.io/version: "3.2.9"
    app.kubernetes.io/managed-by: Helm
spec:
  replicas: 2
  minReadySeconds: 0
  selector:
    matchLabels:
      app.kubernetes.io/name: kubernetes-ingress
      app.kubernetes.io/instance: kubernetes-ingress
  strategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app.kubernetes.io/name: kubernetes-ingress
        app.kubernetes.io/instance: kubernetes-ingress
    spec:
      enableServiceLinks: true
      serviceAccountName: kubernetes-ingress
      terminationGracePeriodSeconds: 60
      dnsPolicy: ClusterFirst
      securityContext:
        runAsNonRoot: true
        runAsUser:  1000
        runAsGroup: 1000


      containers:
        - name: kubernetes-ingress-controller
          image: "docker.io/haproxytech/kubernetes-ingress:3.2.9"
          imagePullPolicy: IfNotPresent
          args:
          - --default-ssl-certificate=default/kubernetes-ingress-default-cert
          - --configmap=default/kubernetes-ingress
          - --http-bind-port=8080
          - --https-bind-port=8443
          - --quic-bind-port=8443
          - --quic-announce-port=443
          - --ingress.class=haproxy
          - --publish-service=default/kubernetes-ingress
          - --log=info
          - --prometheus
          - --pprof
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop:
                - ALL
              add:
                - NET_BIND_SERVICE
            seccompProfile:
              type: RuntimeDefault
          ports:
            - name: admin
              containerPort: 6060
              protocol: TCP
            - name: http
              containerPort: 8080
              protocol: TCP
            - name: https
              containerPort: 8443
              protocol: TCP
            - name: stat
              containerPort: 1024
              protocol: TCP
            - name: quic
              containerPort: 8443
              protocol: UDP
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /healthz
              port: 1042
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /healthz
              port: 1042
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          startupProbe:
            failureThreshold: 30
            httpGet:
              path: /healthz
              port: 1042
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 5
            successThreshold: 1
            timeoutSeconds: 1
          env:
          - name: POD_NAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          - name: POD_NAMESPACE
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace
          - name: POD_IP
            valueFrom:
              fieldRef:
                fieldPath: status.podIP
          resources:
            requests:
              cpu: 250m
              memory: 400Mi
          volumeMounts:
            - name: tmp
              mountPath: /tmp
              subPath: tmp
            - name: tmp
              mountPath: /run
              subPath: run
      volumes:
        - name: tmp
          emptyDir:
            medium: Memory
            sizeLimit: 64Mi
---
# Source: kubernetes-ingress/templates/controller-ingressclass.yaml
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: haproxy
  labels:
    app.kubernetes.io/name: kubernetes-ingress
    app.kubernetes.io/instance: kubernetes-ingress
    helm.sh/chart: kubernetes-ingress-1.52.0
    app.kubernetes.io/version: "3.2.9"
    app.kubernetes.io/managed-by: Helm
spec:
  controller: haproxy.org/ingress-controller/haproxy
