CI CD

kubernetes + Ansible 연동

svdjcuwg4638 2023. 6. 26. 17:16

kubernetes에 ip를 부여하여서 ansible과 통신하는 모습

 

연동한뒤 jenkins와도 kubernets를 연동해서 밑과같이 통신이 이어지도록 해볼것이구요 일단은 ansible과 먼저 통신을 해보도록합시다.

 

우선 엔서블 서버목록을 확인해보겠습니다.

C:\Users\kdhwo>docker ps -a | findStr ansible
0473531c111f   edowon0623/cicd-project-ansible   "catalina.sh run"         17 minutes ago   Up 17 minutes                                                                k8s_cicd-devops-project_cicd-deployment-6f797d4c6b-dblx5_default_9279493e-f465-4110-8e66-22c59bdb7844_1
36953faa8e0f   edowon0623/cicd-project-ansible   "catalina.sh run"         17 minutes ago   Up 17 minutes                                                                k8s_cicd-devops-project_cicd-deployment-6f797d4c6b-x5f5t_default_773f4d97-e625-4f59-a658-35a593e6dbef_1
e01a56159c82   edowon0623/docker:no_iptables     "/sbin/init systemct??   44 hours ago     Exited (0) 25 hours ago   0.0.0.0:20022->22/tcp, 0.0.0.0:8082->8080/tcp      ansible-server
FINDSTR: 쓰기 오류입니다.

C:\Users\kdhwo>docker ps -a | findStr ansible-server
e01a56159c82   edowon0623/docker:no_iptables     "/sbin/init systemct??   44 hours ago     Exited (0) 25 hours ago   0.0.0.0:20022->22/tcp, 0.0.0.0:8082->8080/tcp      ansible-server
FINDSTR: 쓰기 오류입니다.

windows라서 findSTR사용한것입니다 리눅스환경이라면 grep사용하시면 됩니다.

 

ansible서버 접속하기

docker exec -it ansible-server bash

 

cmd창을 하나 더켜서 kubernetes pods목록을 환인합니다.

C:\Users\kdhwo>kubectl get pods
NAME                               READY   STATUS    RESTARTS      AGE
cicd-deployment-6f797d4c6b-dblx5   1/1     Running   1 (23m ago)   12h
cicd-deployment-6f797d4c6b-x5f5t   1/1     Running   1 (23m ago)   12h

 

ansible서버에서 kubernetes가있는 현재 사용중인 pc 로 가보겠습니다.

[root@e01a56159c82 ~]# ssh kdhwo@192.168.0.137
kdhwo@192.168.0.137's password:
Microsoft Windows [Version 10.0.19045.3086]
(c) Microsoft Corporation. All rights reserved.
kdhwo@LAPTOP-0OEVL4R2 C:\Users\kdhwo>

ip는 자신의 아이피를 입력하고 위와같이 내pc인 windows커맨드창이 나온다면 성공한것이다.

만약 ssh가 안되거나 로그인이 안되면 밑의 글을 참조

https://www.lainyzine.com/ko/article/how-to-run-openssh-server-and-connect-with-ssh-on-windows-10/

 

[Windows 10] OpenSSH 서버 실행하고 SSH로 접속하는 방법

Linux 뿐만 아니라 Windows 10에서도 OpenSSH 서버를 실행하고 서버로 사용하는 것이 가능합니다. OpenSSH 서버를 셋업하면 SSH 클라이언트로 서버에 접속하고 명령어를 실행할 수 있습니다.

www.lainyzine.com

 

ssh로 접근되는걸 확인했으니 다시 나와서 ansible에서 접근이 가능하도록 설정해보겠습니다.

 

hosts파일 만들기

k8s폴더 만들어주고 k8s폴더안에 hosts라는 파일을 만들어줍니다 내용은 위와같이 작성해주고 다시 상위폴더로 돌아갑니다.

 

ansible의 ping모듈로 테스트

[root@e01a56159c82 ~]# ansible -i ./k8s/hosts kubernetes -m ping
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
192.168.0.137 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: root@192.168.0.137: Permission denied (publickey,password,keyboard-interactive).",
    "unreachable": true
}

ping을 보내니 위와같은 에러가 발생하였다 알아보니 hostspc에 로그인이 안되어있어서 위와같은 에러가 발생

 

여기서부턴 mac으로 교체됨

 

ansible에서 pc로 가기위한 key를 만들어보자

위와같이 키복사할때 host이름과 ip를 입력하고 비밀번호를 잘 입력하게되면 위와같이 성공 맨트가보일것이다 그럼 복사된 키는 어디에 저장되는지 보면

 

.ssh안의 authorized_keys의 내용을 보면 방금 복사된 키가 보일것이다.

vi authorized_keys

 

authorized_keys

 

그리고 확인해보면 우리가 키복사할때 등록한 root@4c58..이보인다 그대로 -u옵션 없이 ping요청을하면 거부가 발생할것이다

키복사할때 "deahyun kim"@ip주소 형식으로 우리가 복사가되었다 즉 daehyun kim으로만 접속할때만 자동으로 접속해주겠다는 뜻이되는데 안의 복사된 내용은 root계정으로 지정이되어있으니 -u옵션이 필요하다

-u  옵션이없다면 root의 계정으로 접속하게되는것이니 당연히 안된다.

 

-u옵션으로 유저지정을 해주니 잘 ping이 전달된 모습이다.