전체 글50 [Gitlab] Backup, Restore 이후 500 에러 트러블 슈팅 gitlab-rake gitlab:doctor:secrets VERBOSE=1을 명령어를 통하여, secret 이 현재 secret으로 decoding 할 수 있는지 확인하여, 문제가 있는 프로젝트의 runners_token, runners_token_encrypted 을 초기화하여 해결 하였다.https://docs.gitlab.com/ee/administration/raketasks/check.html gitlab:doctor:secrets데이터베이스에 있는 모든 암호화된 값에 대하여 현재 적용 되어 있는 비밀 key( gitlab-secrets.json)를 사용하여 해당 값을 해독할 수 있는지 확인합니다 VERBOSE Gitlab container 접근# gitlab이 설치 되어 있는 서버 접속do.. 2025. 1. 13. [VM] Linux Buffer/Cache 정리 여러 가지 방법 중 Jenkins를 통한 스케줄링을 선택하였다.캐시를 지우는 3가지 명령어가 존재한다.echo 1 > /proc/sys/vm/drop_caches는 pagecache 정리echo 2 > /proc/sys/vm/drop_caches는 dentries, inode 정리echo 3 > /proc/sys/vm/drop_caches는 dentries, inode, pagecache 정리pagecache : 파일의 입출력(I/O)의 속도와 퍼포먼스를 높이기 위해 시스템이 할당한 메모리 영역(임시 메모리 저장소). 예를 들어 어떤 경로의 파일을 한 번 읽어들이면 시스템이 해당 파일 내용을 임시메모리에 저장시키는데 이후에 해당 파일을 다시 읽을 때 이를 새로 읽어들이지 않고 이 메모리에서 바로 불러오면.. 2024. 12. 27. [JVM] Java 메모리 관리 코드 레벨불변 객체참조 상태가 변경되지 않기 때문에, GC가 객체의 참조를 수시로 확인할 필요가 줄어듬객체 재사용 고려StreamAPI 이용 (무조건 X, 성능의 이점을 가져올 수 있는 경우에 적용 가능해 보임)Lazy Evaluation과 파이프라인 구조 덕분에 중간 연산들은 실제 데이터를 처리하지 않고, 최종 연산이 호출될 때에만 데이터를 처리I/O, 소켓, 쓰레드 등 사용 후 닫았는지 전반적인 확인 (GC가 회수 하지 못함)예시) Contents 서버 > outputstream을 사용하고 닫지 않음static 변수 검토 (StackOverflow)static 변수는 GC에 의해 회수 되지 않아 사이즈가 큰 객체를 참조가 진행되면서 메모리 누수 가능성내부 클래스 검토생명 주기를 가지거나 이벤트 리스너.. 2024. 12. 27. [CSAP] K8S Node Init Script K8S Node 들의 CSAP 인증 대응을 위한 Init Script 생성 & 관리Node 가 생성 될 때 Init Script 를 Node가 돌리는 구조가 아니라, DaemonSet 을 생성하면서 Script 가 도는 구조GPU Node 들의 경우 Tolerance 넣어줘야된다Docshttps://guide-gov.ncloud-docs.com/docs/k8s-k8suse-init-script InitScript 설정 guide-gov.ncloud-docs.com DaemonSet 설치# 수도권$ kubectl --kubeconfig=$KUBE_CONFIG apply -f https://raw.githubusercontent.com/NaverCloudPlatform/nks-examples/main/exa.. 2024. 12. 27. Kustomize, Helm Chart 시스템 개선 이 글에 대한 개선 버전 입니다.https://dev-junhee.tistory.com/79 Kustomize, Helm Chart 시스템 구축Helm은 템플릿 엔진이고 Kustomize는 오버레이 메커니즘을 따릅니다.Helm Chart에서 템플릿된 YAML 파일을 불러옵니다.Kustomize 가 환경별(Dev,Stg,Live) 로 YAML 파일을 수정(Patch/Overlay) 합니다.완성된 Yaml 이dev-junhee.tistory.com Helm Chart 를 S3 가 아닌 Git으로 이전 현재 Helm Chart 는 Object Storage 에 올라가 있어, 수정이 쉽지 않고 심지어 Public 하게 공개 되어 있다수정하려면 로컬에서 Helm Package 작업을 한 뒤 S3 Upload 하는.. 2024. 12. 27. [ArgoCD] 계정 생성 ArgoCd 신규 계정 생성ConfigMap: argocd-cm 수정junhee 계정을 신규로 생성한다면…apiVersion: v1kind: ConfigMapmetadata: name: argocd-cm namespace: argocd labels: app.kubernetes.io/name: argocd-cm app.kubernetes.io/part-of: argocddata: accounts.junhee: apiKey, login accounts.junhee.enabled: "true" 신규 계정 비밀번호 설정ArgoCd 파드에 접속 후 로그인, 비밀번호 변경까지$ kubectl exec -it argocd-server-xxxxxx-xxxxx /bin/bash -n argocdarg.. 2024. 12. 27. [ArgoCD] FE 배포 Helm 구성기 구성 및 동작 과정Helm 을 통해 Job을 생성한다.Job은 빌드 번호에 해당하는 디렉터리의 파일을 배포 폴더로 Sync 를 맞춰준다.Helm 구성Front 소스 배포용 Helm 차트 구조Helm 상세 내용job.yamlapiVersion: batch/v1kind: Jobmetadata: name: {{ .Release.Name }} namespace: {{ .Values.namespace }}spec: ttlSecondsAfterFinished: 0 // 1회성 실행을 위한 설정 template: spec: containers: - name: {{ .Release.Name }}-container image: {{ .Values.image }} c.. 2024. 12. 27. [Tempo] Grafana Tempo 적용기 (2) 도입 배경기존에 Prometheus & Prometail + Loki 를 통해 로그, VM 메트릭 등의 데이터를 수집하고 Grafana를 이용한 시각 화를 통해 모니터링 기능을 구축하였었다. 추가적으로 이용자의 활동, 병목 구간 분석 등의 니즈가 있었고 이를 해소하고자 Trace를 모니터링을 위한 Tempo 데모를 구성하였다.그 과정에 너무 많은 삽질이 있었고, 정리가 필요해 보여 구성 과정에 대해 정리해 보려한다.OpentelemetryTempo에 대해 서치를 진행하였고, 그 결과 Opentelemetry라는 오픈 소스와 시너지가 좋다는 결론이 도출 되었다. Opentelemetry는 Agent와 Collector가 존재하며, Agent로 만으로 구성이 가능하지만 추후 유지 보수와 고도화를 고려하였을 .. 2024. 11. 19. [Tempo] Grafana Tempo 도입 (1) https://grafana.com/docs/tempo/latest/introduction/telemetry/grafana 공식 docs의 내용을 요약하면 아래 표와 같다분류용도설명prometheusmetrics메트릭은 시스템 상태에 대한 높은 수준의 그림을 제공합니다. 메트릭은 숫자 값이기 때문에 알려진 임계값과 쉽게 비교할 수 있기 때문에 메트릭은 백그라운드에서 지속적으로 실행되고 값이 예상 범위를 벗어날 때 트리거되는 경고의 기초입니다.lokilogs로그는 정보적 맥락을 만드는 단일 프로세스의 활동에 대한 감사 추적을 제공합니다. 로그는 더 높은 수준의 세부 정보를 제공하지만 상당히 더 많은 데이터 볼륨을 생성하는 대가를 치릅니다. 로그는 애플리케이션에서 무슨 일이 일어나고 있는지 알려줍니다.tem.. 2024. 11. 18. [Kafka] CDC 도입기 (1) Debezium Kafka Connector는 Apache Kafka의 확장 기능으로, 다양한 데이터 소스와 싱크 간의 데이터를 자동으로 연결하고 처리하는 데 사용됩니다. 주요 구성 요소 소스 커넥터 (Source Connector) 외부 시스템(예: 데이터베이스)에서 Kafka로 데이터를 읽어오는 역할을 합니다. 데이터베이스의 변경 사항을 실시간으로 감지하여 Kafka로 전송하는 Debezium이 있습니다. 싱크 커넥터 (Sink Connector) Kafka에서 데이터를 외부 시스템으로 전송하는 역할을 합니다. 예를 들어, Kafka의 데이터를 관계형 데이터베이스나 NoSQL 데이터베이스에 저장하는 커넥터가 있습니다. CDC (Changed Data Capture) 변경 데이터 캡처는 데이터베이스의.. 2024. 11. 18. Kustomize, Helm Chart 시스템 구축 Helm은 템플릿 엔진이고 Kustomize는 오버레이 메커니즘을 따릅니다.Helm Chart에서 템플릿된 YAML 파일을 불러옵니다.Kustomize 가 환경별(Dev,Stg,Live) 로 YAML 파일을 수정(Patch/Overlay) 합니다.완성된 Yaml 이 쿠버네티스에 배포됩니다. ARGOCD_MANIFEST 프로젝트ArgoCd에서 사용될 Gitops RepositoryName: Gitlab에 생성된 각 프로젝트 이름으로 생성됨 Kustomize: 배포 리소스 모듈화base:kustomization.yaml: helm chart 연동 규격에 대해 정의values.yaml: helm chart template 에서 사용할 변수값 정의dev, stg, prodkustomization.yaml: 개발.. 2024. 2. 9. NCP FE 부하 이슈 해소기 Nginx를 활용하여 적정 리소스를 서빙하는 구성을 가져가고 있었다. 테스트 결과 (RS 10개 → 170개) Request 수가 10K 가 넘어가자 응답 속도가 점점 느려지기 시작했다. 사용자들은 Cache 된 Data 들을 받을테니, Nginx 가 뻗지만 않으면 이슈는 없을 것으로 보였다.그러나 Pod 의 리소스는 이슈가 될만한 상황이 없으나, 실제로는 응답속도가 느려졌고, Node 의 리소스 이슈로 보이며, MSP 에 Machine 성능 관련 문의하였다.문의주신 VM 당 Network Traffic Bandwidth (Max)와, Disk I/O 성능에 관한 네이버 공식 자료를 기반으로 한 답변 전달드립니다.VM 당 Network Traffic Bandwidth (Max)현재 네이버 클라우드 상에 .. 2024. 2. 9. 이전 1 2 3 4 5 다음