본문 바로가기

반응형

DevOps

(16)
[AWS] 클라우드 와치 로그에서 특정 패턴일 경우 Slack 알람 보내는 방법 1. 구성 구성은 정말 간단하다. CloudWatch 로그 그룹에 애플리케이션 로그들이 쌓이고 있다. → 구독 필터로 특정 패턴을 감지하여 AWS Lambda로 보내준다. → AWS Lambda에서는 메시지를 전달받은 뒤 가공하여 Slack으로 메시지를 보내준다. serverless 프레임워크를 활용한다. serverless.yml service: SLACK-NOTIFICATION frameworkVersion: "3" plugins: - serverless-dotenv-plugin provider: name: aws profile: XXXXXXX timeout: 30 memorySize: 256 runtime: nodejs18.x stage: prod region: ap-northeast-2 iam: ..
[Github Action] Self hosted runner에서 Gradle, Docker image cache #2 - EFS 활용 #1 편에서는 아주 간단하게 EBS, PVC를 활용하여 캐싱을 수행하였다. https://nyyang.tistory.com/163 [Github Action] Self hosted runner에서 Gradle, Docker image cache #1 - EBS, PVC로 캐시하기 Github hosted runner에서는 다양한 actions에서 caching 전략을 제공하기 때문에 단순 actions를 사용하는 것만으로 손쉽게 캐싱을 수행할 수 있다. 캐싱은 docker image caching도 아주 쉽게 수행할 수 있다. 이 nyyang.tistory.com 1. 개요 #1 편에서는 아주 간단하게 EBS, PVC를 활용하여 캐싱을 수행하였다. 하지만 프로젝트가 많아질 경우 PVC가 Available..
[Github Action] Self hosted runner에서 Gradle, Docker image cache #1 - EBS, PVC로 캐시하기 Github hosted runner에서는 다양한 actions에서 caching 전략을 제공하기 때문에 단순 actions를 사용하는 것만으로 손쉽게 캐싱을 수행할 수 있다. 캐싱은 docker image caching도 아주 쉽게 수행할 수 있다. 이는 buildx에서 --cache-from과 --cache-to의 type 중 gha(github action)란 type을 제공하는데, 아주쉽게 구현 가능하다. gradle cache 또한 제공하는 actions를 쓰면 된다. 하지만 github hosted runner를 쓰면 다양한 단점이 존재한다. 1. 개발한 코드가 클라우드 상에 배포된다. 2. runner가 argocd 등의 명령어를 수행하기 위해 argocd가 public 망에 존재해야 한다...
[Istio] EKS에서 Okta와 AWS ALB, Istio를 활용하여 인증, 인가 처리하기 1. 개요 Application 단에서 Okta 인증 로직을 구현하는 것보다 AWS ALB 혹은 Istio를 통해 구현하게 된다면 로직을 상당히 줄일 수 있을 것이라 생각하였다. Okta + AWS ALB + Istio를 구현하기 위해서는 다음의 지식들이 필요하다. [Okta] - JWT / OIDC / OAuth2.0 / SAML - ClientID, ClientSecret - Endpoints (Userinfo, Ahthorize, Token, ..) - Org Authorization Server , Custom Authorization Server [AWS] - AWS Listener Authentication (OIDC) - x-amzn-oidc-accesstoken, x-amzn-oidc-id..
[Envoy] Envoy Proxy Architecture # 1. 개요 MSA(Micro Service Architecture)를 사용하는 기업이 많아지면서 MSA 서비스 네트워크 통신은 어떻게 처리할지 고민하게 되었고, HTTP , HTTP2 뿐만 아니라 gRPC, Kafka, MongoDB 등 여러 Protocol 간의 통신을 어떻게 효율적으로 처리할지, 분산 추적 및 헤더 등에 대한 관리는 어떻게 할지 고민하게 되었다. 이에 따라 L7 기능을 갖춘 Proxy의 필요성이 느껴지게 되었고 그 중 가장 널리 사용되고 있는 Envoy에 대해서 간단하게 설명하도록 하겠다. - L7과 L4는 아래의 차이점이 존재하며, 당연히 L4 레벨의 통신이 좀 더 빠를 수 밖에 없다. 하지만 좀 더 많은 정보를 기반으로 프록시 및 라우팅을 설정할 수 있는 것이 L7 계층이다. ..
[Terraform] Atlantis를 통한 Git 협업 #1 - Demo Git에서 Terraform으로 협업하기 위해서는 다양한 고려 사항이 필요하다. Terraform을 혼자 테스트를 하거나 소규모 인원이서 관리하는 경우 큰 무리는 없지만 다수가 Terraform 파일을 관리한다면 협업에 대한 고민을 하게 될 수 있음 실제 Production 리소스에 영향이 있기 때문에 함부로 Apply가 수행되어선 안되며 Local에서 Apply를 수행하는 방향보다는 Git에서 PR 진행 후 Plan 결과 혹은 개발계 수행 결과 문제 없을 경우 Apply가 수행되는 방향이 좋을 것을 보인다. 이러한 상황에서 고려해볼만한 Terraform Runner가 Atlantis이다. Atlantis는 Terraform Pull Request를 자동화해주는 오픈소스 솔루션으로, Github 혹은 G..
[Terraform] terraform state mv 명령어 알아보기 및 활용법 Terraform은 tfstate 파일 기반으로 동작한다. 1. main.tf에 정의된 인프라스트럭쳐 2. tfstate 파일에 정의된 인프라스트럭쳐 위 2가지를 대조한 뒤, terraform plan 명령어를 수행하면 tfstate에 정의된 인프라스트럭쳐와 main.tf에 정의한 인프라스트럭쳐를 맞추려고 한다. 예를 들어, 예전에 Terraform 코드로 생성한 IAM User가 아래와 같이 존재한다고 가정해보자. resource "aws_iam_user" "user1" { name = "user1" } resource "aws_iam_user" "user2" { name = "user2" } IAM User : user1, user2가 존재할 것이다. 이 상태에서 user1, user2를 유지하되 c..
[Ansible] 기본 개념 정리 Ansible은 Python Module 및 SSH를 사용하여 원격 호스트에 명령을 수행할 수 있도록 해주는 CM(Configuration Management) 도구이다. 별도의 Agent를 설치하지 않아도 되며 단순히 SSH 접속이 가능하면 편리하게 사용할 수 있다. (내부적으로 Python을 사용하게 되는데 대부분의 Linux에는 Python이 기본적으로 설치가 되어 있다.) 나는 Ansible을 사용하여 원격 Node에 명령어를 수행하기 전에 다음의 과정을 거친다. 1. ansible.cfg 파일 설정 및 확인 2. inventory 파일 생성 및 Group 변수, Host 변수 등 설정 3. ansible-inventory 명령어를 사용하여 정상적으로 호스트 및 그룹 등록이 완료되었는지 확인 4...

반응형