본문 바로가기

전체 글110

golang design pattern #13 Observer Observer 패턴은 특정 이벤트나 상태가 변경되었을 경우 알림을 받고 싶을 때 사용되는 패턴입니다. 이 패턴을 구현하기 위해서는 보통 Observable(알림을 주는 객체)와 Observer(알림을 받는 객체)를 구현하게 됩니다. 흔히 아는 pub/sub 패턴으로도 많이 사용되는 패턴입니다. 예를 들어 환자와 간호사가 있는데 1명의 간호사는 여러 명의 환자들을 관리하고 간호사들은 환자의 열과 심박수를 체크합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 type Observable interface.. 2021. 11. 23.
k8s #3 ReplicaSets Replicaset이란 실행되는 Pod의 개수를 보증해주는 역할을 합니다. 예를 들어서 Replicaset을 3개로 지정한 경우 Pod 1개가 어떠한 이유로 중지되어도 다시 실행이 되어 3개를 맞추게 해줍니다. 바로 예제 코드를 보겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 apiVersion: apps/v1 kind: ReplicaSet metadata: name: webapp spec: selector: matchLabels: app: webapp replicas: 2 template: metadata: labels: app: webapp spec: containers: - name: webapp image: cs 코드를 살펴보면 우선 당연히 Replic.. 2021. 11. 22.
k8s #2 무중단 배포 기초 위 같은 그림의 k8s 아키텍쳐가 있을 때 만약 bug fix나 업그레이드 등을 하고 싶다면 서버를 내렸다 다시 올려야하므로 유저 입장에서는 이용을 하지못하는 시간이 발생하게 됩니다. 이런 문제를 release label을 이용하여 해결할 수 있습니다. 위처럼 우선은 service가 release0에 해당하는 pod을 가리키게 하다가 새로운 버젼인 release1의 pod이 준비가 끝나면 service가 release1을 가리키게하면 됩니다. service가 pod을 가리키는 것을 바꾸는 것은 매우 짧은 시간이기 때문에 유저 입장에서는 중단되는 느낌을 받기는 어렵습니다. 코드의 경우는 아래와 같습니다. (전체 코드가 아닌 release의 관련된 코드 일부입니다.) 1 2 3 4 5 metadata: na.. 2021. 11. 22.
k8s #1 hello world 이번 포스팅은 미니큐브를 이용하여 쿠버네티스의 hello world를 작성해보는 것입니다. 우선 실습을 위해서 미니큐브를 설치해야합니다. 미니큐브란 로컬에서 쿠버네티스를 실행하게 해주는 도구입니다. 제 환경은 M1 맥북이고 따로 VM은 설치하지 않았고 도커를 이용하여 미니큐브 실행 환경을 만들었습니다. 저와 같이 M1 맥북이신분은 아래 링크를 참고하시면 됩니다. https://medium.com/@seohee.sophie.kwon/how-to-run-a-minikube-on-apple-silicon-m1-8373c248d669 How to run a Minikube on Apple Silicon M1 Recently I had a chance studying k8s on my end. To setup t.. 2021. 11. 22.