применить манифест calico через модуль ядра ansible kubernetes

Я пытаюсь установить calico на существующий одноузловой кластер Kubernetes (установленный через kubeadm).Два манифеста - это tigera-operator и custom-resources . Это нормально работает, если я устанавливаю его вручную через 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 (ядро или сообщество, это то же самое), я получаю следующую ошибку:

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

Манифест, конечно, представляет собой смесь всех видов ресурсов, и его длина превышает 5 тыс. Строк. Не знаю, как решить проблему, но жду предложений. Я предполагаю, что эта проблема возникает также и с другими манифестами, поэтому я не думаю, что это проблема, специфичная для ситца.

Задача 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).

0
задан 1 September 2021 в 18:54
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'

1
ответ дан 2 September 2021 в 10:38

Теги

Похожие вопросы