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.

130 lines
4.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:
  19. - rbac_enabled
  20. - inventory_hostname == groups['kube-master'][0]
  21. - name: Apply workaround to allow all nodes with cert O=system:nodes to register
  22. kube:
  23. name: "kubespray:system:node"
  24. kubectl: "{{bin_dir}}/kubectl"
  25. resource: "clusterrolebinding"
  26. filename: "{{ kube_config_dir }}/node-crb.yml"
  27. state: latest
  28. when:
  29. - rbac_enabled
  30. - node_crb_manifest.changed
  31. - inventory_hostname == groups['kube-master'][0]
  32. - name: Kubernetes Apps | Add webhook ClusterRole that grants access to proxy, stats, log, spec, and metrics on a kubelet
  33. template:
  34. src: "node-webhook-cr.yml.j2"
  35. dest: "{{ kube_config_dir }}/node-webhook-cr.yml"
  36. register: node_webhook_cr_manifest
  37. when:
  38. - rbac_enabled
  39. - kubelet_authorization_mode_webhook
  40. - inventory_hostname == groups['kube-master'][0]
  41. tags: node-webhook
  42. - name: Apply webhook ClusterRole
  43. kube:
  44. name: "system:node-webhook"
  45. kubectl: "{{bin_dir}}/kubectl"
  46. resource: "clusterrole"
  47. filename: "{{ kube_config_dir }}/node-webhook-cr.yml"
  48. state: latest
  49. when:
  50. - rbac_enabled
  51. - kubelet_authorization_mode_webhook
  52. - node_webhook_cr_manifest.changed
  53. - inventory_hostname == groups['kube-master'][0]
  54. tags: node-webhook
  55. - name: Kubernetes Apps | Add ClusterRoleBinding for system:nodes to webhook ClusterRole
  56. template:
  57. src: "node-webhook-crb.yml.j2"
  58. dest: "{{ kube_config_dir }}/node-webhook-crb.yml"
  59. register: node_webhook_crb_manifest
  60. when:
  61. - rbac_enabled
  62. - kubelet_authorization_mode_webhook
  63. - inventory_hostname == groups['kube-master'][0]
  64. tags: node-webhook
  65. - name: Grant system:nodes the webhook ClusterRole
  66. kube:
  67. name: "system:node-webhook"
  68. kubectl: "{{bin_dir}}/kubectl"
  69. resource: "clusterrolebinding"
  70. filename: "{{ kube_config_dir }}/node-webhook-crb.yml"
  71. state: latest
  72. when:
  73. - rbac_enabled
  74. - kubelet_authorization_mode_webhook
  75. - node_webhook_crb_manifest.changed
  76. - inventory_hostname == groups['kube-master'][0]
  77. tags: node-webhook
  78. - name: Check if vsphere-cloud-provider ClusterRole exists
  79. command: "{{ bin_dir }}/kubectl get clusterroles system:vsphere-cloud-provider"
  80. register: vsphere_cloud_provider
  81. ignore_errors: true
  82. when:
  83. - rbac_enabled
  84. - cloud_provider is defined
  85. - cloud_provider == 'vsphere'
  86. - kube_version | version_compare('v1.9.0', '>=')
  87. - kube_version | version_compare('v1.9.3', '<=')
  88. - inventory_hostname == groups['kube-master'][0]
  89. tags: vsphere
  90. - name: Write vsphere-cloud-provider ClusterRole manifest
  91. template:
  92. src: "vsphere-rbac.yml.j2"
  93. dest: "{{ kube_config_dir }}/vsphere-rbac.yml"
  94. register: vsphere_rbac_manifest
  95. when:
  96. - rbac_enabled
  97. - cloud_provider is defined
  98. - cloud_provider == 'vsphere'
  99. - vsphere_cloud_provider.rc is defined
  100. - vsphere_cloud_provider.rc != 0
  101. - kube_version | version_compare('v1.9.0', '>=')
  102. - kube_version | version_compare('v1.9.3', '<=')
  103. - inventory_hostname == groups['kube-master'][0]
  104. tags: vsphere
  105. - name: Apply vsphere-cloud-provider ClusterRole
  106. kube:
  107. name: "system:vsphere-cloud-provider"
  108. kubectl: "{{bin_dir}}/kubectl"
  109. resource: "clusterrolebinding"
  110. filename: "{{ kube_config_dir }}/vsphere-rbac.yml"
  111. state: latest
  112. when:
  113. - rbac_enabled
  114. - cloud_provider is defined
  115. - cloud_provider == 'vsphere'
  116. - vsphere_cloud_provider.rc is defined
  117. - vsphere_cloud_provider.rc != 0
  118. - kube_version | version_compare('v1.9.0', '>=')
  119. - kube_version | version_compare('v1.9.3', '<=')
  120. - inventory_hostname == groups['kube-master'][0]
  121. tags: vsphere