PaaS 221

Kubernetes Dashboard를 외부로 노출시키기 위한 Ingress 작업

Kubernetes Dashboard를 외부에 오픈하기 위해 NodePort나 Loadbalancer로 노출시키는 사례도 많은데, 가급적이면 서비스는 Ingress나 Gateway 리소스를 쓰는것이 좋다. 우선 Ingress Controller가 있는지 확인하고 없다면 설치하자. ingress controller 설치 https://kubernetes.github.io/ingress-nginx/deploy/ $ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/baremetal/deploy.yaml Kubernetes 어플리케이션을 배포하자 Kub..

PaaS/Kubernetes 2023.11.13

Blue / Green 배포의 라우팅 포인트를 어디로 가져가야 하는가?

Blue / Green 배포는 운영환경 배포에 있어 매우 안정성있는 좋은 전략이다. 요즈음 일반적으로 운영환경으로 사용되는 Public Cloud + k8s 환경에서는 어느 포인트에서 Blue ↔ Green 간 라우팅 포인트를 잡아야 할까? 최상단부터 아래로 내려가며 포인트를 발굴해보자. 1. DNS에서 새로운 LoadBalancer 로 라우팅 Public Cloud가 가장 많이 권장하는 방법이다. LoadBalancer ~ Application 구간을 한벌 새로이 만들기를 권장하고 DNS제공자(Route53)이 LoadBalancer Endpoint를 교체한다. 가중치를 줄 수 있어 손쉽게 Canary 구현이 가능하다. 2. LoadBalancer에서 Target을 변경 AWS의 경우 ALB는 Ingr..

PaaS/CI CD 2023.11.09

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