
Git을 활용한 쿠버네티스 배포 컨셉 GitOps는 2017년 OpenGitOps 단체에서 발표한 개념으로 Git을 통해 k8s Manifest 파일을 관리하여 seamless 하게 Time to market을 목표로 운영하자는 개념이다. k8s는 yaml 같이 Pod, Deployment 등 모든 리소스를 Manifest 기반의 '선언적 코드'를 명시해 배포한다는 특징이 있다. 또한 git은 파일들에 대해 형상관리를 해준다는 측면에서 Manifest 파일들에 대한 버전을 관리할 수 있다. 즉, k8s 오브젝트들은 모두 Manifest로 관리된다는 특징을 기반으로 Manifest 파일에 대한 생성, 삭제, 변경 등에 대한 형상 관리를 git과 함께 함으로써 변경이력을 관리하자는 컨셉이다. GitOps의 ..

웹 서비스 가용성(Availability) 가용성이란 서버와 네트워크 등의 시스템이 정상적으로 사용 가능한 정도를 의미한다. 즉, 서비스가 다운되지 않고 정상적으로 유지할 수 있는 능력을 의미한다. cf. High Avaliability(HA) 고가용성 시스템을 위한 대표적인 방법으로 시스템 확장과 시스템 이중화가 있다. (Scale Up/Down, Scale Out/In) 성능테스트 (Performance Test) 성능테스트는 시스템의 '고가용성을 위해' 병목지점과 같은 성능 이슈를 찾는 테스트이며 성능테스트의 대표적인 유형으로 '부하테스트(load test)'와 '스트레스 테스트(stress test)'가 있다. 성능 테스트는 좀 더 추상적인 개념이다. 1) 부하테스트 (Load Test) - 부하..

Kustomize kustomize는 쿠버네티스에서 오브젝트들의 Manifest들을 사용자가 원하는 방식대로 변경해서 쿠버네티스 환경에 배포할 수 있도록 하기 위한 목적으로 사용되는 플러그인이다. 과거에는 바이너리 파일을 다운로드해서 kubectl과 연동했다고 한다. 하지만 쿠버네티스 1.13 버전부터는 kubectl 커맨드의 기본 플러그인으로 자리 잡았다. kustomize가 사용되는 대표적인 예시는 CI/CD 파이프라인 관리이다. (예를 들어, 애플리케이션의 Manifest 파일을 수정하여 GipOps 기반의 변경 사항을 발생시킬 때) 대표적인 기능 4가지 1) 리소스 집합을 구성하고 사용자 정의 - Manifest 파일들을 그룹으로 관리하고 한번에 실행, 삭제 등의 관리 기능 1) 원격에서 kust..

Apache Commons DBCP 2.9 - 아파치의 커넥션 풀 오픈소스인 Commons DBCP는 BasicDataSource라는 타입으로 DataSource를 제공한다. - 커넥션 풀 및 DataSource의 기본 개념이 필요하다면 포스팅을 참고해 주시길 바란다. 커넥션 풀 자료구조: LinkedBlockingDeque DBCP2 기준으로 커넥션 풀은 LinkedBlockingDeque 타입의 객체로 관리된다. 아파치가 커넥션 풀 구현체는 덱 기반으로 한 이유는 'lifo' 설정 때문이다. 커넥션 풀 설정 값에 lifo라는 프로퍼티가 있는데, 이 값을 true로 할 경우 stack 기반으로, 그렇지 않을 경우엔 Queue 기반으로 동작한다. LinkedBlockingDeque의 요소는 Node 타입..

배열 import ( "fmt" "time" ) func main() { var arr [5]string arr[0] = "el1" arr[1] = "el2" fmt.Println(arr[0]) // el1 fmt.Println(arr) // [el1 el2 ] var dates [3]time.Time dates[0] = time.Unix(1257894000, 0) fmt.Println(dates[0]) nums := [3]int{3, 9} fmt.Println(nums) // [3 9 0] fmt.Println(len(nums)) // 3 } - 고정 길이를 가지기 때문에 선언 시 크기를 할당해야 함 - 변수와 마찬가지로 := 키워드를 통해 선언 및 초기화를 하고 초기화값은 {}로 묶는다. (자바와 비..

함수 1. 기본 구조 func AplusB(a int, b int) int { return a + b } func PrintAplusB(a int, b int) { fmt.Print(a + b) } - 다른 언어와 다르게 타입의 위치만 반대로 된 형태이다. 2. 다중 반환 함수 func AcalB(a int, b int) (int, int, int) { return a + b, a - b, a * b } func main() { puls, minus, multi := AcalB(1032, 3124) fmt.Print(puls, minus, multi)// 4156 -2092 3223968 } - 반환 값이 2개 이상일 경우엔 return type을 괄호로 묶는 것은 필수이다. func AcalB(a in..

Golang의 대표적인 특징 5가지 - 컴파일 언어 - 간결한 코드 - 미사용 메모리 자동 해제(GC) - 편리한 동시성 코드 작성 - 멀티코어 프로세서 지원 package go파일은 자바와 마찬가지로 패키지로 시작한다. 모든 Go 파일은 반드시 하나의 package를 포함해야 한다. main 패키지는 특수한 패키지로 간주된다. main 패키지는 프로그램이 시작하는 코드가 포함된 패키지를 의미한다. 대부분 다른 언어와 마찬가지로 import를 통해 다른 패키지를 가져올 수 있다. 이때 모든 패키지를 한 번에 다 가져오면 프로그램이 커지고 느려지기 때문에 필요한 패키지만 가져와야 한다. (실제 import 한 패키지는 컴파일 타임에 가져온다.) 자바와 다르게 go에서 import 해 온 함수를 사용할 때에..

k8s 클러스터 상태 - worker 1, 2로 총 두 개 사용 - worker1 IP: 10.100.0.101 / worker2 IP: 10.100.0.102 - 각 워커에 nginx pod를 deployment controller로 띄운 상태 (label = app: webui) - app: webui label에 대한 NodePort Service 구동 완료 - nginx Pod의 index.html의 컨텐츠를 해당 Pod가 띄워져 있는 노드 번호로 설정한 상태 - 포트 충돌 여지를 줄이기 위해 NodePort definition(yaml)에서 nodePort 키 값 주석처리 - ClusterIP 10.100.100.200 / NodePort 32096 사용 (NodePort는 k8s에서 자동 생성..
- Total
- Today
- Yesterday
- Controller
- Stream
- RDB
- github actions
- go
- Linux
- GitOps
- 카프카
- Non-Blocking
- ubuntu
- LFCS
- 코틀린
- argocd
- golang
- Java
- kafka
- jvm
- spring
- docker
- helm
- Kubernetes
- container
- 컨트롤러
- rolling update
- db
- 쿠버네티스
- CICD
- ci/cd
- 우분투
- K8s
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |