Calico-Manifest über das Ansible-Kubernetes-Kernmodul anwenden

Calico-Manifest über das Ansible-Kubernetes-Kernmodul anwenden

Ich versuche, Calico auf einem vorhandenen Single-Node-Kubernetes-Cluster (installiert über kubeadm) zu installieren. Die beiden Manifeste sindTigera-OperatorUndbenutzerdefinierte Ressourcen. Dies funktioniert einwandfrei, wenn ich es manuell über kubectl installiere:

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

Wenn ich versuche, es über dasAnsible Kubernetes-Modul(Core oder Community, das ist dasselbe), erhalte ich die folgende Fehlermeldung:

fatal: [work-pve]: FAILED! => {"changed": false, "msg": "Failed to find exact match for operator.tigera.io/v1.Installation by [kind, name, singularName, shortNames]"}

Das Manifest ist natürlich eine Mischung aus allen möglichen Ressourcen und es ist mehr als 5.000 Zeilen lang. Ich bin mir nicht sicher, wie ich das Problem lösen soll, aber ich freue mich auf alle Vorschläge. Ich vermute, dass dieses Problem auch bei anderen Manifesten auftritt, also glaube ich nicht, dass es sich um ein Calico-spezifisches Problem handelt.

Die Ansible-Aufgabe ist:

- name: apply manifest tigera-operator manifest
  kubernetes.core.k8s:
    src: "/tmp/tigera-operator.yaml"
    state: present
    kubeconfig: /etc/kubernetes/admin.conf

Auf dem Host verwende ich Ansible 4.4 (Apple M1, installiert über Brew).
Auf dem Server verwende ich Ubuntu 20.04.3.
Pip-Bibliotheken: Openshift (0.12.1), Kubernetes (12.0.1).

Antwort1

Ich konnte es am Ende ganz einfach lösen. Ich musste die applyAnweisung zur Aufgabe hinzufügen. Jetzt sieht es so aus (ich füge auch die zweite zugehörige Aufgabe hinzu):

- 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

Referenz: https://docs.ansible.com/ansible/latest/collections/community/kubernetes/k8s_module.html

apply vergleicht die gewünschte Ressourcendefinition mit der zuvor angegebenen Ressourcendefinition und ignoriert dabei automatisch generierte Eigenschaften. apply funktioniert mit Diensten besser als „force=yes“.

verwandte Informationen