분류 전체보기 12

[Colima] MacOS 환경에서 Docker Desktop 없이 컨테이너 환경 구성하기

Header기존의 Docker Desktop의 구독정책으로, 오픈소스 기반의(무료!) docker contianer 환경이 필요 해 졌습니다. lima에 기반한 colima 컨테이너 런타임을 세팅하며 발생한 이슈와 가이드를 아래와 같이 정리하였습니다.테스트환경Macbook Pro 16" m1 pro (2021)MacOS Ventura 13.6.3(22G436)PrerequisiteHomebrew가 설치 되어있지 않다면, 홈페이지를 방문하여 설치하도록 합니다. 아래와 같은 설치 스크립트를 사용하시면 됩니다./bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Colima / Docker In..

Cloud/Colima 2024.05.05

[MetalLB] MetalLB를 통해 On-Prem k8s 클러스터에 외부 IP 할당하기

배경Kubernetes Service type중 LoadBalancer Type은 External IP를 할당받아 외부 트래픽을 내부 서비스로 Routing 하는 역할을 수행합니다. 하지만 CRD는 명세 되어있음에도 Bare-metal 환경에서 LoadBalancing이 구현 되어있지 않습니다. 따라서 CSP(AWS, Azure 등)를 사용하지 않으면 External IP를 할당받을 수 없습니다.Kubeadm등으로 구성한 On-prem k8s cluster에는 별도의 Load Balancer를 도입해야 합니다. 이 문서에서는 그러한 환경에 Metal LB 를 구성하는 과정에 대해 다룹니다.요구사항Kubernetes 클러스터LoadBalancing 기능이 없는 1.13.0 버전 이상의 클러스터k8s net..

Cloud/MetalLB 2024.05.05

2023회고 - 취준

지난 포스트에 이어서 취업준비 했던 내용을 회고 해 보려고 한다. 지난 포스트의 월별 차트를 빌려오면 아래와 같다. 월 일 1 KICS학회, 산학협력 프로젝트, 연구실 외주 2 산학협력 프로젝트, 연구실 외주 3 산학협력 프로젝트 전시회, 연구실 외주, 개강 4 알고리즘, 웹 스터디, 학기 5 알고리즘, 웹 스터디, 학기 6 알고리즘, 웹 스터디, 종강 7 스타트업 입사, 취준 8 스타트업, 취준 9 스타트업, 취준 10 스타트업, 취준 11 스타트업, 취준, 졸업작품 전시회 12 스타트업, 취준 취준 2~3학년 까지는 개발자 취업에 큰 고민이 없었던 것 같다. 하지만 막상 취업할 때가 되니 취업시장이 얼어버렸다(...) 물론 시장 상황과 상관없이 갈 사람은 다 갈거라는 호기로운 생각으로 취준을 시작 했..

잡담 2024.01.06

2023 회고 - 프로젝트/외주

2023년엔 그 어떤 해 보다 많은 사람을 만나고 여러 경험을 할 수 있었다. 월별로 정리 해 보면 간단히 아래와 같다. 월 일 1 KICS학회, 산학협력 프로젝트, 연구실 외주 2 산학협력 프로젝트, 연구실 외주 3 산학협력 프로젝트 전시회, 연구실 외주, 개강 4 알고리즘, 웹 스터디, 학기 5 알고리즘, 웹 스터디, 학기 6 알고리즘, 웹 스터디, 종강 7 스타트업 입사, 취준 8 스타트업, 취준 9 스타트업, 취준 10 스타트업, 취준 11 스타트업, 취준, 졸업작품 전시회 12 스타트업, 취준 산학협력/외주 프로젝트, 스터디, 스타트업, 취준 이렇게 네가지에 시간과 열정을 쏟았던 한 해라고 정리할 수 있겠다. 감사하게도 매번 좋은 사람들과 함께 했기에 그 결과도 만족스러웠다. 물론 그 과정이 마..

잡담 2024.01.06

[Kubernetes] 온프레미스 환경에 싱글노드 쿠버네티스 구축: 02 - Ingress와 cert-manager

들어가며 배포하려는 서비스에 HTTPS연결을 통한 SSL 인증을 추가하려면, 사설 또는 기관 인증서를 사용해야 합니다. certbot-nginx라는 패키지를 이용해서 자동으로 이에 대한 처리를 할 수 있지만, 쿠버네티스 환경에서는 cert, pem 파일을 각 Pod마다 PV 등을 통해 공유해줘야 해서 다소 번거롭습니다. certbot-nginx Nginx plugin for Certbot pypi.org 그리하여, API gateway나 Ingress를 통해 이에대한 처리를 하는 것이 바람직하다 생각하여 여러 방법을 찾던 중, cert-manager라는 클라우드 네이티브 앱을 발견했습니다. 이번 포스팅에서는 이를 적용하는 과정에 대해 다뤄보도록 하겠습니다. cert-manager: 개요 여러 기능을 제공..

Cloud/Kubernetes 2023.07.16

