목록DevOps (9)
Myo-Kyeong Tech Blog
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cvLYPR/btsK5CsXBOv/KX4f7KQHieqLgFBl7xcnVK/img.png)
쿠버네티스(Kubernetes)를 사용하다 보면 특정 네임스페이스에 있는 시크릿(Secret)을 다른 네임스페이스로 복사해야 하는 상황이 생기곤 합니다. 예를 들어, 개발 환경에서 사용 중인 시크릿을 테스트 환경이나 프로덕션 환경으로 옮기거나, 동일한 시크릿을 여러 네임스페이스에서 재사용해야 할 때가 그렇습니다. 이 글에서는 네임스페이스만 바꾸는 간단한 한 줄 명령어와, YAML 파일을 활용해 시크릿을 수정하고 복사하여 네임스페이스를 변경하는 방법에 대해 정리하였습니다. 방법 1️⃣ : 네임스페이스만 변경하는 간단한 명령어 시크릿을 수정할 필요 없이, 네임스페이스만 변경하려는 경우 다음과 같은 한 줄 명령어를 사용하면 됩니다. kubectl get secret -n -o yaml | \grep -..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/l8YLF/btsKyTA6YSS/HZnf2gkKvZeEQXjSa0EHF0/img.png)
python 개발을 하다보면 코드의 흐름을 확인하거나 오류를 추적하기 위해 print를 많이 사용하게 됩니다. 하지만 더 조금 더 복잡한 애플리케이션을 개발하거나, 운영 환경에서 문제를 모니터링하려면 print 대신 logging 모듈을 사용하는 것을 더 권장합니다.왜 print 대신 logging을 사용해야 할까?print 는 단순한 디버깅에는 유용할 수 있지만, 큰 애플리케이션이나 운영 환경에서는 logging이 더 유리한 점이 많습니다.1. 로그 레벨을 통한 중요도 구분logging 모듈은 메시지의 중요도에 따라 로그 레벨을 제공하여, 상황에 맞게 로그를 분류할 수 있게 해줍니다. DEBUG개발 시 디버깅을 위해 사용하는 가장 낮은 수준의 로그INFO일반적인 정보 메시지로, 정상적인 실행 과정을 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dSZBRd/btsHdcjPRv5/FO9Hv292rjESE3arV4kQtK/img.png)
Service각 파드는 고유한 IP를 할당받지만, 동적으로 생성되고 제거되기 때문에 IP 주소가 자주 변경될 수 있음Service는 이러한 파드들에 대한 하나의 고정된 IP 주소와 포트를 제공파드의 생성과 소멸에 관계없이 일관된 방식으로 파드에 접근할 수 있음 Service 유형 : ClusterIP, NodePort, LoadBalancer1. ClusterIP기본 서비스 유형, 클러스터 내부에서만 접근 가능한 내부 IP를 할당받음클러스터 외부에서는 접근할 수 없음ClusterIP 주소로 요청하면, 쿠버네티스는 자동으로 연결된 파드 중 하나로 라우팅하여 처리[ClusterIP 서비스 YAML 파일 예시]apiVersion: v1kind: Servicemetadata: name: my-web-servi..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bFqkIK/btsFBbmZ8Yi/G1Rm08AvBGHE571AMcDf01/img.png)
CronJob이란? 쿠버네티스에서 반복 작업을 정의하고 예약하는 기능 유닉스에서 사용되는 cron 데몬과 유사한 작동 특정 시간에, 또는 주기적으로 컨테이너화된 작업을 실행하도록 스케줄링 Cron 표현식 이해 크론 표현식은 분, 시간, 일, 월, 요일 등을 지정하여 작업을 예약하는 데 사용 # ┌───────────── 분 (0 - 59) # │ ┌───────────── 시 (0 - 23) # │ │ ┌───────────── 월의 일 (1 - 31) # │ │ │ ┌───────────── 월 (1 - 12) # │ │ │ │ ┌───────────── 요일 (0 - 6) (일요일부터 토요일까지) # │ │ │ │ │ OR sun, mon, tue, wed, thu, fri, sat # │ │ │ │..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/575yK/btsFt3IDMjS/WqEPlk9msXUPQ6tKy1hkb1/img.png)
쿠버네티스 대시보드 설치하기 https://kubernetes.io/ko/docs/tasks/access-application-cluster/web-ui-dashboard/ 쿠버네티스 대시보드를 배포하고 접속하기 웹 UI(쿠버네티스 대시보드)를 배포하고 접속한다. kubernetes.io 대시보드 UI 배포 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.1/aio/deploy/recommended.yaml 밑의 명령어를 통해 설치가 잘 되었는지 한번 확인해줍니다. kubectl get deployment -n kubernetes-dashboard 대시보드에 접속하기 위한 PROXY 설정 kubectl proxy 프..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cN8DtA/btsEGhV12Qu/NYe5kqMLuYfI2G8IgBQTn1/img.png)
파드(Pod) 쿠버네티스가 만들 수 있는 가장 작은 오브젝트이며, 기본이 되는 배포 단위 하나 이상의 컨테이너와 이들 컨테이너가 사용할 수 있는 공유 리소스(네트워크, 스토리지 등)를 묶은 것 각 파드는 고유한 IP 주소를 할당받으며, 파드 내의 모든 컨테이너가 이 IP 주소와 포트 공간을 공유 이 구조는 컨테이너 간의 통신과 리소스 공유를 효율적으로 할 수 있음 예를 들어, 웹 서버 컨테이너와 웹 서버 로그 분석 컨테이너는 하나의 파드로 관리하는 게 효율적 파드 내 컨테이너들은 같은 네트워크 네임스페이스를 공유하기 때문에 'localhost'를 통해 통신할 수 있어 네트워크 지연을 최소화하며 데이터 전송 속도를 극대화하여 컨테이너 간 통신 효율적 볼륨을 공유할 수 있어 웹 서버가 생성한 로그 파일을 로..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/8t3Eh/btsDpuXzR6t/tDUm6JHJJa1D7WdMivWyA1/img.png)
컨테이너와 호스트 간 파일 복사 파일 복사는 컨테이너 -> 호스트, 호스트-> 컨테이너로 양방향 모두 가능 docker cp [원본 경로] [복사할 경로] [호스트 -> 컨테이너 파일 복사] docker cp [호스트 경로] [컨테이너 이름:컨테이너 경로] 호스트 경로 : 컴퓨터 속 파일이나 폴더(디렉토리) 주소 ex) 윈도우 - C:\User\사용자명\Documents\파일명 [컨테이너 -> 호스트 파일 복사] docker cp [컨테이너 이름:컨테이너 경로] [호스트 경로]
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/8blct/btsCRh5Bw4p/Nr0yWu6ZJDZ24tFchz81rk/img.png)
도커 이미지, 컨테이너 이미지는 컨테이너를 만드는 데 사용 이미지는 컨테이너를 만드는 '빵틀' 과 같은 것, 컨테이너 설계도 역할 하나의 이미지로 동일한 컨테이너를 여러 개 만들 수 있음 또한, 이미지로만 컨테이너를 만들 수 있는 것이 아니라 컨테이너로도 이미지를 만들 수도 있음 도커 컨테이너 생애주기 컨테이너는 '쓰고 버리는' 일회용품과 비슷 컨테이너가 쉽게 생성되고, 사용 후 버려질 수 있다는 점에서 기인 컨테이너는 일반적으로 여러 개 동시에 가동되므로 컨테이너를 업데이트 할 필요가 있을 때, 개별적으로 각 컨테이너를 업데이트하기보다는 새로운 이미지로부터 새로운 컨테이너를 만드는 것이 더 효율적 컨테이너 생애 주기 = 컨테이너 만들고 -> 실행하고 -> 종료하고 -> 폐기하는 과정 컨테이너 데이터 저..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/VAZvT/btsCTv9HES5/9mWSL9vcB146QaDFX8Sk6k/img.png)
도커의 구조 일반적인 서버의 경우, 운영체제 위에 프로그램이나 데이터가 직접 올라감 운영체제는 사용자의 명령(예: 프로그램 실행, 파일 저장 등)을 받아서 컴퓨터의 하드웨어(예:CPU, 메모리, 하드 드라이브 등)에 전달하는 역할을 함 예를 들면, '레스토랑 매니저'와 같음. 손님(사용자)이 주문을 하면 주문을 받아서 주방(하드웨어)에 전달 도커의 경우, 운영체제 위에 도커 엔진이 동작하고 그 위에서 컨테이너가 동작 본래 운영체제는 '커널' + '주변 부분' 으로 구성됨 이를 단독 주택에 비유하면, 각 단독 주택은 자체적인 기반 시설(전기, 수도, 가스 등)과 개별적인 내부 공간(가구, 장식 등)을 갖추고 있다. 즉, 각 주택(시스템/가상 머신)은 자신만의 모든 필요한 구성요소를 갖추고 독립적으로 운영된..