provisioning-catalog/components/kubernetes/taskserv/resources/kubeadm-config.yaml.j2

93 lines
3.2 KiB
Text
Raw Normal View History

{%- if taskserv.hostname == "$hostname" and server.hostname -%}
{% set hostname=server.hostname %}
{%- else -%}
{% set hostname=taskserv.hostname %}
{%- endif -%}
# Main Ip for node should be in same K8S_MASTER network
# Be sure main_ip is alive and reachable
{%- if taskserv.ip == "$network_private_ip" and server.network_private_ip -%}
{% set main_ip=server.network_private_ip %}
{%- elif taskserv.ip == "$network_public_ip" and server.ip_addresses.pub -%}
{% set main_ip=server.ip_addresses.pub %}
{%- else -%}
{% set main_ip=taskserv.ip %}
{%- endif %}
apiVersion: kubeadm.k8s.io/v1beta4
kind: InitConfiguration
{%- if taskserv.skip_phases %}
skipPhases:
{% for phase in taskserv.skip_phases %}
- {{ phase }}
{% endfor %}
{%- endif %}
localAPIEndpoint:
advertiseAddress: {{main_ip}}
bindPort: {{taskserv.bind_port}}
nodeRegistration:
# criSocket: taskserv.cri_socket
imagePullPolicy: {{taskserv.pull_policy}}
name: {{hostname}}
{%- if taskserv.taints_effect != "" %}
taints:
- effect: {{taskserv.taints_effect}}
key: node-role.kubernetes.io/control-plane
{%- else %}
taints: []
{%- endif %}
---
apiServer:
certSANs: {% for ip in taskserv.cert_sans %}
- {{ ip | replace(from="$cluster_name",to=taskserv.cluster_name) | replace(from="$hostname",to=hostname) }}
{%- endfor %}
extraArgs:
- name: authorization-mode
value: "{{taskserv.auth_mode}}"
# Force IPv4-only binding so the loopback client uses 127.0.0.1 instead of [::1].
# Prevents bootstrap failures on nodes where IPv6 is not configured.
- name: bind-address
value: "0.0.0.0"
{% if taskserv.etcd_prefix != "" %}- name: etcd-prefix
value: "{{taskserv.etcd_prefix | replace(from="$cluster_name",to=taskserv.cluster_name) | trim}}"
{% endif %}
# Reduce gRPC reconnection storm on nodes where etcd and apiserver share vCPUs.
- name: request-timeout
value: "120s"
# No etcd-servers override — uses all endpoints from ClusterConfiguration.etcd.external.
# With CP on a dedicated node (no etcd collocated), all 3 endpoints can be used
# for resilience without CPU competition causing gRPC storms.
# Shorter event TTL reduces etcd write load (default is 1h, events are noisy).
- name: event-ttl
value: "30m0s"
# Reduce watch cache sizes for low-priority resources to cap memory + gRPC pressure.
- name: watch-cache-sizes
value: "replicationcontrollers#0,endpoints#0"
apiVersion: kubeadm.k8s.io/v1beta4
certificatesDir: {{taskserv.certs_dir}}
clusterName: {{taskserv.cluster_name}}
controlPlaneEndpoint: {{main_ip}}:{{taskserv.bind_port}}
controllerManager: {}
dns: {}
{% if taskserv.etcd_mode == "external" -%}
etcd:
external:
caFile: {{taskserv.etcd_ca_path}}
certFile: {{taskserv.etcd_cert_path}}
keyFile: {{taskserv.etcd_key_path}}
endpoints: {% for endpoint in taskserv.etcd_endpoints %}
{% if endpoint.addr -%}
- {{endpoint.prot}}://{{endpoint.addr}}:{{endpoint.port}}
{%- elif endpoint.name -%}
- {{endpoint.prot}}://{{endpoint.name}}:{{endpoint.port}}
{%- endif %}
{%- endfor -%}
{%- endif %}
imageRepository: {{taskserv.repo}}
kind: ClusterConfiguration
kubernetesVersion: {{taskserv.version}}
networking:
dnsDomain: {{taskserv.dns_domain}}
podSubnet: {{taskserv.pod_net}}
serviceSubnet: {{taskserv.service_net}}
scheduler: {}