본문 바로가기
반응형

DevOps55

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.
Argo CD CLI login 트러블슈팅 (ALB/Ingress, gRPC-Web, Windows) 내부 ALB(HTTP :8080) 뒤의 Argo CD에 Windows에서 CLI로 로그인하려다 context deadline exceeded 를 만난 분들을 위한 실전 메모입니다.포인트만 요약하면:CLI 플래그: --grpc-web --plaintext (+ 필요시 --skip-test-tls)Ingress 경로: /grpc, /api, / 를 Prefix로 각각 백엔드 argocd-server:80에 포워딩ALB 주석: backend-protocol-version=HTTP1, 헬스체크 /api/version서버 URL: configs.cm.url 을 외부에서 접속하는 실제 URL로프록시 우회: NO_PROXY 에 ALB 호스트 추가 배경 환경Kubernetes: v1.33Argo CD: v3.1.x (.. 2025. 8. 29.
Argo CD에서 “읽기 전용(READ-ONLY)” 사용자 만들기 (Helm/Terraform 예시) 로컬 계정 하나 만들고role:readonly 를 정의해 조회만 허용policy.default 를 role:readonly 로 두되, admin은 명시적으로 전권 매핑Helm values 로 관리하고, 적용 후 argocd-server 재시작 → 비밀번호/토큰 발급 → 권한 확인1) 개념 한 줄 요약Argo CD 권한은 Casbin 정책(policy.csv) 으로 정의합니다.p, , , , , allow|denyg, , role: (사용자→역할 매핑)policy.default 는 매핑되지 않은 사용자의 기본 역할입니다.deny가 allow를 이깁니다. 읽기 전용 역할에 굳이 deny 줄을 많이 넣기보다, “허용만 명시”하는 편이 안전합니다.admin은 반드시 명시 매핑하세요. 기본 역할이 readonly.. 2025. 8. 29.
원격 프로그램 추천 Remote Desktop Manager(Devolutions) ssh 만 사용할경우 여러 툴들이꽤나 많지만 windows 원격연결 하려면 돈을 더 내던가 추가적으로 설치하는등 번거롭고 비용이 든다. 그렇다고 일일이 rdp 를 사용하거나 ssh sftp 번갈아가면서 사용하는건 너무 귀찮은일! 그래서 추천하는건 Remote Desktop Manager! cross platform 에서 원격으로 사용하는 기능 및 팀단위로 공유해서사용하는거 아니고 로컬에서 돌린다면 사실상 다 사용가능하다. 다른 모 프로그램에서 세션 늘어나면 돈내는것도 없다!(사용기간이나 세션 50개 제한이있는게 있어서 유료 결제를 했었다... 다운로드 링크https://devolutions.net/remote-desktop-manager/ Remote Desktop ManagerBest r.. 2025. 8. 29.
ArgoCD + ALB + CloudFront 환경에서 HTTPS 리다이렉션 정리 쿠버네티스에서 ArgoCD와 여러 앱을 ALB(aws-load-balancer-controller) 뒤에 붙이고, 그 앞단에 CloudFront를 둔 구조를 쓰다 보면 HTTP→HTTPS 리다이렉션 충돌 문제가 자주 발생합니다. 이번 글에서는 실제 경험한 케이스와 함께, 왜 문제가 생기는지, 그리고 어떻게 정리하는 것이 좋은지 정리합니다.문제 상황ArgoCD, Grafana, Invitation 앱 등 여러 서비스가 같은 ALB 그룹(shared-alb) 을 공유.Invitation 앱의 Ingress에 리다이렉트 액션 (alb.ingress.kubernetes.io/actions.redirect-to-https) 이 설정되어 있었음.이 액션이 host 제한 없이 / catch-all 로 걸려 있어, 같.. 2025. 8. 24.
Terraform + PowerShell local-exec에서 ssh/scp 실행 시 불필요한 . 출력 문제 해결기 AWS 인프라를 Terraform으로 프로비저닝하면서, null_resource + local-exec 프로비저너를 활용해 OpenVPN 서버에서 client.ovpn 파일을 scp로 다운로드하는 작업을 넣었습니다.그런데 terraform apply 실행 시 콘솔 로그에 다음과 같은 출력이 계속 찍히는 문제가 발생했습니다. null_resource.download_client_ovpn (local-exec): .null_resource.download_client_ovpn (local-exec): .null_resource.download_client_ovpn (local-exec): .null_resource.download_client_ovpn: Still creating... [00m20s elap.. 2025. 8. 19.
OpenVPN Split Tunnel 환경에서 특정 서브넷 라우팅 누락 문제와 EKS 환경 라우팅 고려사항 1. 환경 구성AWS VPC 서브넷 구조:Public A (10.0.1.0/24) : OpenVPN 서버Private B (10.0.11.0/24) : EKS 클러스터Private C (10.0.21.0/24) : MariaDB 서버OpenVPN 클라이언트 대역: 10.8.0.0/24기본 설정:모든 서브넷의 라우트 테이블에 10.8.0.0/24 → OpenVPN EC2 ENI 등록SG에서 10.8.0.0/24 → 3306(TCP) 허용NACL은 In/Out Any/AnyOpenVPN EC2: Source/Dest Check 비활성화, ip_forward=12. 증상VPN 클라이언트 → EKS 파드(Ping) : 정상VPN 클라이언트 → MariaDB(3306/TCP) : 타임아웃EKS 파드 → Maria.. 2025. 8. 15.
EKS에서 Amazon DocumentDB 연결 테스트: 왜 telnet은 안되고 mongo는 될까? AWS EKS에 documentDB를 연결하기 위해 일반적인 보안설정(SG,routing,NACL..) 을 마치고 telnet으로 해당 포트를 테스트 해보았는데 time out이 걸려서 뭐 잘못했는지 엄청 헤매는 경험이 있었습니다. 그러다가 해당 앱의 client 연결 하는것을 받아 해보았는데 접속이 되었습니다.나의 무적의 telnet 테스트가 안되다니... 시간 오래 걸린것보다 충격이어서 정리 들어갑니다. 목차 telnet/nc는 L4(포트) 열림만 확인합니다. TLS/인증은 모릅니다.DocumentDB는 TLS 필수 + Mongo 프로토콜을 요구하므로, telnet만으론 “무응답/타임아웃처럼” 보일 수 있어요.정확한 순서는 nc(L4) → openssl s_client(TLS) → mongo/mon.. 2025. 8. 12.
반응형