![Calico-Manifest über das Ansible-Kubernetes-Kernmodul anwenden](https://rvso.com/image/770102/Calico-Manifest%20%C3%BCber%20das%20Ansible-Kubernetes-Kernmodul%20anwenden.png)
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 apply
Anweisung 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“.