일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- nestjs공부
- 자료구조공부
- 프로그래머스
- 카프카
- 스프링공부
- 자바공부
- 알고리즘공부
- nestjs스터디
- DDD
- Axon framework
- K8S
- 스프링부트공부
- JPA
- 기술공부
- querydsl
- JPA스터디
- JPA공부
- 스프링부트
- Flutter
- 기술면접공부
- 스프링 공부
- 플러터 공부
- 플러터 개발
- 코테공부
- 스프링
- nestjs
- Kafka
- 코테준비
- JPA예제
- JPA 공부
- Today
- Total
목록Infra/[K8S & Docker] (37)
DevBoi
Resource ex. pod의 버전을 어떻게 알수 있을까? kubectl explain을 쓰게 되면, 해당 리소스의 버전을 알수 있다. 예를 들어 Pod가 v1 인지 apps/v1인지 모른다. kubectl explain pod를 하면, 리소스에 대한 버전 정보를 알 수 있다. 또한 yaml에서 - 를 쓰는건 배열형태의 값을 표현하기위한 문법이다. 이건 몰라서 추가로 적어놓는다.
모든 curl 은 jwt나 인증에 대한 과정을 헤더에 포함해야함 H "Authorization: Bearer {Token}" 는 모든 curl 헤더에 공통 적용 필요, 하위 정리 리스트에서는 해당 내용 생략 Api-server가 32769로 열려있다고 가정, 해당 서버 정보는 전 post에서 확인 가능 Pod 생성, 수정 (파일 단위) : curl -k -H "Authorization: Bearer {Token}" -H "Content-type: application/yaml" --data-binary @smithprjPods.yaml https://127.0.0.1:32769/api/v1/namespaces/default/pods 정보 조회 : curl -H "Content-type: applicati..
Secret과 ServiceAccount에 대해서 포스팅하려고한다. 이놈은 느낌만 있고, 어떤거지? 라는 생각을 많이 했다. 그래서 공부를 해봤다. Secret 이란? 시크릿은 비밀번호, Oauth토큰, ssh키 같은 민감한 정보들을 저장하는 용도로 사용한다. 이런 정보들은 컨테이너 안에 저장하지 않고, 별도 보관하였다가. 실제 포드가 실행할때 설정을 통해 컨테이너에 제공해준다. 시크릿 종류 - 내장시크릿 내장 시크릿은 쿠버네티스 클러스터 내부에서 API에 접근할때 사용한다. 클러스터 내부에서 사용되는 계정인 ServiceAccount를 생성하면, 자동으로 관련 시크릿이 만들어진다. 이렇게 만들어진 시크릿을 이용해서, 해당 ServiceAccount가 권한을 가지고 있는 API에 접근할 수 있다. 사용자..
사용자의 요청에 따라서 여러개의 인스턴스, 즉 스프링 프로젝트를 생성해야한다. 또한 이 생성된 여러개의 프로젝트 별로 다른 config 를 전달 해야한다. 1. 스프링 콰츠 생성, 정해진 주기마다 k8s api 호출 2. k8s api를 호출받으면 정해진 pod를 생성(전달받은 값을 기준으로 이름이던 뭐던 유니크하게) 3. 각각의 인스턴스에 spring cloud bus를 활용하여 config 값 전달 (게이트웨이라면 라우팅 정보) 4. spring config 서버는 디비의 값을 보고 인스턴스 별로 다르게 전달 5. 각각의 인스턴스 별로 다른 config 값을 가지고 있는지 확인 이 과정들을 진행할 예정이다. 일단 pod의 를 생성,삭제 하기 위해 api-server와의 통신을 확인해보자 Api ser..
Nginx 에 대한 기술적인 공부는 하였는데 실제 세팅을 해보자 도커 이미지로 해당 Nginx 를 빌드 및 테스트를 해보려고한다. docker pull nginx 를 하고, 이미지를 빌드 및 run 한다. 사실 여기까지는 그냥 도커에 대한... 설정 내용이다. 이제 엔진 엑스에 대한 설정을 공부해보자 /etc/nginx를 들어가면, 여러 파일들이 보인다. 3개의 파일 위주가 중요하다. 1) nginx.conf 해당 파일은 아래와 같이 생겼다. http 블록이 가장 중요하다. 이 블록에서 include .conf파일로 파일들을 읽고, 해당 nginx를 세팅한다. 2) conf.d / default.d 최신 버전에서는 conf.d에 있고 아닌 버전에서는 site-available하위에 있다. 무튼 해당 파일..
Ingress 네트워크는 서비스의 노드들 간에 로드밸런싱을 수행하는 Overlay 네트워크 이다. Ingress네트워크는 도커스웜을 init 이나 join할때 자동으로 생성된다. Docker Swarm에서는 서비스를 외부에 쉽게 노출하기 위해 모든 노드가 ingress라는 가상 네트워크에 속해있다. 서비스에서 포트를 오픈 하면, 모든 노드에서 포트가 오픈되고 어떤 노드에 요청을 보내도 , 실행 중인 컨테이너에 자동으로 전달 한다. 즉, ingress네트워크를 통해 로드 밸런싱이 수행된다. 위 처럼 포트 하나가 열리면 모든 포트가 오픈되고 외부에서 접속할때 하나로 분산 처리가 된다. 실제 운영 레벨에서는 외부에 nginx 또는 haproxy같은 로드밸런서를 둬서 하나의 IP로 전체 스웜 노드를 가르킬 수 ..
Docker Network Docker 컨테이너는 격리된 환경에서 돌아가기 떄문에, 기본적으로 다른 컨테이너와 컨테이너들끼리 통신이 불가능하다. 하지만, 하나의 Docker 네트워크에 연결시키면 서로 통신이 가능해진다. docker network ls 로 현재 생성된 네트워크 목록을 조회할 수 있다. docker 네트워크는 bridge,host,overlay등 목적에 따라 다양한 종류가 있다. bridge :네트워크는 하나의 호스트 컴퓨터 내에서 여러 컨테이너들이 서로 소통할 수 있도록 해준다. host : 네트워크는 컨테이너를 호스트 컴퓨터와 동일한 네트워크에서 컨테이너를 돌리기 위해 사용된다. overlay : 네트워크는 여러 호스트에 분산되어 돌아가는 컨테이너들 간에 네트워킹을 위해서 사용된다. 가..
Docker 개념 Docker 는 개발자와 시스템 관리자가 컨테이너 기술을 사용하여 어플리케이션을 개발, 배포 및 실행하기 위한 플랫폼이다. 일반적으로 리눅스에서 사용되는 컨테이너 기술을 사용하여 응용프로그램을 배포하는 것을 컨테이너화 시켰다고 한다. 컨테이너는 새로운 기술은 아니지만 도커를 통해서 과거보다 편리하고, 간편하게 어플리케이션을 배포하는데 사용된다. 이러한 컨테이너 기술은 아래와 같은 장점이 있다. 유연성 : 복잡한 어플리케이션들도 모두 컨테이너화 할 수 있다. 경량화 : 컨테이너는 호스트 커널을 활용하고 공유한다. 변화관리 편의성 : 업데이트 및 업그레이드를 즉시 배포할 수 있다. 포터블 : 로컬로 구축, 클라우드와 가상화에 배치도 가능, 어디에서나 실행가능하다. 확장성 : 컨테이너 복제본..
Images, Containers, Local Volumes 에 대한 용량이 계속 배포하고 쌓여가면서 점점 불필요한 저장 공간이 많이 발생할떄쯤... 서버가 점점 느리다는 사실 이 발견되었다. docker system df 로, 삭제 시에 얻을수 있는 용량적인 이득을 확인 docker image prune -a 로 현재 실행되고있는 이미지를 제외한 모든 이미지를 삭제해서 용량을 줄여준다. reclaimable 의 데이터는 현재 불필요한 값을 지움으로써 다시 사용할 수 있는 용량을 의미한다고 한다. 무튼 이렇게 서버자체의 용량을 많이 줄여보았다..
Deployment는 쿠버네티스에서 가장 널리 사용되는 오브젝트 이다. ReplicaSet을 이용해서 Pod을 업데이트하고, 이력을 관리하여 롤백 하거나 특정 버전으로 돌아 갈 수 있다. 라는데... 감이 완전히 오지는 않네... 우선 해보자 ReplicaSet과 상당히 유사하며, 심지어 replica를 설정하는 부분도 있다. 템플릿과 같이 스케일 아웃시 어떤 포맷 기준으로 할지도 적어 놓고, 컨테이너에 대한 이름과 이미지도 지정이 되어있다. 이런식으로 하면, deploy에 대한 걸 확인 해 볼 수 있다. 레플리카셋이랑 뭐가다름? 이라고하면 업데이트할 때 다르다고한다. 기존설정에서 이미지 태그를 변경하고 적용해보자 마지막만 보자, 이미지 태그를 v1 -> v2로 변경하고 apply를 하면, 기존걸 삭제하..