Ansible Kubernetes(K8s) 인벤토리 소스

Ansible Kubernetes K8s Inbentoli Soseu



이 게시물에서는 Ansible 도구에서 Kubernetes 플러그인을 사용하는 방법에 대해 알아봅니다. Ansible에서는 많은 수의 컨테이너를 관리하기 어렵습니다. 그러나 Ansible에서 Kubernetes를 활용하면 컨테이너를 관리하는 데 도움이 됩니다. 이 가이드에서는 Kubernetes 인벤토리 소스가 무엇이며 Ansible에서 어떻게 작동하는지 알아봅니다.

Google은 K8s라고도 하는 쉽게 액세스할 수 있는 관리 소프트웨어인 Kubernetes를 출시했습니다. 이 소프트웨어는 중단 시간이 없는 설치 기능, 자동 복구 및 확장성을 갖춘 원격 시스템 집합을 통해 가상화된 구성을 관리하는 데 사용되며 Kubernetes 플러그인에 매우 적응력이 뛰어난 기능을 제공합니다. Ansible의 아키텍처. 필요한 기능에 대한 REST API의 가용성을 통해 Kubernetes의 주요 목표는 여러 컨테이너 제어와 관련된 복잡성을 숨기는 것입니다.







Kubernetes의 구성은 클라이언트-서버를 기반으로 합니다. 그러나 기본적으로 제어 호스트 역할을 하는 주 서버는 하나만 있습니다. 쿠버네티스에서는 쿠버네티스 구성을 위해 멀티 메인 컨트롤러를 사용할 수도 있습니다. K8s 인벤토리 소스는 경우에 따라 제어 시스템에 필요하며 포드를 제어하기 위해 원격 호스트의 서비스를 구성합니다. 그러나 그렇게 하는 방법에 대한 구체적인 지침을 얻는 데는 어려움이 있습니다. 결과적으로 도메인에서 포드를 추출하고 Kubernetes 인벤토리 소스를 생성하는 Ansible 플레이북을 만드는 방법에 대한 이 자습서를 구현합니다.



Ansible에서 Kubernetes 인벤토리 소스를 사용하기 위한 전제 조건

Ansible에서 Kubernetes 인벤토리 소스를 사용하기 위한 단계 프로세스 지침 또는 명령이 이 가이드 전반에 걸쳐 있습니다. 앞으로 나아가고 싶다면 필요한 준비가 되어 있는지 확인하십시오.



  • Ansible 시나리오에서 작업하려면 먼저 서버에 Ansible 도구를 설정하고 Kubernetes 플러그인을 쉽게 사용할 수 있도록 Ansible 버전 2.11.7이 있는지 확인합니다.
  • Kubernetes 플러그인을 평가하려면 Kubernetes 클러스터가 내장된 원격 서버 장치가 필요합니다.
  • 원격 호스트는 현재 Ansible 지침 및 플레이북과 빌드된 인벤토리 파일을 실행하도록 구성되어 있습니다. 대상 원격 장치의 이름은 K8s 마스터 노드입니다.
  • Python 버전은 3.6 이상이며 Ansible 컨트롤러의 장치에 설치되어 있어야 합니다. 대상 원격 호스트 장치에 있을 수도 있습니다.
  • Python의 openshift 모듈 버전은 0.6 이상입니다. 버전 3.11 이상의 pyYAML 모듈도 필요합니다. 두 모듈 모두 원격 서버 장치와 컨트롤러 장치에 설정되어야 합니다.

예:





다음은 Ansible에서 Kubernetes를 구현하는 첫 번째 예입니다. 이를 위해 Ansible 환경을 사용하여 Kubernetes 인벤토리 소스를 구현합니다. 다음 나열된 프로세스는 Kubernetes 인벤토리 플러그인을 사용하여 다음 시나리오에서 수행됩니다.

  • Ansible의 K8s 클러스터에 새 네임스페이스 구현
  • Ansible 플레이북을 사용하여 nginx 포드 생성.
  • Ansible에서 nginx 배포 생성

개념과 실행을 이해하기 쉽게 만들기 위해 여러 단계로 예제를 구현합니다.



1단계: Ansible의 K8s 클러스터에 새 네임스페이스 구현

첫 번째 단계에서는 Ansible에서 '.yml' 형식으로 콘텐츠를 작성할 수 있도록 플레이북을 만듭니다. 플레이북을 생성하기 위해 사용하는 명령은 다음과 같습니다.

[ 뿌리 @ 마스터 앤서블 ] # 나노 nginx_pod.yml

