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.

105 lines
3.1 KiB

  1. ---
  2. - name: Kubernetes Apps | Wait for kube-apiserver
  3. uri:
  4. url: "{{ kube_apiserver_endpoint }}/healthz"
  5. validate_certs: no
  6. client_cert: "{{ kube_apiserver_client_cert }}"
  7. client_key: "{{ kube_apiserver_client_key }}"
  8. register: result
  9. until: result.status == 200
  10. retries: 10
  11. delay: 6
  12. when: inventory_hostname == groups['kube-master'][0]
  13. - name: Kubernetes Apps | Add ClusterRoleBinding to admit nodes
  14. template:
  15. src: "node-crb.yml.j2"
  16. dest: "{{ kube_config_dir }}/node-crb.yml"
  17. register: node_crb_manifest
  18. when: rbac_enabled
  19. - name: Apply workaround to allow all nodes with cert O=system:nodes to register
  20. kube:
  21. name: "kubespray:system:node"
  22. kubectl: "{{bin_dir}}/kubectl"
  23. resource: "clusterrolebinding"
  24. filename: "{{ kube_config_dir }}/node-crb.yml"
  25. state: latest
  26. when:
  27. - rbac_enabled
  28. - node_crb_manifest.changed
  29. - name: Kubernetes Apps | Add webhook ClusterRole that grants access to proxy, stats, log, spec, and metrics on a kubelet
  30. template:
  31. src: "node-webhook-cr.yml.j2"
  32. dest: "{{ kube_config_dir }}/node-webhook-cr.yml"
  33. register: node_webhook_cr_manifest
  34. when:
  35. - rbac_enabled
  36. - kubelet_authorization_mode_webhook
  37. tags: node-webhook
  38. - name: Apply webhook ClusterRole
  39. kube:
  40. name: "system:node-webhook"
  41. kubectl: "{{bin_dir}}/kubectl"
  42. resource: "clusterrole"
  43. filename: "{{ kube_config_dir }}/node-webhook-cr.yml"
  44. state: latest
  45. when:
  46. - rbac_enabled
  47. - kubelet_authorization_mode_webhook
  48. - node_webhook_cr_manifest.changed
  49. tags: node-webhook
  50. - name: Kubernetes Apps | Add ClusterRoleBinding for system:nodes to webhook ClusterRole
  51. template:
  52. src: "node-webhook-crb.yml.j2"
  53. dest: "{{ kube_config_dir }}/node-webhook-crb.yml"
  54. register: node_webhook_crb_manifest
  55. when:
  56. - rbac_enabled
  57. - kubelet_authorization_mode_webhook
  58. tags: node-webhook
  59. - name: Grant system:nodes the webhook ClusterRole
  60. kube:
  61. name: "system:node-webhook"
  62. kubectl: "{{bin_dir}}/kubectl"
  63. resource: "clusterrolebinding"
  64. filename: "{{ kube_config_dir }}/node-webhook-crb.yml"
  65. state: latest
  66. when:
  67. - rbac_enabled
  68. - kubelet_authorization_mode_webhook
  69. - node_webhook_crb_manifest.changed
  70. tags: node-webhook
  71. # This is not a cluster role, but should be run after kubeconfig is set on master
  72. - name: Write kube system namespace manifest
  73. template:
  74. src: namespace.j2
  75. dest: "{{kube_config_dir}}/{{system_namespace}}-ns.yml"
  76. when: inventory_hostname == groups['kube-master'][0]
  77. tags:
  78. - apps
  79. - name: Check if kube system namespace exists
  80. command: "{{ bin_dir }}/kubectl get ns {{system_namespace}}"
  81. register: 'kubesystem'
  82. changed_when: False
  83. failed_when: False
  84. when: inventory_hostname == groups['kube-master'][0]
  85. tags:
  86. - apps
  87. - name: Create kube system namespace
  88. command: "{{ bin_dir }}/kubectl create -f {{kube_config_dir}}/{{system_namespace}}-ns.yml"
  89. retries: 4
  90. delay: "{{ retry_stagger | random + 3 }}"
  91. register: create_system_ns
  92. until: create_system_ns.rc == 0
  93. changed_when: False
  94. when: inventory_hostname == groups['kube-master'][0] and kubesystem.rc != 0
  95. tags:
  96. - apps