전체 글 13

카카오 클라우드 & Kubernetes 환경에 CD 트러블 슈팅 - 10

문제:container "user-service-container" in pod "user-service-deployment-59d7bfbcb5-4mwql" is waiting to start: trying and failing to pull image 401 unauthorized와 failed to authorized 라는 말이 보이는걸로 봐서는 Kakao Container Registry에 연결하려는데 권한이 없어서 일어나는 오류인 것 같다. CI과정에서는 ci.yml파일에 있는 docker login을 통해 KCR에 로그인하고 push가 가능했지만, CD과정 (Kubernetes)에서는 로그인 정보를 모르기 때문에 접근이 거부당한 것 같다. 해결방법:쿠버시크릿을 사용해서 KCR인증 시크릿을 생성..

트러블슈팅 2025.08.22

카카오 클라우드 & Kubernetes 환경에 CD 트러블 슈팅 - 9

문제: namespace를 test로 설정했음에도 불구하고, deployment는 다른 namespace에 되는 상황 해결:해당 서비스의 manifest 파일인 k8s/user.yaml 파일에 하드코딩된 namespace: user 부분을 모두 삭제해서 argo CD에서 지정한 namespace를 사용하도록 했다. Argo CD에서 설정한거보다 해당 서비스의 manifest 파일을 더 우선적으로 받아들이는 구조인 것 같다.

트러블슈팅 2025.08.22

카카오 클라우드 & Kubernetes 환경에 CD 트러블 슈팅 - 8 (Jenkins -> ArgoCD)

비용에 제한이 있어서 리소스를 적게 설정해뒀더니, 쿠버네티스 클러스터가 터져버렸다...젠킨스는 포기하고, 리소스를 덜 쓰는 아르고로 변경했다. 문제:Unable to create application: application spec for user-service is invalid: InvalidSpecError: repository not accessible: repositories not accessible: &Repository{Repo: "repo 주소 ", Type: "", Name: "", Project: ""}: repo client error while testing repository: rpc error: code = Unknown desc = error testing repository..

트러블슈팅 2025.08.22

ArgoCD 공부

Argo CD는 Jenkins와는 완전히 다른 방식으로 관리됩니다.Jenkins는 우리가 직접 deployment.yaml, service-account.yaml 같은 파일을 만들어서 우리의 애플리케이션처럼 직접 설치하고 관리했습니다.Argo CD는 다릅니다. Argo CD는 "자신을 관리하는 방법"이 이미 모두 정의된 하나의 공식 설치 파일(install.yaml)을 통해 설치됩니다. 이 파일 안에는 Argo CD가 동작하는 데 필요한 모든 Deployment, ServiceAccount, Role 등이 포함되어 있습니다. jenkins를 사용하는 환경에서 ArgoCD로 바꾸면서 변경된 부분들:CI :CI 마지막 단계가 JENKINS호출 단계에서 변경된 deployment 파일을 Git 저장소에 pus..

INFRA 공부 2025.08.22

카카오 클라우드 & Kubernetes 환경에 CD 트러블 슈팅 - 7

카카오 클라우드 & Kubernetes 환경에 CD 트러블 슈팅 - 2에서 해결했던 loadbalancer 관련해서 변경사항이 생겼다 deployment.yaml 파일에서 type: LoadBalancer로 바꿔서 external ip를 받을 수 있었다.이번 프로젝트에서는 ingress를 안쓰고 gateway를 사용하기 때문에 gateway설정을 바꿔줬다. gateway에 라우팅경로 추가Jenkins deployment.yaml파일에 prefix 지정해서 환경변수 추가이 설정을 해주고 난 뒤에도,spec: containers: - env: - name: JENKINS_OPTS value: --prefix=/jenkins # ```--prefix=/jenkins` 설정은 젠킨스의 모든 내부 URL 주소 끝..

트러블슈팅 2025.08.22

카카오 클라우드 & Kubernetes 환경에 CD (수정사항) - 6

