--- # Internal version manipulation tooling # Get kubernetes major version (i.e. 1.17.4 => 1.17) kube_major_version: "{{ (kube_version | split('.'))[:-1] | join('.') }}" kube_next: "{{ ((kube_version | split('.'))[1] | int) + 1 }}" kube_major_next_version: "1.{{ kube_next }}" pod_infra_supported_versions: '1.37': '3.10.2' '1.36': '3.10.2' '1.35': '3.10.1' etcd_supported_versions: '1.37': "{{ (etcd_binary_checksums['amd64'].keys() | select('version', '3.8', '<'))[0] }}" '1.36': "{{ (etcd_binary_checksums['amd64'].keys() | select('version', '3.7', '<'))[0] }}" '1.35': "{{ (etcd_binary_checksums['amd64'].keys() | select('version', '3.7', '<'))[0] }}" # Kubespray constants kube_proxy_deployed: "{{ 'addon/kube-proxy' not in kubeadm_init_phases_skip }}" # Sysctl floors: only applied when the node's current value is lower than # the desired one, so pre-tuned images and newer kernels are not regressed. # Values are aligned with OpenShift Node Tuning Operator and kops, and # are outside the kubelet protect-kernel-defaults validation list. sysctl_minimum_values: fs.inotify.max_user_instances: 8192 fs.inotify.max_user_watches: 65536 kernel.pid_max: 4194304 fs.aio-max-nr: 1048576 vm.max_map_count: 262144 net.netfilter.nf_conntrack_max: 1048576 net.core.somaxconn: 32768 net.core.netdev_max_backlog: 16384 fs.file-max: 2097152 net.ipv4.neigh.default.gc_thresh1: 8192 net.ipv4.neigh.default.gc_thresh2: 32768 net.ipv4.neigh.default.gc_thresh3: 65536 net.ipv6.neigh.default.gc_thresh1: 8192 net.ipv6.neigh.default.gc_thresh2: 32768 net.ipv6.neigh.default.gc_thresh3: 65536 # The lowest version allowed to upgrade from (same as calico_version in the previous branch) calico_min_version_required: "3.27.0" containerd_min_version_required: "1.3.7" # mixed kube_service_addresses/kube_service_addresses_ipv6 for a variety of network stacks(dualstack, ipv6only, ipv4only) kube_service_subnets: >- {%- if ipv4_stack and ipv6_stack -%} {{ kube_service_addresses }},{{ kube_service_addresses_ipv6 }} {%- elif ipv4_stack -%} {{ kube_service_addresses }} {%- else -%} {{ kube_service_addresses_ipv6 }} {%- endif -%} # mixed kube_pods_subnet/kube_pods_subnet_ipv6 for a variety of network stacks(dualstack, ipv6only, ipv4only) kube_pods_subnets: >- {%- if ipv4_stack and ipv6_stack -%} {{ kube_pods_subnet }},{{ kube_pods_subnet_ipv6 }} {%- elif ipv4_stack -%} {{ kube_pods_subnet }} {%- else -%} {{ kube_pods_subnet_ipv6 }} {%- endif -%} local_volume_provisioner_storage_classes_default: - key: "{{ local_volume_provisioner_storage_class }}" value: hostDir: "{{ local_volume_provisioner_base_dir }}" mountDir: "{{ local_volume_provisioner_mount_dir }}" volumeMode: Filesystem fsType: ext4 ssl_ca_dirs_per_os_family: Debian: &usr_share - /usr/share/ca-certificates Flatcar: *usr_share RedHat: - /etc/pki/tls - /etc/pki/ca-trust # Internal API server endpoints (cannot be overridden by inventory). # # _kube_apiserver_endpoint: # External API server endpoint used for external access from outside the cluster # (e.g., in admin kubeconfig written for localhost). # Resolves to kube_apiserver_endpoint if defined; otherwise defaults to # https://:. # # _kube_apiserver_cluster_internal_endpoint: # Internal endpoint used for in-cluster communication to the API server by # cluster components, nodes (kubelet, kube-proxy), and pods (CNI plugins). # If loadbalancer_apiserver_localhost is enabled, it points to the local load balancer # proxy (https://127.0.0.1:), otherwise falls back # to _kube_apiserver_endpoint. # # _kube_apiserver_local_endpoint: # Direct local endpoint to the kube-apiserver process running on the control plane node itself, # bypassing any load balancer or proxy. # Used on control plane nodes for local readiness checks, health checks (/healthz), # and restart handlers. # # _kube_apiserver_endpoint_netloc: # The : representation of _kube_apiserver_endpoint without the scheme. # Used where kubeadm requires a host:port string (e.g. controlPlaneEndpoint, apiServerEndpoint). _kube_apiserver_endpoint: >- {{ kube_apiserver_endpoint if kube_apiserver_endpoint is defined else 'https://' ~ (first_kube_control_plane_address | ansible.utils.ipwrap) ~ ':' ~ kube_apiserver_port }} _kube_apiserver_cluster_internal_endpoint: >- {{ kube_apiserver_cluster_internal_endpoint if kube_apiserver_cluster_internal_endpoint is defined else (('https://127.0.0.1:' ~ loadbalancer_apiserver_port) if loadbalancer_apiserver_localhost else _kube_apiserver_endpoint) }} _kube_apiserver_local_endpoint: "https://{{ kube_apiserver_bind_address | regex_replace('^0\\.0\\.0\\.0$', '127.0.0.1') | regex_replace('^::$', '127.0.0.1') | ansible.utils.ipwrap }}:{{ kube_apiserver_port }}" _kube_apiserver_endpoint_netloc: "{{ _kube_apiserver_endpoint | urlsplit('netloc') }}"