목록Study/K8S (72)
전공공부

쿠버네티스의 API에 대해서 자세히 알아 봅시다. 클러스터 상태에 대해서 알아보는 API에 대해서 집중적으로 알아봅시다. 아래는 쿠버네티스의 코어 API 입니다. 1. API Groups named API의 경우에는 좀 더 세부 디테일 작업과 Resource의 액션모음을 가지며 위 아래 API 서비스는 모두 API 서버에 포트 6443으로 액세스하면 사용 가능한 API 그룹이 표시되며 명명된 API 그룹 내에서 지원되는 모든 그룹이 반환된다. 하지만, curl을 사용해서 직접 보려면 아래와 같은 명령어를 사용하여야 한다. 보면 알겠지만 굉장히 복잡하고 힘들다 이런 과정이 복잡하기 때문에 개발된 것이 kubectl proxy이다. # 예시: 현재 컨텍스트를 사용하여 pod 목록을 조회하는 명령 curl -..
CA 설정이 모두 끝났다면 kube - apiserver에 요청 할 때마다 원래는 -- ca.crt 등의 요청을 기입하는 것을 알고 있을 것이다. 그러나, 우리는 절대 이런식으로 쓰지 않는다. kubectl get pod를 쓰지 kubectl get pod --ca.crt=/kube/... 이런식으로 다 기입 하지 않지 않는가? 그래서, 이를 간단히 해결 해 줄 방법책을 공유한다. apiVersion: v1 kind: Config current-context: my-cluster-context #별도 설정이 없다면 해당 context 셋팅을 기본으로 쓴다는 것이다. clusters: - name: my-cluster cluster: server: https://cluster-api-server-url c..
모든 증명서에는 유효기간이 있습니다. 기간이 지날 때마다 ca 및 sigining request를 직접 ca 서버에 요청해야 합니다. 그런데 이는 전에 해봤듯이 매우 귀찮고 시간이 많이 가는 작업입니다. 그렇기 때문에 csr이라는 쿠버네티스의 자체 요청 파일을 만들고 Master 노드의 Contoller Manager가 csr 요청에 따른 작업을 처리 한 후 저희는 승인 비승인 여부만 결정하면 되는데요 이를 자세히 알아봅시다. 1. CSR이란? CSR은 공개 키 기반의 암호화 시스템에서 인증 기관에게 인증서를 발급해 달라고 요청하는 데이터 구조입니다. 즉, 클라이언트나 사용자가 자신의 공개 키를 제공하고, 이를 기반으로 인증서를 발급받기 위해 사용됩니다. 2. 쿠버네티스에서의 CSR 쿠버네티스에서 CSR..

1. TLS in K8S 쿠버네티스는 마스터 노드와 워커 노드로 되어있고 이는 서로 소통합니다. 이때 서로 소통을 하기 위해서 보안이 중요합니다. [Server Certificates for Servers] / [Client Certificates for Clients] 소통을 하는데 이렇게 소통을 하기 위해서는 보안이 중요하다는 말 입니다. 예를 들어서 apiserver와 scheduler끼리 통신을 한다던지요. (Server Certificates for Servers의 경우) 1 - 1) Server Certificates for Servers Kube API Server에는 apiserver.crt (public key) / apiserver.key (private key)가 존재 ETCD Ser..
1. TLS CERTIFICATES 개요 : 유저가 서버로 접근시에 tls 인증서가 해당 서버로의 통신이 암호화 되도록합니다. id 및 pw를 보낼때 어떠한 키로 암호화를 진행하고 이를 서버로 보내는데 이때 보낸 서버의 메세지를 해독 할 수 있게 끔 키의 값을 가지고 있어야 합니다. 하지만 대칭키 방식은 해커가 키를 중간에서 탈취 할 수 있으니 최근 보안시에는 비대칭키 방식을 사용하는데요. 설명에 따르면 public lock과 private key로 관리 된다고 생각하면 됩니다. 공공 자물쇠로 뭘 잠그던 private key로만 열 수 있죠. ssh-keygen으로 private key와 public lock을 만듭니다. 그러면 다른 유저가 서버로 접근하려고 하면 어떻게 해야 할까요? 그 다른 유저를 위..
1. Security Primitives (Deprecated) Secure K8S - kube-apiserver가 k8s의 중심이므로 원시적인 보안 형식에서는 apiserver가 1차 방어선으로 제어하는 역할이 됩니다. 누가 API 서버에 접근하는가? - 파일 접근시 유저ID, Password 등등 그들이 API 서버에 접근시 가질 수 있는 권한은? - RBAC, ABAC 등등의 기반으로 접근 권한을 가집니다. 기본적인 인증에 대해서 알아봤습니다. Accounts User 정보는 K8S에서 관리하지 않고 외부의 장치를 이용해서 관리됩니다. 하지만, CertBot과 같은 자동 인가 시스템은 K8S에서 ServiceAccount로 관리 될 수 있습니다. 어찌 됐건 User들은 Kube-apiserver를 ..

Backup 후보들 1. Resource Configuration 방식 1) 저장소를 두고 저장하는 방식 Declarative 방식으로 구성을 한다면 싱글 폴더에 존재하고 다른 사람과 공유가 가능합니다. 이런 방식은 이러한 yaml 파일을 github 같은 곳에 두고 백업 솔루션으로 쓸 수 있습니다. 만일, 클러스터를 이런식으로 구성하면 뭔갈 잘 못 만들었을때 다시 돌아갈 수 있겠죠. 이를 사실 일일이 복사 할 필요는 없구요 아래 예시 처럼 KubeAPIServer를 이용해서 쿼리를 하는 것이라고 합니다. API에 직접 액세스하고 이를 카피로 두기 때문에 누락된 객체에 대한 걱정을 할 필요가 없겠죠 kubectl get all --all-namespaces -o yaml > all-deploy-servi..
1. 중요도 X 버전 kube-apiserver : 최고로 높아야 하는 컴포넌트 X - 1 버전 controller-manager kube-scheduler X - 2 버전 kubelet kube-proxy X+1 > X - 1 버전 kubectl : apiServer 보다 버전이 높을 수도 있음 2. 언제 어떻게 클러스터 업그레이드를 진행 할 수 있을까? GKE의 경우 클러스터 설정에 따라서 다른데 GKE 사용시에는 몇번의 클릭만으로 업그레이드가 가능하다. kubeadm의 경우 kubeadm upgrade plan kubeadm upgrade apply 위 명령어로 업데이트가 가능하다. kubeadm의 경우로 자세히 알아보자 Master Node가 먼저 업그레이드가 되고 나머지 Worker Node가 ..