![aplicar el manifiesto calico a través del módulo central ansible de kubernetes](https://rvso.com/image/770102/aplicar%20el%20manifiesto%20calico%20a%20trav%C3%A9s%20del%20m%C3%B3dulo%20central%20ansible%20de%20kubernetes.png)
Estoy intentando instalar calico en un clúster de Kubernetes de un solo nodo existente (instalado a través de kubeadm). Los dos manifiestos sonoperador-tigerayrecursos personalizados. Esto funciona bien si lo instalo manualmente a través de 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
Cuando intento instalarlo a través delmódulo ansible de kubernetes(núcleo o comunidad, es lo mismo), me sale el siguiente error:
fatal: [work-pve]: FAILED! => {"changed": false, "msg": "Failed to find exact match for operator.tigera.io/v1.Installation by [kind, name, singularName, shortNames]"}
El manifiesto es, por supuesto, una combinación de todo tipo de recursos y tiene más de 5.000 líneas de largo. No estoy seguro de cómo resolver el problema, pero espero cualquier sugerencia. Supongo que este problema también ocurre con otros manifiestos, por lo que no creo que sea un problema específico del calicó.
La tarea ansible es:
- name: apply manifest tigera-operator manifest
kubernetes.core.k8s:
src: "/tmp/tigera-operator.yaml"
state: present
kubeconfig: /etc/kubernetes/admin.conf
En el host ejecuto ansible 4.4 (apple m1, instalado mediante brew).
En el servidor estoy ejecutando Ubuntu 20.04.3.
Bibliotecas Pip: openshift (0.12.1), kubernetes (12.0.1).
Respuesta1
Al final pude solucionarlo bastante fácilmente. Necesitaba agregar la apply
directiva a la tarea. Ahora se ve así (también estoy agregando la segunda tarea relacionada):
- 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
Referencia: https://docs.ansible.com/ansible/latest/collections/community/kubernetes/k8s_module.html
apply compara la definición de recurso deseada con la definición de recurso proporcionada previamente, ignorando las propiedades que se generan automáticamente. apply funciona mejor con Servicios que 'force=yes'