#
# 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
        volumeMounts:
        - mountPath: /ingress-apisix/conf/config.yaml
          name: apisix-ingress-configmap
          subPath: config.yaml
        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
      terminationGracePeriodSeconds: 60
      serviceAccountName: apisix-view-serviceaccount
