본문 바로가기

Container

[K8S] api-resources kubectl api-resources는 쿠버네티스 클러스터에서 지원하는 API 리소스 목록을 확인하는 명령어 $ kubectl api-resourcesNAME SHORTNAMES APIGROUP NAMESPACED KINDbindings true Bindingcomponentstatuses cs .. 더보기
[K8S] Authorization 쿠버네티스의 Authorization Mode는 클라이언트의 요청이 허가(Authorization)되는 방식을 결정한다.클라이언트(사용자 또는 서비스)가 Kubernetes API 서버로 요청을 보낼 때, 요청이 허용되거나 거부되는 과정을 제어한다.kube-apiserver의 `--authorization-config` 옵션을 통해서 설정할 수 있으며, 따로 지정하지 안으면 'AlwaysAllow'로 설정되고 하나 이상의 모드를 조합하여 사용할 수 있다. $ controlplane ~ ➜ ps -aux | grep authorizationroot 3212 0.0 0.3 1521124 262820 ? Ssl 08:08 0:31 kube-apiserver --advertise.. 더보기
[K8S] Certificates API Certificates(인증서)인증서는 Kubernetes 클러스터 내 구성 요소(예: kube-apiserver, kubelet, etcd) 간의 TLS 통신을 암호화하고 인증하는 데 사용된다. 각 구성 요소는 인증서를 통해 서로의 신원을 확인하고, 안전하게 통신할 수 있다. 클라이언트 인증서:클라이언트(예: kubectl)가 API 서버에 접근할 때 자신의 신원 증명kubectl은 --client-certificate와 --client-key 옵션을 사용해 인증서를 지정서버 인증서:서버(API 서버, kubelet, etcd)가 클라이언트에게 자신의 신원 증명서버는 TLS 연결을 암호화하고, CA 인증서를 사용해 신뢰 보장CA(Certificate Authority) 인증서:인증서를 발급하고, 클라이.. 더보기
[K8S] TLS 인증된 보안?Password 기반의 authenticationSSH Key 기반의 authentication 등Scheduler, kube-apiserver, kubelet, kube-proxy, etcd 통신 등 클라이언트 간 통신 보안을 위해 TLS 사용구성요소 간 통신 사용자 인증 : 클라이언트(kubectl, dashboard)는 TLS 인증서를 사용해 API에 접근Pod간 통신 보안Ingress Controller 및 외부 클라이언트의 접근시 TLS를 사용해 안전한 HTTPS 연결 제공 TLS 인터넷 통신 보안을 위한 표준 프로토콜로, 데이터를 암호화하여 네트워크 상에서 안전하게 전송되도록 보장한다.TLS는 이전 버전인 SSL(Secure Sockets Layer)을 대체하며, 현재 대부분의 보.. 더보기
[K8S] Encrypting Secret Data at Rest 참고 문서 : Encrypting Secret Data at Rest Encrypting Confidential Data at RestAll of the APIs in Kubernetes that let you write persistent API resource data support at-rest encryption. For example, you can enable at-rest encryption for Secrets. This at-rest encryption is additional to any system-level encryption for the etcd clusterkubernetes.io root@master:~# kubectl create secret generic my-secret.. 더보기
[K8S] ConfigMap ConfigMap: 컨테이너 구성 정보를 한 곳에 모아서 관리하는, 애플리케이션의 설정 데이터를 외부화하기 위해 사용되는 API 리소스 애플리케이션 코드와 환경별 설정 데이터를 분리할 수 있으며, 설정 변경 시 애플리케이션을 재배포하지 않아도 된다.설정 분리: 환경별로 다른 설정 데이터를 외부화하여 ConfigMap에 저장하여 코드와 설정을 분리.Key-Value 형태다양한 데이터 소스 지원: YAML/JSON 파일, 명령어 출력, 문자열 데이터 등.동적인 재구성 가능: ConfigMap을 변경하면 애플리케이션이 즉시 새로운 값을 읽도록 구성 가능. (변경 용이성)다양한 사용 방법: 환경 변수, 커맨드라인 인수, 볼륨 마운트를 통해 애플리케이션에 설정 데이터 제공주의사항데이터 크기 제한: ConfigM.. 더보기
[K8S] Rollout Rollout은 애플리케이션을 점진적으로 업데이트하거나 롤백하는 프로세스를 의미한다. Rollout은 주로 Deployment와 함께 사용되며, Kubernetes가 애플리케이션의 가용성을 유지하면서 업데이트를 수행하도록 보장한다.  점진적 업데이트:애플리케이션의 새로운 버전이 기존 버전을 대체할 때, 모든 Pod을 한 번에 교체하지 않고 점진적으로 업데이트.가용성 유지:업데이트 중에도 애플리케이션이 가용성을 유지하도록 보장.롤백 지원:새로운 버전 배포 중 문제가 발생하면 간단히 이전 버전으로 되돌릴 수 있음.히스토리 관리:이전 배포 내역(Revision)을 저장하여 롤백과 관리에 활용. strategy (1) RollingUpdate (기본값)Pod를 순차적으로 교체일부 Pod는 기존 버전을 실행하며,.. 더보기
[K8S] Static Pods Static Pods는 노드에서 직접 실행되는 Pod로, API 서버를 통해 관리되지 않고 Kubelet에 의해 직접 실행된다. Static Pod는 일반적으로 시스템 구성 요소(예: etcd, kube-apiserver, kube-scheduler) 또는 Kubernetes 클러스터 외부에서 관리되어야 하는 특수한 워크로드를 실행하는 데 사용된다. Static Pod의 특징Kubelet에 의해 관리:Static Pod는 노드의 Kubelet에 의해 직접 실행된다.Kubernetes apiserver에서 관리되지 않으며, 클러스터 상태와 무관하게 동작.노드 특정:Static Pod는 특정 노드에서만 실행된다.Static Pod의 definition파일은 해당 노드의 파일 시스템에 저장되어야 한다. (/e.. 더보기