일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ElastiCache
- ssh
- Certbot
- multibranch
- ssafy #싸피 #ssafy 12기 #싸피 12기 #ssafy 합격 #싸피 합격 #합격 후기
- sshtunneling
- 워커노드
- cloud controller manager
- Tunneling
- port forawrding
- ingress-nginx
- k8s
- jnlp
- kaniko
- argocd
- RDS
- elasticahe
- 쿠버네티스
- redis oss
- Kubernetes
- ChatGPT
- datagrip
- helm
- EC2
- 인프런강의
- helm-chart
- vue3
- AWS
- 인프런
- Docker
- Today
- Total
목록전체 글 (52)
처누

쿠버네티스에서 젠킨스 파드를 배포했고, 커스텀 pvc/pv 생성하여 볼륨 마운트를 해줬다.jenkins-values.yamlapiVersion: v1kind: Namespacemetadata: name: jenkins---apiVersion: apps/v1kind: Deploymentmetadata: name: jenkins namespace: jenkinsspec: replicas: 1 selector: matchLabels: app: jenkins template: metadata: labels: app: jenkins spec: imagePullSecrets: - name: docker-hub nodeSelect..

이번 프로젝트는 MSA환경이기 때문에 각 브랜치 별로 jenkins 파이프라인을 작성하기로 계획했다.특정 브랜치에서 특정 이벤트가 발생했을 때, 해당 브랜치에 대해서만 CI/CD가 될 수 있도록 시도해보자!0. 사전 설정플러그인 설치MultiBranch Action Triggers PluginMultibranch Scan Webhook TriggerPipeline: Multibranch with defaultsJenkins URL 변경Jenkins 관리 - 시스템 - Jenkins Location에서 URL 변경해주자.기본값은 http://url/jenkins로 돼있을텐데 Ingress에서 설정한 Jenkins host로 변경하면된다.GitLab Server 수정Jenkins 관리 - 시스템 - GitL..

Jenkins 설치 전 고려했던 사항워커 노드 설정할 때 최적화 중 아래와 같이 kubelet/config.yaml 설정을 했다./var/lib/kubelet/config.yaml아래 내용 추가cpuManagerPolicy: staticreservedSystemCPUs: "0"해당 설정은 Jenkins Pod에 고정된 CPU(Core-Pinning)를 적용하기 위해 설정했다. 이 설정은 Guaranteed QoS 클래스 + static policy 조건을 만족해야 작동한다. 즉, Jenkins Pod를 Guaranteed 클래스로 만들고, 고정 CPU 코어를 할당해야 kubelet이 core pinning을 해준다.근데 여기서 고민이 생겼다!Jenkins는 일시적인 부하가 생기게 되는데 고정된 CPU를 ..

마스터 노드 구축 및 워커 노드 조인 후 도메인 연결을 위해서 ELB가 필요하여 Ingress-nginx를 설치하고 아래 명령어를 통해 EXTERNAL-IP에 ELB가 생성이 되는지 확인해봤다. kubectl get svc -n ingress-nginxNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEingress-nginx-controller LoadBalancer 80:31608/TCP,443:30432/TCP 39singress-nginx-controller-admission C..
워커 노드는 마스터 노드와 설정 방법이 비슷하다!1. 시스템 초기 설정# 스왑 비활성화sudo swapoff -asudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab# iptables가 브릿지 트래픽을 확인하도록 설정cat 2. 컨테이너 런타임 설정(containerd 사용)# 필요한 패키지 설치sudo apt updatesudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release# Docker 공식 GPG 키 추가curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyring..
인스턴스들의 보안 그룹에서 인바운드 규칙을 설정해주어야 한다.Calico를 사용하기로 했기 때문에 아래와 같이 설정을 해주었다.모든 노드 공통프로토콜포트출발지(CIDR)설명TCP6443모든 IPKubernetes API 서버 (kubectl 등 클라이언트가 접근)TCP2379-2380서브넷 IPv4 CIDRetcd 통신TCP10250서브넷 IPv4 CIDRKubelet API (metrics-server, kubectl logs 등)TCP10255서브넷 IPv4 CIDR(선택) Kubelet 읽기 전용 포트 (보안상 권장 안됨)TCP30000-32767모든 IPNodePort 서비스용 포트 (외부에서 접근) 마스터 노드에 필요한 포트프로토콜포트출발지(CIDR)설명TCP10251서브넷 IPv4 CID..

