유데미
-
K8S TLS Certificate 정리K8S 2021. 7. 26. 13:26
이번 포스팅은 K8S 클러스터의 TLS Certificate에 대해 정리한다. K8S TLS에 대해 알아보기 전, TLS Certificate에 대한 기본적인 내용을 짚고 넘어가자. Certificate는 다음과 같이 세 종류가 있고, 기본적으로 세가지 모두가 필요하다. - CA에서 발급한 root certificate - 서버에서 발급한 server certificate - 클라이언트에서 발급한 client certificate 만약 Certificate에 대해 잘 모르겠다면 다음을 참고. TLS Certificate란?(대칭 키, 비대칭 키, CA, PKI) 이번 포스팅은 사용자-은행 시나리오를 통해 TLS Certificate가 무엇인지 그리고 추가적으로 알아야 할 보안적인 요소에 대해서 다룬다. ..
-
TLS Certificate란?(대칭 키, 비대칭 키, CA, PKI)메모 및 기타 2021. 7. 24. 14:27
이번 포스팅은 사용자-은행 시나리오를 통해 TLS Certificate가 무엇인지 그리고 추가적으로 알아야 할 보안적인 요소에 대해서 다룬다. 우선 TLS certificate에 대해 간단히 알아보자면 Certificate에서 예상할 수 있듯이 두 그룹간 거래에 신뢰성을 보장하기 위해 사용되는 것이다. 그렇다면 이제부터 안전하게 뱅킹 서비스를 이용하려는 사용자에 대한 시나리오를 생각해보자. 한 사용자가 뱅킹 시스템에 접속해서 은행 서버로 필요한 정보(아이디, 패스워드 등)를 보내려한다. 만약 한 사용자가 어떠한 보안 조치도 되어있지 않은 crediential을 보낸다면 해커는 중간에 데이터를 스니핑할 수 있다. 그래서 사용자는 데이터 보안을 위해 데이터를 암호화해서 서버로 보..
-
K8S Network Failure Trouble shootingTrouble Shooting 2021. 7. 18. 16:51
1. CNI 플러그인 Error 배포해놓은 애플리케이션이 동작하지 않아서 endpoint를 먼저 확인 엔드포인트 확인 결과, 애플리케이션 단에서는 문제가 없는 듯 하다. 네트워크 문제인가 싶어 전체 포드를 확인해보니 cni 플러그인이 없다. weave plugin 설치 kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')" 애플리케이션 동작 확인 결과 잘 된다. 2. kubeproxy 에러 다음과 같이 kube-proxy pod에서 에러가 발생했다. kubeproxy로그를 확인해봤더니 컨테이너 내부에서 /var/lib/kube-proxy/configuration.conf ..
-
K8S Worker Node Not Ready Trouble ShootingTrouble Shooting 2021. 7. 18. 14:58
이번 포스팅은 worker node에서 생길 수 있는 kubelet issue에 대해서 다루고 이를 trouble shooting한다. kubelet issue는 다음과 같이 나눌 수 있다. - 워커노드의 kubelet이 죽은 경우 - inactive - 워커노드의 kubelet이 활성화되고 있는 중인 경우 - activating - 워커노드의 kubelet이 동작 중인 경우 - active 1. 워커노드의 kubelet이 죽은 경우 먼저 노드 상태를 확인한다. node01의 상태가 not ready다. 어떤 문제가 있는 듯 하다. 좀 더 구체적인 정보를 위해 node01을 inspect 해본다. 노드의 상태를 알 수 없다고 한다. node의 agent인 kubelet으로부터 필요한 데이터를 받아오지 못..
-
K8S Nginx-controller를 이용한 Ingress 구성 정리K8S 2021. 7. 9. 10:38
인그레스 컨트롤러에는 다양한 종류가 있다. GCE(구글 http load balancer) nginx, contour, haproxy, traefik, istio등이 있다. 여기서 GCE와 nginx는 쿠버네티스 프로젝트에 의해 유지보수된다. 이번 포스팅은 nginx controller를 이용한 ingress 구성을 알아본다. Ingress를 구현하기 위해서는 다음과 같은 것들이 필요하다. 1. Nginx-ingress-controller 2. Configmap nginx의 원하는 기능(error-log-path, keep-alive, ssl-protocols등)을 추가할 때는 configmap을 이용하여 image와 별도로 추가한다. 하지만 다음처럼 아무것도 없어도 상관없으며 이는 나중에 configu..
-
K8S: Service Networking 정리K8S 2021. 7. 7. 17:08
각 노드의 kube-proxy는 kube-api 서버를 통해 클러스터의 변화를 감지한다. service object 생성 요청이 들어오면 api server를 통해 kube-proxy는 이를 감지하고 행동에 들어간다. 그렇다면 서비스는 어떻게 원리로 생성되는 걸까? 우선 서비스는 클러스터 내에 존재하는 어떤 것이 아니다. (어떠한 프로세스, 네임스페이스, 인터페이스가 있는 것이 아니다 ) 즉 가상의 어떤 것이다. 예를 들어보자. 다음과 같은 포드와 서비스가 생성되어 있을 때, 이 서비스는 어떻게 서비스로 들어온 트래픽을 포드로 전달할까? 서비스가 정의 될 때 이미 정의된 range 안에서 서비스의 IP를 할당된다. IP range는 kube-api server에 등록된 --s..
-
K8S Pod Networking과 Weave CNI 정리K8S 2021. 7. 7. 00:24
클러스터 내에서 Pod간의 네트워킹은 다음을 만족해야 한다. - 모든 포드는 ip 주소를 가져야 한다. - 같은 노드의 포드끼리 통신가능해야한다. - 모든 포드는 NAT없이 다른 노드의 포드들과 통신 가능해야 한다. 위 조건을 만족하기 위해서는 다음과 같은 네트워크 구성을 따라야 한다. 1. 같은 노드의 포드간 통신 1) 포드를 연결할 브릿지 만들어 준다. 2) 각 포드에 ip 할당한다. 3) 브릿지와 각 포드의 인터페이스를 연결한다. 같은 노드의 포드간 통신은 브릿지를 통해 이루어진다. 2. 다른 노드 간의 포드 통신 각 노드의 라우팅 규칙에 게이트웨이 경로를 추가한다. 또는 노드를 연결하는 라우터를 두어서 라우팅 규칙을 추가한다. 게이트 웨이 경로를 추가함으로써 다른..
-
네트워크 네임스페이스 개념정리네트워크 2021. 7. 6. 00:02
두 호스트가 통신을 하기 위해서는 스위치에 각 호스트의 인터페이스가 연결되어 있어야 한다. 다음 커맨드를 통해 인터페이스를 확인할 수 있다. ip link A와 B는 스위치로 연결되어 있기 때문에 통신이 가능하다. 만약 다음과 같이 스위치로 연결된 두 시스템을 연결하고 싶다면 router를 이용한다. 다음 상황을 통해 라우팅과 게이트웨이에 대해서 알아보자. B에서 C로 패킷을 보내고 싶다. 하지만 B는 A의 인터페이스 IP와 라우터의 인터페이스 IP만 알고 있으므로 C로 패킷을 보낼 수 없다. 이 때 B의 라우팅 테이블에 C로 가기위해서는 라우터의 인터페이스를 거치면 된다는 것을 알려준다. B는 C의 경로를 알게 되었으므로 C로 패킷을 보낼 수 있게 된다. ..