#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ingress-controller
spec:
  minReadySeconds: 5
  replicas: 1
  selector:
    matchLabels:
      app: apisix-ingress-controller
      tier: backend
  strategy:
    rollingUpdate:
      maxSurge: 50%
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      annotations: {}
      labels:
        app: apisix-ingress-controller
        tier: backend
    spec:
      hostNetwork: true
      dnsPolicy: ClusterFirstWithHostNet
      containers:
      - image: apache/apisix-ingress-controller:1.0.0
        imagePullPolicy: IfNotPresent
        name: ingress-controller
        ports:
        - containerPort: 8080
          hostPort: 8080
        - containerPort: 8443
          hostPort: 8443
        volumeMounts:
        - mountPath: /ingress-apisix/conf/config.yaml
          name: apisix-ingress-configmap
          subPath: config.yaml
        - name: webhook-certs
          mountPath: /etc/webhook/certs
          readOnly: true
        env:
          - name: POD_NAMESPACE
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace
          - name: POD_NAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
      volumes:
        - configMap:
            name: apisix-ingress-cm
          name: apisix-ingress-configmap
        - name: webhook-certs
          secret:
            secretName: webhook-certs
      terminationGracePeriodSeconds: 60
      serviceAccountName: apisix-view-serviceaccount