[Kubernetes] 온프레미스 환경에 싱글노드 쿠버네티스 구축: 01 - 클러스터 준비

들어가며 생에 첫 회사의 DX팀에 입사한 직후, 개발 중이던 프로젝트를 자체 Kubernetes환경에 배포해 달라는 요청을 받았습니다. 그 과정에서 겪었던 시행착오를 정리하고, 이후 클러스터 구축 시에 참고할 겸 정리해 봅니다. 이번 포스팅에서는 클러스터를 구축하고, CNI 및 Ingress Controller를 설치하는 과정까지 다룹니다. 배포환경 처음엔 어딘가에서 돌고있는 On-premise 머신이라고 생각했는데, 실제로는 Azure Virtual Machine에 생성된 인스턴스였습니다. 일반적인 PC 서버와 큰 차이가 없을 것이라 생각됩니다. 간단하게 정리하면 아래와 같겠습니다. Ubuntu 20.04.6 LTS Azure x86_64기반 가상 인스턴스 Kubernetes 설치: 준비 [01] ip..

Cloud/Kubernetes 2023.07.15

알고리즘 공부에 대한 생각

아르바이트를 하다가 문득 든 생각이 있다. “나 알고리즘 공부 왜 하고있는거지?” 배경 처음 시작은 대학 동기가 백준을 추천해준것 부터였다. 그땐 C언어를 처음 배울때라 문법을 익히는데 도움이 되겠지 하고 풀었고, C++를 접할쯤엔 STL을 활용해보는데 의미를 두고 풀었던것 같다. 그냥 간단한 문제들만 풀어본게 전부라서 복잡한 문제를 풀어본적은 없었다. 군대에서 상병을 달았을 때 쯤 심심해서 본격적으로 시작해본 PS는 생각보다 더 어렵고 심오한 문제들이 득실득실했다. 그때쯤 solved.ac이라는 서비스도 생겨서 레이팅을 올리는 재미로 변태알고리즘 몇개를 공부해서 플레티넘까지 티어를 올린것에 나름 만족하고 있던 때이었다. 지금은 플레티넘4 1800점대의 점수를 갖고 있는데(지금 확인해보니 1844점이다)..

[일상] 오늘의집 3D로 가구 재배치를 해봤다

주말을 맞이해 풀 개인정비를 즐기던 중, 오늘의집 사이트에 오늘의집3D라는 서비스가 생겨서 한번 만들어봤다. 원래는 책상이 창가에 있고 침대는 파티션과 나란하게 배치되어있는 구조였는데, 구조를 변경해보니 의자 공간이 좀더 넓어져서 좋긴하다. 하지만 어딘가 병원 진료실과 같은 느낌이 나는것은 왜일까... 방안의 한 구석을 차지하고있는 저 기둥 때문에 가구배치가 참 어렵다. 다른 구조로도 한번 시도 해 봐야겠다.

카테고리 없음 2021.05.29

[REACT.js] 구름IDE 환경에서 CRA없이 REACT+webpack 개발환경 구축하기

들어가기에 앞서 필자는 육군 모 통신부대에서 군 복무 중인지라 리액트를 공부하려면 구름 IDE를 쓸 수밖에 없는데, 구름에서 제공하는 리액트 템플릿으로 webpack을 적용하려면 eject를 통해 webpack을 설정하거나, customize-cra라는 걸 사용해야 하는 것 같았다. 하지만 알 수 없는 에러 메시지만 뱉어낼 뿐, 해결이 불가능하여 전전긍긍하던 중 CRA 없이 라이브 개발이 가능한 방법을 찾아내어 기록해보려 한다. 참고한 블로그는 여기 컨테이너 생성 리액트 컨테이너를 생성하면 기본적으로 CRA를 통해 리액트 앱이 생성된다. 이 앱을 그대로 쓰려는건 아니고, 구름에서 제공하는 실행 URL을 써먹기 위해서 일단은 위와 같이 컨테이너를 생성하자. 의존성 설치 의존성 설치에 앞서 구름이 자동으로 ..

Web/REACT 2021.05.08

[UNIX] I/O multiplexing: select()함수를 이용한 방법

입출력 함수를 통한 프로그램을 작성해본 경험이 있다면 아래와 같은 형태의 코드를 본 적이 있을 것입니다. 파일/콘솔 등에서 사용자의 입력을 받고 그에 대한 적절한 처리를 통해 출력을 수행하는 프로그램의 일부입니다. (예제에서는 입력받은 값을 그대로 출력합니다.) while((str_len = read(fd_in, buf, BUF_SIZE) > 0) { write(fd_out, buf, str_len); } 위와 같은 구조의 I/O를 blocking I/O라고 합니다. 입력이 수행되는 동안은 출력을 할 수 없고, 출력이 수행되는 동안에는 입력을 수행할 수 없습니다. 따라서 많은 수의 파일/소켓 등에 I/O를 동시에 수행해야 하는 경우에는 적절한 구조가 아닙니다. 몇 가지 해결방안 입력과 출력이 동시에 수행..

Fundamentals/UNIX 2020.03.18