전체카테고리 468

CI/CD에서 테스트가 매우 중요해지고 있다.

필자는 글로벌 표준을 볼때 Google, AWS, Netflix Blog를 보곤한다. 요즘 국내 개발자 시장도 그렇고 전반적으로 "테스트"에 관심이 많다. AWS Device Farm은 테스트 용 인프라를 프로비저닝하고 관리하지 않아도 다양한 데스크톱 브라우저 및 실제 모바일 디바이스에서 테스트를 진행하여 웹 및 모바일 앱 품질을 향상시키는 애플리케이션 테스트 서비스이다. 테스트를 통해 여러 데스크톱 브라우저나 실제 디바이스에서 동시에 테스트를 실행함으로써 테스트 도구 실행 속도를 높이고 비디오 및 로그를 생성하여 앱과 관련된 문제를 빠르게 식별할 수 있다. 아래 그림에서 보듯 Deploy하여 QA환경에서 환경별 테스트를 진행한다. (운영은 아닐것이라 생각, Quality Gate를 통과해야 운영배포 지..

PaaS/CI CD 2023.11.09

Github Actions CI/CD 파이프라인 Sample

기본적이면서 표준화된 CI/CD 프로세스 기준으로 구현하였다. Sample Python 어플리케이션으로 수행하였다. Github Actions 파이프라인은 다음과 같다. name: Python application on: workflow_dispatch: inputs: logLevel: description: 'Log level' required: true default: 'warning' tags: description: 'Test scenario tags' # push: # branches: [ "master" ] # pull_request: # branches: [ "master" ] permissions: contents: read env: BASE_BRANCH: "develop" PROJECT_..

PaaS/CI CD 2023.11.09

Ingress에서 Rewrite Target 사용하기

context path를 변경하여 서버에 라우팅을 할때는 다음과 같이 Ingress를 정의해야한다. metadata.annotations.nginx.ingress.kubernetes.io/rewrite-target rewrite-target은 nginx의 Annotation중의 하나이다. ingress에 정의된 경로로들어온 요청을 호출경로를 재정의 하는것이다. 예를들어 http://test.armyost.com/api/test1/insertUserdata.do 를 아래의 정책으로 rewrite하면 ingress를 지나 서버에서는 http://test.armyost.com/insertUserdata.do 로 전달됩니다. apiVersion: networking.k8s.io/v1 kind: Ingress m..

PaaS/Kubernetes 2023.11.09

운영환경에 활용하기 좋은 k8s 리소스 YAML

Deployment with HPA # DEPOLOYMENT apiVersion: apps/v1 kind: Deployment metadata: # Deployment object 자신의 고유 정보 name: ${APP_NAME} # Deployment object에 대한 Unique-key spec: replicas: ${REPLICA_QUANTITY} # 초기 Pod의 개수를 설정 minReadySeconds: 10 # Pod이 Ready 단계가 된 후, Available 단계가 될 때 까지의 시간 차이 revisionHistoryLimit: 2 # replicaset 이전버전 보관수 strategy: type: RollingUpdate # RollingUpdate에 대한 상세 설정. “Recreat..

PaaS/Kubernetes 2023.11.09

OIDC 인증으로 특정 Service Account에 대해 Kubelet API 호출하기

Kubernetes의 각 노드는 모두 API로 통신한다. 이를 활용하여 CI/CD 파이프라인이나, 어플리케이션에서 k8s자원에 대한 쿼리를 API로 하면 손쉽고 보안이 좋다. 이전 포스팅의 연장선에서 진행하겠다. https://armyost.tistory.com/417 k8s 보안, 최소권한으로 특정 NameSpace에 대한 권한만 부여하기 Zero Trust가 유행함에 따라서 모든 영역이 보안의 영역이 되었다. 과거에는 k8s Cluster Wide한 권한을 편의상 사용해왔는데, 점점 보안이 강화되는 분위기라 Service Account와 Role에 대한 이해도가 필요 armyost.tistory.com 우선 현재 Kubelet에서 통용되는 CA 인증서를 내려 받자 $ kubectl config vie..

PaaS/Kubernetes 2023.11.08

k8s 보안, 최소권한으로 특정 NameSpace에 대한 권한만 부여하기

Zero Trust가 유행함에 따라서 모든 영역이 보안의 영역이 되었다. 과거에는 k8s Cluster Wide한 권한을 편의상 사용해왔는데, 점점 보안이 강화되는 분위기라 Service Account와 Role에 대한 이해도가 필요해졌다. 아래 샘플은 특정 NameSpace의 특정 자원에 대해서만 CRUD가 가능한 권한을 매핑한 YAML이다. apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: creationTimestamp: null name: sample-role namespace: sample-ns rules: - apiGroups: - "" resources: - services - deployments - pods verbs: - ge..

PaaS/Kubernetes 2023.11.08

Github과 Gitlab의 리소스 비교

두 레포지토리의 리소스 비교표 역할 Github Gitlab 타 객체와 Silo한 조직 단위(리소스, 권한) Organization Group , SubGroup 구성원 Member, Collaborator, Team Member, SubGroup 어플리케이션 단위 Repository Project CI / CD Actions(Workflow, Runner) CI/CD(Pipeline, Editor, Job, Schedule, Runner) 진척관리, 이슈관리 Project Issue, Boards, ServiceDesk, MileStone Branch Merge Pull Request Merge Request 전반적으로 용어만 조금 다르고 컨셉은 동일하다. 다만 Gitlab이 전반적으로 기능이 많고 세..

PaaS/CI CD 2023.11.08

Github Actions 설정

Gitlab Runner, AWS CodePipeline과 같은 컨셉의 서비스이다. 요즘은 대부분의 파이프라인이 YAML로 짜는것으로 컨센서스가 이루어진듯하다. Groovy는 이제 안녕.. Github Actions 는 ... Github Repository에 이벤트가 발생했을때 트리거 되는 Workflow를 정의할 수 있습니다. 예를들어 Pull Request(=Gitlab의 Merge Request) 가 수행되거나 Issue가 등록되었을때 말입니다. Workflow는 하나 또는 여러개의 Job으로 이루어지며 순차적으로 또는 병렬적으로 수행되도록 할 수 있습니다. 각각의 Job은 별개의 가상환경(Virtual runner)에서 실행되거나 Container 내부에서 실행됩니다. 그리고 각각의 Job은 하..

PaaS/CI CD 2023.11.07

Redis에 Spring Cache를 적용할때 서비스 별로 Expire 시간 다르게 하기

github 링크 : https://github.com/armyost/RedisCacheableVariousTimes GitHub - armyost/RedisCacheableVariousTimes: This project gives various duraton option for cache This project gives various duraton option for cache - GitHub - armyost/RedisCacheableVariousTimes: This project gives various duraton option for cache github.com 예를들어 어떤 기능은 1Day, 다른 기능은 1Hour로 Cache 세팅을 하고자 한다면 CacheName별로 다른 Configur..

Programming/Java 2023.11.06