kubernetes + Ansible 연동
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이 전달된 모습이다.