반응형

Contents 175

[Linux] Capabilities

(Traditional) superuser and set-UID-root programs 전통적인 유닉스 권한 모델은 사용자를 두 그룹으로 나눈다 일반 유저(Normal users): UID, GID 기반으로 권한 검사 대상 슈퍼 유저(Super user(UID = 0)): 일련의 검사를 우회(bypass) 권한이 없는 사용자에게 권한을 부여하는 전통적인 메커니즘은 `set-UID-root` 프로그램이다. # chown root prog # chmod u+s prog `set-UID-root`프로그램이 실행되면, 프로세스는 파일 소유자의 UID로 가정한다. 즉, 프로세스는 슈퍼 유저의 권한을 얻는다. 이러한 방식은 효과적일 수 있지만 위험한 방법이기도 하다. The traditional privilege..

운영체제/LINUX 2019.12.17

[Linux] 사용자(User) 네임스페이스

사용자 네임스페이스를 사용하면 유저 및 그룹 ID의 네임스페이스 별 맵핑이 가능하다. 이는 사용자 네임스페이스 내부의 프로세스 사용자 및 그룹 ID가 네임스페이스 외부의 ID와 다를 수 있음을 의미한다. 특히, 프로세스는 네임스페이스 외부에서 0이 아닌 사용자 ID를 가질 수 있는 동시에 네임스페이스 내부에 0인 사용자 ID를 가질 수 있다. 즉, 프로세스는 유저 네임스페이스 외부의 작업에 대해 권한이 없지만 네임스페이스 내부에서는 루트 권한이 있다. Creating User namespaces `clone()` 또는 `unshare()`를 호출 시 `CLONE_NEWUSER`플래그를 지정하여 사용자 네임스페이스가 만들어진다. 리눅스 3.8부터(다른 유형의 네임스페이스를 만드는 데 사용되는 플래그와는 달..

운영체제/LINUX 2019.12.16

[Linux] PID 네임스페이스

PID 네임스페이스는 프로세스 ID공간을 격리한다. 즉, 다른 PID 네임스페이스의 프로세스들은 같은 PID를 가질 수도 있음을 의미한다. PID 네임스페이스들은 컨테이너로 하여금 프로세스 집합의 종료/재시작 같은 기능을 제공한다. 또한 컨테이너를 새로운 호스트로 마이그레이션 하는 등의 기능을 제공한다.(마이그레이션 할 때 컨테이너 안의 프로세스들은 자신의 PID를 유지한다.) 새로운 PID 네임스페이스는 1부터 시작한다. standalone 시스템과 동일하게 각 네임스페이스의 시작 프로세스는 PID 1번을 가지게 된다. The namespace init process 새로운 네임스페이스에서 생성된 첫번째 프로세스는 PID가 1이고, 새 네임스페이스의 `init`프로세스이다(`CLONE_NEWPI`플래그..

운영체제/LINUX 2019.12.14

[Linux] IPC 네임스페이스

IPC 네임스페이스 IPC 네임스페이스는 프로세스가 자신의 System V IPC 객체와 POSIX 메시지 큐 자원을 가질 수 있게 한다. 그리고 `clone()` 또는 `unshare()` 시스템 호출을 사용할 때 `CLONE_NEWIPC`플래그를 설정하여 생성한다. System V IPC 객체: 공유 메모리(shared memory), 세마포어(semaphore) 공유 메모리: 여러 프로세스가 동일한 메모리 영역에 연결하여 메모리 변경 사항에 액세스할 수 있다. 세마포어: 프로세스를 동기화하며 공유 메모리 영역에 대한 동시 액세스를 제어하는데 사용된다. POSIX 메시지 큐: System V 메시지 큐의 새로운 버전. 함수의 이름과 종류는 다르지만 하는 일은 비슷하고 비교적 최근의 표준인 만큼 Sys..

운영체제/LINUX 2019.12.13

[Linux] UTS 네임스페이스

UTS 네임스페이스 다른 UTS 네임스페이스가 서로 다른 호스트 이름이나 도메인 이름(또는 `uname()`시스템 콜로 리턴된 정보(nodename, domainname))를 갖게 하는 기능을 제공 `clone()` 또는 `unshare()` 시스템 콜을 사용할 때 `CLONE_NEWUTS` 플래그를 설정하여 생성 nodename, domainname은 `sethostname()`, `setdomainname()`시스템 콜을 사용하여 설정 컨테이너 관점에서의 UTS 네임스페이스 기능은 각 컨테이너가 자체 호스트 이름과 `NIS` 도메인 이름을 가질 수 있도록 한다. `NIS(= Network Information System)`: 컴퓨터 네트워크 위의 컴퓨터들 사이에 있는 사용자와 호스트 이름과 같은 시..

운영체제/LINUX 2019.12.13

[개발관련도서] 나는 LINE 개발자입니다

이 책을 읽고 '라인 채용'을 검색하지 않은 사람이 누가 있으랴! 2주일동안 읽으려고 빌린 책을 하루만에 다 읽어버렸다. 책을 덮자마자 바로 '라인 채용'을 검색해서 가고싶은 분야의 자격요건 및 우대사항을 쭉 훑어보았다. 그 중 내 눈에 들어온 채용 공고는 'Cloud Native Platform 개발 및 운영'이다. 석사 1,2학기를 보내며 컨테이너 기술에 대해 공부했고, 7~8월엔 5명이 팀을 꾸려 맨텍이 주관한 '2019 오픈 인프라개발 경진대회'에 참가했다. Istio, Prometheus 및 Kiali를 이용한 모니터링 서비스를 구축했고 금상을 거머쥐었다. 학부연구생일때도 Django 기반의 오픈스택(Openstack) Horizon을 커스터마이징하는 프로젝트를 진행했어서 더욱 클라우드에 관심을..

[Linux] 마운트 네임스페이스 (Mount namespace) 2

마운트 네임스페이스 시스템이 시작(booted)되면, 하나의 마운트 네임스페이스가 있고 이것은 "initial namespace"라고 불린다. 새로운 마운트 네임스페이스들은 clone() 또는 unshare() 시스템 콜 그리고 CLONE_NEWNS 플래그를 사용하여 만들어진다. 새로운 마운트 네임스페이스가 생성되면, 그 새로운 네임스페이스는 clone() 또는 unshare()을 호출한 놈의 네임스페이스로 부터 (호출한 놈의)마운트 포인트 리스트의 복사본을 받는다. 마운트 포인트 리스트 위치 - /proc/mounts clone() 또는 unshare() 시스템 콜에 따르면, 마운트 포인트들은 각각의 네임스페이스에서 독립적으로 추가되거나 제거될 수 있다(mount(), umount()를 통해서). 마운..

운영체제/LINUX 2019.10.24

[Linux] 마운트 네임스페이스(Mount namespace) 1

리눅스 네임스페이스 네임스페이스: 하나의 시스템에서 수행되지만, 각각 별개의 독립된 공간인 것처럼 격리된 환경을 제공하는 경량 프로세스(쓰레드) 가상화 기술 Definition The purpose of each namespace is to wrap a particular global system resource in an abstraction that makes it appear to the processes within the namespace that they have their own isolated instance of the global resource. 각 네임스페이스의 목적은 특정 전반적인(global) 시스템 자원을 추상화하여 네임스페이스 안에 있는 프로세스들이 그들 자신만의 격리된 자원..

운영체제/LINUX 2019.10.24

[Kiali] Kiali Image Update with Docker Hub

Kiali 이미지 업데이트 - Docker Hub Docker Hub Create and Push Kiali Image 우선 Docker Hub에 자신만의 Repo를 생성한다. 나는 우리 프로젝트에서 사용하는 soda2019/aladdin Repo를 사용할 것이다. make docker-build를 통해 생성한 Docker Image를 아래 과정을 통해 Docker Hub에 업로드한다. ## 기존 kiali/kiali:dev를 rename한다. docker tag kiali/kiali:dev soda2019/aladdin:dev ## Docker Login docker login ## Push image docker soda2019/aladdin Modify /kiali/operator/Makefile ..

오픈 소스/Kiali 2019.07.01

[Kiali] Kiali User Interface 수정

Kiali UI 수정 기존에 설치한 것들 Kubernetes version: v.1.15.0 Istio version: 1.2.0 helm으로 설치하였고 설치할 때 다음의 옵션을 주어 설치하였다. ## istio-1.2.0/install/kubernetes/helm/istio/values.yaml grafana: enabled: true prometheus: enabled: true tracing: enabled: true kiali: enabled: false Go lang version: 1.12.6 구성 Master-node: 1대 Slave-node: 2대 istio 문서의 Bookinfo 예제를 올려놓음. 수정한 내용 kiali와 kiali-ui는 따로 분리되어 있어서 이것을 로컬 환경에서 수정..

오픈 소스/Kiali 2019.06.28
반응형