ansible
k8s + ansible 연동
date
Apr 1, 2025
slug
CI-CD-Pipeline-with-Jenkins-5-6
status
Public
tags
Jenkins를 이용한 CI/CD Pipeline 구축
author
summary
[Jenkins를 이용한 CI/CD Pipeline 구축] 강의 정리
type
Post
thumbnail
updatedAt
Apr 1, 2025 02:05 PM
category
ansible
k8s
devops
jenkins
📝 강의 정리docker-serveransible-serverjenkins-serverMAC 환경에서 환경 설정Permission denied[Errno 2] No such file or directory: b'kubectl’✅ 총 정리 Check List📎 출처
📝 강의 정리
docker-server
1. docker container run docker run --privileged --name docker-server \ -itd -p 10022:22 -p 8081:8080 -e container==docker \ -v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns=host \ [docker image] /usr/sbin/init
ansible-server
1. docker container run docker run -d --privileged --name ansible-server \ -p 20022:22 -p 8082:8080 \ -e container=docker \ -v /sys/fs/cgroup:/sys/fs/cgroup --cgroupns=host \ [docker image] /usr/sbin/init 2. ansible hosts 파일 작성 /etc/ansible/hosts """ [devops] IP-ADDRESS(ansible-server) IP-ADDRESS(docker-server) """ 3. ssh-key 생성 후 ansibler-server, docker-server에 copy # sh-keygen # ssh-copy-id root@[target-IP] 4. ansible-playbook.yml 생성 5. kubernetes 환경의 로컬 PC로 ssh 접속 설정 - mac의 경우 ssh 접속을 허용해주어야함 5-1. 시스템 설정 - 일반 - 원격 로그인 허용 5-2. 시스템 설정 - 개인정보 보호 및 보안 - 전체 디스크 접근 권한 - sshd-keygen-wrapper 허용 6. ansible-server에 kubectl로 실행 시킬 playbook 파일 생성 및 실행
jenkins-server
1. docker container run docker run -d -v jenkins_home:/var/jenkins_home \ -p 8080:8080 -p 50000:50000 \ --restart=on-failure --name jenkins-server jenkins/jenkins:lts-jdk11
MAC 환경에서 환경 설정
Permission denied

- 맥에서 ssh 접근 권한도 열려있고, ssh key copy도 했는데
- ansible-playbook -i ./k8s/hosts k8s-cicd-service-playbook.yml
-u [USER]
ansible 명령어 실행 시 permission denied 발생하면 -u 옵션을 통해
유저 명시해주기. → 맥의 root 로는 원격 접속이 안된다
[Errno 2] No such file or directory: b'kubectl’

- ansible 컨테이너에서 호스트 PC에 kubectl 명령어 실행 시 명령어 path를 못찾아서 생기는 문제
- 제대로 실행되었음을 확인할 수 있다.
→ 절대경로를 playbook.yml에 명시해준다.

✅ 총 정리 Check List
호스트 PC에 SSH 연결 허용 했는지
컨테이너간 ssh-key-copy 해놨는지
ansible-server의 hosts 파일에 연결할 IP 작성됐는지
jenkins-gui에서 server 정보 저장해놨는지
root가 아닌 user로 지정해줬는지