PLG stack PLG stack 은 레이블 기반의 메타데이터만 인덱싱해서 인덱스에 소요되는 메모리 사용량이 현저히 적은 "Loki" 를 기반으로 한 로깅 시스템입니다. Promtail + Loki + Grafana 로 구성이 되어있고 간단하게 역할을 소개해보겠습니다. Promtail: 역할: 로그 수집 에이전트로 작동하며 로그 파일을 추적하고 읽습니다. 작동 방식: 지정된 위치의 로그 파일을 tailing (즉, 실시간으로 로그 변화를 추적)하며, 해당 로그 데이터를 Loki 서버로 전송합니다. 설치: 일반적으로 로그가 생성되는 각 머신이나 컨테이너에 설치됩니다. 추가 정보: Promtail은 로그의 메타데이터를 수집하여 로그 데이터와 함께 Loki로 전송합니다. 이 메타데이터는 후에 로그를 쿼리할 ..
저번에 했었던 Action 사용해서 AWS S3 에 정적 웹 페이지를 구현을 했었던거에 이어서 이번에는 backend 에서 활용하기 좋은 CICD 방법을 사용해보려고 한다. 현재 golang의 웹 프레임워크중 하나인 echo framework 로 프로젝트를 진행 중인데 그것을 최종적으로 AWS ECS 에 올릴것이기에 AWS ECR 에 올려놓는게 좋겠다 생각이 들었다. 프로젝트 도커라이징 config 파일 정리 (viper 패키지) 데이터베이스와 관련된 정보가 있는 config.json 을 그대로 빌드를 하면 같이 들어가기 때문에 내용은 삭제해준다. { "server": { "port": "8080" }, "database": { "host": "localhost", "user": "root", "pass..
React 프로젝트를 Amazon S3에 배포하는 CI/CD 파이프라인을 설정하기 위해 GitHub Actions를 사용하는 방법을 소개해 보려고 합니다. S3 버킷 설정 S3 정적 배포 시도 기본 S3 설정 ACL 활성화(선택) ACL을 비활성화하면 CloudFront에서 버킷으로 로그 파일을 전송하지 못하게 됩니다. 웹 서비스 배포를 하기위해서 퍼블릭 엑세스 차단을 풀어줍니다. 버킷을 생성합니다. 그다음 버킷에 들어가서 속성탭 맨아래의 정적 웹 사이트 호스팅의 옵션을 변경해 줍시다. index.html 적어줍시다. 테스트 해보기 간단히 코드를 만들고 업로드 해봅니다. // index.html 안녕하세요, 이것은 간단한 테스트 페이지입니다. 이 페이지는 HTML을 사용하여 만들어졌습니다. S3 업로드 ..
인프라를 손쉽게 구축하고 안전하게 변경하고, 효율적으로 인프라의 형상을 관리할 수 있는 오픈 소스 도구인 Terraform 오라클클라우드의 FreeTier에서 제공하는 4core 24ram이라는 아주 좋은 스펙의 컴퓨트 자원을 무료로 이용할 수있는데 잘 생성이 되지 않는다. 간단한 배치파일과 테라폼을 사용하여 이것을 자동화시키고 며칠동안 돌려놓으면 생성이 되는 (꼼수?) 같은게 있다. 방법 일단 인스턴스를 생성에 들어간다. 여러 스펙들을 지정하는데 네트워킹부분이 빠지지 않도록 지정하고 스택으로 저장을 누른다. 다음다음다음눌러 넘어간후 테라폼 구성의 다운로드 버튼을 누른다. 다운받아놓고 oci 오른쪽 상단의 프로파일버튼 누르고 사용자 설정에 들어간다. 그후 왼쪽 하단의 api 키를 추가한다. 테라폼을 사용..
쿠버네티스 대시보드이다. kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 외부접속을위해 여러방법이 있지만 편의상 NordPort 를 사용한 방법을 적용 kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}' or kubectl edit service -n kubernetes-dashboard kubernetes-dashboard kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kub..
이곳에서 패스워드를 변경 가능하다. 적당히 git repository를 만들고 파일을 구성해준다. deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: hello-nginx spec: replicas: 1 selector: matchLabels: app: hello-nginx template: metadata: labels: app: hello-nginx spec: containers: - name: hello-nginx image: nginx:latest ports: - containerPort: 80 service.yaml apiVersion: v1 kind: Service metadata: name: hello-nginx spec..
argoCD를 사용해서 git에 push를 하면 자동으로 k8s 클러스터에 배포가 되도록 구성 네임스페이스 생성 및 argoCD yaml 배포 kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml argocd cli sudo curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64 chmod +x /usr/local/bin/argocd nodeport 설정 kube..
# 마스터노드 및 각 워커노드 sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT # 마스터노드 및 각 워커노드 sudo iptables -A INPUT -i lo -j ACCEPT # 마스터노드 및 각 워커노드 sudo iptables -A INPUT -p icmp -j ACCEPT # 마스터노드 및 각 워커노드 sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT # 마스터노드 및 각 워커노드 sudo iptables -A INPUT -p tcp --dport..
containerd 설치 (Container Runtimes) 인스턴스 3개 전부 sudo apt-get install containerd -y sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml sudo systemctl stop containerd sudo apt install curl curl -LO https://github.com/containerd/containerd/releases/download/v1.7.0/containerd-1.7.0-linux-arm64.tar.gz curl -LO https://github.com/containerd/containerd/releases..
기본적인 ansible이 구현이 되었으면 kubespray를 설치해보도록 한다. python, pip, git sudo apt update sudo apt install -y python3 python3-pip git git clone 적당한 장소에 kubespray git을 clone 해오도록 한다. git clone -b v2.21.0 https://github.com/kubernetes-sigs/kubespray.git ## 현재 릴리즈 최신버전인 2.21.0 으로 진행하는데 관련한 요구사항들은 https://github.com/kubernetes-sigs/kubespray/tree/v2.21.0 GitHub - kubernetes-sigs/kubespray: Deploy a Production R..