Skip to content

Commit

Permalink
Use more native way to update kubeconfigs using kubeadm (kubernetes-s…
Browse files Browse the repository at this point in the history
…igs#5165)

Change-Id: I1076b418f85a26d9896be69910052128afc51cee
  • Loading branch information
mattymo authored and k8s-ci-robot committed Sep 13, 2019
1 parent cb4f797 commit 6fe2248
Showing 1 changed file with 43 additions and 11 deletions.
54 changes: 43 additions & 11 deletions roles/kubernetes/master/tasks/kubeadm-fix-apiserver.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,45 @@
---
- name: Update server field in component kubeconfigs
lineinfile:
dest: "{{ kube_config_dir }}/{{ item }}.conf"
regexp: 'server:'
line: ' server: {{ kube_apiserver_endpoint }}'
backup: yes
- name: Test if correct apiserver is set in all kubeconfigs
shell: >-
grep -Fq "{{ kube_apiserver_endpoint }}" {{ kube_config_dir }}/admin.conf &&
grep -Fq "{{ kube_apiserver_endpoint }}" {{ kube_config_dir }}/controller-manager.conf &&
grep -Fq "{{ kube_apiserver_endpoint }}" {{ kube_config_dir }}/kubelet.conf &&
grep -Fq "{{ kube_apiserver_endpoint }}" {{ kube_config_dir }}/scheduler.conf
register: kubeconfig_correct_apiserver
changed_when: False
failed_when: False

- name: Create temporary directory
tempfile:
state: directory
register: kubeconfig_temp_dir
when: kubeconfig_correct_apiserver.rc != 0

- name: Generate new kubeconfigs with correct apiserver
command: >-
{{ bin_dir }}/kubeadm init phase kubeconfig all
--config {{ kube_config_dir }}/kubeadm-config.yaml
--kubeconfig-dir {{ kubeconfig_temp_dir.path }}
when: kubeconfig_correct_apiserver.rc != 0

- name: Copy new kubeconfigs to kube config dir
copy:
src: "{{ kubeconfig_temp_dir.path }}/{{ item }}"
dest: "{{ kube_config_dir }}/{{ item }}"
remote_src: yes
when: kubeconfig_correct_apiserver.rc != 0
with_items:
- controller-manager
- scheduler
when:
- not loadbalancer_apiserver is defined
notify: "Master | Restart kube-{{ item }}"
- admin.conf
- controller-manager.conf
- kubelet.conf
- scheduler.conf
notify:
- "Master | Restart kube-controller-manager"
- "Master | Restart kube-scheduler"
- "Master | reload kubelet"

- name: Cleanup temporary directory
file:
path: "{{ kubeconfig_temp_dir.path }}"
state: absent
when: kubeconfig_correct_apiserver.rc != 0

0 comments on commit 6fe2248

Please sign in to comment.