Manifest 파일을 레포지토리 하나에서 따로 관리하지 않고, 각 서비스의 레포지토리에서 각각 관리하는 구조로 수정하면서 ci.yml 과 jenkinsfile 에 대한 수정사항을 정리해봤습니다. 1. ci.yml (GitHub Actions) 수정 내용CI 파이프라인이 Jenkins를 호출하는 마지막 단계(Trigger Jenkins CD Pipeline)에서, 배포할 저장소의 주소와 정확한 코드 버전(커밋 ID)을 함께 보내도록 수정했습니다. 추가된 환경 변수: APP_REPO_URL: CI가 실행된 저장소(깃헙)의 전체 URLGIT_COMMIT_SHA: CI를 실행시킨 커밋의 고유 ID (예: a1b2c3d4...) curl 명령어 수정: 기존에 보내던 FULL_IMAGE_NAME에 더해, APP_..

트러블슈팅 2025.08.22

카카오 클라우드 & Kubernetes 환경에 CD 트러블 슈팅 - 5

문제:커스텀 jnlp파일을 빌드하고 docker hub에 올리는 과정은 완료했는데, 생성된 이미지가 젠킨스에서 pull받고 build가 안되는 문제가 발생했습니다. -참고사항-Jenkins에서 ‘events’ 를 확인하려고 할때 oops하면서 젠킨스 아저씨 나올때 해결법service-account.yaml 파일에 이벤트 조회 권한을 추가하면 된다.추가해야될 내용:- apiGroups: [""] resources: ["events"] verbs: ["get", "list", "watch"] 원인:events로그를 확인해보면 마지막 줄에 문제의 원인이 나와있는걸 확인할 수 있었습니다.Failed to pull image ... no match for platform in manifest: not found..

트러블슈팅 2025.08.12

카카오 클라우드 & Kubernetes 환경에 CD 트러블 슈팅 - 4

문제:기본 jnlp파일을 사용하지 않고 java 21을 사용하고, kubectl 도 사용하는 커스텀 jnlp파일을 사용했는데 docker hub에 업로드하는 과정에서 계속 빌드 오류가 났습니다. 에러 코드:ERROR: failed to solve: process "/bin/sh -c apt-get update && apt-get install -y --no-install-recommends ca-certificates && echo \"deb http://deb.debian.org/debian bookworm-backports main\" > /etc/apt/sources.list.d/backports.list && apt-get update && apt-get install..

트러블슈팅 2025.08.12

카카오 클라우드 & Kubernetes 환경에 CD 트러블 슈팅 - 3

문제:젠킨스를 접속해서 새로운 cloud를 생성하는 과정에서 HTTP ERROR 403 No valid crumb was included in the request URI:/manage/descriptorByName/org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud/checkServerUrlSTATUS:403MESSAGE:No valid crumb was included in the requestSERVLET:StaplerPowered by Jetty:// 12.0.22 cloud를 생성하는 과정에서 위와같은 오류메시지가 창에 떳습니다. 원인:해당 오류는 젠킨스의 보안 기능 때문에 발생하는 흔한 문제입니다. 간단히 말해, 젠킨스가 현재 요청이 정상적인 ..

트러블슈팅 2025.08.10

카카오 클라우드 & Kubernetes 환경에 CD 트러블 슈팅 - 2

문제:External-IP가 으로 나와서 외부에서 젠킨스 접속이 어려운 상황이 생겼습니다. 해결법:아까 deployment.yaml파일에 썻던 type: NodePort 로 해서 그런 것 같습니다. 일반 로컬 환경과는 다르게, 쿠버네티스에서는 외부 접속을 위해 로드밸런서 (Load Balancer)를 사용하는 것이 표준적인 방법입니다. 따라서 type: LoadBalancer로 수정하면 카카오클라우드가 자동으로 공인 IP를 가진 로드밸런서를 생성하고 Jenkins 서비스와 연결해주면서 해결할 수 있었습니다. +타입을 변환하고 external IP는 생성됐지만, 접속이 안되서 카카오클라우드에서 public ip를 할당해줘서 해결했습니다.

트러블슈팅 2025.08.10