쿠버네티스로 "운영할 가치가 있는" 최소한의 프로젝트 볼륨아래 조건 중 하나 이상이면 쿠버네티스는 충분히 쓸 가치가 있다.서비스가 3개 이상 (ex. 프론트엔드, 백엔드, DB, 메시징 서버 분리)릴리즈 주기가 빠름 (ex. 주 1회 이상 배포)버전 롤백이 필요함 (ex. 장애 시 빠르게 롤백하고 싶음)트래픽이 가변적임 (ex. 새벽엔 10 req/sec, 낮엔 1000 req/sec)장애가 발생했을 때 자동 복구가 필요함 (ex. 노드 다운 시 Pod 재스케줄링)모든 걸 코드로 관리하고 싶음 (IaC: Infrastructure as Code)단순 서버 1~2개, 변경 거의 없음, 트래픽 일정 → 쿠버네티스 필요 없음. (EC2 + Docker Compose가 더 낫다.)현재 가지고 있는 서버는m6i...

이번 프로젝트에서 도커로 운영하던 서버를 쿠버네티스로 전환하여 서버를 운영하기로 했다. 현재 프로젝트의 상황은 아래와 같다.메인 EC2nginx, springboot, jenkinsprometheus, promtail, loki, grafanakafka 서브 EC2(프리 티어)Config ServerSonarqubeRabbitmq쿠버네티스로 전환하기 위해 사용할 수 있는 스펙을 가진 서버는 메인 EC2 서버 한 대 였기 때문에 단일 노드(마스터 + 워커) 클러스터로 구성하기로 했다. 쿠버네티스는 원래 분산, 복제, 무중단 업데이트를 목표로 설계된 것이기 때문에 단일 노드로는 그 장점을 살릴 수 없었다. 그래도 최대한 단일 노드 클러스터를 극한까지 활용하는 방향으로 구축하려 했다. 대략적인 다이어그램은 아..

이전 포스트에서 SSH Tunneling을 통해 RDS와 ElastiCache Redis OSS에 연결해 사용하는 방법을 알아봤다. 이제 이걸 MySQL Workbench와 DataGrip에서도 편하게 관리해보자! [Infra] Ssh Tunneling(Feat. RDS, Elasticache)프로젝트 진행 중 AWS에 들어가보니 청구서에 왜인지 모를 금액이 나가고 있었다. 프리티어 사용 중이기 때문에 EC2에 할당된 퍼블릭IP는 한개까지 무료인 것으로 알고 있었는데 왜인지 찾아보니cheonu.tistory.com MySQL Workbench에 연결 ① SSH Hostname : SSH 연결할 EC2 퍼블릭 IP 주소② SSH Username : SSH 연결할 사용자 계정(default는 ubunt..

프로젝트 진행 중 AWS에 들어가보니 청구서에 왜인지 모를 금액이 나가고 있었다. 프리티어 사용 중이기 때문에 EC2에 할당된 퍼블릭IP는 한개까지 무료인 것으로 알고 있었는데 왜인지 찾아보니 RDS를 퍼블릭 엑세스 허용을 해놓은 탓!! 2024년 2월 RDS 정책 변경으로 인해 퍼블릭 엑세스 허용하게 되면 과금이 된다. 즉 같은 계정에서 생성한 EC2를 통해서만 RDS를 사용가능 하다는 의미다.다행히 빠르게 발견해서 요금이 많이 청구되진 않았지만 프로젝트에 꼭 사용해야했기 때문에 방법이 없을지 찾아봤다. 역시나 안되는건 없다!! Ssh Tunneling을 통해 RDS와 같은 계정에 있는 EC2에 연결하고, 외부에서 해당 EC2에 접속해 RDS를 사용하는 방법이 있었다!! 정리하자면 ssh로 EC2에 접..