K8S 환경에서 Vault 사용해보기Service Account to VaultK8S에서 Vault 사용하기,진행하기 앞서서 vault의 Service Account를 확인해보면vault라는 service account가 할당되어있는 것을 확인할 수 있고,해당 Service Account에는 subjectaccessreviews와 tokenreviews가 할당돼어 있는 것을 확인할 수 있다. 위 두개의 권한이 vault가 K8S API를 호출할 수 있게 해주는 것이다.[AuthN] tokenreviews은 vault가 받은 token이 어떤 pods에서 출발했는지를 확인할 수 있는 권한 (이게 필수인 느낌이고)[AuthZ] subjectaccessreviews는 특정 user가 resource에 대한 작..
Vault란?보안 Key를 저장할 수 있는 저장소로 생각하면 되고, 이 저장소에서 다양한 기능들을 제공한다.Kubernetes에 연동하거나, Storage를 암호화하거나, 인증/인가에 사용되거나....AWS로 치면 Secret Manager 같은 느낌이고, KMS로도 같이 쓸 수 있는 느낌...?Vault 기본 구성하기vault를 처음 설치하고 vault status명령어를 통해 아래처럼 확인할 수 있다.Key Value--- -----Seal Type shamirInitialized trueSealed falseTotal Shares 1Threshold 1Version 1.20.4Build Dat..
테스트 구조아래 테스트는, dev, mgmt, prd cluster를 만들고, 해당 cluster에 App of Apps Pattern을 테스트 해본다.ApplicationSetApplicationSet을 이용하면 여러 Application을 하나의 App에서 관리할 수 있다.(실제 Kubernetes에 연동돼서 동작하는 것이 아닌, ArgoCD의 App을 관리하기 위한 App으로 생각하면 된다.) Application List GeneratorApplication List Generator는 내가 지정한 값들을 list형태로 나열해서 그냥 Application을 만드는 역할을 한다.그래서 아래처럼 적용을 하면, dev와 k8s에 app이 생긴 것을 확인할 수 있다.(정리하면, Application Se..
접근 제어HTTPS 적용 해보기(nginx-ingress를 통해 접근할 예정)먼저 ArgoCD Namespace에 Certificate Secret을 만든다.kubectl -n argocd create secret tls argocd-server-tls \ --cert=argocd.example.com.crt \ --key=argocd.example.com.key그 후 argocd를 구성 value파일에, annotations으로 ssl-passthrough와 force-ssl-redirect를 설정해준다.Ingress Nginx 설정을 위해 Value파일을 만들며, annotations으로 ssl-passthrough와 force-ssl-redirect를 설정해준다.force-ssl-redirect..
ArgoCD 배포 기능ArgoCD 형상 관리ArgoCD에는 다양한 설정을 통해 ArgoCD의 관리 방식을 선언할 수 있다.# finalizers.-resources... : # Argo CD가 Application을 삭제할 때, 관련된 Kubernetes 리소스를 먼저 정리 prune하도록 보장하는 설정# targetRevision: HEAD # 브랜치명 또는 commit , HEAD = 기본 브랜치 최신 커밋 # syncPolicy.automated.enabled: true # 자동 동기화/배포 활성화# syncPolicy.automated.prune: true # Git에서 리소스가 제거되면 클러스터에서도 자동 삭제# syncPolicy.automate..
좀있다 확인해보기 - https://www.notion.so/gasidaseo/3-Jenkins-ArgoCD-29850aec5edf80548e56f7e8da3c3b88?source=copy_link#29850aec5edf81bab226d0f8caf660d3 환경 구성 - Jenkins에 DinD방식으로 구성했고, socket을 mount해서 사용한다. Jenkins에 git과 dockerhub credential을 넣어준다.git은 코드를 불러와서 build하는 역할으하며, 여기서 나온 결과물을 docker hub에 image로 저장한다. CI (Jenkins)Jenkins Pipelinepipeline { agent any environment { VAR_NAME = "valu..
5. HelmHelm은 템플릿 기반으로 Value를 받아서 배포를 하기 위해 사용하는 도구Helm은 관련 매니페스트 파일을 번들로 묶어서 하나의 논리적 배포 단위인 차트로 패키징한다. -> 차트 단위 간소화Creating a Helm Projecthelm template . 으로 values가 어떻게 적용될지 확인할 수 있음(⎈|kind-myk8s:N/A) cand0@localhost ~/Desktop/CICD_Study/2week/pacman $ helm install pacman .NAME: pacmanLAST DEPLOYED: Sun Oct 19 20:18:45 2025NAMESPACE: defaultSTATUS: deployedREVISION: 1TEST SUITE: None(⎈|kind-myk8..
helm을 사용하다보면, 아래 사진이 helm을 update할 때 마다 version이 변경되는 것을 볼 수 있다. 조금 자세히 보면 release라는 key로 3200 bytes가 있는 것을 확인할 수 있는데 Data에는, base64 로 되어있는 것처럼 보이는 게 있고이걸 풀어서 확인하기 위해서는 아래 명령어가 필요하다.kubectl get secrets sh.helm.release.v1.pecman.v1 -o jsonpath='{.data.release}' | base64 -d | base64 -d | gzip -d | jq 자세히 살펴보면 요런 내용들을 확인할 수 있는데 결국에는 아래처럼 helm history에서 보여주는 이런 정보나 helm을 통해서 사용되는 대부분의 명령어는 kubernete..
Jib으로 컨테이너 빌드해보기Jib 이란? -> Java App을 빌드하기 위한 컨테이너 이미지 빌더 Jib은 Docker에 비해 Java라는 언어에 대한 이해를 바탕으로 동작한다고 이해했다. 기존 Docker는 코드가 바뀌면 전체를 re build 해야하지만, Jib은 이미 만들어둔 부분은 다시 안건드리고, 바뀐 부분만 새로 만들 수 있는 이미지 빌더다. 기존에는 Dockerfile을 만들어서 Project와 함께 docker로 Build 해야했지만, Jib은 Project와 함께 코드로 관리할 수 있다. 다시말하면, 프로젝트에서 빌드하면서 이미지가 만들어지고 그 이미지를 Docker로 설정을 다시 구성하는게아니라 그냥 바로 활용할 수 있는 것이다.이걸 테스트하기 위해 Maven을 사용하는데, Mave..
예전부터 teleport를 테스트 한번 해보고싶었는데, 회사 일하다보니, 우선순위가 밀려서 못했다. 아래 사이트를 참고하여 진행하였고, 14일 free trial을 통해 enterprise edition을 테스트한다.Get Started with Teleport : https://goteleport.com/docs/get-started/Free Trial : https://goteleport.com/signup/tsh install : https://goteleport.com/docs/installation/ 설치도 생각보다 쉽게 잘 해놨고, 아래 방법은 enterprise version 을 받은 후 가능하다.이메일을 처음 받고나면 사이트를 하나 제공받는다.현재 지원하고 있는 서비스 목록은 아래가 전부..
