반응형 분류 전체보기847 GitHub Actions에서 actions/checkout@v4 CI/CD를 GitHub Actions로 구성할 때 가장 자주 보이는 스텝이 바로 다음과 같습니다: - name: Checkout uses: actions/checkout@v4 많은 분들이 그냥 “필수니까 넣는 것” 정도로 알고 계신데요, 사실 이 스텝은 런너 환경에서 우리가 작성한 레포지토리 소스 코드를 가져오는 핵심 역할을 합니다. 이번 글에서는 checkout이 정확히 어떤 작업을 하고, 어떤 흐름으로 동작하는지 정리해 보겠습니다.왜 Checkout이 필요한가?GitHub Actions의 잡(job)은 ubuntu-latest 같은 깨끗한 런너 환경에서 실행됩니다.즉, 기본 상태에서는 소스 코드 파일이 하나도 없는 빈 머신이에요.하지만 빌드, 테스트, 배포를 하려면 레포지토리의 코드가 반드시 필요합.. 2025. 9. 11. AWS Network Loadbalancer의 ALPN이란? NLB의 ALPN(Application-Layer Protocol Negotiation) 기능은 TLS 연결에서 클라이언트와 서버가 어떤 애플리케이션 프로토콜(HTTP/1.1, HTTP/2, gRPC 등)을 사용할지 협상하는 메커니즘입니다.즉, 클라이언트가 서버로 TLS 핸드셰이크를 할 때 "난 HTTP/2 또는 HTTP/1.1을 지원한다"라고 알리고, 서버(NLB 뒤의 Target 그룹)가 지원하는 프로토콜을 골라주는 방식이에요.1. ALPN 기본 개념TLS 확장(extension) 중 하나.애플리케이션 계층 프로토콜을 TLS 핸드셰이크 중에 미리 결정.Upgrade 헤더 방식보다 빠르고 안전하게 프로토콜 협상 가능.예:브라우저(클라이언트)가 HTTP/2 + HTTP/1.1 지원을 선언.서버가 HTTP.. 2025. 9. 9. GitHub Composite Action + ArgoCD: GitOps CI/CD 파이프라인 완성하기 최근 많은 팀이 GitOps 기반 배포를 도입하면서 ArgoCD를 활용하고 있습니다. 하지만 CI 단계(빌드, 테스트, 이미지 푸시)는 여전히 GitHub Actions에서 담당하는 경우가 많습니다.이때 유용하게 활용할 수 있는 것이 Composite Action입니다. 반복적인 빌드/배포 로직을 하나로 묶어 재사용할 수 있고, ArgoCD와 결합하면 완전 자동화된 GitOps 파이프라인을 구현할 수 있습니다.1. GitHub Composite Action이란?정의: 여러 Step을 조합해 하나의 Action처럼 사용할 수 있는 GitHub Actions 기능 (using: composite).장점공통 빌드/배포 로직을 표준화리포지토리/팀 전체에서 재사용유지보수 및 관리 용이형태: .github/acti.. 2025. 9. 8. gitops와 app of apps 가 kubernetes 운영시 필요한 이유 1. 왜 GitOps가 필요한가?일반적인 서버 운영: 개발자가 코드를 수정 → 서버에 들어가서 수동으로 설정/배포.문제: 사람이 직접 서버를 만지다 보면 설정이 달라지거나, 누가 언제 뭘 바꿨는지 추적이 안 됨.GitOps 방식: “배포와 운영의 모든 상태를 Git에 적어두고, 쿠버네티스가 자동으로 따라가게 하는 것”.즉, Git = 진실의 원천(Single Source of Truth).코드 바꾸듯이 YAML(쿠버네티스 설정)을 수정 → Git에 올리면 → 자동으로 클러스터 반영.결과: 이력 관리, 협업, 롤백이 훨씬 쉬워짐.👉 비유: “노트에 모든 요리 레시피(서버 상태)를 적어놓고, 요리사는 그 레시피만 보고 자동으로 요리를 만드는 것”.2. App of Apps가 왜 필요한가?EKS 같은 환경에.. 2025. 9. 8. kubernetes 셀프서비스 backstage 도입여부 환경 개발자들이 yaml 안건드리고 배포할수 있는 환경을 만들고싶어서 github으로 구현할지 backstage로 할지 고민을 하고 있습니다. 다음과 같은 조건을고려해서 도입여부를결정하였습니다. 1. Backstage가 필요 없는 경우팀 규모가 작다개발자 10명 이하 + 서비스 20개 이하 온보딩은 문서(Markdown/Notion)로도 1일 이내에 충분히 가능.DevOps 병목이 크지 않다새 서비스 생길 때 DevOps 1명이 직접 Helm/CI/CD 넣어주는 게 몇 시간 안 걸린다.개발자 요청 건수가 적어서 반복 부담이 크지 않다.서비스 표준화가 이미 잘 돼 있다Template repo, reusable GitHub Actions, Helm 차트가 있어서 복붙으로도 80% 커버 가능.👉 이런 .. 2025. 9. 8. [kubernetes] kind 명령어 정리 📌 클러스터 관리# 클러스터 생성 (단일 노드)kind create cluster --name my-cluster# 설정파일로 클러스터 생성 (멀티노드, 포트매핑 등)kind create cluster --config kind-config.yaml# 생성된 클러스터 목록 확인kind get clusters# 클러스터 삭제kind delete cluster --name my-cluster📌 노드 관리# 클러스터 노드 보기kubectl get nodes# 특정 클러스터의 노드 확인kind get nodes --name my-cluster# 클러스터 노드에 직접 접속docker exec -it my-cluster-control-plane bash📌 이미지 관리# 로컬 도커 이미지 → kind 클러스터에 .. 2025. 9. 6. [kubernetes] kind 설치 및 간단한 실행방법 목차1) 사전 준비Docker Desktop 설치 (WSL2 백엔드 권장). Docker가 켜져 있어야 합니다.kubectl 설치 (없다면 함께 설치).Windows (PowerShell)# Docker Desktop 설치(수동 설치 권장), 설치 후 실행# kubectlwinget install -e --id Kubernetes.kubectl # 또는choco install kubernetes-cli -y # 또는scoop install kubectl# kindchoco install kind -y # 또는scoop install kind # 또는winget .. 2025. 9. 6. GitHub Actions · AWS OIDC · Reusable Workflow · Terraform IaC 정리 여러 서비스 리포에서 공통으로 사용하는 Reusable Workflow를 구축하고, AWS OIDC 인증을 통해 ECR에 이미지를 푸시하도록 구성했습니다.처음에는 workflow not found / id-token: none 오류 등 삽질이 있었는데, 최종적으로 Access 설정 + Permissions + IAM Role 신뢰 정책을 Terraform으로 관리하면서 안정화했습니다.이번 글에서는 문제 원인 → 해결 방법 → Terraform 코드까지 정리합니다.1. workflow not found 오류원인서비스 레포에서 아래와 같이 호출했지만:uses: orgname/repository-ci-templates/.github/workflows/aws-ecr-deploy.yml@main GitHub에서 .. 2025. 9. 4. Terraform에서 AWS SSM Parameter Store 활용하기 erraform으로 인프라를 관리하다 보면, 슬랙 웹훅이나 API 키처럼 민감한 값을 tfvars에 넣고 싶을 때가 많습니다.하지만 이는 보안/ISMS 측면에서 지적될 가능성이 높기 때문에, 보통은 AWS SSM Parameter Store나 Secrets Manager를 이용해 관리합니다.이번 글에서는 SSM Parameter Store를 사용하여 Terraform 코드에서 안전하게 값을 가져오는 방법을 정리했습니다.1. SSM Parameter Store에 값 저장하기먼저 Slack Webhook을 SSM에 SecureString 타입으로 저장합니다.aws ssm put-parameter \ --name "/argocd/notifications/test_slack_webhook" \ --type .. 2025. 9. 4. ArgoCD Slack Notifications : Webhook vs Token 방식 비교 1. 들어가며ArgoCD는 GitOps 방식으로 Kubernetes 애플리케이션을 관리할 수 있는 강력한 도구입니다.하지만 운영 환경에서는 단순히 배포만 잘 된다고 끝이 아니죠. 애플리케이션의 동기화(Sync) 성공/실패 상태를 빠르게 알림으로 받아볼 수 있어야 합니다.ArgoCD는 이를 위해 Slack Notifications 기능을 제공합니다.이번 글에서는 EKS 환경에서 Slack 알림을 설정하는 방법과, 실제로 적용해본 Webhook 방식과 Token 방식의 차이점을 정리해보겠습니다.2. Webhook 방식 적용기저희는 먼저 Webhook 방식을 적용했습니다.Webhook은 Slack에서 제공하는 Incoming Webhook URL을 사용해 메시지를 보내는 방식으로, 설정이 간단하고 빠릅니다.주.. 2025. 9. 1. EKS 환경에서 ArgoCD Notifications와 Slack 연동하기 이 글에서는 AWS EKS 클러스터 환경에서 ArgoCD Notifications를 설정하고, 애플리케이션 동기화 성공/실패 시 Slack으로 알림을 보내는 방법을 다룹니다. 공식 ArgoCD Helm 차트(v8.3.1)를 기반으로 진행했으며, 실제 환경에서 발생한 문제와 해결 과정을 정리했습니다.초기 문제 상황ArgoCD Notifications를 Slack과 연동하면서 아래와 같은 문제를 겪었습니다.argocd-notifications-cm ConfigMap에서 서비스 설정 누락Slack 알림 전송 시 "not_authed" 에러 발생Terraform으로 리소스 정의 시 metadata 블록 누락으로 검증 오류 발생Notifications Controller에서 과도한 로그 출력해결 과정1. Terr.. 2025. 9. 1. ArgoCD 배포 시 실패한 Pod는 삭제됐는데 ReplicaSet은 남아있다? 괜찮은 걸까? 쿠버네티스 환경에서 ArgoCD로 애플리케이션을 배포하다 보면, 실패한 Pod는 삭제됐는데 ReplicaSet(RS)은 계속 남아 있는 상황을 접할 수 있습니다. 처음에는 “이거 뭔가 잘못된 거 아닌가?” 싶지만, 사실은 정상적인 동작입니다. 이번 글에서는 왜 이런 현상이 발생하는지, ReplicaSet을 어떻게 관리해야 하는지 정리해 보겠습니다.1. ReplicaSet이 남는 이유Deployment의 기본 동작 원리쿠버네티스에서 Deployment(또는 Argo Rollouts)는 직접 Pod를 생성하지 않습니다. 대신 ReplicaSet을 생성하고, ReplicaSet이 파드를 관리합니다. 따라서 파드가 실패해 삭제되더라도 ReplicaSet은 그대로 남아 있으며, 필요 시 새 파드를 다시 만들 준비.. 2025. 8. 29. 이전 1 2 3 4 ··· 71 다음 반응형