kubeasz/roles/cluster-addon/tasks/main.yml

82 lines
4.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#-------------kube-dns 插件参数初始化
# kubedns.yaml文件中部分参数根据hosts文件设置而定因此需要用template模块替换参数
- name: 准备 kubedns的部署文件 kubedns.yaml
template: src=kubedns.yaml.j2 dest={{ base_dir }}/manifests/kubedns/kubedns.yaml
when: "hostvars[inventory_hostname]['group_names'].count('deploy') == 1"
# coredns.yaml文件中部分参数根据hosts文件设置而定因此需要用template模块替换参数
- name: 准备 coredns的部署文件 coredns.yaml
template: src=coredns.yaml.j2 dest={{ base_dir }}/manifests/coredns/coredns.yaml
when: "hostvars[inventory_hostname]['group_names'].count('deploy') == 1"
- name: 获取所有已经创建的POD信息
command: "{{ bin_dir }}/kubectl get pod -n kube-system"
register: pod_info
run_once: true
- block:
- name: 尝试推送离线{{ dns_backend }}镜像(若执行失败,可忽略)
copy: src={{ base_dir }}/down/{{ dns_offline }} dest=/opt/kube/images/{{ dns_offline }}
when: "hostvars[inventory_hostname]['group_names'].count('kube-node') == 1"
- name: 导入{{ dns_backend }}的离线镜像(若执行失败,可忽略)
shell: "{{ bin_dir }}/docker load -i /opt/kube/images/{{ dns_offline }}"
when: "hostvars[inventory_hostname]['group_names'].count('kube-node') == 1"
- name: 创建{{ dns_backend }}部署
shell: "sleep 5; {{ bin_dir }}/kubectl apply -f {{ base_dir }}/manifests/{{ dns_backend }}"
when: "hostvars[inventory_hostname]['group_names'].count('deploy') == 1"
when: '"kube-dns" not in pod_info.stdout and "coredns" not in pod_info.stdout and dns_install == "yes"'
ignore_errors: true
- block:
- name: 尝试推送离线 metrics-server镜像若执行失败可忽略
copy: src={{ base_dir }}/down/{{ metricsserver_offline }} dest=/opt/kube/images/{{ metricsserver_offline }}
when: "hostvars[inventory_hostname]['group_names'].count('kube-node') == 1"
- name: 导入 metrics-server的离线镜像若执行失败可忽略
shell: "{{ bin_dir }}/docker load -i /opt/kube/images/{{ metricsserver_offline }}"
when: "hostvars[inventory_hostname]['group_names'].count('kube-node') == 1"
- name: 创建 metrics-server部署
shell: "sleep 5; {{ bin_dir }}/kubectl apply -f {{ base_dir }}/manifests/metrics-server"
when: "hostvars[inventory_hostname]['group_names'].count('deploy') == 1"
when: '"metrics-server" not in pod_info.stdout and metricsserver_install == "yes"'
ignore_errors: true
- block:
- name: 尝试推送离线 dashboard镜像若执行失败可忽略
copy: src={{ base_dir }}/down/{{ dashboard_offline }} dest=/opt/kube/images/{{ dashboard_offline }}
when: "hostvars[inventory_hostname]['group_names'].count('kube-node') == 1"
- name: 导入 dashboard的离线镜像若执行失败可忽略
shell: "{{ bin_dir }}/docker load -i /opt/kube/images/{{ dashboard_offline }}"
when: "hostvars[inventory_hostname]['group_names'].count('kube-node') == 1"
- name: 创建 dashboard部署
shell: "sleep 5; {{ bin_dir }}/kubectl apply -f {{ base_dir }}/manifests/dashboard"
when: "hostvars[inventory_hostname]['group_names'].count('deploy') == 1"
when: '"kubernetes-dashboard" not in pod_info.stdout and dashboard_install == "yes"'
ignore_errors: true
- block:
- name: 尝试推送离线 traefik镜像若执行失败可忽略
copy: src={{ base_dir }}/down/{{ traefik_offline }} dest=/opt/kube/images/{{ traefik_offline }}
when: "hostvars[inventory_hostname]['group_names'].count('kube-node') == 1"
- name: 导入 traefik的离线镜像若执行失败可忽略
shell: "{{ bin_dir }}/docker load -i /opt/kube/images/{{ traefik_offline }}"
when: "hostvars[inventory_hostname]['group_names'].count('kube-node') == 1"
- name: 创建 traefik部署
shell: "sleep 5; {{ bin_dir }}/kubectl apply -f {{ base_dir }}/manifests/ingress/traefik-ingress.yaml"
when: "hostvars[inventory_hostname]['group_names'].count('deploy') == 1"
when: '"traefik-ingress-controller" not in pod_info.stdout and ingress_install == "yes"'
ignore_errors: true
- block:
- name: 尝试推送离线 heapster镜像若执行失败可忽略
copy: src={{ base_dir }}/down/{{ heapster_offline }} dest=/opt/kube/images/{{ heapster_offline }}
when: "hostvars[inventory_hostname]['group_names'].count('kube-node') == 1"
- name: 导入 heapster的离线镜像若执行失败可忽略
shell: "{{ bin_dir }}/docker load -i /opt/kube/images/{{ heapster_offline }}"
when: "hostvars[inventory_hostname]['group_names'].count('kube-node') == 1"
- name: 创建 heapster部署
shell: "sleep 5; {{ bin_dir }}/kubectl apply -f {{ base_dir }}/manifests/heapster"
when: "hostvars[inventory_hostname]['group_names'].count('deploy') == 1"
when: '"heapster" not in pod_info.stdout and heapster_install == "yes"'
ignore_errors: true