
도커 컨테이너로 운영중인 엔서블 서버로 쿠버네티스에 접속하여, 엔서블이 사용할 수 있는 플레이북 파일 테스트 해볼 것
hosts 파일에 쿠버네티스 그룹 만들고, 호스트PC(쿠버네티스사용하는 어드레스) 추가해서 사용할 것. 그리고 이 엔서블서버에서 플레이북 실행하면, 쿠버네티스와 통신이 될 것이다

젠킨스가 엔서블에 명령하면, 쿠버네티스 클러스터에 필요한 명령어를 실행할 수도 있다. 혹은 젠킨스로 직접 쿠버네티스에 무언가 명령을 할 수도 있다
https://learn.microsoft.com/ko-kr/windows-server/administration/openssh/openssh_keymanagement
여기서 세팅 먼저 하자192.1
엔서블 서버 접속

엔서블 서버에서 쿠버네티스 서버 접속 확인

호스트 pc ip 주소는 명령프롬프트에서 ipconfig
호스트 pc 계정명은, 명령프롬프트에서 whoami
제어판 -> 계정 -> microsoft로 로그인 했으면
마이크로소프트 비밀번호 입력하면 된다 -> 이거 때문에 엄청 헤맸다 진심
위는 그냥 ssh로, ansible에서 host pc로 접속한 것이다.
ssh로는 접속이 안 되어 헤매다, winrm 적용하기로 마음먹음 ..
https://github.com/AlbanAndrieu/ansible-windows/blob/master/files/ConfigureRemotingForAnsible.ps1
여기 있는 파일 다운로드
관리자 모드 파워셸에서
powershell.exe -ExecutionPolicy ByPass -File C:\Users\user\Downloads\ConfigureRemotingForAnsible.ps1입력, 참고로 저 파일 다운로드 누르면 자동으로 저기에 된다.
두번째 user 는, 본인 경로에 맞는 user 써라 본인은 zzang 이더라
이거하면 알아서 winrm실행에 필요한 host pc 세팅이 끝남
ansible server에 k8s 디렉토리 만들고 안에 hosts파일 다음과 같이 작성

비밀번호는 '' 사이, 계정명은 그냥
Ansible 서버에 winrm 설치
pip install pywinrm (엔서블서버에 python3 없으면 걔도 설치, host도 설치)
Ansible 홈 디렉토리에서 다음과 같은 명령어 입력
ansible -i ./k8s/hosts windows -m win_ping
야호 ! 성공 !
이 코드는 쿠버네티스가 저장되어 있는 Hostpc에 있어야한다
apiVersion: apps/v1
kind: Deployment
metadata:
name: cicd-deployment
spec:
selector:
matchLabels:
app: cicd-devops-project
replicas: 2
template:
metadata:
labels:
app: cicd-devops-project
spec:
containers:
- name: cicd-devops-project
image: seopioo/cicd-project-ansible
imagePullPolicy: Always
ports:
- containerPort: 8080
~
apiVersion: v1
kind: Service
metadata:
name: cicd-service
labels:
app: cicd-devops-project
spec:
selector:
app: cicd-devops-project
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 32000
~ ~
이 코드는 Ansible pc에 있어야 한다
- 플레이북 파일 보면 task에 기존 command가 아니라, win_command인 것 유의
- kubectl 실행할 yml파일 위치는 ansible에서 ssh로 window 접속했을 때 바로 나오는 주소, 필자는 C/User/zzang(사용자계정) 였고, 이 디렉토리에 yml파일 두었다.
- name: Create pods using deployment
hosts: kubernetes
# become: true
# user: ubuntu
tasks:
- name: delete the previous deployment
win_command: kubectl delete deployment.apps/cicd-deployment
ignore_errors: yes
- name: create a deployment
win_command: kubectl apply -f C:\Users\zzang\cicd-devops-deployment.yml
~ ~
- name: create service for deployment
hosts: kubernetes
# become: true
# user: ubuntu
tasks:
- name: create a service
win_command: kubectl apply -f cicd-devops-service.yml
~ ~ ~
deployment playbook

이유는 모르겠지만, 호스트PC에서 디플로이먼트가 이미 있어야 진행이 된다
그래서, 호스트피시에서 kubectl apply -f cicd-devops-deployment.yml 실행해서, 디플로이먼트 하나 만들고 시작하자 -> 해결, playbook 보면 기존 존재하는 deployment 삭제하고, 만드는데, 호스트pc에 없으면 에러나는 것이다. error ignore 추가해서, 해결
service playbook



그 결과 컨테이너도 실행되고, 서비스도 연결 되어서 톰캣 서버 hello world war파일 잘 적용된 모습