이전 포스팅에서는 k8s 클러스터 내부 애플리케이션을 외부로 노출하기 위해 서비스를 만들고 NodePort/LoadBalancer를 통해 직접 노출해봤다. k8s에서는 외부 노출 서비스를 위한 별도의 API 오브젝트를 제공한다. 그것이 바로 인그레스(Ingress)이다. 공식 문서에는 클러스터 외부에서 클러스터 내부로 요청할 수 있는 URL(HTTP/HTTPS) 경로를 노출하고 SSL/TLS 인증처리 및 로드 밸런싱을 제공한다고 한다. 인그레스는 반드시 인그레스 컨트롤러(Ingress Controller)와 같이 동작하는데, 쉽게 말하면 인그레스 컨트롤러는 오브젝트로서 실제 트래픽 처리를 하는 구현체이고 인그레스는 인그레스 컨트롤러의 트래픽을 어떻게 처리할지 정책을 결정하는 실체가 없는 추상화이다. 아래..
2022.05.30 - [AWS] - [EKS] k8s 사용 경험하기: 클러스터 구축(1) 이전 포스팅에 이어서 k8s 웹 서비스 배포를 이어서 해본다. 간단하게 nginx 웹서버를 배포하여 외부에서 접근 가능하도록 배포해보자. 시작하기 전에 Deployment와 Service가 무엇인지 알아야 한다. 1. Deployment Deployment는 ReplicaSet을 이용하여 Pod를 생성하고, Rollout 등 확장 기능 지원한다. 간단하게 말해, 우리가 실제 운영할 애플리케이션들을 Container화 시켜 Pod에 올리고 ReplicaSet을 이용해 scalable 하게 Pod를 관리, Rollout으로 이전 버전으로 롤백, 가용성을 유지한 채 Container image를 업데이트할 수 있게 해 ..
들어가기 전에... 분명 인프라 흐름은 클라우드 네이티브로 넘어가고 있다는 걸 충분히 느낀다. 여러 기업들 사례만 봐도 더 이상 컨테이너 기술은 남일이 아니고 미룰일이 아니다. 결국 우리 회사에서도 파일럿 형식으로 도입해 보기로 결정했다. 그럼 무엇부터 시작해야 할까? 예전에 로컬 환경에서 minikube로 경험해보긴 했지만(Hello World 수준), 이번엔 운영환경을 목표로 학습을 시작했기에 가장 많이 사용 중인 AWS의 EKS를 통해서 간단한 웹서비스를 구축해보기로 했다. 온프레미스 환경에서 직접 클러스터를 구축해보고도 싶지만, 우선은 클라우드 벤더사에게 위임하고 pods를 운영하는 것에 집중하기로 했다. 사전 작업 여러 블로그마다 구축 방법, 버전 등이 달라 최대한 시행착오를 줄이기 위해 모든 ..
들어가기전에 기존 레거시(영어) 시스템의 배포 형태를 보면 전면에 WEB서버를 두고 WAS만 배포하는 형태 많은데 이런 구조로는 WAS가 늘어날 때마다 WEB서버의 설정을 바꿔야 하는 등 auto scalable 한 시스템 구조를 가질 수 없었다. serivce state, pool, traffic 등 전체 컨테이너를 관리할 수 있는 쿠버네티스를 도입하면 좋겠지만 현재 조직 방향이 기술 스택을 늘리는 것에 집중할 수 없고 비즈니스 성과를 내야 하는 스타트업이거나 조직 구성이나, 높은 러닝 커브 등 상황에 맞지 않으면 선뜻 도입하기 어려운 게 현실이다. 물론 전체 시스템을 갈아 없는 것도 답은 아니다. 그럼 어떻게 해야 할까? 최대한 레거시 시스템을 유지한 채 auto scalable 한 시스템을 만들고 ..
오늘은 운영 중인 CloudFront 호출 Path 중 특정 패턴(Pattern)의 경우 타계정의 S3 Bucket을 Origin 으로 바라보고 사용해야 할 일이 생겨 작업 후 결과 및 내용을 기록하려고 한다. 기존 {cloudfront도메인}/*(default 패턴) > A계정 S3 오리진 추가 {cloudfront도메인}/{특정패턴}/* > B계정 S3 오리진 설정 방법 오늘 작업할 내용에 대해서만 작성하겠다. A계정(CloudFront 소유자) 1. Create Origin Origin Domain Name 사용할 S3 주소를 직접 넣으면 된다. 예시) your_s3_bucket.s3.ap-northeast-2.amazonaws.com Restrict Bucket Access Yes > Origin..
지난 포스팅에 이어서 이번에는 가장 대중적인 프레임워크인 스프링부트에서 gRPC 코드를 작성해보려고 한다. 간단하게 패키지 구성과 코드만 나열하며 gRPC와 관련된 정보는 이전 포스트에서 확인할 수 있다. 2021.06.07 - [개발] - gRPC 알아보기 서버(Server) Versions jdk 11 gradle 7.0.x spring-boot-starter 2.5.x grpc-spring-boot-starter 2.12.x grpc-server-spring-boot-starter 2.12.x google protobuf 0.8.x protoc 3.5.x protoc-gen-grpc-java 1.37.x 패키지 구성 1. gRPC 의존성 추가 및 Protobuf 생성을 위한 스크립트 추가 스프링부트..
rpc는 Remote Procedure Call 의 약자로 서로 다른 프로세스 간에 상대방의 함수나 프로시저를 마치 로컬에 있는 것처럼 호출할 수 있게 해주는 통신 기술로 구글에서 rpc 기반으로 만든 프레임워크가 gRPC 이다. gRPC A high-performance, open source universal RPC framework grpc.io 주로 MSA 환경에서 서버 간의 데이터 전송 과정에서 발생하는 네트워크 비용 발생의 단점을 극복하기 위해 사용된다고 한다. (이번 포스트는 gRPC 이므로 자세한 MSA 단점에 대해서 다루지 않겠다.) 그럼 gRPC의 대해 알아보자. Payload : Protobuf(프로토콜 버퍼) Protobuf 는 구글에서 개발한 데이터 직렬화 기법으로 서버 간의 데이..
파이썬으로 슬랙(Slack) API를 이용하여 알람을 보내보자! 1. 슬랙(Slack) 설정 1) Workspace & Channel 생성(내용 생략) 2) App 생성 https://api.slack.com/ 에서 'Create a custom app' 을 눌러서 생성하면 된다. 3) Incomming Webhooks 설정 해당 메뉴에서 활성화 후 '워크스페이스에 새 웹후크 추가' 를 누른 뒤 본인이 생성한 채널을 선택한다. 4) OAuth 및 권한 설정 다시 좌측 메뉴에서 'OAuth 및 권한' 메뉴를 선택 후 밑으로 내리면 권한을 추가할 수 있다. 'chat:write' 권한을 추가한다. 추가하고 나면 페이지 상단에 '앱을 다시 설치해주세요.' 라는 문구가 노출되며 상단으로 올려서 재설치하면 된다...
- Total
- Today
- Yesterday
- eks
- CURL
- ALB
- AWS
- 파이썬
- S3
- Ingress
- spring cloud
- Proto
- spring-boot-starter
- KUBECTL
- python
- HTTP/2
- 슬랙
- springboot
- Kubernetes
- loadbalancer
- gRPC
- 쿠버네티스
- Java
- Spring
- protobuf
- 인그레스
- 슬랙알람
- 배포 전략
- cloudfront
- slack
- k8s
- gateway
- Selenium
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
