mirror of
https://github.com/kubernetes-sigs/kubespray.git
synced 2026-10-31 06:26:19 -02:30
refactor: unify inconsistent variables in apiserver endpoint (#13392)
This commit is contained in:
@@ -655,28 +655,20 @@ first_kube_control_plane: "{{ groups['kube_control_plane'] | first }}"
|
||||
kube_apiserver_address: "{{ hostvars[inventory_hostname]['main_ip'] }}"
|
||||
kube_apiserver_access_address: "{{ hostvars[inventory_hostname]['main_access_ip'] }}"
|
||||
first_kube_control_plane_address: "{{ hostvars[groups['kube_control_plane'][0]]['main_access_ip'] }}"
|
||||
loadbalancer_apiserver_localhost: "{{ loadbalancer_apiserver is not defined }}"
|
||||
# Loadbalancer configuration
|
||||
loadbalancer_apiserver_localhost: "{{ kube_apiserver_endpoint is not defined and kube_apiserver_cluster_internal_endpoint is not defined }}"
|
||||
loadbalancer_apiserver_type: "nginx"
|
||||
# applied if only external loadbalancer_apiserver is defined, otherwise ignored
|
||||
apiserver_loadbalancer_domain_name: "{{ 'localhost' if loadbalancer_apiserver_localhost else (loadbalancer_apiserver.address | d(undef())) }}"
|
||||
kube_apiserver_global_endpoint: |-
|
||||
{% if loadbalancer_apiserver is defined -%}
|
||||
https://{{ apiserver_loadbalancer_domain_name | ansible.utils.ipwrap }}:{{ loadbalancer_apiserver.port | default(kube_apiserver_port) }}
|
||||
{%- elif loadbalancer_apiserver_localhost -%}
|
||||
https://localhost:{{ loadbalancer_apiserver_port | default(kube_apiserver_port) }}
|
||||
{%- else -%}
|
||||
https://{{ first_kube_control_plane_address | ansible.utils.ipwrap }}:{{ kube_apiserver_port }}
|
||||
{%- endif %}
|
||||
kube_apiserver_endpoint: |-
|
||||
{% if loadbalancer_apiserver is defined -%}
|
||||
https://{{ apiserver_loadbalancer_domain_name | ansible.utils.ipwrap }}:{{ loadbalancer_apiserver.port | default(kube_apiserver_port) }}
|
||||
{%- elif ('kube_control_plane' not in group_names) and loadbalancer_apiserver_localhost -%}
|
||||
https://localhost:{{ loadbalancer_apiserver_port | default(kube_apiserver_port) }}
|
||||
{%- elif 'kube_control_plane' in group_names -%}
|
||||
https://{{ kube_apiserver_bind_address | regex_replace('::', '127.0.0.1') | ansible.utils.ipwrap }}:{{ kube_apiserver_port }}
|
||||
{%- else -%}
|
||||
https://{{ first_kube_control_plane_address | ansible.utils.ipwrap }}:{{ kube_apiserver_port }}
|
||||
{%- endif %}
|
||||
loadbalancer_apiserver_port: "{{ kube_apiserver_port }}"
|
||||
|
||||
# Primary API endpoint for external access (e.g., kubectl).
|
||||
# User should set this in their inventory if they have a Load Balancer.
|
||||
# If not provided, resolved internally in vars.
|
||||
kube_apiserver_endpoint: "{{ undef() }}"
|
||||
|
||||
# Internal endpoint for in-cluster traffic, including nodes and pods.
|
||||
# Optional override; resolved internally in vars if not provided.
|
||||
kube_apiserver_cluster_internal_endpoint: "{{ undef() }}"
|
||||
|
||||
kube_apiserver_client_cert: "{{ kube_cert_dir }}/ca.crt"
|
||||
kube_apiserver_client_key: "{{ kube_cert_dir }}/ca.key"
|
||||
|
||||
|
||||
@@ -81,3 +81,40 @@ ssl_ca_dirs_per_os_family:
|
||||
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://<first_control_plane_address>:<kube_apiserver_port>.
|
||||
#
|
||||
# _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:<loadbalancer_apiserver_port>), 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 <host>:<port> 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') }}"
|
||||
|
||||
Reference in New Issue
Block a user