728x90
728x90
Headless Service headless 서비스는 Cluster IP 가 none 이다. 즉, 서비스의 IP 가 없는 서비스를 Headless 서비스라고 부른다. myweb-rs.yml apiVersion: apps/v1 kind: ReplicaSet metadata: name: myweb-rs spec: replicas: 3 selector: matchLabels: app: web env: dev template: metadata: labels: app: web env: dev spec: containers: - name: myweb image: ghcr.io/c1t1d0s7/go-myweb ports: - containerPort: 8080 protocol: TCP myweb-svc.yml ap..
TLS/SSL Termination with Ingress 위키피디아: https://en.wikipedia.org/wiki/TLS_termination_proxy SSL 프로토콜은 3.X 버전까지 나왔으며 현재 더 이상 사용하지 않는다. TLS 는 SSL 프로토콜을 변형해서 만든 프로토콜이다. 현재 1.3 버전까지 나왔다. 클라이언트와 Proxy(LB) 사이에 TLS 를 사용하고 Proxy 와 웹서비스 사이에서는 HTTP 로 통신을 하는 방식이 TLS Termination 이다. 즉, 외부로 노출된 LB 에 클라이언트는 HTTPS 로 통신을 하고 LB 는 뒷단에 연결된 백엔드들과 HTTP 로 통신을 하는 방식을 뜻한다. 이런 구성을 사용하는 이유는 첫번째 LB 뒷단에 연결되는 백엔드들과 HTTPS 로 ..
ConfigMap & Secret 공식 문서: https://kubernetes.io/ko/docs/concepts/configuration/configmap/ 컨피그맵은 키-값 쌍으로 기밀이 아닌 데이터를 저장하는 데 사용하는 API 오브젝트이다. 파드는 볼륨에서 환경 변수, 커맨드-라인 인수 또는 **구성 파일(key=파일명, value=내용)**로 컨피그맵을 사용할 수 있다. 주로 설정파일, 인증서, 암호화 키를 제공할 때 ConfigMap 과 Secret 을 사용한다. 컨피그맵을 사용하면 컨테이너 이미지에서 환경별 구성을 분리하여, 애플리케이션을 쉽게 이식할 수 있다. 예제 apiVersion: v1 kind: ConfigMap metadata: name: game-demo data: # 속성과 ..
NFS 동적 프로비저닝 공식 문서: https://kubernetes.io/ko/docs/concepts/storage/storage-classes/#프로비저너 https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner 깃허브에서 코드를 다운로드 받는다. 역할을 만드는 rbac.yaml 파일을 실행한다. cd ~ git clone cd ~/nfs-subdir-external-provisioner/deploy kubectl create -f rbac.yaml deployment.yaml 에서 실제 NFS Server 의 주소와 마운트되는 NFS 경로를 작성한 후에 파일을 실행한다. ~/nfs-subdir-external-provisioner/de..
디플로이먼트 공식 문서: https://kubernetes.io/ko/docs/concepts/workloads/controllers/deployment/ 디플로이먼트(Deployment) 는 파드와 레플리카셋(ReplicaSet)에 대한 선언적 업데이트를 제공한다. 디플로이먼트에서 의도하는 상태 를 설명하고, 디플로이먼트 컨트롤러(Controller)는 현재 상태에서 의도하는 상태로 비율을 조정하며 변경한다. 새 레플리카셋을 생성하는 디플로이먼트를 정의하거나 기존 디플로이먼트를 제거하고, 모든 리소스를 새 디플로이먼트에 적용할 수 있다. Use Case 다음은 디플로이먼트의 일반적인 사례이다. 레플리카셋을 롤아웃 할 디플로이먼트 생성. 레플리카셋은 백그라운드에서 파드를 생성한다. 롤아웃 상태를 체크해서..
Service 공식 문서: https://kubernetes.io/ko/docs/concepts/services-networking/service/ 파드 집합에서 실행중인 애플리케이션을 네트워크 서비스로 노출하는 추상화 방법 쿠버네티스를 사용하면 익숙하지 않은 서비스 디스커버리 메커니즘을 사용하기 위해 애플리케이션을 수정할 필요가 없다. 쿠버네티스는 파드에게 고유한 IP 주소와 파드 집합에 대한 단일 DNS 명을 부여하고, 그것들 간에 로드-밸런스를 수행할 수 있다. 서비스는 selector 를 사용해서 pod 의 label 을 찾고 뒷단으로 연결시키기 때문에 만약 다른 pod 에서 만든 컨테이너의 label 이 셀렉터에서 찾는 label 과 같다면 서비스의 뒷단에 연결해버린다. 그래서, label 과 ..