kubernetes

    DB Pod 생성하기

    📌 목표 Kubernetes Cluster에 DB Pod를 띄워보자 ! MySQL을 사용하는.. SpringBoot의 백엔드와 연결하기 위해.. 먼저 준비물 ! Deployment Secret Persistent Volume (PV) Persistent Volume Claim (PVC) 위 것들이 왜 필요한지는 직접 매니페스트 파일을 작성하면서 알아보자 ▪︎ DB Deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: db-mysql labels: app: db-mysql spec: replicas: 1 selector: matchLabels: app: db-mysql template: metadata: labels: app: db-my..

    Jenkins Kubernetes Manifest Deploy

    👀 Epilogue 현재 프로젝트에 적용할 CD 파이프라인 소개 도커 이미지 빌드 도커 이미지 Docker Hub Registry에 Push Kubernetes Deployment Manifest 파일에 도커 이미지 태그 수정 ArgoCD가 수정 사항을 감지하여 새로 Push 된 Docker Image를 가지고 배포를 진행한다. 이로써 GitOps 환경이 구축이 된다. 진짜 역대급으로 힘들었고 시간 많이 잡아먹었던 파이프라인 Stage 왜냐고 물으신다면 이 빌드 숫자를 보아하니..^^ ⚡ Leggo Jenkinsfile environment{ ... gitToken = credentials('github-repo-access-token') } ... stage('Kubernetes Manifest Upd..

    Jenkins 환경 설정 및 빌드 테스트

    📌 목표 젠킨스를 설치했으니 필요한 환경설정 구성 및 빌드 테스트를 진행해보고자 한다 ! ⚡ Leggo 필요한 플러그인 설치 및 확인 Kubernetes, GitLab, Webhook.. 웬만한 사전 설정은 Helm 파일을 통해 미리 구성이 된 상태인 것 같아 딱히 만질 것은 보이지 않았다. 일단 하나는 기억하면 좋을 것이 있어 가져와 보았다. # of executors 동시에 배포 가능한 스레드 수를 의미하며 ‘0’은 동시에 여러 배포가 진행되지 않도록 하는 설정이다. 테스트 빌드 스크립트를 작성하여 빌드 잡을 만들어보자 Pipeline을 선택해준다. FreeStyle : Jenkins 자체 GUI를 활용해서 Flow 정의 장점 : 쉽게 접근 가능 단점 : 제한적인 커스터마이징 Pipeline : 코드..

    Jenkins Helm 설치

    📌 목표 Helm을 사용해서 Jenkins를 Kubernetes 클러스터 환경에 구축해보자 ! ⚡ Leggo Helm 설치 for Mac OS $ brew install helm helm repo 추가하기 $ helm repo add jenkins $ helm repo update jenkins 설정 파일인 values.yaml 받기 $ helm show values jenkins/jenkins > jenkins-values.yaml jenkins namespace 생성 후 jenkins chart 설치 # Helm 3 $ helm install [RELEASE_NAME] jenkins/jenkins [flags] $ kubectl create namespace jenkins $ helm install ..

    [NKS] Ingress 생성

    ⚠️ NKS(Naver Kubernetes Service) 환경에서 진행하였습니다. ⚠️ ▪︎ Ingress Service vs. Ingress Service는 트래픽을 Pod에 여러 타입으로 전달 (L4) ClusterIP, NodePort, LoadBalancer Ingress는 외부의 HTTP/HTTPS 트래픽 요청을 규칙에 따라 Service에 전달 (L7) Kubernetes에서 Ingress 생성 시 ALB Ingress Controller을 통해 LoadBalancer 인스턴스 생성 후 연동 Ingress Rule에서 설정한 Service의 NodePort를 포트 값으로 Target 그룹을 생성하고 LoadBalancer 인스턴스에 등록한다. ▪︎ ALB Ingress Controller 현..

    [NKS] NodePort / LoadBalancer 서비스 생성

    ⚠️ NKS(Naver Kubernetes Service) 환경에서 진행하였습니다. ⚠️ ▪︎ NodePort 타입으로 서비스 생성 및 접속 NodePort 타입으로 서비스를 생성해보자 ! apiVersion: v1 kind: Service metadata: name: cn-app-svc-n spec: selector: app: cn-app ports: - port: 8080 targetPort: 8080 type: NodePort 서비스 생성 확인 후 할당된 NodePort(31374) 확인 ! 노드의 IP 확인 음.. Node IP + NodePort로 접속을 시도했는데.. 과묵하구먼.. 🚨 트러블 슈팅 1. 포트 지정 문제 ? 처음에는 ‘파드에 포트를 잘못 지정해주고 타겟 포트랑 일치가 안돼서 그런..

    [NKS] Deployment 생성

    ⚠️ NKS(Naver Kubernetes Service) 환경에서 진행하였습니다. ⚠️ ▪︎ Deployment 생성 나에게 할당된 네임스페이스가 잘 있는지 확인한다. 네임스페이스에 deployment 생성 ! apiVersion: apps/v1 kind: Deployment metadata: name: cn-app-dpy labels: app: cn-app spec: replicas: 3 selector: matchLabels: app: cn-app template: metadata: labels: app: cn-app spec: containers: - name: cn-app image: uh2959/cn-action resources: limits: memory: "512Mi" cpu: "500m..

    RBAC 설정

    ▪︎ RBAC ? 💡 RBAC : 역할 기반 액세스 제어 (Role Based Access Control) 누가(주체), 무엇을(동사), 어디에(네임스페이스)를 실행할 수 있는지 결정하는 액세스 관리 형식 사용자 이름으로 액세스 권한을 부여하던 기존 ABAC에서 발전한 형태 💡 ABAC : 속성 기반 액세스 제어 (Attribute Based Access Control) K8s Service 클러스터 생성 시 클러스터를 생성한 Sub Account와 Root 계정은 클러스터 RBAC system:masters 그룹에 자동으로 설정된다. 클러스터 사용 권한을 IAM 유저에게 부여하려면 kube-system 네임스페이스에 ncp-auth ConfigMap을 등록해야 한다. ⭐️ 목적 각 Sub Account..

    K8s Service 인증

    NCP K8s Service는 ncp-iam-authenticator를 통해서 IAM 인증을 제공한다. IAM 인증을 통해서 kubectl을 사용하기 위해 ncp-iam-authenticator를 설치하고 kubectl 설정 파일을 수정하여 이를 인증에 사용하도록 한다. ▪︎ ncp-iam-authenticator 설치 (for macOS) 1. Object Storage에서 ncp-iam-authenticator 바이너리를 다운로드 $ curl -o ncp-iam-authenticator 2. 바이너리에 실행 권한 추가 $ chmod +x ./ncp-iam-authenticator 3. $HOME/bin/ncp-iam-authenticator를 생성하고 $PATH에 추가 $ mkdir -p $HOME/..

    NKS Cluster 생성

    ▪︎ 신청 및 생성 Service - Kubernetes Service - Clusters 생성하기 요금 잘 계산한 후에 원하는 목적에 맞는 서버 스펙으로 노드풀 설정 인증키 생성 및 다운로드 클러스터 생성 스펙 리뷰 생성중 〰️ 생성하는 동안 사용자 로컬에서 클러스터 제어를 위한 kubectl 설치 # Homebrew 패키지 매니저를 사용하고 있는 macOS인 케이스 # kubectl 설치 $ brew install kubectl # 설치 버전 확인 $ kubectl version --client 생성 성공 !