본문 바로가기

DevOps

(23)
[쿠버네티스 #7] Kubernetes ingress를 이용한 tls 적용 (let's encrypt) 오랜만입니다. 반갑습니다. 오늘은 쿠버네티스 환경에 tls를 한 번 적용시켜보겠습니다. ssl(sercure socket layer)/tls(transport layer security)에 대한 기본 지식을 어느정도 알고 있으면 좋을 거 같습니다. 본 예제에서는 인증서 발급으로 let's encrypt를 사용하였습니다. 기본적으로 let' encrypt를 이용한 인증서 발급에는 세 가지 방법이 있습니다. standalon, webroot, dns 본 예제에서는 webroot를 이용한 방법으로 테스트하였습니다. 기본적으로 webroot를 이용한 인증서 발급에는 다음 그림과 같은 순서로 이루어집니다. 1. 웹서버에서 let's encyrpt에 사용할 도메인에 대한 인증을 요청하고 2. let's encryp..
[Ansible #1] 앤서블 튜토리얼 안녕하세요 오랜만입니다. DevOps 엔지니어에 관한 툴을 찾다가 우연히 로드맵을 보게되었다. 출처 : https://velog.io/@exploit017/2020-%EB%8D%B0%EB%B8%8C%EC%98%B5%EC%8A%A4-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A1%9C%EB%93%9C%EB%A7%B5 2020 데브옵스 개발자 로드맵 https://github.com/devJang/developer-roadmap/blob/master/pdf/devops.pdf velog.io 쭈욱보다가 IaC 중 자주 언급되던 Ansible과 Terraform이 눈에 들어왔고 이번기회에 공부해보기로했다. 우선 Ansible이란 여러 개의 서버를 쉽게 관리하기 위한 툴이다. n개의 서버를 1개의..
[쿠버네티스 #tip4] 새로운 워커노드를 Join 시키거나 클러스터를 초기화할 때 안녕하세요 오랜만에 쿠버네티스 글입니다. 제 미천한 블로그를 찾아주시는 분들 중에 쿠버네티스 팁 중에 뭐가 도움이 될까 생각해보니 두 가지가 떠올랐습니다. 바로 새로운 워커노드를 추가할 때나 클러스터를 초기화 하는 과정이 필요하다고 생각했어요 Minikube의 경우에는 이런 과정이 쉽겠지만 실제 VM이나 온프레미스환경에서 구축한 경우 여러가지 경우에 의하여 초기화 시키는 경우가 많았습니다. (물론 저 혼자 에러때문에 초기화한 거지만..) 그런 분들에게 도움이 되고자 이 글을 작성합니다. 우선 새로운 워커노드를 추가하는 방법입니다. 기존에 처음 Join했을 때를 기억하시나요? 워커노드에서 $ kubeadm join (IP주소):6443 --token (토큰 값) --discovery-token-ca-cer..
[Jenkins #1] Jenkins 파이프라인을 이용한 pep8 test 만들기 안녕하세요 굉장히 오랜만입니다. 오늘은 Jenkins의 기본적인 사용법 중 하나인 Blue Ocean을 통한 파이프라인 구축을 해보았습니다. 지난 시간에 젠킨스 설치까지 마쳤는데요 파이프라인을 사용하기 위해서 일단 블루오션 플러그인을 설치해야합니다. 저는 설치되어있지만 저 블루오션 플러그인을 설치하셔야합니다. 설치가 완료되면 아래 그림처럼 블루오션이 생기고 Jenkins url 뒤에 /blue를 붙이는 것으로 블루오션에 접근할 수 있습니다. 처음에 접속하면 다음과 같이 코드가 있는 곳을 선택하라고 합니다. 위처럼 선택해 주는데 처음에 연동하는 과정에서 github 계정과의 연동을 해야합니다. github 연동에는 2가지 방법이 있습니다. 1) ID와 PW를 통한 연동 2) 인증 키값을 이용한 연동 자 이..
[Jenkins #0] Docker를 이용한 Jenkins 설치 및 업데이트 안녕하세요 오랜만입니다. 이번에는 CI/CD 툴 중 가장 기본적인 Jenkins에 대해 글을 써보려합니다. 젠킨스가 뭐냐? 라고 질문했을때 저는 이렇게 대답할 거 같습니다. '일련의 과정을 처리해 주는 웹 서버' 여기서 일련의 과정이란 사용자가 만든 job들이 될거구요 저는 처음에 젠킨스를 아예 몰랐을 때 특정 프로그램인 줄 알았습니다. 어떻게 자동화를 시켜준다는거지?? 기본적인 작동방식을 모르니까 감이 아예 안왔거든요 간단하게 예를 들어 설명해보겠습니다. 사용자가 코드를 편집하고 있습니다. 해당 코드는 github에 레포지토리로 올라가 있는 상황이고 해당 레포지토리는 jenkins서버에 연결되어 workspace에 관리되고있습니다. 이 때 사용자가 편집한 코드를 커밋하고 푸쉬를 하게 됐을 때 레포지토리..
[쿠버네티스 #6] Kubernetes metallb를 사용한 로드밸런서 타입 서비스 배포 20. 07. 16 추가 내용 ----------------------------- 인그레스 컨트롤러에 대한 내용이 없는거 같아 간략하게 나마 추가합니다. 인그레스 컨트롤러 설치 명령어 입니다. 해당 파일을 배포하면 새로운 namespace가 생깁니다. namespace안에 요소들을 보면 인그레스 컨트롤러가 있습니다. kubectl apply -f http://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/deploy.yaml ----------------------------- 쿠버네티스 서비스에 대한 글을 올렸을 때 3가지 종류의 타입이 있다고 말했다. 1. Cluster IP 2. N..
[쿠버네티스 #5] Docker compose와 kubernetes의 차이 이번 포스팅에서는 Docker Compose에 대해 얘기해보려한다. 일단 나는 반년 전 무작정 쿠버네티스에 대해 공부할 때 도커 컴포즈는 물론이며 도커에 대한 기본 상식도 없었다. 그 때 당시에 도커 컴포즈와 쿠버네티스 둘다 컨테이너를 쉽게 만들어주는 거 아닌가? 라고 생각했고 쿠버네티스만 사용하였으며 도커 컴포즈를 사용하지 않았기에 별로 신경않았다. 하지만 최근에 도커 컴포즈를 사용할 일이 있었고 이에 대해 다시 찾아보게되었다. 우선 쿠버네티스의 등장배경부터 알아보면 MSA가 유행하게되었고 그에 따라 도커와 컨테이너에 대한 기술이 주목받게되었다. 그러다 다수의 컨테이너를 관리할 필요가 생겼고 다수의 컨테이너를 관리할 수 있는 도구인 컨테이너 오케스트레이션 이 등장하게되었다. 컨테이너 오케스트레이션은 여..
[쿠버네티스 #tip3] 컨테이너 안에서 쉘 스크립트를 사용할 때 경로지정 최근 python 코드를 컨테이너로 패기징 할 때 발견한 문제다. 지금까지는 python .py 파일을 실행시키는 Container를 만들기 위해 Dockerfile을 작성했는데 이번엔 .py파일이 아닌 쉘 스크립트 파일을 실행시켜야했다. 처음 마주하는 문제였지만 어차피 python이니까 당연히 될 거라고 생각했고 FROM python:2.7 WORKDIR /app ADD . /app RUN apt-get update # COPY requirements.txt . # Application RUN pip install -r requirements.txt CMD ["sh", "./apps/example.sh"] 위처럼 Dockerfile을 작성했다. python 2.7버전에 requirements.txt에 ..