Technology[DevOps](16)
-
Kubernetes 환경 구축 ( Ubuntu ) - 6
[ 이번 게시글에서 구현할 사항 ]- 단일 PC인 환경에서 docker, kind 를 이용해 쿠버네티스 환경을 구축합니다.KindKind 는 Docker Container를 노드(control-plane / worker-node)로 사용하여 로컬 Kubernetes 클러스터를 실행하기 위한 도구입니다.도커 컨테이너 내부의 kubectl을 외부 kubectl로 연결하여 컨테이너 외부(Host)에서도 kubectl로 쿠버네티스 환경을 조작할 수 있도록 세팅해줍니다. kind의 기본 디자인은 아래와 같습니다.1. kind 설치 * Kind 설치 전에 Docker는 필수적으로 미리 설치가 되어 있어야 합니다.curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-l..
2024.09.04 -
Kubernetes 환경 구축 ( Ubuntu ) - 5
[ 이번 게시글에서 구현할 사항 ] - GitHub Actions 를 이용해 CI/CD 환경을 구축합니다. - Reusable Template 을 만들어 여러 Repo 간 Actions 코드를 공유하여 새로운 Repo 생성 시 CI/CD 환경 구축을 단순화합니다. 1. GitHub > Actions > New workflow를 선택합니다. ( 처음 설정하는 경우 Actions 탭만 누르면 됩니다. ) 2. 검색바에 gradle 검색 후 Java with Gradle 을 선택합니다. 3. 생성된 gradle.yml 파일을 수정합니다. # This workflow uses actions that are not certified by GitHub. # They are provided by a third-par..
2024.01.20 -
Kubernetes 환경 구축 ( Ubuntu ) - 4
[ 이번 게시글에서 구현할 사항 ] - Ingress Nginx Controller 적용해서 MSA 환경에서 적합하도록 구현합니다. - 무중단 배포 방식의 Rolling Update를 구현합니다. 1. 별도로 수정하지 않는 이상 git에 배포되어있는 Ingress Nginx Controller의 default namespace가 ingress-nginx이므로 모든 pod와 service, hpa의 namespace를 ingress-nginx로 수정합니다. ... metadata: name: ... namespace: ingress-nginx ... 2. Ingress-nginx-controller service를 제외한 모든 service의 type을 ClusterIP로 변경합니다. ... spec: t..
2024.01.17 -
K6를 이용한 트래픽 성능 테스트
[ 이번 게시글에서 구현할 사항 ] - 트래픽을 어느정도까지 버틸 수 있는 지 K6를 이용해 트래픽 성능 테스트를 합니다. 1. 테스트할 JS 파일을 작성합니다. import http from 'k6/http'; import { check, group, sleep, fail } from 'k6'; export let options = { stages: [ // 테스트 단계, 아래에 설정된대로 테스트가 진행된다. { duration: '1m', target: 100 }, // 먼저 1분 동안 VUser 1에서 100까지 서서히 올린다. { duration: '3m',target: 100 }, // Vuser 100에서 3분간 유지한다. { duration: '1m', target: 200 }, // 다시 ..
2024.01.09 -
Kubernetes 환경 구축 ( Ubuntu ) - 3
[ 이번 게시글에서 구현할 사항 ] - springboot service를 kubernetes pod로 생성하고 해당 서비스를 호출할 수 있도록 NodePort service를 등록합니다. - AutoScaling을 설정합니다. 1. namespace를 생성합니다. kubectl craete namespace [만들고 싶은 namespace 이름] 2. springboot service를 kubernetes pod로 생성하는 deployment.yaml 파일을 작성합니다. apiVersion: apps/v1 kind: Deployment metadata: name: test namespace: [생성한 namespace 이름] labels: app: test spec: replicas: 4 revisio..
2024.01.09 -
Kubernetes 환경 구축 ( Ubuntu ) - 2
[ 이번 게시글에서 구현할 사항 ] - SpringInitializr을 이용해 SpringBoot 3.0 기반으로 프로젝트 생성 후 JAR파일로 Build하고 Docker Image로 배포합니다. 1. gradle bootJar 작업을 위해 build.gradle 파일에 아래 코드를 추가합니다. jar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE manifest { attributes 'Version': version, 'Main-Class': '[SpringBoot main 클래스의 경로]' } from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } } 2..
2024.01.06