![ansible kubernetes 코어 모듈을 통해 calico 매니페스트 적용](https://rvso.com/image/770102/ansible%20kubernetes%20%EC%BD%94%EC%96%B4%20%EB%AA%A8%EB%93%88%EC%9D%84%20%ED%86%B5%ED%95%B4%20calico%20%EB%A7%A4%EB%8B%88%ED%8E%98%EC%8A%A4%ED%8A%B8%20%EC%A0%81%EC%9A%A9.png)
기존 단일 노드 kubernetes 클러스터(kubeadm을 통해 설치)에 calico를 설치하려고 합니다. 두 매니페스트는 다음과 같습니다.Tigera-연산자그리고맞춤 리소스. 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
통해 설치하려고 하면앤서블 쿠버네티스 모듈(코어든 커뮤니티든 동일합니다.) 다음과 같은 오류가 발생합니다.
fatal: [work-pve]: FAILED! => {"changed": false, "msg": "Failed to find exact match for operator.tigera.io/v1.Installation by [kind, name, singularName, shortNames]"}
매니페스트는 물론 모든 종류의 리소스가 혼합되어 있으며 길이가 5,000줄이 넘습니다. 문제를 해결하는 방법을 잘 모르겠지만 어떤 제안이라도 기다리겠습니다. 이 문제는 다른 매니페스트에서도 발생하는 것으로 추측되므로 이것이 옥양목만의 문제는 아닌 것 같습니다.
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).
답변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
적용은 원하는 리소스 정의를 이전에 제공된 리소스 정의와 비교하며 자동으로 생성된 속성을 무시합니다. 적용은 'force=yes'보다 서비스에서 더 잘 작동합니다.