상황 subprocess.Popen과 subprocess.PIPE를 사용하던 중, 특정 프로세스가 생성된 후 정상적으로 동작하지 않고 좀비 프로세스가 되어 버리는 상황이 발생하였다. 예시 커맨드 및 코드 ls -alh | python test.py | python test2.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import subprocess import traceback import sys # ls -alh | python test.py | python test2.py cmd1 = ['ls', '-alh'] cmd2 = ['python', 'test.py'] cmd3 = ['python', 'test2.py'] try: p..
사전 작업 mkdir -p .gitlab/config mkdir -p .gitlab/logs mkdir -p .gitlab/data cs docker-compose.yaml (gitlab 공식 이미지 사용: https://docs.gitlab.com/ee/install/docker.html) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 version: '3' services: gitlab: image: "gitlab/gitlab-ce:15.9.1-ce.0" container_name: gitlab restart: always hostname: "127.0.0.1" environment: GITLAB_OMNIBUS_CONFIG: | external_url 'h..
Uploader 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 version: '3' services: test-uploader: build: . container_name: test-uploader command: sh -c 'sleep infinity' working_dir: /mydev volumes: - .:/mydev/test-uploader networks: - es_net elastic: image: docker.elastic.co/elasticsearch/elasticsearch:7.13.2 con..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
서론 리액트는 유저 인터페이스 구현에 유용한 프레임워크 라이브러리이다. JavaScript 라이브러리로 많이 사용되며, 최근에는 MS에서 만든 TypeScript도 지원한다고 하며, 웹과 어플리케이션 모두 개발할 수 있다. 왜 많이 사용할까? JavaScript 프레임워크 라이브러리로는 ReactJS 이외에도 AngularJS나 EmberJS 등 여러가지가 있다. 이러한 프레임워크 라이브러리들은 내부에서 동작하면서 유저 인터페이스 구현을 편하게 할 수 있도록 해준다는 점도 있지만, 유저에게 인터페이스를 제공하기 위해 브라우저가 렌더링하는 과정을 줄여 유연하게 만들어 준다는 점도 있다. 어플리케이션의 규모가 커질수록 발생하는 여러 문제들의 부담감을 줄여주기 때문에 많이 사용하게 된다. 그럼 어떻게 이게 가..
보호되어 있는 글입니다.
개요 Kuberenetes의 RBAC 인증은 API Server에서 제공하는 인가 방식 중 하나이다. 보안 접근 통제 모델의 RBAC를 클러스터에 적용할 수 있도록 만들어진 듯 하다. RBAC(Role-based Access Control)에서 나오는 Role은 실제 기업 내의 역할을 말한다. 실제 인프라에서 웹 관리자와 DB 관리자라는 역할이 나눠놓고 운영하는데 이러한 역할을 Kubernetes 클러스터에 적용하면 기업의 상황에 맞게 접근 통제 설정이 가능해진다. 그래서 중요한 설정은 어떻게 하는 것인가 검색해보면 Role과 RoleBinding와 ClusterRole과 ClusterRoleBinding 이라는 놈들이 줄줄이 나오면서 뭔가 설정과 설명을 줄줄이 하고 있다. 글이 길어지면 읽기 싫어지니깐..
개요 kubespray로 kubernetes 클러스터를 구축하고 ingress-nginx에 웹 페이지를 올리려고 하는 과정에서 생각보다 시행착오가 많은거 같다. 단순히 ingress, service, deployment를 대충 올리고 웹 페이지 올리면 되겠다고 생각했는데 Deployment를 생성하는 과정에서 번거로워지는 작업들이 많아져서 추가로 정리하고자 한다. 현재 Deployment 구축을 테스트하는데 사용한 클러스터는 VMware에서 3개의 VM을 만들어서 생성하였고, Master 노드 1개(master1)와 Worker 노드 2개(worker1, worker2)로 구성된다. Deployment 구축 우선 이전 글에서 ingress-nginx를 구축하는데 사용했던 Deployment이다. 일단은 ..
소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 import socket, select class SimpleServer(object): def __init__(self, host='0,0,0,0', port): self.host = host self.port = port self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.sock.bind((self.host, self..