전체 글

전체 글

    permission denied, mkdir in container on openshift

    permission denied, mkdir in container on openshift

    문제 상황 로컬에서는 문제없이 작동하는 Container가 Redhat OpenShift에 올리니까 Permission Deny 에러가 발생했다. Error: EACCES: permission denied, mkdir '/home/node/app/.pm2' 사용한 Dockerfile은 아래와 같다. FROM node:16.14-alpine WORKDIR /home/node COPY . . RUN npm install USER 1000 EXPOSE 8080 CMD node server.js 에러 원인 By default, OpenShift Container Platform runs containers using an arbitrarily assigned user ID. This provides additi..

    Kubernetes Pod Security Admission - Namespace Level

    Kubernetes Pod Security Admission - Namespace Level

    개요 일반 Kubernetes Cluster를 사용할 때는 PSP, PSA를 고려하지 않았지만.. Redhat OpenShift를 사용하면서 Namespace를 생성하면 자동으로 PSA가 붙어서 Pod에 대한 보안이 적용되고 동작이 제한되었다. OCP를 잘 사용하기 위해 PSA에 대한 개념을 정리한다. Pod Security Policy가 kubernetes v1.21부터 Deprecated 되면서, 이보다 더욱 향상된 기능으로 Pod Security Admission을 제공한다. Pod Security Admission Controller는 Pod Security Standards를 사용하며, 이는 정확하게 사전 정의된 세 가지 Pod Security Policies(Privileged, Baselin..

    GitOps, ArgoCD Overview

    GitOps, ArgoCD Overview

    Ref: https://argo-cd.readthedocs.io/en/stable/#overview Argo CD - Declarative GitOps CD for Kubernetes Overview What Is Argo CD? Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Why Argo CD? Application definitions, configurations, and environments should be declarative and version controlled. Application deployment and lifecycle ma argo-cd.readthedocs.io What Is Argo CD..

    wework 역삼 2호점 공유 오피스 1년 이용 후기

    wework 역삼 2호점 공유 오피스 1년 이용 후기

    2022년 4월부터 2023년 6월까지 약 1년간 저희 부서 전체가 위워크에 입주해 근무를 했습니다. 한 층을 전부 빌려서 전용으로 사용한 형태였습니다. 지금은 다시 본사로 돌아왔는데요.. 위워크를 그리워하며 한번 어떤 장단점이 있었는지 기록해 보겠습니다 ~ 1층에 더치빈이 같이 있습니다. 위워크에 커피머신이 있지만 가끔 바깥(?) 커피를 먹고 싶을 때 가끔 가서 사 먹었습니다 ㅋㅋ 위워크 카드를 찍고 들어가는 시스템이어서 보안에 많이 신경을 쓰는 느낌입니다. 또, 층마다 사무실에 들어가려면 카드를 찍고 들어가야 하는데 그건 아주 귀찮습니다.. 사무실 단위로 입주했을 때는 엘베에 내려서 카드를 찍고 해당 층을 들어가고 카드를 찍고 사무실에 들어가야 했습니다. 잠깐 화장실에 가야 할 때도 카드를 챙겨야 해..

    AWS EKS Node 인스턴스 타입의 최대 Pod 개수 (Too many pods 해결 방법)

    AWS EKS Node 인스턴스 타입의 최대 Pod 개수 (Too many pods 해결 방법)

    개요 AWS EKS는 AWS VPC CNI 플러그인을 통해 ENI를 EC2 노드에 연결한다. 이 추가 기능은 프라이빗 IP를 VPC에서 각 Pod 및 서비스에 할당한다. EC2 Node의 인스턴스 타입에 따라서 ENI 개수와 각 ENI당 붙을 수 있는 보조 프라이빗 IP의 개수가 다르다. 즉, 노드의 인스턴스 타입에 따라서 할당 가능한 Pod의 개수가 다르다. 참고: https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/managing-vpc-cni.html 노드 유형 확인 및 Pod 개수 제한 확인 명령어 kubectl get nodes -o jsonpath="{range .items[*]}{.metadata.labels['beta\.kubernetes\.i..

    [Terraform] count vs for_each Meta-Argument 차이점 - 변수 list(object) 타입 사용

    [Terraform] count vs for_each Meta-Argument 차이점 - 변수 list(object) 타입 사용

    Terraform을 사용하면서 여러 개의 리소스를 생성해야 할 때 대표적으로 count, for_each 두 가지를 사용합니다. 두 개의 차이점과 주의사항에 대해 알아보겠습니다. Count count 메타 인수는 정수를 허용하고 전체 리소스, 모듈을 반복하여 만들 수 있습니다. count로 구성하게 되면 count.index를 활용하여 count에서 생성한 인덱스에 접근 가능합니다. AWS VPC, Subnet을 생성하는 테라폼 코드를 작성해 보겠습니다. Subnet을 list(object) 타입으로 정의해서 리소스를 여러 개 생성하겠습니다. resource "aws_vpc" "main" { cidr_block = "10.0.0.0/16" tags = { Name = "vpc" } } variable "..

    Python으로 Slack에 메세지 전송하는 방법(Incoming Webhooks)

    Python으로 Slack에 메세지 전송하는 방법(Incoming Webhooks)

    환경 Slack Channel에 Incoming Webhooks 추가 https://api.slack.com/messaging/webhooks Json으로 HTTP Requests로 메세지를 전송 https://api.slack.com/methods/chat.postMessage 샘플 curl 요청 curl -X POST --data-urlencode "payload={\"channel\": \"#test\", \"username\": \"webhookbot\", \"text\": \"이 항목은 #개의 test에 포스트되며 webhookbot이라는 봇에서 제공됩니다.\", \"icon_emoji\": \":ghost:\"}" https://hooks.slack.com/services/T03UUG3P4FJ..

    AWS EKS 비용 절감 방안 (인스턴스 비용 절감)

    AWS EKS 비용 절감 방안 (인스턴스 비용 절감)

    개요 EKS를 사용하다 보면 노드의 타입과 개수가 늘어나면서 인스턴스에 대한 비용이 많이 늘어나게 된다. 이때 비용절감을 할 수 있는 방법은 크게 두 가지가 있다. 첫 번째는 모니터링을 통해 리소스(Limit, Request)를 알맞게 조정하는 것이다. 두 번째는 인스턴스를 On-Demand만 사용하지 않고 RI 또는 Spot을 같이 사용하는 것이다. 1. 리소스(Limit, Request) 조정 Kubernetes를 사용하면서 Pod 리소스가 무한정으로 커지지 않고 리소스 용량 관리를 하기 위해서는 리소스(Limit, Request) 설정을 해야 한다. 또한 CA, HPA에서 확장/축소시킬 기준값이 되기 때문에 운영환경에서 리소스 설정은 필수이다. 설정팁은 Request를 무조건 작게 설정하면 조금만 ..

    Kubernetes Deprecated API Version Check 방법 (클러스터 버전 업그레이드 사전 작업)

    Kubernetes Deprecated API Version Check 방법 (클러스터 버전 업그레이드 사전 작업)

    개요Kubernetes Version을 업그레이드하기 전에 현재 사용 중인 API Version이 Deprecated 되지 않는지 확인해야 한다.Deprecated 된다면 클러스터를 업그레이드 하기 전에 해당 워크로드를 업그레이드해야 한다.  1.  공식 문서 확인Deprecation Guide 확인https://kubernetes.io/docs/reference/using-api/deprecation-guide/ Deprecated API Migration GuideAs the Kubernetes API evolves, APIs are periodically reorganized or upgraded. When APIs evolve, the old API is deprecated ..

    Kubernetes QoS(Qualitu Of Service)와 Pod Eviction의 상관 관계

    Kubernetes QoS(Qualitu Of Service)와 Pod Eviction의 상관 관계

    QoS(Qualitu Of Service) 클래스 타입 Kubernetes는 노드에 리소스가 부족할 때 Pod의 우선순위에 따라서 Pod를 Eviction 한다. 이때 Pod의 우선순위는 QoS 클래스 타입에 따라 정해진다. QoS 클래스 타입에는 아래 3가지가 있다. Guaranteed: Resources 항목에서 Request와 Limit의 값이 완전히 동일한 경우 Burstable: Guaranteed, BestEffort에 속하지 않는 모든 경우 ( e.g. Resources 항목에서 Limit이 Request보다 클 경우) BestEffort: Resources 항목을 아예 사용하지 않을 경우 노드에 리소스가 부족해지면 우선순위가 가장 낮은 Pod나 프로세스가 먼저 종료된다. 우선순위는 Guar..