제작자들의 공정한 홍보를 위한 커뮤니티, 'FairShare'를 만들었습니다!
·
project/페어쉐어
1. 프로젝트 소개안녕하세요! 저는 누구나 자신이 만든 결과물을 공유하고, 인지도와 상관없이 공평한 홍보 기회를 얻을 수 있는 공간인 페어쉐어(FairShare)를 개발하고 있습니다.2. 주요 기능공정 노출 알고리즘: 단순히 좋아요 순이 아니라, 노출 횟수(impressionCount)가 적은 프로젝트를 우선적으로 메인 피드에 노출시켜 모든 제작자에게 기회를 제공합니다.간편한 프로젝트 등록: Uploadthing을 통해 썸네일을 직접 업로드하고 자신의 프로젝트를 빠르게 공유할 수 있습니다.제작자 대시보드: 내 프로젝트가 몇 번 노출되었고, 몇 명의 사용자가 방문했는지 투명하게 확인할 수 있습니다.커뮤니티 인터랙션: 소셜 로그인을 통해 다른 제작자의 작품에 응원(좋아요)을 남기거나 SNS로 공유할 수 있습..
[본투비엔지니어] 나에게 베어본만 주어진다면?? (11)
·
project/본투비엔지니어
지난 편까지 프로토 타입 앱을 배포하고 외부 접속에 성공했습니다. 이제 매번 터미널에서 'kubectl apply -f ...' 를 치는 원시적인 배포 방식과 작별할 시간입니다. 오늘은 쿠버네티스 배포 GitOps를 ArgoCD로 구현하겠습니다. Foundry 프로젝트를 진행하면서 코드를 수정할 때마다 이런 과정을 반복했습니다.코드 수정 & 커밋도커 이미지 빌드 & 푸시foundry.yaml 의 이미지 태그 수정kubectl apply -f ... 실행매번 이 과정이 반복되기도 하고, 태그 수정을 까먹기도 합니다. 그래서 Git 에 있는 내용이 곧 서버의 상태가 되도록 하는 GitOps 를 구현하겠습니다. 1. ArgoCD 설치kubectl create namespace cicd-systemkubect..
[본투비엔지니어] 나에게 베어본만 주어진다면?? (10)
·
project/본투비엔지니어
이번에는 HTTPS 를 적용해 보겠습니다. 기존에 도메인을 Cloudflare 에서 관리하고 있어서 같이 활용해서 적용하겠습니다. 1. Cloudflare 토큰 Cloudflare 대시보드 → My Profile → API TokensCreate Token → Edit zone DNS 템플릿 선택Zone Resources → Include - Specific zone - heejunp.com 선택 이렇게 토큰이 준비 됐습니다.2. Cert-Manager 설치쿠버네티스에서 HTTPS를 적용하는 방법은 크게 세 가지가 있습니다.수동 관리 : openssl로 직접 인증서를 만들고, 쿠버네티스 Secret에 파일로 업로드하고, 3개월마다 알람 맞춰놓고 갱신합니다. 클라우드 관리형 인증서 : AWS ACM이나 ..
[본투비엔지니어] 나에게 베어본만 주어진다면?? (9)
·
project/본투비엔지니어
지난 글에서 많은 버그들이 있었지만 네트워크 연결에 성공 했습니다. 그리고 이번에는 만들고있는 서비스를 배포해 보겠습니다. 1. FoundryFoundry는 "내 코드를 올리면 알아서 배포해 주는 플랫폼"을 목표로 하는 개인 프로젝트 입니다. Vercel이나 Heroku 같은 PaaS(Platform as a Service)를 아주 작게 축소해서 내 클러스터 위에서 돌리는 것이 목표입니다.Frontend: React + Vite (사용자 대시보드)Backend: Go (배포 로직 및 컨테이너 관리)Infrastructure: Kubernetes (On-premise Home Lab)Docker Hub 에 이미지는 미리 빌드해서 푸시해 놨습니다. 2. 배포 명세서 작성Ingress 라우팅 전략우리는 도메인..
[본투비엔지니어] 나에게 베어본만 주어진다면?? (8)
·
project/본투비엔지니어
지난 시간, 앤서블(Ansible)의 힘을 빌려 5대의 서버를 하나의 쿠버네티스 클러스터로 묶는 데 성공했습니다. 외부 트래픽을 통신하기 위해서는 'MetalLB' 와 'Ingress Nginx'가 필요합니다. MetalLB 란?외부 접속 IP(LoadBalancer IP)를 할당받을 수 있게 해주는 필수 도구입니다.MetalLB는 크게 두 가지 방식으로 작동하지만, 홈랩에서는 Layer 2 (ARP/NDP) 모드를 주로 사용합니다. 다른 하나는 BGP 모드입니다. 쓰려면, BGP 프로토콜을 지원하는 고가의 L3 스위치나 라우터가 필요합니다. IP Pool 설정: 사용자님이 MetalLB에게 192.168.219.200 ~ 210 대역을 쓸 수 있다고 알려줍니다.IP 할당 (Controller): 사용..
[본투비엔지니어] 나에게 베어본만 주어진다면?? (7)
·
project/본투비엔지니어
지난 시간까지 Terraform(BPG Provider) 을 이용해 단 1분 만에 5대의 Rocky Linux 서버(Master 1대, Worker 4대)를 찍어내는 데 성공했습니다. SSH 키까지 자동으로 심겨 있어 비밀번호 없이 접속되는 쾌적한 환경입니다. 쿠버네티스를 설치하려면 Swap을 끄고, 방화벽을 열고, 컨테이너 런타임을 설치하는 등 복잡한 OS 설정이 필요합니다. 서버가 1대라면 직접 들어가서 하겠지만, 우리는 5대입니다. 그래서 등장하는 도구가 바로 앤서블(Ansible)입니다. Ansible 이란?인프라를 코드로 관리(IaC)하여, 여러 대의 서버 설정을 자동화하는 도구입니다. 앤서블의 핵심 원리: Agentless그저 SSH(Secure Shell)만 뚫려 있으면 됩니다.내 맥북(Co..
[본투비엔지니어] 나에게 베어본만 주어진다면?? (6)
·
project/본투비엔지니어
지난 글에서 Proxmox 서버 내부에 Rocky Linux 10 클라우드 이미지를 다운로드하고, 이를 템플릿(Template)으로 변환하는 작업을 완료했습니다. 이로써 서버 측면에서의 물리적, 논리적 준비는 모두 끝났습니다. 우리의 목표는 매번 Proxmox 웹 콘솔에 접속해 마우스를 클릭하는 것이 아니라, 로컬 컴퓨터에서 코드를 작성하고 실행하는 것만으로 서버를 생성하는 것입니다. 이를 위해 인프라 자동화 도구인 테라폼(Terraform)을 로컬 환경에 설치하고, Proxmox와 통신할 수 있도록 연동하는 과정을 진행하겠습니다. 1. Terraform 설치# 1. HashiCorp 공식 탭(저장소) 추가brew tap hashicorp/tap# 2. Terraform 패키지 설치brew install..
[본투비엔지니어] 나에게 베어본만 주어진다면?? (5)
·
project/본투비엔지니어
지난 글에서 Proxmox VE 환경 구축을 완료했습니다. 이제 이 위에 가상머신(VM)을 생성할 차례입니다.일반적으로 VM을 생성한다고 하면 Ubuntu ISO 파일을 다운로드하여 가상 CD-ROM에 넣고, 설치 화면(GUI)을 보며 언어, 시간대, 파티션을 일일이 클릭하는 과정을 떠올립니다. 하지만 이 방식은 IaC(Infrastructure as Code) 철학과 맞지 않습니다. Terraform 코드를 실행할 때마다 사람이 개입하여 설치 과정을 진행할 수는 없기 때문입니다. 자동화를 위해서는 이미 OS 설치가 완료된 상태에서, 부팅 시점에 IP와 SSH 키만 주입받아 즉시 구동되는 이미지(Image) 방식이 필요합니다. 1. Cloud-initCloud-Init은 클라우드 인스턴스의 초기 설정을 ..
[본투비엔지니어] 나에게 베어본만 주어진다면?? (4)
·
project/본투비엔지니어
지난 편에서 미니 PC 에 Rocky Linux를 직접 설치해봤습니다.인프라 구축 실습을 위해 매번 OS를 재설치 하는 과정은 불필요한 시간 소모가 큽니다.따라서 두 번째 미니 PC 에는 단일 OS 가 아닌 하이퍼바이저를 설치하여, 다수의 가상머신을 유연하게 배포할 수 있는 환경을 구축해 보겠습니다.모델명: GMKtec NucBox K6 7840HScpu: 7840hsram: 64GBstorage: 1TB이녀석의 스펙입니다. 1. Proxmox VE가상화 플랫폼으로 Proxmox VE 를 선택했습니다. 이유는 다음과 같습니다. Type-1 하이퍼바이저: OS 위에서 구동되는 VMware Workstation이나 VirtualBox와 달리, 하드웨어(Bare-metal) 바로 위에서 자원을 직접 통제하므로..
[본투비엔지니어] 나에게 베어본만 주어진다면?? (3)
·
project/본투비엔지니어
rocky 리눅스 설정을 완료해 보겠습니다.리눅스 설정하기1. 언어언어는 영어로 설정했습니다. 영어를 못하지만 서버 엔지니어라면.. 2. Software SelectionGUI 는 사용하지 않을것이기 때문에 자원을 아끼기 위해서 Minimal 로 설치했습니다.3. Installation Destinationdd로 밀어버린 덕분에 디스크는 'Free Space'로 깨끗하게 비어있습니다. Storage Configuration 은 어떠한 특수 목적(DB 서버, 로그 서버)이 없기 때문에 Automatic 으로 설정했습니다.4. Network & Host Name현재 작업 중인 miniPC 는 쿠버네티스를 작업할때 master node 로 사용할 것이기 때문에 host name 은 master 로 설정했습니다..