반응형

분류 전체보기 140

스테이트풀셋(StatefulSet) 이란 ?

테이트풀셋(StatefulSet) 이란 ?스테이트풀셋(StatefulSet)은 Kubernetes의 워크로드 API 중 하나로,항상 동일한 상태의 애플리케이션을 배포하고 관리하기 위한 리소스 입니다.디플로이먼트(Deployment)와 비슷하게, 동일한 컨테이너의 스펙을 기반으로POD를 관리 합니다.다만, 디플로이먼트(Deployment)는 POD가 재스케줄링 되면, 이전 파드가가지고 있는 내용이 사라지지만,스테이트풀셋(StatefulSet)은 재 스케줄링 되어도 이전의 POD와 동일한 상태를유지합니다.즉, 스테이트풀셋(StatefulSet)은 POD의 고유성(identity)과 순서를 보장하며,데이터베이스, 분산 파일 시스템, 메시지 큐와 같은 상태를 저장해야 하는 애플리케이션을배포할 때 주로 사용됩니다..

Consul 삭제 후에도 webhook 에러 발생

k8s 클러스터에서 Consul 을 설치하고 삭제를 했는 데도, 아래와 같은 에러가 발생해서 무엇이 문제 인가 확인 해본 결과 Error creating: Internal error occurred: failed calling webhook "consul-consul-connect-injector.consul.hashicorp.com": failed to call webhook: Post "https://consul-consul-connect-injector.consul.svc:443/mutate?timeout=10s": service "consul-consul-connect-injector" not found 아래 이미지에서와 같이 Webhook이 삭제가 제대로 되질 않아서 발생하는 문제였습니다. 따라..

쿠버네티스 2024.12.31

Blue - Green 배포 실습 해보기

이번에 해볼 것은 Blue - Green 배포를 직접 해보겠습니다. 사전 준비 사항Github Action 사용법k8s 클러스터 환경Helm 설치 목표Nginx 이미지를 사용해서 Blue - Green 배포 동작 방식을 확인 해보도록 하겠습니다. 이제 실습을 해보도록 하겠습니다.1. ArgoCD, ArgoCD-rollout 설치Helm 차트를 통해 설치를 진행 해보도록 하겠습니다.helm repo add argo https://argoproj.github.io/argo-helmhelm install argocd argo/argo-cd --version 7.7.10helm install argo-rollout argo/argo-rollouts2. Nginx 이미지 커스텀제가 원하는 index 내용을 보여주..

Pipeline 2024.12.20

Github Action 원하는 환경에서 Workflow 작업 해보기

이번에 해볼 것은 원하는 환경에서 Workflow 를 실행 해보도록 하겠습니다. ex) 노트북, 가상 머신 등Self-hosted runner 설정 1. Github 레포지터리 접속 2. Settings -> Actions -> Runners -> New-self-hosted runner 3. 실행 환경의 OS 선택(저는 노트북의 OS가 Window여서 Window로 선택을 하였습니다.)  Download 방법에 나온 명령어를 입력하여 다운로드 해주면 됩니다. 마지막으로 Configure 에 나온 방법 대로 명령어를 실행 해주면 self-hosted 환경 설정이 완료됩니다. 4. YAML 파일에서 실행환경을 self-hosted로 지정 ex)name: Example Workflow on: push:..

Pipeline 2024.12.19

Github Action 이란 ?

Github Action 이란 ?Github에서 제공하는 CI/CD(Continuous Integration/Continuous Deployment) 플랫폼 입니다.Github Action을 사용하여 빌드, 테스트 및 배포 파이프라인을 자동화 할 수있습니다. 바로 실습을 통해 좀 더 자세히 알아보겠습니다.먼저 Github Action의 Workflow를 실행하기 위해서 .github/workflow 라는 디렉터리가 필요합니다. 해당 디렉터리 안에 Workflow를 돌리기 위한 YAML 파일을 정의합니다. 따라서 repository를 생성하고 해당 repository에서 디렉터리를 생성 해줍니다. 폴더 tree는 아래와 같습니다..githubㄴ workflows ㄴ workflow를 정의할 YAML 파..

Pipeline 2024.12.19

(Ubuntu) sudo 명령어 패스워드 입력 없이 사용하기

