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.

1205 lines
45 KiB

Added file and container image caching (#4828) * File and container image downloads are now cached localy, so that repeated vagrant up/down runs do not trigger downloading of those files. This is especially useful on laptops with kubernetes runnig locally on vm's. The total size of the cache, after an ansible run, is currently around 800MB, so bandwidth (=time) savings can be quite significant. * When download_run_once is false, the default is still not to cache, but setting download_force_cache will still enable caching. * The local cache location can be set with download_cache_dir and defaults to /tmp/kubernetes_cache * A local docker instance is no longer required to cache docker images; Images are cached to file. A local docker instance is still required, though, if you wish to download images on localhost. * Fixed a FIXME, wher the argument was that delegate_to doesn't play nice with omit. That is a correct observation and the fix is to use default(inventory_host) instead of default(omit). See ansible/ansible#26009 * Removed "Register docker images info" task from download_container and set_docker_image_facts because it was faulty and unused. * Removed redundant when:download.{container,enabled,run_once} conditions from {sync,download}_container.yml * All features of commit d6fd0d2acaec9f53e75d82db30411f96a5bf2cc9 by Timoses <timosesu@gmail.com>, merged May 1st 2019, are included in this patch. Not all code was included verbatim, but each feature of that commit was checked to be working in this patch. One notable change: The actual downloading of the kubeadm images was moved to {download,sync)_container, to enable caching. Note 1: I considered splitting this patch, but most changes that are not directly related to caching, are a pleasant by-product of implementing the caching code, so splitting would be impractical. Note 2: I have my doubts about the usefulness of the upload, download and upgrade tags in the download role. Must they remain or can they be removed? If anybody knows, then please speak up.
5 years ago
Added file and container image caching (#4828) * File and container image downloads are now cached localy, so that repeated vagrant up/down runs do not trigger downloading of those files. This is especially useful on laptops with kubernetes runnig locally on vm's. The total size of the cache, after an ansible run, is currently around 800MB, so bandwidth (=time) savings can be quite significant. * When download_run_once is false, the default is still not to cache, but setting download_force_cache will still enable caching. * The local cache location can be set with download_cache_dir and defaults to /tmp/kubernetes_cache * A local docker instance is no longer required to cache docker images; Images are cached to file. A local docker instance is still required, though, if you wish to download images on localhost. * Fixed a FIXME, wher the argument was that delegate_to doesn't play nice with omit. That is a correct observation and the fix is to use default(inventory_host) instead of default(omit). See ansible/ansible#26009 * Removed "Register docker images info" task from download_container and set_docker_image_facts because it was faulty and unused. * Removed redundant when:download.{container,enabled,run_once} conditions from {sync,download}_container.yml * All features of commit d6fd0d2acaec9f53e75d82db30411f96a5bf2cc9 by Timoses <timosesu@gmail.com>, merged May 1st 2019, are included in this patch. Not all code was included verbatim, but each feature of that commit was checked to be working in this patch. One notable change: The actual downloading of the kubeadm images was moved to {download,sync)_container, to enable caching. Note 1: I considered splitting this patch, but most changes that are not directly related to caching, are a pleasant by-product of implementing the caching code, so splitting would be impractical. Note 2: I have my doubts about the usefulness of the upload, download and upgrade tags in the download role. Must they remain or can they be removed? If anybody knows, then please speak up.
5 years ago
  1. ---
  2. local_release_dir: /tmp/releases
  3. download_cache_dir: /tmp/kubespray_cache
  4. # If this is true, debug information will be displayed but
  5. # may contain some private data, so it is recommended to set it to false
  6. # in the production environment.
  7. unsafe_show_logs: false
  8. # do not delete remote cache files after using them
  9. # NOTE: Setting this parameter to TRUE is only really useful when developing kubespray
  10. download_keep_remote_cache: false
  11. # Only useful when download_run_once is false: Localy cached files and images are
  12. # uploaded to kubernetes nodes. Also, images downloaded on those nodes are copied
  13. # back to the ansible runner's cache, if they are not yet preset.
  14. download_force_cache: false
  15. # Used to only evaluate vars from download role
  16. skip_downloads: false
  17. # Optionally skip kubeadm images download
  18. skip_kubeadm_images: false
  19. kubeadm_images: {}
  20. # if this is set to true will only download files once. Doesn't work
  21. # on Flatcar Container Linux by Kinvolk unless the download_localhost is true and localhost
  22. # is running another OS type. Default compress level is 1 (fastest).
  23. download_run_once: false
  24. download_compress: 1
  25. # if this is set to true will download container
  26. download_container: true
  27. # if this is set to true, uses the localhost for download_run_once mode
  28. # (requires docker and sudo to access docker). You may want this option for
  29. # local caching of docker images or for Flatcar Container Linux by Kinvolk cluster nodes.
  30. # Otherwise, uses the first node in the kube_control_plane group to store images
  31. # in the download_run_once mode.
  32. download_localhost: false
  33. # Always pull images if set to True. Otherwise check by the repo's tag/digest.
  34. download_always_pull: false
  35. # Some problems may occur when downloading files over https proxy due to ansible bug
  36. # https://github.com/ansible/ansible/issues/32750. Set this variable to False to disable
  37. # SSL validation of get_url module. Note that kubespray will still be performing checksum validation.
  38. download_validate_certs: true
  39. # Use the first kube_control_plane if download_localhost is not set
  40. download_delegate: "{% if download_localhost %}localhost{% else %}{{ groups['kube_control_plane'][0] }}{% endif %}"
  41. # Allow control the times of download retries for files and containers
  42. download_retries: 4
  43. # The docker_image_info_command might seems weird but we are using raw/endraw and `{{ `{{` }}` to manage the double jinja2 processing
  44. docker_image_pull_command: "{{ docker_bin_dir }}/docker pull"
  45. docker_image_info_command: "{{ docker_bin_dir }}/docker images -q | xargs -i {{ '{{' }} docker_bin_dir }}/docker inspect -f {% raw %}'{{ '{{' }} if .RepoTags }}{{ '{{' }} join .RepoTags \",\" }}{{ '{{' }} end }}{{ '{{' }} if .RepoDigests }},{{ '{{' }} join .RepoDigests \",\" }}{{ '{{' }} end }}' {% endraw %} {} | tr '\n' ','"
  46. nerdctl_image_info_command: "{{ bin_dir }}/nerdctl -n k8s.io images --format '{% raw %}{{ .Repository }}:{{ .Tag }}{% endraw %}' 2>/dev/null | grep -v ^:$ | tr '\n' ','"
  47. # Using the ctr instead of nerdctl to workdaround the https://github.com/kubernetes-sigs/kubespray/issues/10670
  48. nerdctl_image_pull_command: "{{ bin_dir }}/ctr -n k8s.io images pull{% if containerd_registries_mirrors is defined %} --hosts-dir {{ containerd_cfg_dir }}/certs.d{%- endif -%}"
  49. crictl_image_info_command: "{{ bin_dir }}/crictl images --verbose | awk -F ': ' '/RepoTags|RepoDigests/ {print $2}' | tr '\n' ','"
  50. crictl_image_pull_command: "{{ bin_dir }}/crictl pull"
  51. image_command_tool: "{%- if container_manager == 'containerd' -%}nerdctl{%- elif container_manager == 'crio' -%}crictl{%- else -%}{{ container_manager }}{%- endif -%}"
  52. image_command_tool_on_localhost: "{{ image_command_tool }}"
  53. image_pull_command: "{{ lookup('vars', image_command_tool + '_image_pull_command') }}"
  54. image_info_command: "{{ lookup('vars', image_command_tool + '_image_info_command') }}"
  55. image_pull_command_on_localhost: "{{ lookup('vars', image_command_tool_on_localhost + '_image_pull_command') }}"
  56. image_info_command_on_localhost: "{{ lookup('vars', image_command_tool_on_localhost + '_image_info_command') }}"
  57. # Arch of Docker images and needed packages
  58. image_arch: "{{ host_architecture | default('amd64') }}"
  59. # Versions
  60. crun_version: 1.14.4
  61. runc_version: v1.1.13
  62. kata_containers_version: 3.1.3
  63. youki_version: 0.1.0
  64. gvisor_version: 20240305
  65. containerd_version: 1.7.22
  66. cri_dockerd_version: 0.3.11
  67. # this is relevant when container_manager == 'docker'
  68. docker_containerd_version: 1.6.32
  69. # gcr and kubernetes image repo define
  70. gcr_image_repo: "gcr.io"
  71. kube_image_repo: "registry.k8s.io"
  72. # docker image repo define
  73. docker_image_repo: "docker.io"
  74. # quay image repo define
  75. quay_image_repo: "quay.io"
  76. # github image repo define (ex multus only use that)
  77. github_image_repo: "ghcr.io"
  78. # TODO(mattymo): Move calico versions to roles/network_plugins/calico/defaults
  79. # after migration to container download
  80. calico_version: "v3.28.1"
  81. calico_ctl_version: "{{ calico_version }}"
  82. calico_cni_version: "{{ calico_version }}"
  83. calico_flexvol_version: "{{ calico_version }}"
  84. calico_policy_version: "{{ calico_version }}"
  85. calico_typha_version: "{{ calico_version }}"
  86. calico_apiserver_version: "{{ calico_version }}"
  87. typha_enabled: false
  88. calico_apiserver_enabled: false
  89. flannel_version: "v0.22.0"
  90. flannel_cni_version: "v1.1.2"
  91. weave_version: 2.8.7
  92. cni_version: "v1.4.0"
  93. cilium_version: "v1.15.4"
  94. cilium_cli_version: "v0.16.0"
  95. cilium_enable_hubble: false
  96. kube_ovn_version: "v1.12.21"
  97. kube_ovn_dpdk_version: "19.11-{{ kube_ovn_version }}"
  98. kube_router_version: "v2.0.0"
  99. multus_version: "v4.1.0"
  100. helm_version: "v3.15.4"
  101. nerdctl_version: "1.7.6"
  102. krew_version: "v0.4.4"
  103. skopeo_version: "v1.15.0"
  104. # Get kubernetes major version (i.e. 1.17.4 => 1.17)
  105. kube_major_version: "{{ kube_version | regex_replace('^v([0-9])+\\.([0-9]+)\\.[0-9]+', 'v\\1.\\2') }}"
  106. pod_infra_supported_versions:
  107. v1.30: "3.9"
  108. v1.29: "3.9"
  109. v1.28: "3.9"
  110. pod_infra_version: "{{ pod_infra_supported_versions[kube_major_version] }}"
  111. etcd_supported_versions:
  112. v1.30: "v3.5.12"
  113. v1.29: "v3.5.12"
  114. v1.28: "v3.5.12"
  115. etcd_version: "{{ etcd_supported_versions[kube_major_version] }}"
  116. crictl_supported_versions:
  117. v1.30: "v1.30.0"
  118. v1.29: "v1.29.0"
  119. v1.28: "v1.28.0"
  120. crictl_version: "{{ crictl_supported_versions[kube_major_version] }}"
  121. crio_supported_versions:
  122. v1.30: v1.30.3
  123. v1.29: v1.29.1
  124. v1.28: v1.28.4
  125. crio_version: "{{ crio_supported_versions[kube_major_version] }}"
  126. # Scheduler plugins doesn't build for K8s 1.29 yet
  127. scheduler_plugins_supported_versions:
  128. v1.30: 0
  129. v1.29: 0
  130. v1.28: v0.28.9
  131. scheduler_plugins_version: "{{ scheduler_plugins_supported_versions[kube_major_version] }}"
  132. yq_version: "v4.42.1"
  133. github_url: https://github.com
  134. dl_k8s_io_url: https://dl.k8s.io
  135. storage_googleapis_url: https://storage.googleapis.com
  136. get_helm_url: https://get.helm.sh
  137. # Download URLs
  138. kubelet_download_url: "{{ dl_k8s_io_url }}/release/{{ kube_version }}/bin/linux/{{ image_arch }}/kubelet"
  139. kubectl_download_url: "{{ dl_k8s_io_url }}/release/{{ kube_version }}/bin/linux/{{ image_arch }}/kubectl"
  140. kubeadm_download_url: "{{ dl_k8s_io_url }}/release/{{ kube_version }}/bin/linux/{{ image_arch }}/kubeadm"
  141. etcd_download_url: "{{ github_url }}/etcd-io/etcd/releases/download/{{ etcd_version }}/etcd-{{ etcd_version }}-linux-{{ image_arch }}.tar.gz"
  142. cni_download_url: "{{ github_url }}/containernetworking/plugins/releases/download/{{ cni_version }}/cni-plugins-linux-{{ image_arch }}-{{ cni_version }}.tgz"
  143. calicoctl_download_url: "{{ github_url }}/projectcalico/calico/releases/download/{{ calico_ctl_version }}/calicoctl-linux-{{ image_arch }}"
  144. calico_crds_download_url: "{{ github_url }}/projectcalico/calico/archive/{{ calico_version }}.tar.gz"
  145. ciliumcli_download_url: "{{ github_url }}/cilium/cilium-cli/releases/download/{{ cilium_cli_version }}/cilium-linux-{{ image_arch }}.tar.gz"
  146. crictl_download_url: "{{ github_url }}/kubernetes-sigs/cri-tools/releases/download/{{ crictl_version }}/crictl-{{ crictl_version }}-{{ ansible_system | lower }}-{{ image_arch }}.tar.gz"
  147. crio_download_url: "{{ storage_googleapis_url }}/cri-o/artifacts/cri-o.{{ image_arch }}.{{ crio_version }}.tar.gz"
  148. helm_download_url: "{{ get_helm_url }}/helm-{{ helm_version }}-linux-{{ image_arch }}.tar.gz"
  149. runc_download_url: "{{ github_url }}/opencontainers/runc/releases/download/{{ runc_version }}/runc.{{ image_arch }}"
  150. crun_download_url: "{{ github_url }}/containers/crun/releases/download/{{ crun_version }}/crun-{{ crun_version }}-linux-{{ image_arch }}"
  151. youki_download_url: "{{ github_url }}/containers/youki/releases/download/v{{ youki_version }}/youki_{{ youki_version | regex_replace('\\.', '_') }}_linux.tar.gz"
  152. kata_containers_download_url: "{{ github_url }}/kata-containers/kata-containers/releases/download/{{ kata_containers_version }}/kata-static-{{ kata_containers_version }}-{{ ansible_architecture }}.tar.xz"
  153. # gVisor only supports amd64 and uses x86_64 to in the download link
  154. gvisor_runsc_download_url: "{{ storage_googleapis_url }}/gvisor/releases/release/{{ gvisor_version }}/{{ ansible_architecture }}/runsc"
  155. gvisor_containerd_shim_runsc_download_url: "{{ storage_googleapis_url }}/gvisor/releases/release/{{ gvisor_version }}/{{ ansible_architecture }}/containerd-shim-runsc-v1"
  156. nerdctl_download_url: "{{ github_url }}/containerd/nerdctl/releases/download/v{{ nerdctl_version }}/nerdctl-{{ nerdctl_version }}-{{ ansible_system | lower }}-{{ image_arch }}.tar.gz"
  157. krew_download_url: "{{ github_url }}/kubernetes-sigs/krew/releases/download/{{ krew_version }}/krew-{{ host_os }}_{{ image_arch }}.tar.gz"
  158. containerd_download_url: "{{ github_url }}/containerd/containerd/releases/download/v{{ containerd_version }}/containerd-{{ containerd_version }}-linux-{{ image_arch }}.tar.gz"
  159. cri_dockerd_download_url: "{{ github_url }}/Mirantis/cri-dockerd/releases/download/v{{ cri_dockerd_version }}/cri-dockerd-{{ cri_dockerd_version }}.{{ image_arch }}.tgz"
  160. skopeo_download_url: "{{ github_url }}/lework/skopeo-binary/releases/download/{{ skopeo_version }}/skopeo-linux-{{ image_arch }}"
  161. yq_download_url: "{{ github_url }}/mikefarah/yq/releases/download/{{ yq_version }}/yq_linux_{{ image_arch }}"
  162. etcd_binary_checksum: "{{ etcd_binary_checksums[image_arch][etcd_version] }}"
  163. cni_binary_checksum: "{{ cni_binary_checksums[image_arch][cni_version] }}"
  164. kubelet_binary_checksum: "{{ kubelet_checksums[image_arch][kube_version] }}"
  165. kubectl_binary_checksum: "{{ kubectl_checksums[image_arch][kube_version] }}"
  166. kubeadm_binary_checksum: "{{ kubeadm_checksums[image_arch][kube_version] }}"
  167. yq_binary_checksum: "{{ yq_checksums[image_arch][yq_version] }}"
  168. calicoctl_binary_checksum: "{{ calicoctl_binary_checksums[image_arch][calico_ctl_version] }}"
  169. calico_crds_archive_checksum: "{{ calico_crds_archive_checksums[calico_version] }}"
  170. ciliumcli_binary_checksum: "{{ ciliumcli_binary_checksums[image_arch][cilium_cli_version] }}"
  171. crictl_binary_checksum: "{{ crictl_checksums[image_arch][crictl_version] }}"
  172. crio_archive_checksum: "{{ crio_archive_checksums[image_arch][crio_version] }}"
  173. cri_dockerd_archive_checksum: "{{ cri_dockerd_archive_checksums[image_arch][cri_dockerd_version] }}"
  174. helm_archive_checksum: "{{ helm_archive_checksums[image_arch][helm_version] }}"
  175. runc_binary_checksum: "{{ runc_checksums[image_arch][runc_version] }}"
  176. crun_binary_checksum: "{{ crun_checksums[image_arch][crun_version] }}"
  177. youki_archive_checksum: "{{ youki_checksums[image_arch][youki_version] }}"
  178. kata_containers_binary_checksum: "{{ kata_containers_binary_checksums[image_arch][kata_containers_version] }}"
  179. gvisor_runsc_binary_checksum: "{{ gvisor_runsc_binary_checksums[image_arch][gvisor_version] }}"
  180. gvisor_containerd_shim_binary_checksum: "{{ gvisor_containerd_shim_binary_checksums[image_arch][gvisor_version] }}"
  181. nerdctl_archive_checksum: "{{ nerdctl_archive_checksums[image_arch][nerdctl_version] }}"
  182. krew_archive_checksum: "{{ krew_archive_checksums[host_os][image_arch][krew_version] }}"
  183. containerd_archive_checksum: "{{ containerd_archive_checksums[image_arch][containerd_version] }}"
  184. skopeo_binary_checksum: "{{ skopeo_binary_checksums[image_arch][skopeo_version] }}"
  185. # Containers
  186. # In some cases, we need a way to set --registry-mirror or --insecure-registry for docker,
  187. # it helps a lot for local private development or bare metal environment.
  188. # So you need define --registry-mirror or --insecure-registry, and modify the following url address.
  189. # example:
  190. # You need to deploy kubernetes cluster on local private development.
  191. # Also provide the address of your own private registry.
  192. # And use --insecure-registry options for docker
  193. kube_proxy_image_repo: "{{ kube_image_repo }}/kube-proxy"
  194. etcd_image_repo: "{{ quay_image_repo }}/coreos/etcd"
  195. etcd_image_tag: "{{ etcd_version }}"
  196. flannel_image_repo: "{{ docker_image_repo }}/flannel/flannel"
  197. flannel_image_tag: "{{ flannel_version }}"
  198. flannel_init_image_repo: "{{ docker_image_repo }}/flannel/flannel-cni-plugin"
  199. flannel_init_image_tag: "{{ flannel_cni_version }}"
  200. calico_node_image_repo: "{{ quay_image_repo }}/calico/node"
  201. calico_node_image_tag: "{{ calico_version }}"
  202. calico_cni_image_repo: "{{ quay_image_repo }}/calico/cni"
  203. calico_cni_image_tag: "{{ calico_cni_version }}"
  204. calico_flexvol_image_repo: "{{ quay_image_repo }}/calico/pod2daemon-flexvol"
  205. calico_flexvol_image_tag: "{{ calico_flexvol_version }}"
  206. calico_policy_image_repo: "{{ quay_image_repo }}/calico/kube-controllers"
  207. calico_policy_image_tag: "{{ calico_policy_version }}"
  208. calico_typha_image_repo: "{{ quay_image_repo }}/calico/typha"
  209. calico_typha_image_tag: "{{ calico_typha_version }}"
  210. calico_apiserver_image_repo: "{{ quay_image_repo }}/calico/apiserver"
  211. calico_apiserver_image_tag: "{{ calico_apiserver_version }}"
  212. pod_infra_image_repo: "{{ kube_image_repo }}/pause"
  213. pod_infra_image_tag: "{{ pod_infra_version }}"
  214. netcheck_version: "v1.2.2"
  215. netcheck_agent_image_repo: "{{ docker_image_repo }}/mirantis/k8s-netchecker-agent"
  216. netcheck_agent_image_tag: "{{ netcheck_version }}"
  217. netcheck_server_image_repo: "{{ docker_image_repo }}/mirantis/k8s-netchecker-server"
  218. netcheck_server_image_tag: "{{ netcheck_version }}"
  219. netcheck_etcd_image_tag: "v3.4.17"
  220. weave_kube_image_repo: "{{ docker_image_repo }}/rajchaudhuri/weave-kube"
  221. weave_kube_image_tag: "{{ weave_version }}"
  222. weave_npc_image_repo: "{{ docker_image_repo }}/rajchaudhuri/weave-npc"
  223. weave_npc_image_tag: "{{ weave_version }}"
  224. cilium_image_repo: "{{ quay_image_repo }}/cilium/cilium"
  225. cilium_image_tag: "{{ cilium_version }}"
  226. cilium_operator_image_repo: "{{ quay_image_repo }}/cilium/operator"
  227. cilium_operator_image_tag: "{{ cilium_version }}"
  228. cilium_hubble_relay_image_repo: "{{ quay_image_repo }}/cilium/hubble-relay"
  229. cilium_hubble_relay_image_tag: "{{ cilium_version }}"
  230. cilium_hubble_certgen_image_repo: "{{ quay_image_repo }}/cilium/certgen"
  231. cilium_hubble_certgen_image_tag: "v0.1.8"
  232. cilium_hubble_ui_image_repo: "{{ quay_image_repo }}/cilium/hubble-ui"
  233. cilium_hubble_ui_image_tag: "v0.11.0"
  234. cilium_hubble_ui_backend_image_repo: "{{ quay_image_repo }}/cilium/hubble-ui-backend"
  235. cilium_hubble_ui_backend_image_tag: "v0.11.0"
  236. cilium_hubble_envoy_image_repo: "{{ docker_image_repo }}/envoyproxy/envoy"
  237. cilium_hubble_envoy_image_tag: "v1.22.5"
  238. kube_ovn_container_image_repo: "{{ docker_image_repo }}/kubeovn/kube-ovn"
  239. kube_ovn_container_image_tag: "{{ kube_ovn_version }}"
  240. kube_ovn_vpc_container_image_repo: "{{ docker_image_repo }}/kubeovn/vpc-nat-gateway"
  241. kube_ovn_vpc_container_image_tag: "{{ kube_ovn_version }}"
  242. kube_ovn_dpdk_container_image_repo: "{{ docker_image_repo }}/kubeovn/kube-ovn-dpdk"
  243. kube_ovn_dpdk_container_image_tag: "{{ kube_ovn_dpdk_version }}"
  244. kube_router_image_repo: "{{ docker_image_repo }}/cloudnativelabs/kube-router"
  245. kube_router_image_tag: "{{ kube_router_version }}"
  246. multus_image_repo: "{{ github_image_repo }}/k8snetworkplumbingwg/multus-cni"
  247. multus_image_tag: "{{ multus_version }}"
  248. external_openstack_cloud_controller_image_repo: "registry.k8s.io/provider-os/openstack-cloud-controller-manager"
  249. external_openstack_cloud_controller_image_tag: "v1.30.0"
  250. kube_vip_image_repo: "{{ github_image_repo }}/kube-vip/kube-vip"
  251. kube_vip_image_tag: v0.8.0
  252. nginx_image_repo: "{{ docker_image_repo }}/library/nginx"
  253. nginx_image_tag: 1.25.2-alpine
  254. haproxy_image_repo: "{{ docker_image_repo }}/library/haproxy"
  255. haproxy_image_tag: 2.8.2-alpine
  256. # Coredns version should be supported by corefile-migration (or at least work with)
  257. # bundle with kubeadm; if not 'basic' upgrade can sometimes fail
  258. coredns_version: "{{ 'v1.11.1' if (kube_version is version('v1.29.0', '>=')) else 'v1.10.1' }}"
  259. coredns_image_is_namespaced: "{{ (coredns_version is version('v1.7.1', '>=')) }}"
  260. coredns_image_repo: "{{ kube_image_repo }}{{ '/coredns/coredns' if (coredns_image_is_namespaced | bool) else '/coredns' }}"
  261. coredns_image_tag: "{{ coredns_version if (coredns_image_is_namespaced | bool) else (coredns_version | regex_replace('^v', '')) }}"
  262. nodelocaldns_version: "1.22.28"
  263. nodelocaldns_image_repo: "{{ kube_image_repo }}/dns/k8s-dns-node-cache"
  264. nodelocaldns_image_tag: "{{ nodelocaldns_version }}"
  265. dnsautoscaler_version: v1.8.8
  266. dnsautoscaler_image_repo: "{{ kube_image_repo }}/cpa/cluster-proportional-autoscaler"
  267. dnsautoscaler_image_tag: "{{ dnsautoscaler_version }}"
  268. scheduler_plugins_controller_image_repo: "{{ kube_image_repo }}/scheduler-plugins/controller"
  269. scheduler_plugins_controller_image_tag: "{{ scheduler_plugins_version }}"
  270. scheduler_plugins_scheduler_image_repo: "{{ kube_image_repo }}/scheduler-plugins/kube-scheduler"
  271. scheduler_plugins_scheduler_image_tag: "{{ scheduler_plugins_version }}"
  272. registry_version: "2.8.1"
  273. registry_image_repo: "{{ docker_image_repo }}/library/registry"
  274. registry_image_tag: "{{ registry_version }}"
  275. metrics_server_version: "v0.7.0"
  276. metrics_server_image_repo: "{{ kube_image_repo }}/metrics-server/metrics-server"
  277. metrics_server_image_tag: "{{ metrics_server_version }}"
  278. local_volume_provisioner_version: "v2.5.0"
  279. local_volume_provisioner_image_repo: "{{ kube_image_repo }}/sig-storage/local-volume-provisioner"
  280. local_volume_provisioner_image_tag: "{{ local_volume_provisioner_version }}"
  281. cephfs_provisioner_version: "v2.1.0-k8s1.11"
  282. cephfs_provisioner_image_repo: "{{ quay_image_repo }}/external_storage/cephfs-provisioner"
  283. cephfs_provisioner_image_tag: "{{ cephfs_provisioner_version }}"
  284. rbd_provisioner_version: "v2.1.1-k8s1.11"
  285. rbd_provisioner_image_repo: "{{ quay_image_repo }}/external_storage/rbd-provisioner"
  286. rbd_provisioner_image_tag: "{{ rbd_provisioner_version }}"
  287. local_path_provisioner_version: "v0.0.24"
  288. local_path_provisioner_image_repo: "{{ docker_image_repo }}/rancher/local-path-provisioner"
  289. local_path_provisioner_image_tag: "{{ local_path_provisioner_version }}"
  290. ingress_nginx_version: "v1.11.2"
  291. ingress_nginx_controller_image_repo: "{{ kube_image_repo }}/ingress-nginx/controller"
  292. ingress_nginx_opentelemetry_image_repo: "{{ kube_image_repo }}/ingress-nginx/opentelemetry"
  293. ingress_nginx_controller_image_tag: "{{ ingress_nginx_version }}"
  294. ingress_nginx_opentelemetry_image_tag: "v20230721-3e2062ee5"
  295. ingress_nginx_kube_webhook_certgen_image_repo: "{{ kube_image_repo }}/ingress-nginx/kube-webhook-certgen"
  296. ingress_nginx_kube_webhook_certgen_image_tag: "v1.4.3"
  297. alb_ingress_image_repo: "{{ docker_image_repo }}/amazon/aws-alb-ingress-controller"
  298. alb_ingress_image_tag: "v1.1.9"
  299. cert_manager_version: "v1.14.7"
  300. cert_manager_controller_image_repo: "{{ quay_image_repo }}/jetstack/cert-manager-controller"
  301. cert_manager_controller_image_tag: "{{ cert_manager_version }}"
  302. cert_manager_cainjector_image_repo: "{{ quay_image_repo }}/jetstack/cert-manager-cainjector"
  303. cert_manager_cainjector_image_tag: "{{ cert_manager_version }}"
  304. cert_manager_webhook_image_repo: "{{ quay_image_repo }}/jetstack/cert-manager-webhook"
  305. cert_manager_webhook_image_tag: "{{ cert_manager_version }}"
  306. csi_attacher_image_repo: "{{ kube_image_repo }}/sig-storage/csi-attacher"
  307. csi_attacher_image_tag: "v3.3.0"
  308. csi_provisioner_image_repo: "{{ kube_image_repo }}/sig-storage/csi-provisioner"
  309. csi_provisioner_image_tag: "v3.0.0"
  310. csi_snapshotter_image_repo: "{{ kube_image_repo }}/sig-storage/csi-snapshotter"
  311. csi_snapshotter_image_tag: "v5.0.0"
  312. csi_resizer_image_repo: "{{ kube_image_repo }}/sig-storage/csi-resizer"
  313. csi_resizer_image_tag: "v1.3.0"
  314. csi_node_driver_registrar_image_repo: "{{ kube_image_repo }}/sig-storage/csi-node-driver-registrar"
  315. csi_node_driver_registrar_image_tag: "v2.4.0"
  316. csi_livenessprobe_image_repo: "{{ kube_image_repo }}/sig-storage/livenessprobe"
  317. csi_livenessprobe_image_tag: "v2.5.0"
  318. snapshot_controller_supported_versions:
  319. v1.30: "v7.0.2"
  320. v1.29: "v7.0.2"
  321. v1.28: "v7.0.2"
  322. snapshot_controller_image_repo: "{{ kube_image_repo }}/sig-storage/snapshot-controller"
  323. snapshot_controller_image_tag: "{{ snapshot_controller_supported_versions[kube_major_version] }}"
  324. cinder_csi_plugin_version: "v1.30.0"
  325. cinder_csi_plugin_image_repo: "{{ kube_image_repo }}/provider-os/cinder-csi-plugin"
  326. cinder_csi_plugin_image_tag: "{{ cinder_csi_plugin_version }}"
  327. aws_ebs_csi_plugin_version: "v0.5.0"
  328. aws_ebs_csi_plugin_image_repo: "{{ docker_image_repo }}/amazon/aws-ebs-csi-driver"
  329. aws_ebs_csi_plugin_image_tag: "{{ aws_ebs_csi_plugin_version }}"
  330. gcp_pd_csi_plugin_version: "v1.9.2"
  331. gcp_pd_csi_plugin_image_repo: "{{ kube_image_repo }}/cloud-provider-gcp/gcp-compute-persistent-disk-csi-driver"
  332. gcp_pd_csi_plugin_image_tag: "{{ gcp_pd_csi_plugin_version }}"
  333. azure_csi_image_repo: "mcr.microsoft.com/oss/kubernetes-csi"
  334. azure_csi_provisioner_image_tag: "v2.2.2"
  335. azure_csi_attacher_image_tag: "v3.3.0"
  336. azure_csi_resizer_image_tag: "v1.3.0"
  337. azure_csi_livenessprobe_image_tag: "v2.5.0"
  338. azure_csi_node_registrar_image_tag: "v2.4.0"
  339. azure_csi_snapshotter_image_tag: "v3.0.3"
  340. azure_csi_plugin_version: "v1.10.0"
  341. azure_csi_plugin_image_repo: "mcr.microsoft.com/k8s/csi"
  342. azure_csi_plugin_image_tag: "{{ azure_csi_plugin_version }}"
  343. gcp_pd_csi_image_repo: "gke.gcr.io"
  344. gcp_pd_csi_driver_image_tag: "v0.7.0-gke.0"
  345. gcp_pd_csi_provisioner_image_tag: "v1.5.0-gke.0"
  346. gcp_pd_csi_attacher_image_tag: "v2.1.1-gke.0"
  347. gcp_pd_csi_resizer_image_tag: "v0.4.0-gke.0"
  348. gcp_pd_csi_registrar_image_tag: "v1.2.0-gke.0"
  349. dashboard_image_repo: "{{ docker_image_repo }}/kubernetesui/dashboard"
  350. dashboard_image_tag: "v2.7.0"
  351. dashboard_metrics_scraper_repo: "{{ docker_image_repo }}/kubernetesui/metrics-scraper"
  352. dashboard_metrics_scraper_tag: "v1.0.8"
  353. metallb_speaker_image_repo: "{{ quay_image_repo }}/metallb/speaker"
  354. metallb_controller_image_repo: "{{ quay_image_repo }}/metallb/controller"
  355. metallb_version: v0.13.9
  356. node_feature_discovery_version: v0.16.4
  357. node_feature_discovery_image_repo: "{{ kube_image_repo }}/nfd/node-feature-discovery"
  358. node_feature_discovery_image_tag: "{{ node_feature_discovery_version }}"
  359. downloads:
  360. netcheck_server:
  361. enabled: "{{ deploy_netchecker }}"
  362. container: true
  363. repo: "{{ netcheck_server_image_repo }}"
  364. tag: "{{ netcheck_server_image_tag }}"
  365. sha256: "{{ netcheck_server_digest_checksum | default(None) }}"
  366. groups:
  367. - k8s_cluster
  368. netcheck_agent:
  369. enabled: "{{ deploy_netchecker }}"
  370. container: true
  371. repo: "{{ netcheck_agent_image_repo }}"
  372. tag: "{{ netcheck_agent_image_tag }}"
  373. sha256: "{{ netcheck_agent_digest_checksum | default(None) }}"
  374. groups:
  375. - k8s_cluster
  376. etcd:
  377. container: "{{ etcd_deployment_type != 'host' }}"
  378. file: "{{ etcd_deployment_type == 'host' }}"
  379. enabled: true
  380. version: "{{ etcd_version }}"
  381. dest: "{{ local_release_dir }}/etcd-{{ etcd_version }}-linux-{{ image_arch }}.tar.gz"
  382. repo: "{{ etcd_image_repo }}"
  383. tag: "{{ etcd_image_tag }}"
  384. sha256: >-
  385. {{ etcd_binary_checksum if (etcd_deployment_type == 'host')
  386. else etcd_digest_checksum | d(None) }}
  387. url: "{{ etcd_download_url }}"
  388. unarchive: "{{ etcd_deployment_type == 'host' }}"
  389. owner: "root"
  390. mode: "0755"
  391. groups:
  392. - etcd
  393. cni:
  394. enabled: true
  395. file: true
  396. version: "{{ cni_version }}"
  397. dest: "{{ local_release_dir }}/cni-plugins-linux-{{ image_arch }}-{{ cni_version }}.tgz"
  398. sha256: "{{ cni_binary_checksum }}"
  399. url: "{{ cni_download_url }}"
  400. unarchive: false
  401. owner: "root"
  402. mode: "0755"
  403. groups:
  404. - k8s_cluster
  405. kubeadm:
  406. enabled: true
  407. file: true
  408. version: "{{ kube_version }}"
  409. dest: "{{ local_release_dir }}/kubeadm-{{ kube_version }}-{{ image_arch }}"
  410. sha256: "{{ kubeadm_binary_checksum }}"
  411. url: "{{ kubeadm_download_url }}"
  412. unarchive: false
  413. owner: "root"
  414. mode: "0755"
  415. groups:
  416. - k8s_cluster
  417. kubelet:
  418. enabled: true
  419. file: true
  420. version: "{{ kube_version }}"
  421. dest: "{{ local_release_dir }}/kubelet-{{ kube_version }}-{{ image_arch }}"
  422. sha256: "{{ kubelet_binary_checksum }}"
  423. url: "{{ kubelet_download_url }}"
  424. unarchive: false
  425. owner: "root"
  426. mode: "0755"
  427. groups:
  428. - k8s_cluster
  429. kubectl:
  430. enabled: true
  431. file: true
  432. version: "{{ kube_version }}"
  433. dest: "{{ local_release_dir }}/kubectl-{{ kube_version }}-{{ image_arch }}"
  434. sha256: "{{ kubectl_binary_checksum }}"
  435. url: "{{ kubectl_download_url }}"
  436. unarchive: false
  437. owner: "root"
  438. mode: "0755"
  439. groups:
  440. - kube_control_plane
  441. crictl:
  442. file: true
  443. enabled: true
  444. version: "{{ crictl_version }}"
  445. dest: "{{ local_release_dir }}/crictl-{{ crictl_version }}-linux-{{ image_arch }}.tar.gz"
  446. sha256: "{{ crictl_binary_checksum }}"
  447. url: "{{ crictl_download_url }}"
  448. unarchive: true
  449. owner: "root"
  450. mode: "0755"
  451. groups:
  452. - k8s_cluster
  453. crio:
  454. file: true
  455. enabled: "{{ container_manager == 'crio' }}"
  456. version: "{{ crio_version }}"
  457. dest: "{{ local_release_dir }}/cri-o.{{ image_arch }}.{{ crio_version }}tar.gz"
  458. sha256: "{{ crio_archive_checksum }}"
  459. url: "{{ crio_download_url }}"
  460. unarchive: true
  461. owner: "root"
  462. mode: "0755"
  463. groups:
  464. - k8s_cluster
  465. cri_dockerd:
  466. file: true
  467. enabled: "{{ container_manager == 'docker' }}"
  468. version: "{{ cri_dockerd_version }}"
  469. dest: "{{ local_release_dir }}/cri-dockerd-{{ cri_dockerd_version }}.{{ image_arch }}.tar.gz"
  470. sha256: "{{ cri_dockerd_archive_checksum }}"
  471. url: "{{ cri_dockerd_download_url }}"
  472. unarchive: true
  473. unarchive_extra_opts:
  474. - --strip=1
  475. owner: "root"
  476. mode: "0755"
  477. groups:
  478. - k8s_cluster
  479. crun:
  480. file: true
  481. enabled: "{{ crun_enabled }}"
  482. version: "{{ crun_version }}"
  483. dest: "{{ local_release_dir }}/crun-{{ crun_version }}-{{ image_arch }}"
  484. sha256: "{{ crun_binary_checksum }}"
  485. url: "{{ crun_download_url }}"
  486. unarchive: false
  487. owner: "root"
  488. mode: "0755"
  489. groups:
  490. - k8s_cluster
  491. youki:
  492. file: true
  493. enabled: "{{ youki_enabled }}"
  494. version: "{{ youki_version }}"
  495. dest: "{{ local_release_dir }}/youki_{{ youki_version | regex_replace('\\.', '_') }}_linux.tar.gz"
  496. sha256: "{{ youki_archive_checksum }}"
  497. url: "{{ youki_download_url }}"
  498. unarchive: true
  499. owner: "root"
  500. mode: "0755"
  501. groups:
  502. - k8s_cluster
  503. runc:
  504. file: true
  505. enabled: "{{ container_manager == 'containerd' }}"
  506. version: "{{ runc_version }}"
  507. dest: "{{ local_release_dir }}/runc-{{ runc_version }}.{{ image_arch }}"
  508. sha256: "{{ runc_binary_checksum }}"
  509. url: "{{ runc_download_url }}"
  510. unarchive: false
  511. owner: "root"
  512. mode: "0755"
  513. groups:
  514. - k8s_cluster
  515. kata_containers:
  516. enabled: "{{ kata_containers_enabled }}"
  517. file: true
  518. version: "{{ kata_containers_version }}"
  519. dest: "{{ local_release_dir }}/kata-static-{{ kata_containers_version }}-{{ image_arch }}.tar.xz"
  520. sha256: "{{ kata_containers_binary_checksum }}"
  521. url: "{{ kata_containers_download_url }}"
  522. unarchive: false
  523. owner: "root"
  524. mode: "0755"
  525. groups:
  526. - k8s_cluster
  527. containerd:
  528. enabled: "{{ container_manager == 'containerd' }}"
  529. file: true
  530. version: "{{ containerd_version }}"
  531. dest: "{{ local_release_dir }}/containerd-{{ containerd_version }}-linux-{{ image_arch }}.tar.gz"
  532. sha256: "{{ containerd_archive_checksum }}"
  533. url: "{{ containerd_download_url }}"
  534. unarchive: false
  535. owner: "root"
  536. mode: "0755"
  537. groups:
  538. - k8s_cluster
  539. gvisor_runsc:
  540. enabled: "{{ gvisor_enabled }}"
  541. file: true
  542. version: "{{ gvisor_version }}"
  543. dest: "{{ local_release_dir }}/gvisor-runsc-{{ gvisor_version }}-{{ ansible_architecture }}"
  544. sha256: "{{ gvisor_runsc_binary_checksum }}"
  545. url: "{{ gvisor_runsc_download_url }}"
  546. unarchive: false
  547. owner: "root"
  548. mode: 755
  549. groups:
  550. - k8s_cluster
  551. gvisor_containerd_shim:
  552. enabled: "{{ gvisor_enabled }}"
  553. file: true
  554. version: "{{ gvisor_version }}"
  555. dest: "{{ local_release_dir }}/gvisor-containerd-shim-runsc-v1-{{ gvisor_version }}-{{ ansible_architecture }}"
  556. sha256: "{{ gvisor_containerd_shim_binary_checksum }}"
  557. url: "{{ gvisor_containerd_shim_runsc_download_url }}"
  558. unarchive: false
  559. owner: "root"
  560. mode: 755
  561. groups:
  562. - k8s_cluster
  563. nerdctl:
  564. file: true
  565. enabled: "{{ container_manager == 'containerd' }}"
  566. version: "{{ nerdctl_version }}"
  567. dest: "{{ local_release_dir }}/nerdctl-{{ nerdctl_version }}-linux-{{ image_arch }}.tar.gz"
  568. sha256: "{{ nerdctl_archive_checksum }}"
  569. url: "{{ nerdctl_download_url }}"
  570. unarchive: true
  571. owner: "root"
  572. mode: "0755"
  573. groups:
  574. - k8s_cluster
  575. skopeo:
  576. file: true
  577. enabled: "{{ container_manager == 'crio' }}"
  578. version: "{{ skopeo_version }}"
  579. dest: "{{ local_release_dir }}/skopeo-{{ skopeo_version }}-{{ image_arch }}"
  580. sha256: "{{ skopeo_binary_checksum }}"
  581. url: "{{ skopeo_download_url }}"
  582. unarchive: false
  583. owner: "root"
  584. mode: "0755"
  585. groups:
  586. - kube_control_plane
  587. cilium:
  588. enabled: "{{ kube_network_plugin == 'cilium' or cilium_deploy_additionally | default(false) | bool }}"
  589. container: true
  590. repo: "{{ cilium_image_repo }}"
  591. tag: "{{ cilium_image_tag }}"
  592. sha256: "{{ cilium_digest_checksum | default(None) }}"
  593. groups:
  594. - k8s_cluster
  595. cilium_operator:
  596. enabled: "{{ kube_network_plugin == 'cilium' or cilium_deploy_additionally | default(false) | bool }}"
  597. container: true
  598. repo: "{{ cilium_operator_image_repo }}"
  599. tag: "{{ cilium_operator_image_tag }}"
  600. sha256: "{{ cilium_operator_digest_checksum | default(None) }}"
  601. groups:
  602. - k8s_cluster
  603. cilium_hubble_relay:
  604. enabled: "{{ cilium_enable_hubble }}"
  605. container: true
  606. repo: "{{ cilium_hubble_relay_image_repo }}"
  607. tag: "{{ cilium_hubble_relay_image_tag }}"
  608. sha256: "{{ cilium_hubble_relay_digest_checksum | default(None) }}"
  609. groups:
  610. - k8s_cluster
  611. cilium_hubble_certgen:
  612. enabled: "{{ cilium_enable_hubble }}"
  613. container: true
  614. repo: "{{ cilium_hubble_certgen_image_repo }}"
  615. tag: "{{ cilium_hubble_certgen_image_tag }}"
  616. sha256: "{{ cilium_hubble_certgen_digest_checksum | default(None) }}"
  617. groups:
  618. - k8s_cluster
  619. cilium_hubble_ui:
  620. enabled: "{{ cilium_enable_hubble }}"
  621. container: true
  622. repo: "{{ cilium_hubble_ui_image_repo }}"
  623. tag: "{{ cilium_hubble_ui_image_tag }}"
  624. sha256: "{{ cilium_hubble_ui_digest_checksum | default(None) }}"
  625. groups:
  626. - k8s_cluster
  627. cilium_hubble_ui_backend:
  628. enabled: "{{ cilium_enable_hubble }}"
  629. container: true
  630. repo: "{{ cilium_hubble_ui_backend_image_repo }}"
  631. tag: "{{ cilium_hubble_ui_backend_image_tag }}"
  632. sha256: "{{ cilium_hubble_ui_backend_digest_checksum | default(None) }}"
  633. groups:
  634. - k8s_cluster
  635. cilium_hubble_envoy:
  636. enabled: "{{ cilium_enable_hubble }}"
  637. container: true
  638. repo: "{{ cilium_hubble_envoy_image_repo }}"
  639. tag: "{{ cilium_hubble_envoy_image_tag }}"
  640. sha256: "{{ cilium_hubble_envoy_digest_checksum | default(None) }}"
  641. groups:
  642. - k8s_cluster
  643. ciliumcli:
  644. enabled: "{{ kube_network_plugin == 'cilium' or cilium_deploy_additionally | default(false) | bool }}"
  645. file: true
  646. version: "{{ cilium_cli_version }}"
  647. dest: "{{ local_release_dir }}/cilium-{{ cilium_cli_version }}-{{ image_arch }}.tar.gz"
  648. sha256: "{{ ciliumcli_binary_checksum }}"
  649. url: "{{ ciliumcli_download_url }}"
  650. unarchive: true
  651. owner: "root"
  652. mode: "0755"
  653. groups:
  654. - k8s_cluster
  655. multus:
  656. enabled: "{{ kube_network_plugin_multus }}"
  657. container: true
  658. repo: "{{ multus_image_repo }}"
  659. tag: "{{ multus_image_tag }}"
  660. sha256: "{{ multus_digest_checksum | default(None) }}"
  661. groups:
  662. - k8s_cluster
  663. flannel:
  664. enabled: "{{ kube_network_plugin == 'flannel' }}"
  665. container: true
  666. repo: "{{ flannel_image_repo }}"
  667. tag: "{{ flannel_image_tag }}"
  668. sha256: "{{ flannel_digest_checksum | default(None) }}"
  669. groups:
  670. - k8s_cluster
  671. flannel_init:
  672. enabled: "{{ kube_network_plugin == 'flannel' }}"
  673. container: true
  674. repo: "{{ flannel_init_image_repo }}"
  675. tag: "{{ flannel_init_image_tag }}"
  676. sha256: "{{ flannel_init_digest_checksum | default(None) }}"
  677. groups:
  678. - k8s_cluster
  679. calicoctl:
  680. enabled: "{{ kube_network_plugin == 'calico' }}"
  681. file: true
  682. version: "{{ calico_ctl_version }}"
  683. dest: "{{ local_release_dir }}/calicoctl-{{ calico_ctl_version }}-{{ image_arch }}"
  684. sha256: "{{ calicoctl_binary_checksum }}"
  685. url: "{{ calicoctl_download_url }}"
  686. unarchive: false
  687. owner: "root"
  688. mode: "0755"
  689. groups:
  690. - k8s_cluster
  691. calico_node:
  692. enabled: "{{ kube_network_plugin == 'calico' }}"
  693. container: true
  694. repo: "{{ calico_node_image_repo }}"
  695. tag: "{{ calico_node_image_tag }}"
  696. sha256: "{{ calico_node_digest_checksum | default(None) }}"
  697. groups:
  698. - k8s_cluster
  699. calico_cni:
  700. enabled: "{{ kube_network_plugin == 'calico' }}"
  701. container: true
  702. repo: "{{ calico_cni_image_repo }}"
  703. tag: "{{ calico_cni_image_tag }}"
  704. sha256: "{{ calico_cni_digest_checksum | default(None) }}"
  705. groups:
  706. - k8s_cluster
  707. calico_flexvol:
  708. enabled: "{{ kube_network_plugin == 'calico' }}"
  709. container: true
  710. repo: "{{ calico_flexvol_image_repo }}"
  711. tag: "{{ calico_flexvol_image_tag }}"
  712. sha256: "{{ calico_flexvol_digest_checksum | default(None) }}"
  713. groups:
  714. - k8s_cluster
  715. calico_policy:
  716. enabled: "{{ enable_network_policy and kube_network_plugin in ['calico'] }}"
  717. container: true
  718. repo: "{{ calico_policy_image_repo }}"
  719. tag: "{{ calico_policy_image_tag }}"
  720. sha256: "{{ calico_policy_digest_checksum | default(None) }}"
  721. groups:
  722. - k8s_cluster
  723. calico_typha:
  724. enabled: "{{ typha_enabled }}"
  725. container: true
  726. repo: "{{ calico_typha_image_repo }}"
  727. tag: "{{ calico_typha_image_tag }}"
  728. sha256: "{{ calico_typha_digest_checksum | default(None) }}"
  729. groups:
  730. - k8s_cluster
  731. calico_apiserver:
  732. enabled: "{{ calico_apiserver_enabled }}"
  733. container: true
  734. repo: "{{ calico_apiserver_image_repo }}"
  735. tag: "{{ calico_apiserver_image_tag }}"
  736. sha256: "{{ calico_apiserver_digest_checksum | default(None) }}"
  737. groups:
  738. - k8s_cluster
  739. calico_crds:
  740. file: true
  741. enabled: "{{ kube_network_plugin == 'calico' and calico_datastore == 'kdd' }}"
  742. version: "{{ calico_version }}"
  743. dest: "{{ local_release_dir }}/calico-{{ calico_version }}-kdd-crds/{{ calico_version }}.tar.gz"
  744. sha256: "{{ calico_crds_archive_checksum }}"
  745. url: "{{ calico_crds_download_url }}"
  746. unarchive: true
  747. unarchive_extra_opts:
  748. - "{{ '--strip=6' if (calico_version is version('v3.22.3', '<')) else '--strip=3' }}"
  749. - "--wildcards"
  750. - "{{ '*/_includes/charts/calico/crds/kdd/' if (calico_version is version('v3.22.3', '<')) else '*/libcalico-go/config/crd/' }}"
  751. owner: "root"
  752. mode: "0755"
  753. groups:
  754. - kube_control_plane
  755. weave_kube:
  756. enabled: "{{ kube_network_plugin == 'weave' }}"
  757. container: true
  758. repo: "{{ weave_kube_image_repo }}"
  759. tag: "{{ weave_kube_image_tag }}"
  760. sha256: "{{ weave_kube_digest_checksum | default(None) }}"
  761. groups:
  762. - k8s_cluster
  763. weave_npc:
  764. enabled: "{{ kube_network_plugin == 'weave' }}"
  765. container: true
  766. repo: "{{ weave_npc_image_repo }}"
  767. tag: "{{ weave_npc_image_tag }}"
  768. sha256: "{{ weave_npc_digest_checksum | default(None) }}"
  769. groups:
  770. - k8s_cluster
  771. kube_ovn:
  772. enabled: "{{ kube_network_plugin == 'kube-ovn' }}"
  773. container: true
  774. repo: "{{ kube_ovn_container_image_repo }}"
  775. tag: "{{ kube_ovn_container_image_tag }}"
  776. sha256: "{{ kube_ovn_digest_checksum | default(None) }}"
  777. groups:
  778. - k8s_cluster
  779. kube_router:
  780. enabled: "{{ kube_network_plugin == 'kube-router' }}"
  781. container: true
  782. repo: "{{ kube_router_image_repo }}"
  783. tag: "{{ kube_router_image_tag }}"
  784. sha256: "{{ kube_router_digest_checksum | default(None) }}"
  785. groups:
  786. - k8s_cluster
  787. pod_infra:
  788. enabled: true
  789. container: true
  790. repo: "{{ pod_infra_image_repo }}"
  791. tag: "{{ pod_infra_image_tag }}"
  792. sha256: "{{ pod_infra_digest_checksum | default(None) }}"
  793. groups:
  794. - k8s_cluster
  795. kube-vip:
  796. enabled: "{{ kube_vip_enabled }}"
  797. container: true
  798. repo: "{{ kube_vip_image_repo }}"
  799. tag: "{{ kube_vip_image_tag }}"
  800. sha256: "{{ kube_vip_digest_checksum | default(None) }}"
  801. groups:
  802. - kube_control_plane
  803. nginx:
  804. enabled: "{{ loadbalancer_apiserver_localhost and loadbalancer_apiserver_type == 'nginx' }}"
  805. container: true
  806. repo: "{{ nginx_image_repo }}"
  807. tag: "{{ nginx_image_tag }}"
  808. sha256: "{{ nginx_digest_checksum | default(None) }}"
  809. groups:
  810. - kube_node
  811. haproxy:
  812. enabled: "{{ loadbalancer_apiserver_localhost and loadbalancer_apiserver_type == 'haproxy' }}"
  813. container: true
  814. repo: "{{ haproxy_image_repo }}"
  815. tag: "{{ haproxy_image_tag }}"
  816. sha256: "{{ haproxy_digest_checksum | default(None) }}"
  817. groups:
  818. - kube_node
  819. coredns:
  820. enabled: "{{ dns_mode in ['coredns', 'coredns_dual'] }}"
  821. container: true
  822. repo: "{{ coredns_image_repo }}"
  823. tag: "{{ coredns_image_tag }}"
  824. sha256: "{{ coredns_digest_checksum | default(None) }}"
  825. groups:
  826. - k8s_cluster
  827. nodelocaldns:
  828. enabled: "{{ enable_nodelocaldns }}"
  829. container: true
  830. repo: "{{ nodelocaldns_image_repo }}"
  831. tag: "{{ nodelocaldns_image_tag }}"
  832. sha256: "{{ nodelocaldns_digest_checksum | default(None) }}"
  833. groups:
  834. - k8s_cluster
  835. dnsautoscaler:
  836. enabled: "{{ dns_mode in ['coredns', 'coredns_dual'] }}"
  837. container: true
  838. repo: "{{ dnsautoscaler_image_repo }}"
  839. tag: "{{ dnsautoscaler_image_tag }}"
  840. sha256: "{{ dnsautoscaler_digest_checksum | default(None) }}"
  841. groups:
  842. - kube_control_plane
  843. helm:
  844. enabled: "{{ helm_enabled }}"
  845. file: true
  846. version: "{{ helm_version }}"
  847. dest: "{{ local_release_dir }}/helm-{{ helm_version }}/helm-{{ helm_version }}-linux-{{ image_arch }}.tar.gz"
  848. sha256: "{{ helm_archive_checksum }}"
  849. url: "{{ helm_download_url }}"
  850. unarchive: true
  851. owner: "root"
  852. mode: "0755"
  853. groups:
  854. - kube_control_plane
  855. krew:
  856. enabled: "{{ krew_enabled }}"
  857. file: true
  858. version: "{{ krew_version }}"
  859. dest: "{{ local_release_dir }}/krew-{{ host_os }}_{{ image_arch }}.tar.gz"
  860. sha256: "{{ krew_archive_checksum }}"
  861. url: "{{ krew_download_url }}"
  862. unarchive: true
  863. owner: "root"
  864. mode: "0755"
  865. groups:
  866. - kube_control_plane
  867. registry:
  868. enabled: "{{ registry_enabled }}"
  869. container: true
  870. repo: "{{ registry_image_repo }}"
  871. tag: "{{ registry_image_tag }}"
  872. sha256: "{{ registry_digest_checksum | default(None) }}"
  873. groups:
  874. - kube_node
  875. metrics_server:
  876. enabled: "{{ metrics_server_enabled }}"
  877. container: true
  878. repo: "{{ metrics_server_image_repo }}"
  879. tag: "{{ metrics_server_image_tag }}"
  880. sha256: "{{ metrics_server_digest_checksum | default(None) }}"
  881. groups:
  882. - kube_control_plane
  883. local_volume_provisioner:
  884. enabled: "{{ local_volume_provisioner_enabled }}"
  885. container: true
  886. repo: "{{ local_volume_provisioner_image_repo }}"
  887. tag: "{{ local_volume_provisioner_image_tag }}"
  888. sha256: "{{ local_volume_provisioner_digest_checksum | default(None) }}"
  889. groups:
  890. - kube_node
  891. cephfs_provisioner:
  892. enabled: "{{ cephfs_provisioner_enabled }}"
  893. container: true
  894. repo: "{{ cephfs_provisioner_image_repo }}"
  895. tag: "{{ cephfs_provisioner_image_tag }}"
  896. sha256: "{{ cephfs_provisioner_digest_checksum | default(None) }}"
  897. groups:
  898. - kube_node
  899. rbd_provisioner:
  900. enabled: "{{ rbd_provisioner_enabled }}"
  901. container: true
  902. repo: "{{ rbd_provisioner_image_repo }}"
  903. tag: "{{ rbd_provisioner_image_tag }}"
  904. sha256: "{{ rbd_provisioner_digest_checksum | default(None) }}"
  905. groups:
  906. - kube_node
  907. local_path_provisioner:
  908. enabled: "{{ local_path_provisioner_enabled }}"
  909. container: true
  910. repo: "{{ local_path_provisioner_image_repo }}"
  911. tag: "{{ local_path_provisioner_image_tag }}"
  912. sha256: "{{ local_path_provisioner_digest_checksum | default(None) }}"
  913. groups:
  914. - kube_node
  915. ingress_nginx_controller:
  916. enabled: "{{ ingress_nginx_enabled }}"
  917. container: true
  918. repo: "{{ ingress_nginx_controller_image_repo }}"
  919. tag: "{{ ingress_nginx_controller_image_tag }}"
  920. sha256: "{{ ingress_nginx_controller_digest_checksum | default(None) }}"
  921. groups:
  922. - kube_node
  923. ingress_alb_controller:
  924. enabled: "{{ ingress_alb_enabled }}"
  925. container: true
  926. repo: "{{ alb_ingress_image_repo }}"
  927. tag: "{{ alb_ingress_image_tag }}"
  928. sha256: "{{ ingress_alb_controller_digest_checksum | default(None) }}"
  929. groups:
  930. - kube_node
  931. cert_manager_controller:
  932. enabled: "{{ cert_manager_enabled }}"
  933. container: true
  934. repo: "{{ cert_manager_controller_image_repo }}"
  935. tag: "{{ cert_manager_controller_image_tag }}"
  936. sha256: "{{ cert_manager_controller_digest_checksum | default(None) }}"
  937. groups:
  938. - kube_node
  939. cert_manager_cainjector:
  940. enabled: "{{ cert_manager_enabled }}"
  941. container: true
  942. repo: "{{ cert_manager_cainjector_image_repo }}"
  943. tag: "{{ cert_manager_cainjector_image_tag }}"
  944. sha256: "{{ cert_manager_cainjector_digest_checksum | default(None) }}"
  945. groups:
  946. - kube_node
  947. cert_manager_webhook:
  948. enabled: "{{ cert_manager_enabled }}"
  949. container: true
  950. repo: "{{ cert_manager_webhook_image_repo }}"
  951. tag: "{{ cert_manager_webhook_image_tag }}"
  952. sha256: "{{ cert_manager_webhook_digest_checksum | default(None) }}"
  953. groups:
  954. - kube_node
  955. csi_attacher:
  956. enabled: "{{ cinder_csi_enabled or aws_ebs_csi_enabled }}"
  957. container: true
  958. repo: "{{ csi_attacher_image_repo }}"
  959. tag: "{{ csi_attacher_image_tag }}"
  960. sha256: "{{ csi_attacher_digest_checksum | default(None) }}"
  961. groups:
  962. - kube_node
  963. csi_provisioner:
  964. enabled: "{{ cinder_csi_enabled or aws_ebs_csi_enabled }}"
  965. container: true
  966. repo: "{{ csi_provisioner_image_repo }}"
  967. tag: "{{ csi_provisioner_image_tag }}"
  968. sha256: "{{ csi_provisioner_digest_checksum | default(None) }}"
  969. groups:
  970. - kube_node
  971. csi_snapshotter:
  972. enabled: "{{ cinder_csi_enabled or aws_ebs_csi_enabled }}"
  973. container: true
  974. repo: "{{ csi_snapshotter_image_repo }}"
  975. tag: "{{ csi_snapshotter_image_tag }}"
  976. sha256: "{{ csi_snapshotter_digest_checksum | default(None) }}"
  977. groups:
  978. - kube_node
  979. snapshot_controller:
  980. enabled: "{{ csi_snapshot_controller_enabled }}"
  981. container: true
  982. repo: "{{ snapshot_controller_image_repo }}"
  983. tag: "{{ snapshot_controller_image_tag }}"
  984. sha256: "{{ snapshot_controller_digest_checksum | default(None) }}"
  985. groups:
  986. - kube_node
  987. csi_resizer:
  988. enabled: "{{ cinder_csi_enabled or aws_ebs_csi_enabled }}"
  989. container: true
  990. repo: "{{ csi_resizer_image_repo }}"
  991. tag: "{{ csi_resizer_image_tag }}"
  992. sha256: "{{ csi_resizer_digest_checksum | default(None) }}"
  993. groups:
  994. - kube_node
  995. csi_node_driver_registrar:
  996. enabled: "{{ cinder_csi_enabled or aws_ebs_csi_enabled }}"
  997. container: true
  998. repo: "{{ csi_node_driver_registrar_image_repo }}"
  999. tag: "{{ csi_node_driver_registrar_image_tag }}"
  1000. sha256: "{{ csi_node_driver_registrar_digest_checksum | default(None) }}"
  1001. groups:
  1002. - kube_node
  1003. cinder_csi_plugin:
  1004. enabled: "{{ cinder_csi_enabled }}"
  1005. container: true
  1006. repo: "{{ cinder_csi_plugin_image_repo }}"
  1007. tag: "{{ cinder_csi_plugin_image_tag }}"
  1008. sha256: "{{ cinder_csi_plugin_digest_checksum | default(None) }}"
  1009. groups:
  1010. - kube_node
  1011. aws_ebs_csi_plugin:
  1012. enabled: "{{ aws_ebs_csi_enabled }}"
  1013. container: true
  1014. repo: "{{ aws_ebs_csi_plugin_image_repo }}"
  1015. tag: "{{ aws_ebs_csi_plugin_image_tag }}"
  1016. sha256: "{{ aws_ebs_csi_plugin_digest_checksum | default(None) }}"
  1017. groups:
  1018. - kube_node
  1019. dashboard:
  1020. enabled: "{{ dashboard_enabled }}"
  1021. container: true
  1022. repo: "{{ dashboard_image_repo }}"
  1023. tag: "{{ dashboard_image_tag }}"
  1024. sha256: "{{ dashboard_digest_checksum | default(None) }}"
  1025. groups:
  1026. - kube_control_plane
  1027. dashboard_metrics_scrapper:
  1028. enabled: "{{ dashboard_enabled }}"
  1029. container: true
  1030. repo: "{{ dashboard_metrics_scraper_repo }}"
  1031. tag: "{{ dashboard_metrics_scraper_tag }}"
  1032. sha256: "{{ dashboard_digest_checksum | default(None) }}"
  1033. groups:
  1034. - kube_control_plane
  1035. metallb_speaker:
  1036. enabled: "{{ metallb_speaker_enabled }}"
  1037. container: true
  1038. repo: "{{ metallb_speaker_image_repo }}"
  1039. tag: "{{ metallb_version }}"
  1040. sha256: "{{ metallb_speaker_digest_checksum | default(None) }}"
  1041. groups:
  1042. - kube_control_plane
  1043. metallb_controller:
  1044. enabled: "{{ metallb_enabled }}"
  1045. container: true
  1046. repo: "{{ metallb_controller_image_repo }}"
  1047. tag: "{{ metallb_version }}"
  1048. sha256: "{{ metallb_controller_digest_checksum | default(None) }}"
  1049. groups:
  1050. - kube_control_plane
  1051. yq:
  1052. enabled: "{{ argocd_enabled }}"
  1053. file: true
  1054. version: "{{ yq_version }}"
  1055. dest: "{{ local_release_dir }}/yq-{{ yq_version }}-{{ image_arch }}"
  1056. sha256: "{{ yq_binary_checksum | default(None) }}"
  1057. url: "{{ yq_download_url }}"
  1058. unarchive: false
  1059. owner: "root"
  1060. mode: "0755"
  1061. groups:
  1062. - kube_control_plane
  1063. download_defaults:
  1064. container: false
  1065. file: false
  1066. repo: None
  1067. tag: None
  1068. enabled: false
  1069. dest: None
  1070. version: None
  1071. url: None
  1072. unarchive: false
  1073. owner: "{{ kube_owner }}"
  1074. mode: None