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.

201 lines
6.9 KiB

  1. apiVersion: kubeadm.k8s.io/v1alpha3
  2. kind: InitConfiguration
  3. apiEndpoint:
  4. advertiseAddress: {{ ip | default(ansible_default_ipv4.address) }}
  5. bindPort: {{ kube_apiserver_port }}
  6. nodeRegistration:
  7. {% if kube_override_hostname|default('') %}
  8. name: {{ kube_override_hostname }}
  9. {% endif %}
  10. taints:
  11. - effect: NoSchedule
  12. key: node-role.kubernetes.io/master
  13. {% if container_manager == 'crio' %}
  14. criSocket: /var/run/crio/crio.sock
  15. {% else %}
  16. criSocket: /var/run/dockershim.sock
  17. {% endif %}
  18. ---
  19. apiVersion: kubeadm.k8s.io/v1alpha3
  20. kind: ClusterConfiguration
  21. clusterName: {{ cluster_name }}
  22. etcd:
  23. external:
  24. endpoints:
  25. {% for endpoint in etcd_access_addresses.split(',') %}
  26. - {{ endpoint }}
  27. {% endfor %}
  28. caFile: {{ kube_config_dir }}/ssl/etcd/ca.pem
  29. certFile: {{ kube_config_dir }}/ssl/etcd/node-{{ inventory_hostname }}.pem
  30. keyFile: {{ kube_config_dir }}/ssl/etcd/node-{{ inventory_hostname }}-key.pem
  31. networking:
  32. dnsDomain: {{ dns_domain }}
  33. serviceSubnet: {{ kube_service_addresses }}
  34. podSubnet: {{ kube_pods_subnet }}
  35. kubernetesVersion: {{ kube_version }}
  36. {% if groups['kube-master'] | length > 1 and kubeadm_config_api_fqdn is defined %}
  37. controlPlaneEndpoint: {{ kubeadm_config_api_fqdn }}:{{ loadbalancer_apiserver.port | default(kube_apiserver_port) }}
  38. {% else %}
  39. controlPlaneEndpoint: {{ ip | default(ansible_default_ipv4.address) }}:{{ kube_apiserver_port }}
  40. {% endif %}
  41. apiServerExtraArgs:
  42. authorization-mode: {{ authorization_modes | join(',') }}
  43. bind-address: {{ kube_apiserver_bind_address }}
  44. {% if kube_apiserver_insecure_port|string != "0" %}
  45. insecure-bind-address: {{ kube_apiserver_insecure_bind_address }}
  46. {% endif %}
  47. insecure-port: "{{ kube_apiserver_insecure_port }}"
  48. {% if kube_version is version('v1.10', '<') %}
  49. admission-control: {{ kube_apiserver_admission_control | join(',') }}
  50. {% else %}
  51. {% if kube_apiserver_enable_admission_plugins|length > 0 %}
  52. enable-admission-plugins: {{ kube_apiserver_enable_admission_plugins | join(',') }}
  53. {% endif %}
  54. {% if kube_apiserver_disable_admission_plugins|length > 0 %}
  55. disable-admission-plugins: {{ kube_apiserver_disable_admission_plugins | join(',') }}
  56. {% endif %}
  57. {% endif %}
  58. apiserver-count: "{{ kube_apiserver_count }}"
  59. {% if kube_version is version('v1.9', '>=') %}
  60. endpoint-reconciler-type: lease
  61. {% endif %}
  62. {% if etcd_events_cluster_enabled %}
  63. etcd-servers-overrides: "/events#{{ etcd_events_access_addresses }}"
  64. {% endif %}
  65. service-node-port-range: {{ kube_apiserver_node_port_range }}
  66. kubelet-preferred-address-types: "{{ kubelet_preferred_address_types }}"
  67. {% if kube_basic_auth|default(true) %}
  68. basic-auth-file: {{ kube_users_dir }}/known_users.csv
  69. {% endif %}
  70. {% if kube_token_auth|default(true) %}
  71. token-auth-file: {{ kube_token_dir }}/known_tokens.csv
  72. {% endif %}
  73. {% if kube_oidc_auth|default(false) and kube_oidc_url is defined and kube_oidc_client_id is defined %}
  74. oidc-issuer-url: {{ kube_oidc_url }}
  75. oidc-client-id: {{ kube_oidc_client_id }}
  76. {% if kube_oidc_ca_file is defined %}
  77. oidc-ca-file: {{ kube_oidc_ca_file }}
  78. {% endif %}
  79. {% if kube_oidc_username_claim is defined %}
  80. oidc-username-claim: {{ kube_oidc_username_claim }}
  81. {% endif %}
  82. {% if kube_oidc_groups_claim is defined %}
  83. oidc-groups-claim: {{ kube_oidc_groups_claim }}
  84. {% endif %}
  85. {% endif %}
  86. {% if kube_encrypt_secret_data %}
  87. experimental-encryption-provider-config: {{ kube_config_dir }}/ssl/secrets_encryption.yaml
  88. {% endif %}
  89. storage-backend: {{ kube_apiserver_storage_backend }}
  90. {% if kube_api_runtime_config is defined %}
  91. runtime-config: {{ kube_api_runtime_config | join(',') }}
  92. {% endif %}
  93. allow-privileged: "true"
  94. {% if kubernetes_audit %}
  95. audit-log-path: "{{ audit_log_path }}"
  96. audit-log-maxage: "{{ audit_log_maxage }}"
  97. audit-log-maxbackup: "{{ audit_log_maxbackups }}"
  98. audit-log-maxsize: "{{ audit_log_maxsize }}"
  99. audit-policy-file: {{ audit_policy_file }}
  100. {% endif %}
  101. {% for key in kube_kubeadm_apiserver_extra_args %}
  102. {{ key }}: "{{ kube_kubeadm_apiserver_extra_args[key] }}"
  103. {% endfor %}
  104. {% if kube_feature_gates %}
  105. feature-gates: {{ kube_feature_gates|join(',') }}
  106. {% endif %}
  107. controllerManagerExtraArgs:
  108. node-monitor-grace-period: {{ kube_controller_node_monitor_grace_period }}
  109. node-monitor-period: {{ kube_controller_node_monitor_period }}
  110. pod-eviction-timeout: {{ kube_controller_pod_eviction_timeout }}
  111. {% if kube_feature_gates %}
  112. feature-gates: {{ kube_feature_gates|join(',') }}
  113. {% endif %}
  114. {% if cloud_provider is defined and cloud_provider in ["openstack"] and openstack_cacert is defined %}
  115. controllerManagerExtraVolumes:
  116. - name: openstackcacert
  117. hostPath: "{{ kube_config_dir }}/openstack-cacert.pem"
  118. mountPath: "{{ kube_config_dir }}/openstack-cacert.pem"
  119. {% endif %}
  120. {% if kubernetes_audit or kube_basic_auth|default(true) or kube_token_auth|default(true) %}
  121. apiServerExtraVolumes:
  122. {% if kube_basic_auth|default(true) %}
  123. - name: basic-auth-config
  124. hostPath: {{ kube_users_dir }}
  125. mountPath: {{ kube_users_dir }}
  126. {% endif %}
  127. {% if kube_token_auth|default(true) %}
  128. - name: token-auth-config
  129. hostPath: {{ kube_token_dir }}
  130. mountPath: {{ kube_token_dir }}
  131. {% endif %}
  132. {% if kubernetes_audit %}
  133. - name: {{ audit_policy_name }}
  134. hostPath: {{ audit_policy_hostpath }}
  135. mountPath: {{ audit_policy_mountpath }}
  136. {% if audit_log_path != "-" %}
  137. - name: {{ audit_log_name }}
  138. hostPath: {{ audit_log_hostpath }}
  139. mountPath: {{ audit_log_mountpath }}
  140. writable: true
  141. {% endif %}
  142. {% endif %}
  143. {% endif %}
  144. {% for key in kube_kubeadm_controller_extra_args %}
  145. {{ key }}: "{{ kube_kubeadm_controller_extra_args[key] }}"
  146. {% endfor %}
  147. schedulerExtraArgs:
  148. {% if kube_feature_gates %}
  149. feature-gates: {{ kube_feature_gates|join(',') }}
  150. {% endif %}
  151. {% if kube_kubeadm_scheduler_extra_args|length > 0 %}
  152. {% for key in kube_kubeadm_scheduler_extra_args %}
  153. {{ key }}: "{{ kube_kubeadm_scheduler_extra_args[key] }}"
  154. {% endfor %}
  155. {% endif %}
  156. apiServerCertSANs:
  157. {% for san in apiserver_sans.split(' ') | unique %}
  158. - {{ san }}
  159. {% endfor %}
  160. certificatesDir: {{ kube_config_dir }}/ssl
  161. imageRepository: {{ kube_image_repo }}
  162. unifiedControlPlaneImage: ""
  163. ---
  164. apiVersion: kubeproxy.config.k8s.io/v1alpha1
  165. kind: KubeProxyConfiguration
  166. bindAddress: 0.0.0.0
  167. clientConnection:
  168. acceptContentTypes: ""
  169. burst: 10
  170. contentType: application/vnd.kubernetes.protobuf
  171. kubeconfig: /var/lib/kube-proxy/kubeconfig.conf
  172. qps: 5
  173. clusterCIDR: ""
  174. configSyncPeriod: 15m0s
  175. conntrack:
  176. max: null
  177. maxPerCore: 32768
  178. min: 131072
  179. tcpCloseWaitTimeout: 1h0m0s
  180. tcpEstablishedTimeout: 24h0m0s
  181. enableProfiling: false
  182. healthzBindAddress: 0.0.0.0:10256
  183. iptables:
  184. masqueradeAll: false
  185. masqueradeBit: 14
  186. minSyncPeriod: 0s
  187. syncPeriod: 30s
  188. ipvs:
  189. excludeCIDRs: null
  190. minSyncPeriod: 0s
  191. scheduler: ""
  192. syncPeriod: 30s
  193. metricsBindAddress: 127.0.0.1:10249
  194. mode: {{ kube_proxy_mode }}
  195. {% if kube_proxy_nodeport_addresses %}
  196. nodePortAddresses: [{{ kube_proxy_nodeport_addresses_cidr }}]
  197. {% endif %}
  198. oomScoreAdj: -999
  199. portRange: ""
  200. resourceContainer: /kube-proxy
  201. udpIdleTimeout: 250ms