분류 전체보기 80

API Group

Core Group /api Named Group /apis api에 접근하는 방법은 6443 포트로 호출하면 호출 가능한 api 목록 조회 가능(인증서와 함께 curl 날려야) 다른 방법은 kubectl proxy 명령어로 로컬에 proxy 서비스 8001번으로 생성. 여기서 kubeconfig의 credentials와 certificates 사용하여 클러스터에 접근 가능하도록 함. 이렇게 하면 curl 날릴 때마다 인증서 넣지 않아도 되고, 6443 포트가 아닌 8001 포트로 curl 날리면 api 목록이 나온다. kube proxy와 kubectl proxy는 다르다! kubectl proxy는 kube-api server에 접속하기 위해 kubectl utility에 의해 생성된 http pro..

CKA 2021.09.29

KubeConfig

kubectl 명령어 실행시 default로 $HOME/.kube/config 에 config 파일을 확인함. 여기에 key, 인증서, 서버, CA 등의 정보를 저장해 놓으면 매번 kubectl 실행 시에 해당 정보를 적지 않아도 된다. kubeconfig 파일의 세가지 type Cluster 개발, 운영, 혹은 다른 Managed kubernetes 등의 cluster 정보 --server 옵션과 인증서 옵션이 이 곳에 저장됨 config yaml 파일에 certificate-authority에는 ca.crt파일의 절대 경로 입력하는 것이 좋음 certificate-authority-data 값에 ca.crt가 base64로 encode된 값을 넣을 수도 있다. User cluster 에 접근하는 us..

CKA 2021.09.27

Certificates API

누구든 CA key pair로 접근 권한을 얻으면 k8s 환경의 모든 인증서에 접근이 가능하므로, 안전한 곳에 보관해야. K8S의 CA server는 master node 매번 CSR 요청하여 사용자 인증서 수동으로 만드는 것을 대신하기 위해 Certificates API가 있음. 사용 방법 openssl genrsa -out jane.key 2048 openssl req -new -key jane.key -subj "/CN=jane" -out jane.csr jane-csr.yaml 에 kind: CertificateSigningRequest 로 생성. yaml 파일의 spec.request에 cat jane.csr | base64 문자열을 추가 kubectl get csr 명령어로 요청 목록 확인 운..

CKA 2021.09.25

TLS Certificates in Kubernetes

Server Certificates kube-api server는 보안 통신을 위해 apiserver.crt, apiserver.key라는 public/private key pair를 가짐 (key pair name 은 cluster 마다 다를 수 있음) ETCD server와 worker node의 Kubelet server도 public/private key pair 가지고 있음. Client Certificates admin user kube-api server 통신을 위한 key pair kube-scheduler kube-api server 통신을 위한 key pair kube-controller-manager kube-api server 통신을 위한 key pair kube-proxy kube..

CKA 2021.09.25

TLS 이론

Certificate: 두 집단의 transaction 간에 신뢰를 보증하는 용도. 통신이 암호화되었고, 누가 보낸 요청인지 인증서가 보증 Symmetric encryption: 서버에 요청을 보낼 때 평문을 key로 암호화하여 보내지만, key도 함께 보내 해커가 중간에서 암호문과 key를 sniff하면 위험. 같은 키로 암복호화를 하기 때문. Asymmetric encryption: Private key와 public key 동시 사용. 암호문을 복호화하려면 public key에 더해서 private key가 필수적으로 필요함 ssh-keygen : id_rsa(private) id_rsa.pub(public) 서버의 ~/.ssh/authorized_keys에 추가하면 서버는 public key로 l..

CKA 2021.09.23

Authentication

k8s는 user는 생성할 수 없지만, service account는 생성이 가능하다 모든 사용자의 접근은 kube-apiserver에 의해서 조절된다. kubectl 명령어를 사용하던 api를 직접 호출하던, kube-apiserver의 권한 체크를 거침 권한 체크 방법 1. Static password file csv 확장자파일에 user 정보 pw,username,userID,groupID 네 칼럼 형식으로 저장 kube-apiserver.service에 --basic-auth-file=user-details.csv로 저장 후 service restart service restart하면 kubeadm이 자동으로 kube-apiserver pod restart 2. Static token file c..

CKA 2021.09.17

Cluster Maintenance

Worker node가 5분 이상 문제가 발생하면, 그 worker node에 있는 pod들은 terminated되고 다른 worker node에 생김 kubectl drain node-1 명령어로 문제가 있는 worker node의 pod들을 다른 worker node에 띄움. node-1은 수동으로 제한을 풀지 않는 이상 cordon되고 unschedulable로 표시됨 kubectl uncordon node-1 : 제한 풀어서 pod 가 node-1에 schedule되도록 함 kubectl cordon node-1: node-1 에 pod를 unschedule하도록 함 pod가 node에 있을 때 drain하면 pod는 삭제되어 버리므로 주의 K8S Versions v1.22.1 = major.mi..

CKA 2021.09.17

1. 오브젝트와 의존관계

스프링이란? 자바 기반 기술이고, 자바는 객체 지향 프로그래밍 스프링의 최대 관심 대상 : 객체(Object). 이 관심은 오브젝트의 설계로 발전. 스프링은 오브젝트를 어떻게 효과적으로 설계하고, 구현하고, 사용하고, 개선해나갈 지에 대한 명쾌한 기준을 마련해 줌 객체 지향 기술과 설계, 구현에 관한 실용적인 전략과 검증된 best practice를 손쉽게 적용할 수 있도록 framework 형태로 제공. DAO Data Access Object. DB 를 사용해 데이터 조회하거나 조작하는 기능을 전담하도록 만든 object Java Bean: 두 가지 관례를 따라 만들어진 Object 디폴트 생성자: Java bean은 파라미터가 없는 default 생성자를 갖고 있어야 한다. 툴이나 프레임워크에서 리..

Spring 2021.09.08

Replication Controller & Replica Sets

Replication Controller helps us run multiple instances of a single pod in the k8s cluster --> providing high availability pod가 죽으면 기존에 선언 된 수 만큼의 새로 pod 띄워 running 상태로 유지 여러 노드들에 걸쳐서 healthy pod 갯수 조절 관여 여러 pod간의 load balance & scaling replication controller는 ReplicaSet보다 이전 기술, 나중에 RS로 대체됨 replication controller definition의 spec.template은 pod의 definition과 똑같다 spec.replicas에 개수를 적어주면 해당 갯수 만큼의 p..

CKA 2021.09.08

Kubernetes Pods

Pod : 한 개 이상의 container로 이루어진 component 1개의 Pod에 1개의 app이 있고, 트래픽 증가로 app이 scale up 해야할 때 pod 안에 app이 추가되는 것이 아닌 pod 가 추가됨. pod 내의 컨테이너 간에는 localhost로 통신이 가능하고, storage space도 share 가능함 Multi-container Pods 같은 pod 안의 container들은 같은 lifecycle, 같은 network(서로 localhost 통신 가능)와 storage 공간을 공유한다. definition의 spec.containers를 array 형태로 여러개의 컨테이너 선언할 수 있음. InitContainers Pod가 running 상태가 되기 전에 초기에 실행되고..

CKA 2021.09.08