aplicar el manifiesto calico a través del módulo central ansible de kubernetes

aplicar el manifiesto calico a través del módulo central ansible de kubernetes

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 applydirectiva 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'

información relacionada