전체카테고리 468

Argo Rollout으로 배포한 Replica도 HPA를 탈까?

문득 Argo Rollout으로 배포한 ReplicaSet이 Deployment와 똑같은 매커니즘으로 HPA 적용을 받는지 의문이 들었다. 일단 공식문서에는 적용된다고 설명이 되있긴 하다. https://argo-rollouts.readthedocs.io/en/stable/features/hpa-support/ HPA - Argo Rollouts - Kubernetes Progressive Delivery Controller Horizontal Pod Autoscaling Horizontal Pod Autoscaling (HPA) automatically scales the number of pods in owned by a Kubernetes resource based on observed CPU ut..

PaaS/Kubernetes 2023.11.21

permission denied on key "vm.max_map_count", ignoring 오류 해결하기

컨테이너로 오픈소스를 배포하다보면 아래와같이 init container에서 권한오류가 발생하는 경우가 종종있다. 특히 ElasticSearch 를 배포하는 경우 자주 발생한다. sysctl: permission denied on key "vm.max_map_count", ignoring ulimit: open files: cannot modify limit: Operation not permitted 이유는 /tmp/scripts/init_sysctl.sh 라는 BootStrap을 만들었는데, 이 Shell이 하려는 일의 권한과 설정된 컨테이너 권한이 안맞아서 발생하는 문제이다. 이를 해결하기 위해 다양한 방법이 있겠지만, 필자의 경우에는 다음의 방법을 사용하였다. initContainer가 정의되어 있..

PaaS/Kubernetes 2023.11.19

SonarQube를 k8s에 컨테이너로 배포해보자

SonarQube는 하위에 여러 오픈소스가 배포된다. PostgreSQL, ElasticSearch 를 포함하여 여러 오픈소스가 install된다. SonarQube 공식사이트에 Docker 기반 배포에 대한 가이드가 있는데, 약간 부실하다. 디테일이 빠져있다. https://docs.sonarsource.com/sonarqube/8.9/setup-and-upgrade/deploy-sonarqube-on-kubernetes/ Deploy SonarQube on Kubernetes Learn how to deploy SonarQube on Kubernetes. docs.sonarsource.com 우선 서두에 언급한 바와 같이 SonarQube는 여러 컨테이너로 구성되어 있는데, 이중 sonarqube -..

PaaS/Kubernetes 2023.11.19

k8s 에서 Database Provisioning시 Permission denied

가끔 HostPath를 쓰거나 PV를 써서 로컬 볼륨을 참조할때 Permission 오류가 뜬다. 이때 확인할 내용은 다음과 같다. 해당 Pod가 Provisioning 되는 Node의 kubelet 및 Docker Runtime 수행 권한이 해당 로컬 볼륨을 쓰기에 충분한 권한인지? 배포중인 StatefulSet / Deployment / Pod 의 제약사항에 securityContext가 정의되어 있는지? 필자의 경우에는 두번째 이슈가 있었고 아래와 같이 runAsNonRoot 와 runAsUser가 세팅되어 있었다. 그래서 로컬볼륨 권한은 그냥 1001:1001로 바꾸어 버렸다. $ chown -R 1001:1001 /data

PaaS/Kubernetes 2023.11.16

KubeScape 란?

KubeScape란 IDE, CI/CD, cluster내부에 적용할 수 있는 Kubernetes관련 오픈소스 플랫폼이다. 여기에는 위험 분석, 보안 규정 준수 및 잘못된 구성 검색이 포함됩니다. DevSecOps 실무자 또는 플랫폼 엔지니어를 대상으로 하는 이 제품은 사용하기 쉬운 CLI 인터페이스, 유연한 출력 형식 및 자동화된 스캔 기능을 제공합니다. Kubernetes 사용자와 관리자의 귀중한 시간, 노력, 리소스를 절약해 줍니다. Kubescape는 클러스터, YAML 파일 및 Helm 차트를 스캔합니다. 여러 프레임워크( NSA-CISA , MITRE ATT&CK® 및 CIS Benchmark 포함 ) 에 따라 잘못된 구성을 감지합니다 . IDE에 적용하는 방법을 소개코자 한다. VSCode 에..

PaaS/Kubernetes 2023.11.15

Kubernetes Resource가 잘 안지워질때

가끔씩 delete force로 해도 안지워 질 때가 있다. 이때 배포한 리소스를 보면 finalizers가 정의되어 있는경우가 있다. 이것은 삭제에 필요한 전제조건으로 이 조건에서 문제가 되는 경우가 가끔있다. 특히 ArgoCD의 Application을 삭제할때 OutOfSync 상태, Deleting 으로 빠져있는 경우가 있다. 이때는 해당 리소스 YAML을 수정해서 metadata.finalizers 를 날려버리자.

PaaS/Kubernetes 2023.11.15

App of Apps 패턴으로 배포하기. 그리고 나의 생각

App of Apps 패턴이란 어떤 규모의 소프트웨어를 구성하는 모듈들을 모아서 Application으로 정의한다. ※ MSA 로 변화하면서 전체 소프트웨어를 구성하는 독립적인 모듈들이 많아 졌다. 사실 각 요소 어플리케이션은 생명주기를 모듈간 의존성 없도록 독립적으로 가져가는게 맞다. 그러기위해서 MSA를 한 것이 아닌가... 근데 초기 Provisioning은 한꺼번에 해줄 필요는 있어서 App of Apps로 하는게 효율적으로 보인다. 이때 Application이란 하나의 Profile 같은것이다. 아래 공식가이드는 Helm을 기반으로 하였는데, ArgoCD는 Helm 관련한 호환성이 있어서 Helm으로 정의한 소프트웨어 배포도 수월하게 할 수 있다. 필자의 생각으로는 App of Apps Repo..

PaaS/CI CD 2023.11.15

Argo Rollout으로 Canary 배포하기

Argo Rollout을 Canary 전략으로 배포를 설명한다. ArgoCD를 통 아래 Github url로 배포한다. https://github.com/armyost/ArgoRollout GitHub - armyost/ArgoRollout Contribute to armyost/ArgoRollout development by creating an account on GitHub. github.com 1차적으로 blue버전으로 rollout을 배포한다. 처음에는 파란색으로만 서비스가 된다. 두번째로 blue를 green 버전으로 변경한 'rollout-canary'를 ArgoCD에서 다시 'Sync'한다. # AS-IS spec: containers: - name: canary-rollouts-demo ..

PaaS/CI CD 2023.11.15