vscode는 go to definition이라는 f12 혹은 ctrl을 누른 채로 정의로 이동할 수 있는 기능이 있습니다. 그런데 가끔 이 기능이 동작하지 않을 때가 있는데 그럴 때에는 프로젝트 루트에 .vscode라는 폴더를 생성한 후, setting.json이라는 파일을 다음과 같이 만들어줍니다. { "python.pythonPath" : "/Users/user/AppData/Local/Programs/Python/Python37-32", "python.linting.flake8Enabled" : true, "python.linting.pylintEnabled" : false, "python.linting.enabled" : true, "python.formatting.provider" : "bla..
Terraform은 IaC(Infra as a Code)도구입니다. EKS를 학습하던 중 계속 VPC부터 새로 만드는 것이 번거로워, Terraform을 이용해서 EKS 환경을 구성, 배포해보겠습니다. Template 구성하기 먼저 EKS와 Control Host가 올라갈 VPC를 구성합니다. resource "aws_vpc" "practice-vpc" { cidr_block = "10.0.0.0/16" enable_dns_hostnames = true enable_dns_support = true instance_tenancy = "default" tags = { Name = "practice-vpc" } } resource "aws_subnet" "public-a" { vpc_id = aws_vpc...
TTY의 유래 TTY(TeleTYpewriter)는 초기 컴퓨터에 사용한 입력 기기입니다. 기존 컴퓨터는 천공 카드를 이용해 입력을 받았는데요. 그러던 중 이러한 전신타자기(TTY)가 등장하고, 이 TTY로 컴퓨터에 접근하기 시작했습니다. 그 용어는 지금까지 사용되어 지금까지도 Linux에서 터미널을 지정하는 용어입니다. TTY TTY는 콘솔 또는 터미널 디바이스를 의미합니다. 보통 콘솔은 컴퓨터에 직접적으로 연결된 입출력장치로 CLI를 통해 명령어를 전달할 수 있는 인터페이스를 말합니다. 보통 1~6번까지 존재하며, ctrl + alt 1~6으로 전환할 수 있습니다. X-Windows 환경은 컴퓨터를 부팅시키면서 직접 접속되기 때문에 콘솔이라고 생각할 수 있지만, 사실 서버-클라이언트 구조를 가지고 있..
RBAC(Role-Based Access Control) RBAC은 사용자(접근자) 혹은 그룹의 역할을 따라 시스템의 리소스에 대한 접근 권한을 부여하는 접근 제어 방법입니다. 그 이름과 같이 사용자의 Role을 기반으로 권한을 부여하는데요, RBAC을 사용하는 쿠버네티스로 예를 들어보자면, Fargate on EKS환경의 제 클러스터에서는 아래와 같은 역할(role)들이 있습니다. kubectl get role -n kube-system NAME CREATED AT eks-vpc-resource-controller-role 2023-03-11T00:29:33Z eks:addon-manager 2023-03-11T00:29:30Z eks:authenticator 2023-03-11T00:29:27Z ek..
Overview 개인 노트북의 메인 OS를 Gnome가 적용되어 있는 Manjaro Linux로 바꾸고, 기본 터미널에 vi -> vim alias설정이 되어있지 않았습니다. 평소 vi 명령어를 통해 vim에디터를 사용하였기 때문에, 설정을 바꿔보도록 하겠습니다. Alias 적용하기 manjaro linux의 터미널은 non-login shell입니다. Manjaro linux의 Gnome GUI에서 제공하는 터미널은 보통 로그인 없이 실행하는 non-login shell로 zsh를 사용합니다. Login Shell에서는 아래와 같은 파일들을 읽습니다. /etc/profile ~/.bash_profile ~/.bashrc /etc/bashrc manjaro linux의 default terminal인 z..
Overview 어느날 깃허브를 들어가보니 Contrbutors에 옛날에 만들고 쓰지 않던 계정의 프로필이 추가되어 있는 걸 발견했습니다. 원래는 그냥 넘어갔었는데.. 연말이라 그런지 오늘따라 이게 매우 거슬리더라고요. 그래서 쓸 일은 없을 것 같지만 조금의 출혈?을 감수하고 없애보았습니다. 컨트리뷰터를 없애는 과정은 다음과 같은 프로세스로 진행하였습니다. 컨트리뷰터가 했던 커밋 이전에서 브랜치 분리하기 컨트리뷰터를 제외한 커밋 과정 재현 분리한 브랜치를 메인 브랜치로 바꾸고, 기존 브랜치를 삭제 1. 회귀 커밋 이전으로 회귀한 브랜치를 생성하기 위해 repository commit history에서 가장 처음으로 했던 커밋을 가져왔습니다. git checkout e210 2. 재현 먼저 해당 커밋을 원..
AWS STS (AWS Security Token Service) STS는 임시 보안 자격 증명을 위한 서비스입니다. STS를 활용하여 현재 자신이 사용하고 있는 자격을 알아내거나, 다른 user, role에 대한 자격 증명을 받아서 사용할 수도 있습니다. 아래는 현재 적용 중인 자격 증명을 알아내는 AWS CLI 명령어입니다. $ aws sts get-caller-identity { "UserId": "AROAYUN3EWXKCUQU5HSO2:eks-role", "Account": "111111111111", "Arn": "arn:aws:sts::111111111111:assumed-role/admin/instance-id" } Demo STS에서는 Assume Role이란 기능으로 임시 자격 증명을 받..
Overlay Network 오버레이 네트워크는 물리적 네트워크 위에 존재하는 가상의 네트워크로, 다른 네트워크들을 연결하는 논리적 네트워크입니다. 도커에서는 여러 도커 데몬간의 오버레이 네트워크를 구축하여 도커 스웜과 같은 컨테이너 오케스트레이션 툴을 이용하기도 합니다. Docker Daemon 도커는 기본적으로 Server - Client 구조입니다. 서버 역할을 하는 도커 데몬에 사용자가 도커 cli로 데몬에 요청을 보냅니다. 그러면 도커 호스트에서 해당 동작을 수행하게 되는 것입니다. 그래서 docker 명령어에 -H ${host address}와 같은 옵션으로 호스트를 지정해주면 원격으로 도커 명령어를 수행할 수 있게 됩니다. 데모 처음부터 진행하기에는 꽤나 길어질 내용이라 구성된 인프라로 테스..
Host Networking host networking을 사용할 경우 컨테이너가 도커 호스트의 네트워크를 사용하게 됩니다. 격리되지 않은 네트워크(도커 호스트의 네트워킹 네임스페이스를 사용함)기 때문에 컨테이너에 따로 ip 주소가 붙지는 않습니다. 때문에 NAT(network address translation)을 거치지 않고 사용할 수 있으며, 포트마다 userland-proxy가 생성되지 않습니다. $ docker run --network host --rm -d --name nginx -p 80:80 nginx tail -f /dev/null WARNING: Published ports are discarded when using host network mode d806a666142f93ede292..
Default Bridge Network Network bridge는 link layer로 대표적인 link layer로는 NIC(Network Interface Card)가 있습니다. 실제로 전 글에서 ifconfig로 Docker default network를 조회하였을 때 NIC와 같이 조회되는 모습을 확인할 수 있습니다. 먼저 아래와 같이 alpine 컨테이너 두 개를 만들어줍니다. $ docker run -d --name alpine1 alpine:latest tail -f /dev/null 3d8cd78a27f8aa1703ed78e8592bd074e2aea487141c8b1eec878d92c3217a3a $ docker run -d --name alpine2 alpine:latest tail ..