일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Semaphore
- 클라우드 네이티브
- 자바
- 클라우드 네이티브 자바
- cloud native java
- CRD
- Microservice
- 쿠버네티스
- Adapter 패턴
- decorator 패턴
- 머신러닝
- spring microservice
- devops
- MSA
- java
- ansible
- ingress
- MySQL
- 익명클래스
- kubernetes
- 마이크로서비스
- Stress test
- Spring
- Kotlin
- nGrinder
- Algorithm
- cloud native
- 코틀린
- 동기화
- 헬름
- Today
- Total
목록전체 글 (86)
카샤의 만개시기
클립보드에 데이터를 복사하는 방법은 크게 execCommand API를 사용하거나 ClipboardAPI를 사용하는 두 가지 방법이 존재한다. ClipboardAPI는 execCommand API보다 최신 스펙으로, 아직 지원되지 않는 브라우저가 비교적 많은 편이다. 그 외에 클립보드 복사 기능을 지원하는 라이브러리인 clipboard.js 는 폭 넓은 브라우저를 지원한다. execCommand API 복사할 메시지는 input이나 textarea에 존재해야하므로, element를 생성해서 복사하고 제거하는 방식으로 해야한다. var textarea = document.createElement('textarea'); textarea.value = 'message'; // 복사..
HTML에서 SMS 문자 보내기는 굉장히 쉽게 되어 있다. 다음 스크립트를 a태그의 href 속성에 넣어주거나, javascript를 이용해 location.href = [스크립트]를 적어주면 된다. (받을 번호는 생략이 가능하다) 안드로이드 sms:받을번호?body=보낼메세지 IOS sms:받을번호&body=보낼메세지 한번에 사용하려면 'sms:' +(checkMobile() === 'ios' ? '&' : '?') + 'body=' + message checkMobile 함수는 다음과 같다 function checkMobile() { var varUA = navigator.userAgent.toLowerCase(); //userA..
레플리케이션 컨트롤러는 쿠버네티스 프로젝트 초기부터 존재했던 가장 기본적인 컨트롤러로써, 파드가 스펙과 동일하지 않게 존재할 경우 스펙과 동일한 상태가 되도록 관리합니다. 지금은 레플리케이션 컨트롤러보다 레플리카세트를 사용하고, 앱의 배포에는 디플로이먼트를 사용하는 것이 추세입니다. 차이점 셀렉터 레플리케이션 컨트롤러는 등호 기반이므로 레이블을 선택할 때 같은지(=) 다른지(!=)만 비교합니다. 레플리카세트는 집합 기반으로써 in, notin, exists 같은 연산자를 지원합니다. rolling-update 레플리케이션 컨트롤러는 rolling-update 옵션을 사용할 수 있지만 레플리카세트는 사용할 수 없습니다. 레플리카세트는 디플로이먼트를 통하여 rolling-update를 지원합니다.
클러스터 검증 Sonobuoy 자체 호스팅 클러스터를 관리하거나 관리형 서비스를 사용 중이지만 쿠버네티스가 제대로 구성되어 있는지 최신 상태인지 확인하기 위해서 쿠버네티스 적합성 테스트를 진행할수 있다. K8Guard 쿠버네티스 클러스터의 일반적인 문제를 확인하고 잘못된 부분을 수정하거나 해당 문제에 대한 알람을 보낼 수 있는 도구이다. 프로메테우스와 같은 모니터링 시스템에서 수집할 수 있는 메트릭을 제공하여 정책을 위반하는 디플로이먼트 개수, 쿠버네티스 API 응답 성능 등을 모니터링 할 수 있다. Copper 쿠버네티스 매니페스트를 검사하는 도구로 일반적인 문제 사항을 플래그하거나 사용자 지정 정책을 적용한다. Cooper는 검증 규칙과 정책을 표현하기 위한 도메인 특화 언어(DSL)을 제공한다. 예..
인그레스는 서비스 앞에 존재하는 일종의 로드 밸런서이다. 쿠버네티스의 서비스는 L4 레이어로 TCP 단에서 Pod들을 밸런싱하기 때문에 TLS나, VirtualHost와 같이 여러 호스트명을 사용하거나 호스트명에 대한 라우팅이 불가능하고, URL Path에 따른 서비스간 라우팅이 불가능하다. MSA 환경에서는 하나의 어플리케이션이 하나의 URL로 매핑되는 경우가 많은데, 이를 위해 MSA 서비스간의 라우팅을 하기 위해서는 API 게이트웨이를 사용하는 경우가 많다. 이 경우에는 API 게이트웨이에 대한 관리포인트가 생기기 때문에, URL 기반의 라우팅 정도라면 L7 로드밸런서로 해당 기능을 제공한다. 쿠버네티스에서 HTTP(S)기반의 L7 로드밸런싱 기능을 제공하는 컴포넌트를 Ingress라고 한다. ap..
데몬셋 각 파드마다 동일한 로깅 에이전트를 가지고 있으면 각 노드에 중복으로 존재할수 있기때문에, 각 노드마다 실행이 필요한 단일 레플리카의 파드가 있다면 데몬셋을 이용하면 된다. 주로 로그 수집기나, 노드를 모니터링하는 데몬 등에 사용된다. .spec.updateStrategy.type 데몬세트/스테이트풀셋의 파드를 업데이트할때 OnDelete와 RollingUpdate 중 선택할 수 있다. 기본 값은 RollingUpdate이나, 쿠버네티스 1.5 이하 버전에서는 OnDelete가 기본 값이다. RollingUpdate는 템플릿을 변경했을때 바로 변경되지만 OnDelete는 파드를 직접 제거해야 새로운 버전의 파드가 생성된다. .spec.updateStrategy.rollingUpdate.maxUna..
쿠버네티스는 Pod를 추가 생성할때 Pod를 적정 node에 배치하기 위해 많은 것을 고려하고 스케줄링한다. 파드가 특정 노드에 선정되기까지 크게 세가지 필터의 절차를 순차적으로 가진다. 볼륨 필터 리소스 필터 토폴로지 필터 볼륨 필터 Pod를 생성되고자 하는 디스크 볼륨에 대해서 Node가 지원할 수 있는지를 확인하고 마운트 되는 볼륨이 충돌이 일어나지 않는지 확인한다. 기본 클라우드 제공자를 이용할 경우, 규칙과 충돌을 일으키지 않고 attach 할 수 있는지 확인한다. Node Affinity를 이용하여 특정 노드에만 지정되도록 하는 추가적인 볼륨 토폴로지 제한이 있는지 확인한다. 리소스 필터 Pod를 배포할만한 충분한 리소스(CPU,Memory,Disk)를 특정 노드가 가지고 있는지 확인하는 단계..
쿠버네티스에서 레이블과 어노테이션은 모두 key-value 형식으로 메타 데이터를 제공한다는데서 동일함을 가집니다. 그렇다면 두 기능의 차이점에 대해 알아보도록 하겠습니다. 레이블 (Label) 가장 큰 차이점은 레이블은 쿠버네티스 리소스를 식별한다는 것입니다. 그로인해 레이블은 서비스 셀렉터와 같이 관련된 리소스 그룹을 지정하는데 사용할수 있습니다. 또한 키와 값의 구조가 제한되어 있기때문에 최적화 된 데이터 구조와 알고리즘을 사용하여 쿼리를 빠르게 평가할 수 있습니다. 레이블의 키와 값 구조에 대한 제한 어노테이션 (Annotation) 어노테이션은 비식별 정보이며 쿠버네티스 내부에서 사용할수 없습니다. 하지만 헬름과 같은 외부 툴이나 라이브러리에서 참조하여 사용할수 있습니다. 어노테이션의 양이 크더..