이번에는 Ubuntu 서버에서 sudo 명령어를 사용할 때, 패스워드를 입력하지 않고 사용할 수 있도록 설정 해보도록 하겠습니다.  아래의 명령어를 입력해줍니다.$ sudo visudo 그러면 nano 편집기로 열릴 텐데, 맨 아래로 내려가서 내용을 추가해줍니다. ALL=NOPASSWD: ALL 이렇게 추가해주고 난 후, Ctrl+o -> Enter -> Ctrl+x 위 순서대로 키를 입력하여 nano 편집기를 나와줍니다. 이제 sudo 명령어를 입력하여도 패스워드를 요구하지 않게됩니다. 감사합니다.

Linux 2024.12.11

내 노트북(Window) <-> 가상 머신(Ubuntu) 서버와 SSH 패스워드 없이 연결

이번에 해볼 것은, 제 노트북과 가상머신의 서버와 SSH 연결을 패스워드 없이 해보도록 하겠습니다. 내 노트북(Window) 우선 명령프롬프트를 켜줍니다. 이제 "ssh-keygen" 명령어를 입력해줍니다. 그러면 아래 이미지와 같이 나오는데 그냥 Enter 를 계속 입력해주면 됩니다.  그러면 id_ed*.pub 키가 생기는데, 해당 Key의 내용을 가상머신 서버에 입력해줍니다. 가상머신(Ubuntu)가상머신에 접속을 해서 "사용자 밑에/.ssh" 폴더를 생성해줍니다. 이게 무슨 뜻이냐면, 노트북에서 -> 가상머신에 SSH 접속을 할 때, root 유저로 접속을 할 것이면, "/root/.ssh"  test라는 유저로 SSH 접속을 하고 싶으면 "/home/test/.ssh"  저 같은 경우에는 roo..

Linux 2024.12.09

쿠버네티스 Deployment 란 ?

Deployment 란? 애플리케이션을 선언적 방식으로 관리하고,업데이트와 확장을 효율적으로 수행할 수 있게 도와주는 리소스입니다.Deployment는 애플리케이션의 Pod와 해당 Pod를 관리하는 ReplicaSet을 생성하고 관리합니다.이를 통해 사용자는 안정적으로 애플리케이션을 배포하고 관리할 수 있습니다. 즉, Deployment는 POD의 배포와 상태를 더 쉽고 안정적으로관리 하는 리소스라고 볼 수 있습니다.Deployment의 구조아래 그림과 같이 Deployment에서 POD는 ReplicaSet이 관리를 합니다. ReplicaSet은 업그레이드된 ReplicationController 라고 생각하시면 됩니다. 예시로 Deployment를 생성하기 위해 작성한 Yaml 파일로 구조를 알아보면..

쿠버네티스 Downward API 란?

Downward API 란?애플리케이션이 쿠버네티스 리소스에 대한 메타데이터 및 상태 정보를액세스할 수 있도록 지원하는 기능입니다.이를 통해 애플리케이션이 쿠버네티스 환경에서 동적으로 설정을 수정하거나,Pod 및 컨테이너의 상태를 확인할 수 있습니다. 즉, Downward API는 애플리케이션이 쿠버네티스 환경의 메타데이터나, 리소스 정보를 동적으로 활용해야할 때 주로 사용됩니다. Downward API를 사용하여 POD에 전달 할 수 있는 메타 데이터 종류는 아래와 같습니다.파드의 이름파드의 IP 주소파드가 속한 네임스페이스파드가 실행 중인 노드의 이름파드가 실행 중인 서비스 어카운트 이름각 컨테이너의 CPU와 메모리 요청각 컨테이너의 CPU와 메모리 제한파드의 레이블파드의 어노테이션  실습을 통해 좀..

쿠버네티스 ConfigMap, Secret 이란 ?

ConfigMap 이란?애플리케이션에서 필요한 환경 변수나 설정 파일들을 관리 할 때 사용되는 리소스 입니다.ConfigMap을 사용하면, 애플리케이션 배포 시 환경 설정이나 구성 값을 쉽게 적용하고 수정할 수 있습니다.Secret 이란?ConfigMap 처럼 애플리케이션에서 필요한 환경 변수나 설정 파일들을관리 할 때 사용되는 리소스 이지만, 민감한 정보를 안전하게 관리하기 위해 사용되는 리소스 입니다.기본적으로 Base64로 인코딩 됩니다.또한, Secret은 Secret에 접근하는 POD가 있는 노드에서만 생성이 됩니다.노드 자체적으로도 시크릿을 항상 메모리에만 저장하고물리 저장소에 기록되지 않도록 합니다. ConfigMapSecret민감하지 않고 일반 설정 데이터는 ConfigMap을 사용민감한 ..

반응형