이제 'pod.yml' 플레이북이 생성되어 Ansible의 새 터미널로 실행됩니다. 스크립트 작성을 시작합니다. 플레이북에서 먼저 'v1'인 Ansible 포드에서 사용하는 API 버전을 정의합니다. 우리가 정의하는 네임스페이스는 'ansible-namespace'입니다. 그런 다음 ansible-namespace의 메타데이터를 나열합니다. 메타데이터에서 우리는 nginx 소프트웨어와 가치 프런트엔드 계층을 포함하는 레이블을 사용합니다. 플레이북의 사양에서 컨테이너에 저장된 이름과 이미지를 나열합니다. 둘 다 nginx를 포함합니다.

2단계: Ansible에서 매니페스트 문서 생성

이제 '.yml' 형식의 배포 문서인 Ansible의 동일한 디렉토리에 또 다른 문서를 만듭니다. 매니페스트 문서를 생성하려면 Ansible 터미널에서 다음 명령을 사용합니다.

[ 뿌리 @ 마스터 앤서블 ] # 나노 nginx_deployment.yml

매니페스트 문서에서 먼저 'app/v1'인 앱 버전을 다시 정의합니다. 그런 다음 어떤 종류의 파일인지, 배포 파일인지 알려줍니다. 그런 다음 ansible-namespace인 네임스페이스를 정의합니다. 구현을 빌드하기 위해 ansible-namespace 내부의 두 복제본은 포드 번호를 표시합니다. nginx 이미지는 포드에서 실행되는 1.14.2입니다. matchLabels 매개변수는 팟(Pod)에 대한 태그와 spec 매개변수 아래의 해당 사양을 제공합니다. Pod의 태그가 구성 정보에 지정된 태그와 일치하는 경우 Ansible의 매니페스트 문서에서 구현이 이루어집니다.

3단계: Ansible에서 Kubernetes 구현을 위한 플레이북 만들기

이제 Ansible에서 또 다른 플레이북을 만들고 싶습니다. 이 플레이북에서는 Kubernetes의 기능을 구현합니다. 다음 명령을 사용하여 플레이북을 생성합니다.

[ 뿌리 @ 마스터 앤서블 ] # 나노 kubernetes_main.yml

플레이북은 이전 플레이북과 매니페스트 문서가 Ansible에 저장된 동일한 디렉토리에 생성됩니다. 플레이북에서 먼저 구현하려는 플레이북의 기능을 정의합니다. 연결을 구축하기 위해 대상으로 지정하려는 원격 호스트를 제공합니다. 여기에서는 '모든' 호스트를 대상으로 합니다. 다음으로 변수가 저장된 경로를 사용하여 Ansible에서 Python 인터프리터를 확인하도록 변수를 정의합니다. 이제 플레이북에서 작업을 정의합니다. 먼저 minikube 장치의 상태를 확인합니다. 다음으로 플레이북에 새 Kubernetes 네임스페이스를 생성합니다. 그런 다음 nginx_pod.yml 및 nginx_deployment .yml을 원격 장치에 복제합니다.

이러한 yml 문서를 통해 원격 장치에서 포드 구현을 빌드합니다. 그런 다음 원격 장치의 지정된 위치에 Kubernetes 포드가 있는지 여부를 확인합니다.

플레이북 종료 후 이제 인벤토리 파일을 빌드하여 Ansible 컨트롤러와 대상 원격 호스트를 연결합니다.

모두:
호스트:
k8s_Master_Node:
ansible_host: 192.168.3.229
ansible_user: 가능
ansible_password: ********
ansible_connection: SSH
ansible_port: 22

[ 뿌리 @ 마스터 앤서블 ] # ansible 플레이북 kubernates_main.yml

다음은 작업이 대상 시스템에 성공적으로 배치되었음을 확인하는 원하는 출력입니다.

작업이 대상 머신에 배치된 후 'ansible-namespace'가 Kubernetes 클러스터에 있는지 여부를 확인합니다. 다음 'grep' 명령을 사용합니다.

[ 뿌리 @ 마스터 앤서블 ] # kubectl get 네임스페이스 | grep ansible 네임스페이스

쿠버네티스 클러스터의 네임스페이스에 생성된 포드를 확인하려면 다음 명령어를 작성하여 확인한다.

[ 뿌리 @ 마스터 앤서블 ] # kubectl get pods --namespace ansible-namespace

이전 출력에서 ​​볼 수 있듯이 디바이스에서 실행 중인 포드를 가져옵니다. 이제 Kubernetes 클러스터에서 만든 배포를 확인합니다. 다음 문을 활용하여 이미 만들어진 배포를 확인합니다.

[ 뿌리 @ 마스터 앤서블 ] # kubectl 배포 가져오기 --namespace ansible-namespace

결론

Ansible에서 Kubernetes 인벤토리 소스가 무엇인지 배웠습니다. 또한 Ansible에서 Kubernetes 인벤토리를 활용하는 방법도 배웠습니다. 그런 다음 Ansible에서 Kubernetes 인벤토리 소스의 작업에 대해 보다 명확하게 배울 수 있도록 예제를 구현했습니다.