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.
144 lines
4.6 KiB
144 lines
4.6 KiB
9 months ago
|
- name: Upgrade kubernetes to specified version
|
||
|
hosts: root_master
|
||
|
become: yes
|
||
|
become_method: sudo
|
||
|
become_user: root
|
||
|
tasks:
|
||
|
- name: Remove apparmor for sanity reasons
|
||
|
apt:
|
||
|
name: "apparmor"
|
||
|
state: absent
|
||
|
autoremove: yes
|
||
|
purge: yes
|
||
|
- name: Check if keyring exists
|
||
|
stat:
|
||
|
path: /etc/apt/keyrings/kubernetes-apt-keyring{{ K8S_TARGET_VERSION}}.gpg
|
||
|
register: keyring_file
|
||
|
- name: Install certificate
|
||
|
command: "{{ item }} chdir=/tmp"
|
||
|
with_items:
|
||
|
- "curl -o Release.key -fsSL https://pkgs.k8s.io/core:/stable:/{{ K8S_TARGET_VERSION }}/deb/Release.key"
|
||
|
- "gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring{{ K8S_TARGET_VERSION }}.gpg Release.key"
|
||
|
- "rm Release.key"
|
||
|
when: not keyring_file.stat.exists
|
||
|
- name: Check if apt repo exists
|
||
|
stat:
|
||
|
path: /etc/apt/sources.list.d/kubernetes_{{ K8S_TARGET_VERSION}}.list
|
||
|
register: apt_repo
|
||
|
- name: Setup APT repo
|
||
|
copy:
|
||
|
dest: /etc/apt/sources.list.d/kubernetes_{{ K8S_TARGET_VERSION}}.list
|
||
|
content: "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring{{ K8S_TARGET_VERSION}}.gpg] https://pkgs.k8s.io/core:/stable:/{{ K8S_TARGET_VERSION }}/deb/ /"
|
||
|
when: not apt_repo.stat.exists
|
||
|
- name: Update cache
|
||
|
apt:
|
||
|
update_cache: yes
|
||
|
- name: Unhold packages
|
||
|
dpkg_selections:
|
||
|
name: "{{ item }}"
|
||
|
selection: install
|
||
|
with_items:
|
||
|
# - "kubelet"
|
||
|
- "kubeadm"
|
||
|
- name: Upgrading packages
|
||
|
apt:
|
||
|
upgrade: yes
|
||
|
- name: Upgrade plan
|
||
|
shell: "kubeadm upgrade plan >> /etc/kubernetes/upgrade_plan_{{ K8S_SOURCE_VERSION}}_{{ K8S_TARGET_VERSION}}"
|
||
|
args:
|
||
|
creates: /etc/kubernetes/upgrade_plan_{{ K8S_SOURCE_VERSION}}_{{ K8S_TARGET_VERSION}}
|
||
|
- name: Pulling new container images
|
||
|
shell: "kubeadm config images pull"
|
||
|
- name: Apply upgrade plan
|
||
|
shell: "sudo kubeadm upgrade apply -y {{ K8S_TARGET_MINOR }} >> /etc/kubernetes/upgrade_ops_{{ K8S_SOURCE_VERSION}}_{{ K8S_TARGET_VERSION}}"
|
||
|
args:
|
||
|
creates: /etc/kubernetes/upgrade_ops_{{ K8S_SOURCE_VERSION}}_{{ K8S_TARGET_VERSION}}
|
||
|
- name: Unhold kubelet
|
||
|
dpkg_selections:
|
||
|
name: kubelet
|
||
|
selection: install
|
||
|
- name: Update kubelet
|
||
|
apt:
|
||
|
update_cache: yes
|
||
|
upgrade: yes
|
||
|
- name: Restart kubelet
|
||
|
service:
|
||
|
name: kubelet
|
||
|
state: restarted
|
||
|
- name: Pin new package versions
|
||
|
dpkg_selections:
|
||
|
name: "{{ item }}"
|
||
|
selection: hold
|
||
|
with_items:
|
||
|
- "kubelet"
|
||
|
- "kubeadm"
|
||
|
- name: Upgrade masters
|
||
|
hosts: masters
|
||
|
become: yes
|
||
|
become_method: sudo
|
||
|
become_user: root
|
||
|
tasks:
|
||
|
- name: Remove apparmor for sanity reasons
|
||
|
apt:
|
||
|
name: "apparmor"
|
||
|
state: absent
|
||
|
autoremove: yes
|
||
|
purge: yes
|
||
|
- name: Check if keyring exists
|
||
|
stat:
|
||
|
path: /etc/apt/keyrings/kubernetes-apt-keyring{{ K8S_TARGET_VERSION}}.gpg
|
||
|
register: keyring_file
|
||
|
- name: Install certificate
|
||
|
command: "{{ item }} chdir=/tmp"
|
||
|
with_items:
|
||
|
- "curl -o Release.key -fsSL https://pkgs.k8s.io/core:/stable:/{{ K8S_TARGET_VERSION }}/deb/Release.key"
|
||
|
- "gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring{{ K8S_TARGET_VERSION }}.gpg Release.key"
|
||
|
- "rm Release.key"
|
||
|
when: not keyring_file.stat.exists
|
||
|
- name: Check if apt repo exists
|
||
|
stat:
|
||
|
path: /etc/apt/sources.list.d/kubernetes_{{ K8S_TARGET_VERSION}}.list
|
||
|
register: apt_repo
|
||
|
- name: Setup APT repo
|
||
|
copy:
|
||
|
dest: /etc/apt/sources.list.d/kubernetes_{{ K8S_TARGET_VERSION}}.list
|
||
|
content: "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring{{ K8S_TARGET_VERSION}}.gpg] https://pkgs.k8s.io/core:/stable:/{{ K8S_TARGET_VERSION }}/deb/ /"
|
||
|
when: not apt_repo.stat.exists
|
||
|
- name: Update cache
|
||
|
apt:
|
||
|
update_cache: yes
|
||
|
- name: Unhold packages
|
||
|
dpkg_selections:
|
||
|
name: "{{ item }}"
|
||
|
selection: install
|
||
|
with_items:
|
||
|
# - "kubelet"
|
||
|
- "kubeadm"
|
||
|
- name: Upgrading packages
|
||
|
apt:
|
||
|
upgrade: yes
|
||
|
- name: Pulling new container images
|
||
|
shell: "kubeadm config images pull"
|
||
|
- name: Apply upgrade for masters
|
||
|
shell: "sudo kubeadm upgrade node >> /etc/kubernetes/upgrade_ops_{{ K8S_SOURCE_VERSION}}_{{ K8S_TARGET_VERSION}}"
|
||
|
args:
|
||
|
creates: /etc/kubernetes/upgrade_ops_{{ K8S_SOURCE_VERSION}}_{{ K8S_TARGET_VERSION}}
|
||
|
- name: Unhold kubelet
|
||
|
dpkg_selections:
|
||
|
name: kubelet
|
||
|
selection: install
|
||
|
- name: Update kubelet
|
||
|
apt:
|
||
|
update_cache: yes
|
||
|
upgrade: yes
|
||
|
- name: Restart kubelet
|
||
|
service:
|
||
|
name: kubelet
|
||
|
state: restarted
|
||
|
- name: Pin new package versions
|
||
|
dpkg_selections:
|
||
|
name: "{{ item }}"
|
||
|
selection: hold
|
||
|
with_items:
|
||
|
- "kubelet"
|
||
|
- "kubeadm"
|