# Copyright 2019-present Open Networking Foundation
#
# Licensed 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.

# Sample kubespray override variables for COMAC deploy.
# Pass this file as an extra variables when running kubespray. For example,
# ansible-playbook -b -i inventory/comac/hosts.ini -e @inventory/comac/extra-vars.yaml cluster.yml
# Tested with Kubespray release-2.11

# OS
disable_swap: true
populate_inventory_to_hosts_file: true

# etcd
etcd_deployment_type: docker
etcd_memory_limit: 8192M

# Docker
docker_iptables_enabled: true
docker_insecure_registries:
  - 10.90.0.150:5000

# K8S
kubeadm_enabled: true
kubelet_deployment_type: host
kubectl_localhost: true
kubeconfig_localhost: true

kube_feature_gates: [SCTPSupport=True]
kube_pods_subnet: 172.18.0.0/17
kube_service_addresses: 172.18.128.0/17
kube_apiserver_node_port_range: 2000-36767
kube_network_plugin: calico
kube_network_plugin_multus: true
multus_version: stable
ipip: false

local_volume_provisioner_enabled: true

# Applications
dns_mode: coredns
dns_cores_per_replica: 256
dns_min_replicas: 1

helm_enabled: true
helm_deployment_type: host
helm_version: v2.16.1
