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.

106 lines
3.9 KiB

  1. ---
  2. - name: "Pre-upgrade | check for kube-apiserver unit file"
  3. stat:
  4. path: /etc/systemd/system/kube-apiserver.service
  5. register: kube_apiserver_service_file
  6. tags: [facts, kube-apiserver]
  7. - name: "Pre-upgrade | check for kube-apiserver init script"
  8. stat:
  9. path: /etc/init.d/kube-apiserver
  10. register: kube_apiserver_init_script
  11. tags: [facts, kube-apiserver]
  12. - name: "Pre-upgrade | stop kube-apiserver if service defined"
  13. service:
  14. name: kube-apiserver
  15. state: stopped
  16. when: (kube_apiserver_service_file.stat.exists|default(False) or kube_apiserver_init_script.stat.exists|default(False))
  17. tags: kube-apiserver
  18. - name: "Pre-upgrade | remove kube-apiserver service definition"
  19. file:
  20. path: "{{ item }}"
  21. state: absent
  22. when: (kube_apiserver_service_file.stat.exists|default(False) or kube_apiserver_init_script.stat.exists|default(False))
  23. with_items:
  24. - /etc/systemd/system/kube-apiserver.service
  25. - /etc/init.d/kube-apiserver
  26. tags: kube-apiserver
  27. - name: "Pre-upgrade | See if kube-apiserver manifest exists"
  28. stat:
  29. path: /etc/kubernetes/manifests/kube-apiserver.manifest
  30. register: kube_apiserver_manifest
  31. - name: "Pre-upgrade | etcd3 upgrade | see if old config exists"
  32. command: "{{ bin_dir }}/etcdctl --peers={{ etcd_access_addresses }} ls /registry/minions"
  33. environment:
  34. ETCDCTL_API: 2
  35. register: old_data_exists
  36. delegate_to: "{{groups['etcd'][0]}}"
  37. when: kube_apiserver_storage_backend == "etcd3"
  38. failed_when: false
  39. - name: "Pre-upgrade | etcd3 upgrade | use etcd2 unless forced to etc3"
  40. set_fact:
  41. kube_apiserver_storage_backend: "etcd2"
  42. when: old_data_exists.rc == 0 and not force_etcd3|bool
  43. - name: "Pre-upgrade | etcd3 upgrade | see if data was already migrated"
  44. command: "{{ bin_dir }}/etcdctl --endpoints={{ etcd_access_addresses }} get --limit=1 --prefix=true /registry/minions"
  45. environment:
  46. ETCDCTL_API: 3
  47. register: data_migrated
  48. delegate_to: "{{groups['etcd'][0]}}"
  49. when: kube_apiserver_storage_backend == "etcd3"
  50. failed_when: false
  51. - name: "Pre-upgrade | etcd3 upgrade | set needs_etcd_migration"
  52. set_fact:
  53. needs_etcd_migration: "{{ force_etcd3|default(false) and kube_apiserver_storage_backend == 'etcd3' and data_migrated.stdout_lines|length == 0 and old_data_exists.rc == 0 }}"
  54. - name: "Pre-upgrade | Delete master manifests on all kube-masters"
  55. file:
  56. path: "/etc/kubernetes/manifests/{{item[1]}}.manifest"
  57. state: absent
  58. delegate_to: "{{item[0]}}"
  59. with_nested:
  60. - "{{groups['kube-master']}}"
  61. - ["kube-apiserver", "kube-controller-manager", "kube-scheduler"]
  62. register: kube_apiserver_manifest_replaced
  63. when: (secret_changed|default(false) or etcd_secret_changed|default(false) or needs_etcd_migration|bool) and kube_apiserver_manifest.stat.exists
  64. - name: "Pre-upgrade | Delete master containers forcefully on all kube-masters"
  65. shell: "docker ps -f name=k8s-{{item}}* -q | xargs --no-run-if-empty docker rm -f"
  66. delegate_to: "{{item[0]}}"
  67. with_nested:
  68. - "{{groups['kube-master']}}"
  69. - ["kube-apiserver", "kube-controller-manager", "kube-scheduler"]
  70. register: kube_apiserver_manifest_replaced
  71. when: (secret_changed|default(false) or etcd_secret_changed|default(false) or needs_etcd_migration|bool) and kube_apiserver_manifest.stat.exists
  72. - name: "Pre-upgrade | etcd3 upgrade | stop etcd"
  73. service:
  74. name: etcd
  75. state: stopped
  76. delegate_to: "{{item}}"
  77. with_items: "{{groups['etcd']}}"
  78. when: needs_etcd_migration|bool
  79. - name: "Pre-upgrade | etcd3 upgrade | migrate data"
  80. command: "{{ bin_dir }}/etcdctl migrate --data-dir=\"{{ etcd_data_dir }}\" --wal-dir=\"{{ etcd_data_dir }}/member/wal\""
  81. environment:
  82. ETCDCTL_API: 3
  83. delegate_to: "{{item}}"
  84. with_items: "{{groups['etcd']}}"
  85. register: etcd_migrated
  86. when: needs_etcd_migration|bool
  87. - name: "Pre-upgrade | etcd3 upgrade | start etcd"
  88. service:
  89. name: etcd
  90. state: started
  91. delegate_to: "{{item}}"
  92. with_items: "{{groups['etcd']}}"
  93. when: needs_etcd_migration|bool