You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

162 lines
6.0 KiB

6 years ago
7 years ago
  1. apiVersion: kubeadm.k8s.io/v1alpha1
  2. kind: MasterConfiguration
  3. api:
  4. {% if groups['kube-master'] | length > 1 and kubeadm_config_api_fqdn is defined %}
  5. controlPlaneEndpoint: {{ kubeadm_config_api_fqdn }}
  6. bindPort: {{ loadbalancer_apiserver.port | default(kube_apiserver_port) }}
  7. {% else %}
  8. advertiseAddress: {{ ip | default(ansible_default_ipv4.address) }}
  9. bindPort: {{ kube_apiserver_port }}
  10. {% endif %}
  11. etcd:
  12. endpoints:
  13. {% for endpoint in etcd_access_addresses.split(',') %}
  14. - {{ endpoint }}
  15. {% endfor %}
  16. caFile: {{ kube_config_dir }}/ssl/etcd/ca.pem
  17. certFile: {{ kube_config_dir }}/ssl/etcd/node-{{ inventory_hostname }}.pem
  18. keyFile: {{ kube_config_dir }}/ssl/etcd/node-{{ inventory_hostname }}-key.pem
  19. networking:
  20. dnsDomain: {{ dns_domain }}
  21. serviceSubnet: {{ kube_service_addresses }}
  22. podSubnet: {{ kube_pods_subnet }}
  23. kubernetesVersion: {{ kube_version }}
  24. {% if cloud_provider is defined and cloud_provider not in ["gce", "oci"] %}
  25. cloudProvider: {{ cloud_provider }}
  26. {% endif %}
  27. {% if kube_proxy_mode == 'ipvs' %}
  28. kubeProxy:
  29. config:
  30. {% if kube_version is version('v1.10', '<') %}
  31. featureGates: SupportIPVSProxyMode=true
  32. {% endif %}
  33. {% if kube_version is version('v1.10', '>=') %}
  34. featureGates:
  35. SupportIPVSProxyMode: true
  36. {% endif %}
  37. mode: ipvs
  38. {% endif %}
  39. {% if kube_proxy_nodeport_addresses %}
  40. nodePortAddresses: [{{ kube_proxy_nodeport_addresses_cidr }}]
  41. {% endif %}
  42. authorizationModes:
  43. {% for mode in authorization_modes %}
  44. - {{ mode }}
  45. {% endfor %}
  46. selfHosted: false
  47. apiServerExtraArgs:
  48. bind-address: {{ kube_apiserver_bind_address }}
  49. {% if kube_apiserver_insecure_port|string != "0" %}
  50. insecure-bind-address: {{ kube_apiserver_insecure_bind_address }}
  51. {% endif %}
  52. insecure-port: "{{ kube_apiserver_insecure_port }}"
  53. {% if kube_version is version('v1.10', '<') %}
  54. admission-control: {{ kube_apiserver_admission_control | join(',') }}
  55. {% else %}
  56. {% if kube_apiserver_enable_admission_plugins|length > 0 %}
  57. enable-admission-plugins: {{ kube_apiserver_enable_admission_plugins | join(',') }}
  58. {% endif %}
  59. {% if kube_apiserver_disable_admission_plugins|length > 0 %}
  60. disable-admission-plugins: {{ kube_apiserver_disable_admission_plugins | join(',') }}
  61. {% endif %}
  62. {% endif %}
  63. apiserver-count: "{{ kube_apiserver_count }}"
  64. {% if kube_version is version('v1.9', '>=') %}
  65. endpoint-reconciler-type: lease
  66. {% endif %}
  67. {% if etcd_events_cluster_enabled %}
  68. etcd-servers-overrides: "/events#{{ etcd_events_access_addresses }}"
  69. {% endif %}
  70. service-node-port-range: {{ kube_apiserver_node_port_range }}
  71. kubelet-preferred-address-types: "{{ kubelet_preferred_address_types }}"
  72. profiling: "{{ kube_profiling }}"
  73. request-timeout: "{{ kube_apiserver_request_timeout }}"
  74. repair-malformed-updates: "false"
  75. enable-aggregator-routing: "{{ kube_api_aggregator_routing }}"
  76. {% if kube_api_anonymous_auth is defined and kube_version is version('v1.5', '>=') %}
  77. anonymous-auth: "{{ kube_api_anonymous_auth }}"
  78. {% endif %}
  79. {% if kube_basic_auth|default(true) %}
  80. basic-auth-file: {{ kube_users_dir }}/known_users.csv
  81. {% endif %}
  82. {% if kube_token_auth|default(true) %}
  83. token-auth-file: {{ kube_token_dir }}/known_tokens.csv
  84. {% endif %}
  85. {% if kube_oidc_auth|default(false) and kube_oidc_url is defined and kube_oidc_client_id is defined %}
  86. oidc-issuer-url: {{ kube_oidc_url }}
  87. oidc-client-id: {{ kube_oidc_client_id }}
  88. {% if kube_oidc_ca_file is defined %}
  89. oidc-ca-file: {{ kube_oidc_ca_file }}
  90. {% endif %}
  91. {% if kube_oidc_username_claim is defined %}
  92. oidc-username-claim: {{ kube_oidc_username_claim }}
  93. {% endif %}
  94. {% if kube_oidc_groups_claim is defined %}
  95. oidc-groups-claim: {{ kube_oidc_groups_claim }}
  96. {% endif %}
  97. {% endif %}
  98. {% if kube_encrypt_secret_data %}
  99. experimental-encryption-provider-config: {{ kube_config_dir }}/ssl/secrets_encryption.yaml
  100. {% endif %}
  101. storage-backend: {{ kube_apiserver_storage_backend }}
  102. {% if kube_api_runtime_config is defined %}
  103. runtime-config: {{ kube_api_runtime_config | join(',') }}
  104. {% endif %}
  105. allow-privileged: "true"
  106. {% for key in kube_kubeadm_apiserver_extra_args %}
  107. {{ key }}: "{{ kube_kubeadm_apiserver_extra_args[key] }}"
  108. {% endfor %}
  109. {% if kube_feature_gates %}
  110. feature-gates: {{ kube_feature_gates|join(',') }}
  111. {% endif %}
  112. controllerManagerExtraArgs:
  113. node-monitor-grace-period: {{ kube_controller_node_monitor_grace_period }}
  114. node-monitor-period: {{ kube_controller_node_monitor_period }}
  115. pod-eviction-timeout: {{ kube_controller_pod_eviction_timeout }}
  116. profiling: "{{ kube_profiling }}"
  117. terminated-pod-gc-threshold: "{{ kube_controller_terminated_pod_gc_threshold }}"
  118. {% if kube_feature_gates %}
  119. feature-gates: {{ kube_feature_gates|join(',') }}
  120. {% endif %}
  121. {% for key in kube_kubeadm_controller_extra_args %}
  122. {{ key }}: "{{ kube_kubeadm_controller_extra_args[key] }}"
  123. {% endfor %}
  124. {% if cloud_provider is defined and cloud_provider in ["openstack"] and openstack_cacert is defined and openstack_cacert != "" %}
  125. controllerManagerExtraVolumes:
  126. - name: openstackcacert
  127. hostPath: "{{ kube_config_dir }}/openstack-cacert.pem"
  128. mountPath: "{{ kube_config_dir }}/openstack-cacert.pem"
  129. {% endif %}
  130. schedulerExtraArgs:
  131. profiling: "{{ kube_profiling }}"
  132. {% if kube_feature_gates %}
  133. feature-gates: {{ kube_feature_gates|join(',') }}
  134. {% endif %}
  135. {% if kube_kubeadm_scheduler_extra_args|length > 0 %}
  136. {% for key in kube_kubeadm_scheduler_extra_args %}
  137. {{ key }}: "{{ kube_kubeadm_scheduler_extra_args[key] }}"
  138. {% endfor %}
  139. {% endif %}
  140. {% if kube_basic_auth|default(true) or kube_token_auth|default(true) %}
  141. apiServerExtraVolumes:
  142. {% if kube_basic_auth|default(true) %}
  143. - name: basic-auth-config
  144. hostPath: {{ kube_users_dir }}
  145. mountPath: {{ kube_users_dir }}
  146. {% endif %}
  147. {% if kube_token_auth|default(true) %}
  148. - name: token-auth-config
  149. hostPath: {{ kube_token_dir }}
  150. mountPath: {{ kube_token_dir }}
  151. {% endif %}
  152. {% endif %}
  153. apiServerCertSANs:
  154. {% for san in apiserver_sans.split(' ') | unique %}
  155. - {{ san }}
  156. {% endfor %}
  157. certificatesDir: {{ kube_config_dir }}/ssl
  158. imageRepository: {{ kube_image_repo }}
  159. unifiedControlPlaneImage: ""
  160. {% if kube_override_hostname|default('') %}
  161. nodeName: {{ kube_override_hostname }}
  162. {% endif %}