본문 바로가기
반응형

전체 글386

Improving Kubernetes and container security with user namespaces 원문 주소 : https://kinvolk.io/blog/2020/12/improving-kubernetes-and-container-security-with-user-namespaces/ Kinvolk: Improving Kubernetes and container security with user namespaces Improving Kubernetes and container security with user namespaces kinvolk.io What are user namespaces? Linux 상의 컨테이너는 네임스페이스, cgroup 그리고 다른 linux 기본 요소를 기반으로 한다. Linux API는 다양한 종류의 네임스페이스들을 제공하며 해당 네임스페이스들은 각각 os 시스템의 특.. 2021. 12. 20.
The Curious Case of Pid Namespaces And How Containers Can Share Them 원문 url https://hackernoon.com/the-curious-case-of-pid-namespaces-1ce86b6bc900 The Curious Case of Pid Namespaces | Hacker Noon hackernoon.com 네임스페이스는 리눅스 컨테이너의 기본적인 컴포넌트 중의 하나이며, 공유 자원의 격리를 제공한다 : 각각의 애플리케이션에 대해 시스템 상에서 그들만의 고유한 공간을 제공한다. 네임스페이스 덕분에 각각의 docker 컨테이너는 각각의 파일시스템과 네트워크를 가지고 있는 것처럼 보인다. 리눅스는 많은 release를 거쳐 점진적으로 네임스페이스 지원을 추가했다. 이러한 점진적인 변화로 인해, 네임스페이스의 각 타입은 고유의 해결과제를 가지고 있다. 특히 Pid.. 2021. 12. 17.
puppeteer 설치 하기 phantomJS를 이용해서 url rendering 프로그램을 돌리고 있던 나에게 어느 순간 PhantomJs 관리자가 사실 상 개발을 중단했다는 소문을 듣게 되었다. 구글 크롬팀에서 크롬에 headless chrome을 내장하기 시작했고, 그에 맞춰 puppeteerjs를 release 한 게 phantomjs 중단 원인이라 할 수 있겠다. 그래서 이번 기회에 나도 puppeteer로 갈아타기로 결심했다. 우선 puppeteer를 설치해 보자. puppeteer를 설치하기 위해서는 nodejs를 먼저 설치해야 한다. 아래의 링크에서 nodejs를 다운 받자. https://nodejs.org/ko/download/ 다운로드 | Node.js Node.js® is a JavaScript runtime .. 2021. 12. 2.
A Deep Dive into Iptables and Netfilter Architecture Iptables과 Netfilter에 대한 이해를 위해 아래의 url을 번역했다. https://www.digitalocean.com/community/tutorials/a-deep-dive-into-iptables-and-netfilter-architecture A Deep Dive into Iptables and Netfilter Architecture | DigitalOcean Firewalls are an important tool that can be configured to protect your servers and infrastructure. In the Linux ecosystem, iptables is a widely used firewall tool that interfaces wit.. 2021. 12. 1.
Trust anchor for certification path not found 해결하기 Android 앱에서 https 연결을 시도하려고 할 때 Trust anchor for certification path not found 라는 에러가 발생하면서 연결이 실패했다. 서비스 중인 앱이라 부랴부랴 원인을 찾기 시작함. 원인은 해당 앱에 신뢰성 있는 인증서를 찾지 못했기 때문인 것 같다. 우선 첫번째로 TrustManager를 사용해서 인증서 회피를 시도했다. TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new java.security.cert.X509Certificate[].. 2021. 11. 25.
multi process 구현하기 python을 이용해서 multi process를 구현해 보기로 한다. 코드는 엄청 간단하다. from multiprocessing import Process def start_node(index): print(index) if __name__ == "__main__": num = 1 proc = Process(target=start_node, args=(num,)) proc.start() proc.join() 위의 예제 코드를 활용해서 기존 코드를 multi process로 전환하였지만 아래와 같은 문제가 발생했다. 해당 프로세스를 종료시켰으나, fork시킨 process가 종료되지 않고 좀비 프로세스로 남아있는 문제였다. 이를 방지하기 위해 Process 생성 시 daemon = True argume.. 2021. 11. 19.
Elastic search 모든 데이터 가져오기 Elastic search의 경우 각각의 shard에서 데이터들을 저장하고 있고, 검색 시 각 shard 들로부터 데이터를 모은 후 정렬해서 결과를 뿌려주는 방식으로 검색이 제공된다. 이렇게 모은 후 정렬해서 결과를 뿌려주기 때문에 더 큰 사이즈 혹은 더 많은 사이즈의 요청 시 해당 결과를 못 주는 경우가 있다. 다시 간단히 설명하자면, 내가 만약 10000개의 데이터를 Elastic search에 요청하게 되면, 각 shard에서는 10000개씩 데이터를 가져오게 되고, 10000개씩 모든 데이터(예를 들어 shard가 5개라면 50000개)를 정렬 후에 10000를 추린 후 결과를 주게된다. 결과적으로 from, size 등을 통해 es에서 모든 데이터를 가져오려고 시도하게 되면, 10000건 이전까.. 2021. 11. 14.
키바나에 이미지 표시하기. (링크 달기) es에 있는 데이터를 키바나를 통해 많이 확인하곤 한다. 하지만 가끔씩 키바나로 보는 데이터가 불편할 때가 있다. 첫 번째 예로 이미지 데이터의 경우 키바나에서 렌더링 결과를 뿌려주면 데이터 확인이 더 쉬울 것 같은데 해당 기능을 찾지 못해서 매번 이미지 주소 클릭 후에 이미지를 확인하곤 했었다. 두 번째 불편함은 url 주소가 있는 경우 링크를 클릭하면 해당 페이지로 렌더하면 편한데 그게 안되서 복사한 후 브라우저에 붙여서 확인하는 점이 불편했다. 이 포스팅에서는 위 두 가지 불편함을 해소할 수 있는 키바나 기능에 대해 알아보고자 한다. 우선 kibana의 왼쪽 메뉴에 있는 management를 클릭한다. management를 클릭 후 오른쪽 화면에서 변경하고자 하는 index name을 선택 한다. .. 2021. 10. 18.
gunicorn 메모리 leak 해결하기. 파이썬에서 가장 간편한 웹 서버로 flask를 주로 이용한다. flask를 이용하다가 조금 규모가 커지거나 로직이 필요한 작업이 생기면, 이때부터 async를 고려하게 되는데, 나 같은 경우에는 gnicorn을 사용함으로써 async 문제를 풀곤 했다. 그런데 gunicorn 사용 후 어느 순간부터 메모리가 차츰 차츰 올라가는 것을 발견했다. '어.. 이거 왜 안떨어지지??' 메모리가 아주 느리지만 조금씩 올라가고 있는 것을 확인해 볼수가 있다. 엄청난 인고의 고통 속에 원인이 gunicorn이란 것을 밝혀냈다. 또한 구글에서 "gunicorn memory leak" 으로 검색해보면 나같이 메모리 릭으로 고생하고 있는 수많은 블로그들을 찾아볼 수가 있다. 원인은 gunicorn에서 생성한 worker 노.. 2021. 10. 6.
반응형