Container (16) 썸네일형 리스트형 [ Kubernetes ] Controller - ReplicaSet, Deployment > Controller의 역할Auto HealingPod나 Node에 문제가 생겨 에러가나거나 죽을 경우, Controller가 새로운 Pod나 Node를 생성하여 장애를 처리 Auto ScalingPod에 급격한 부하로 인해 성능이 부족할 경우, 자동으로 Pod를 더 생성한다. Software UpdatePod에 대한 version을 업그레이드 해야할 경우, Controller를 통해 한번에 쉽게 할 수 있고 rollback도 가능하다. Job일시적으로 Pod를 생성하여 업무를 처리하고, 이후 Pod를 삭제하는 역할을 하여 자원을 효율적으로 사용 할 수 있도록한다. > ReplicaSet Template생성할 pod에 대한 정의. 이를 토대로 신규생성시 내용이 반영됨. Replicas유지할 pod에 대.. [ Kubernetes ] ArgoCD 빠르게 레벨업 하기 > ArgoCD 아키텍쳐 > ArgoCD 설치 및 배포 (kubectl, helm) - Argo 참고 link더보기▶ Argo Site : https://argoproj.github.io/▶ Argo Github : https://github.com/argoproj ArgoCD(Ver. 2.9.3) 설치 (k8s v1.25~28 지원) - Docs : https://argo-cd.readthedocs.io/en/stable/- Artifacthub : https://artifacthub.io/packages/helm/argo/argo-cd/5.52.1ArgoCD Image Updater(Ver. 0.9.2) 설치- Docs : https://argocd-image-updater.readthedocs.i.. [ Kubernetes ] 배포 파이프라인 구축시 고려해봐야 할 부분 1. 중요 데이터 암호화 관리- Dockerhub 접속정보 (config.json)와 Kubernetes 인증서에 대한 보안문제- Jenkins credential로 보완- script 종료 후 dockerhub 로그아웃- docker-credential-helpers를 이용하여 암호화 2. image tag 관련- 개발환경 : 잦은 배포, versioning 무의미## 일반적인 개발환경image : api-tester:latest # 가장 최신버전으로 image를 가져오고자 latest를 사용하지만, "helm 배포해도 업그레이드가 안되는경우" 가 될 수 있기때문에 주의 해야함pullPolicy :Always # 항상 dockerhub에서 image를 가져옴, hub 미연동시 Pod 생성 에러## 버전.. [ Kubernetes ] Helm과 Kustomize 비교하며 사용하기 - Kustomize 배포 > 패키지 구조 비교 > 배포 파이프라인 구축 후 마주하게 되는 고민들 1. Kustomize 배포 시작하기 - pipeline 생성 및 config 설정Enter an item name에 [2222-deploy-kustomize] 입력Copy form에 [2221-deploy-helm] 입력[OK] 버튼 클릭Definition > SCM > Branches to build > Additional Behaviours > Sparse Checkout paths > Path : 2222Definition > Script Path : 2222/Jenkinsfile - 저장 후 지금 빌드 실행, 페이지 새로고침 하기 * 최초 실행시엔 매개변수 입력 버튼이 안나옴 [dev, qa, prod]중 dev가 적용됨 .. [ Kubernetes ] Helm과 Kustomize 비교하며 사용하기 - Helm 배포 > 패키지 매니저를 쓰는 이유 > 설치 구성 비교 > 사용 방식 비교 1) Helm(Ver. 3.13.2) 설치 - CI/CD Server에서 helm 설치[root@cicd-server ~]#curl -O https://get.helm.sh/helm-v3.13.2-linux-amd64.tar.gztar -zxvf helm-v3.13.2-linux-amd64.tar.gzmv linux-amd64/helm /usr/bin/helm - 확인 및 템플릿 생성# jenkins 유저로 전환해서 확인[root@cicd-server ~]# su - jenkins -s /bin/bash[jenkins@cicd-server ~]$ helm[jenkins@cicd-server ~]$ helm create api-tes.. [Kubernetes] Jenkins Pipeline Path : 2213Script Path : 2213/Jenkinsfile> 배포전략을 세울 때 고려해야 하는 요소 > 단계별로 배포파이프 라인 구축 > 기초부터 Blue/Green까지 배포 구축 단계 1. Jenkins Pipeline 기본 구성 만들기 - Step 1더보기* 사전 조건- docker hub 계정- github 계정- github에 2개 repo fork 필수ㄴ kubernetes-anotherclass-sprint2 ㄴ kubernetes-anotherclass-api-tester - New View를 만든 후(221) pipeline 생성2211-jenkins_pipeline-step1 - Script 복사*주의: 아래 pipeline script에서 DOCKERHUB_US.. [Kubernetes] 데브옵스 환경 구축 item name : 2121-deployCopy from : 2121-container-build> 전체 설치 순서 > Vagrantfile로 설치 되는 내용 > 설치 시작1. Vagrant 스크립트 실행# Vagrant 폴더 생성C:\Users\사용자> mkdir cicdC:\Users\사용자> cd cicd# Vagrant 스크립트 다운로드C:\Users\사용자\cicd> curl -O https://raw.githubusercontent.com/k8s-1pro/install/main/ground/cicd-server/vagrant-2.3.4/Vagrantfile# Rocky Linux Repo 세팅C:\Users\사용자\cicd> curl -O https://raw.githubuserconten.. [Kubernetes] Component 동작으로 이해하기 1. 주요 컴포넌트 구성 > 유용한 커맨드//resource 확인kubectl api-resources// Cluster 주요 컴포넌트 로그 확인// 주요 컴포넌트 로그 보기 (kube-system)kubectl get pods -n kube-systemkubectl logs -n kube-system etcd-k8s-masterkubectl logs -n kube-system kube-scheduler-k8s-masterkubectl logs -n kube-system kube-apiserver-k8s-master// Master Node 파일 위치// 쿠버네티스 인증서 위치cd /etc/kubernetesls /root/.kube/config// Control Plane Component Pod 생.. [Kubernetes] Application 기능으로 이해하기 - HPA - HPA > behavior : 잦은 스케일링 방지 ㅁ실습 > 부하발생 및 부하확인http://192.168.56.30:31231/cpu-load?min=3// 3분 동안 부하 발생// 개인 PC 사양(core 수)에 따라 부하가 너무 오르거나/오르지 않을 경우 queryparam으로 수치 조정http://192.168.56.30:31231/cpu-load?min=3&thread=5// 3분 동안 5개의 쓰레드로 80% 부하 발생 // default : min=2, thread=10// 실시간 업데이트는 명령어로 확인하는 게 빨라요kubectl top -n anotherclass-123 podskubectl get hpa -n anotherclass-123// Grafana는 Prometheus를 거쳐.. [Kubernetes] Application 기능으로 이해하기 - Service - 서비스 퍼블리싱 : 외부에서 Pod로 트래픽 연결- 서비스 디스커버리 : 내부 DNS를 이용한 Service 이름으로 API 호출- 서비스 레지스트리 : Pod의 IP를 등록/제거 ㅁ 실습 > 1. Pod 내부에서 Service 명으로 API 호출 ( 서비스 디스커버리 )// Version API 호출curl http://api-tester-1231:80/version > 2. Deployment에서 Pod의 ports 전체 삭제, Service tagetPort를 http -> 8080으로 수정 후 Service명으로 API 호출apiVersion: apps/v1kind: Deploymentmetadata: namespace: anotherclass-123 name: api-tester-12.. 이전 1 2 다음