![применить манифест calico через модуль ядра ansible kubernetes](https://rvso.com/image/770102/%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D0%BC%D0%B0%D0%BD%D0%B8%D1%84%D0%B5%D1%81%D1%82%20calico%20%D1%87%D0%B5%D1%80%D0%B5%D0%B7%20%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%20%D1%8F%D0%B4%D1%80%D0%B0%20ansible%20kubernetes.png)
Я пытаюсь установить calico на существующий кластер kubernetes с одним узлом (установленный через kubeadm). Два манифеста:тигра-операторипользовательские ресурсы. Это работает нормально, если я вручную устанавливаю его через kubectl:
kubectl -f apply tigera-operator.yaml
customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/blockaffinities.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamblocks.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamconfigs.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ipamhandles.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/kubecontrollersconfigurations.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/networksets.crd.projectcalico.org created
customresourcedefinition.apiextensions.k8s.io/apiservers.operator.tigera.io created
customresourcedefinition.apiextensions.k8s.io/imagesets.operator.tigera.io created
customresourcedefinition.apiextensions.k8s.io/installations.operator.tigera.io created
customresourcedefinition.apiextensions.k8s.io/tigerastatuses.operator.tigera.io created
namespace/tigera-operator created
Warning: policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
podsecuritypolicy.policy/tigera-operator created
serviceaccount/tigera-operator created
clusterrole.rbac.authorization.k8s.io/tigera-operator created
clusterrolebinding.rbac.authorization.k8s.io/tigera-operator created
deployment.apps/tigera-operator created
Когда я пытаюсь установить его черезмодуль ansible kubernetes(core или community, это одно и то же), я получаю следующую ошибку:
fatal: [work-pve]: FAILED! => {"changed": false, "msg": "Failed to find exact match for operator.tigera.io/v1.Installation by [kind, name, singularName, shortNames]"}
Манифест, конечно, представляет собой смесь всех видов ресурсов и он более 5 тыс. строк. Я не уверен, как решить эту проблему, но с нетерпением жду любых предложений. Я предполагаю, что эта проблема возникает и с другими манифестами, поэтому я не думаю, что это проблема, специфичная для Calico.
Задача ansible:
- name: apply manifest tigera-operator manifest
kubernetes.core.k8s:
src: "/tmp/tigera-operator.yaml"
state: present
kubeconfig: /etc/kubernetes/admin.conf
На хосте я запускаю ansible 4.4 (apple m1, установлен через brew).
На сервере я запускаю Ubuntu 20.04.3.
Библиотеки pip: openshift (0.12.1), kubernetes (12.0.1).
решение1
В конце концов мне удалось решить ее довольно легко. Мне нужно было добавить директиву apply
к задаче. Так что теперь это выглядит так (я также добавляю вторую связанную задачу):
- name: apply manifest tigera-operator manifest
kubernetes.core.k8s:
src: "/tmp/tigera-operator.yaml"
state: present
apply: yes
kubeconfig: /etc/kubernetes/admin.conf
- name: apply manifest Calico custom-resources
kubernetes.core.k8s:
src: "/tmp/custom-resources.yaml"
state: present
apply: yes
kubeconfig: /etc/kubernetes/admin.conf
Ссылка: https://docs.ansible.com/ansible/latest/collections/community/kubernetes/k8s_module.html
apply сравнивает требуемое определение ресурса с ранее предоставленным определением ресурса, игнорируя свойства, которые генерируются автоматически apply работает лучше со службами, чем «force=yes»