본문 바로가기

kubernetes49

[ingress-nginx] 413 Request Entity Too Large ingress에 아래 어노테이션을 추가해 해결 가능하다.annotations: nginx.ingress.kubernetes.io/proxy-body-size: 20m   참조https://blog.leocat.kr/notes/2020/04/21/nginx-413-request-entity-too-largehttps://www.hahwul.com/2021/11/13/413-error-nginx-ingress-in-k8s/ 2024. 4. 24.
[elasticsearch/helm] bitnami chart로 elasticsearch & kibana 설치하기 먼저, k8s환경에서 elasticsearch를 설치하는 경우 먼저 eck를 고려한다.왜 eck를 고려하는가? > elasticsearch와 kibana를 쉽게 배포할 수 있기 때문그럼 정말 eck가 쉬운가? 라고 했을 때...- 일단 eck controller 를 설치한 후에, 설치된 crd를 통해서 elasticsearch와 kibana를 배포할 수 있다.- 그렇다면 그 es & kibana를 반복적으로 배포하려고 할 때의 crd용 helm chart는..? 내가 직접 만들어야 하는 것 같음. (내가 못찾은거면 말고..)- 그 방법을 통해서 배포해보려고 시도는 해봤으나, 한번에 되지 않았음;> 만약 eck밖에 방법이 없었다면 어떻게든 트러블슈팅을 했겠지만... bitnami의 ela.. 2024. 4. 24.
[k8s/helm] 자체 helm chart 만들고 Artifact HUB 에 올려보기 결과물 >> https://artifacthub.io/packages/helm/suminhong/ingress-nginx-external-lb ingress-nginx-external-lb 1.0.0 · suminhong/suminhong Ingress controller for Kubernetes using NGINX as a reverse proxy and load balancer with External AWS LB artifacthub.io 위 차트는 ingress-nginx에 별도 LB를 매핑시키고 싶은 경우 사용 가능하다. 아래 글에 히스토리가 적혀있다. https://honglab.tistory.com/304 helm chart를 만드는것은 많이 해봤지만 Artifact HUB에 올리는건 처.. 2024. 4. 21.
[k8s/github] github workflow 실행시키는 k8s cronjob 참고) https://honglab.tistory.com/310 2024. 4. 19.
[external-dns/ingress-nginx] NodePort 타입 external LB를 external dns CNAME으로 등록되게 하기 # 상황 - ingress-nginx 를 LB타입으로 만들어 사용하다가, 일부 필수 옵션이 예상과 다르게 동작한 경우가 발생 > 하필 production이라 장애가 발생 - ingress-nginx chart의 service annotation만으로 중요 production LB들을 관리하기는 무리라고 판단. - stage / prod 인프라의 동일성을 보장하기 위해서라도 ingress-nginx 앞단의 LB를 별도 IaC로 관리하기로 결정. - IaC로 관리하는 별도 LB 를 사용하기 위해서는, ingress-nginx controller 자체는 NodePort로 오픈되어야만 한다. (ClusterIP는 클러스터 내부에서만 찌를 수 있고, LB는 별도 lb를 만들어버리고, ExternalName은..아.. 2024. 4. 18.
[GitLab/helm] Google OAuth 붙여서 띄우기 # 1. Google OAuth 2.0 Client 만들기 승인된 자바스크립트 원본 : GitLab 도메인 승인된 리디렉션 URI : - {gitlab 도메인}/users/auth/google_oauth2/callback - {gitlab 도메인}/-/google_api/auth/callback # 2. Google OAuth Secret 추가 아쉽게도(?) GitLab 공식 helm chart는 시크릿을 value에 박아 넣음으로써 연동되는 그런 허술한 보안을 제공하지 않는다. (내가 못찾은걸수도 있음) 그래서 따로 secret을 만들고, helm chart에선 해당 secret을 참조하도록 해줘야 한다. (참고로 나는 argocd multi source를 통해 같이 배포되도록 설정해 두었다) apiV.. 2024. 4. 15.
[Grafana Mimir] Mimir Helm 설치/셋업 도중 트러블슈팅 # Ref https://wlsdn3004.tistory.com/50 Grafana Mimir란? 개념부터 설치까지 Prometheus는 쿠버네티스 환경에서 많이 사용하는 인기 있는 오픈소스 모니터링 도구이다. 하지만 몇 가지 치명적인 단점이 있다. 확장 및 고가용성 문제 프로메테우스는 단일 서버로 동작하게 구 wlsdn3004.tistory.com Mimir가 뭔지와 컴포넌트에 대한 자세한 설명은 위를 확인하자. 나는 Mimir를 설치하고, Prometheus 연동 중 트슛 과정만 설명한다. # 권한 설정 먼저 일단 mimir의 데이터는 s3에 담을 것이다. iam policy는 아래처럼 구성하면 된다. { "Statement": [ { "Action": [ "s3:ListBucket", "s3:Put.. 2024. 3. 28.
[EKS/Access Configuration] Managed Node Group > Karpenter Migration 시 aws-auth 문제 해결 # 이슈 발생 원래 Managed EC2 Node Group으로 EKS를 구성해 두었다가, Karpenter PoC를 마치고 모두 넘어가려고 준비중이었다. 따라서 Managed Node Group (이하 node group) & Karpenter가 모두 떠 있었고, node group은 노드를 0으로만 유지중이었다. 이제 모든 클러스터가 카펜터로 잘 동작중이기 때문에, node group은 이제 지워야지! 하고 dev 클러스터부터 전부 지움. 그러자 ... 갑자기 카펜터로 뜬 노드들이 전부 죽기 시작했다. # 뭔지 모르겠지만 일단 롤백 아무리 생각해도 node group이랑 카펜터에 연관 관계가 있을 것 같지 않았다. 근데 롤백하니까 (node group 살리니까) 카펜터 노드들도 다시 살아나기 시작했다.. 2024. 3. 28.
[kubernetes/GUI] OpenLens 로 쉽게 port-forward 하기 먼저 OpenLens에 대해서는 아래 글에서 확인하자. https://honglab.tistory.com/279 [kubernetes/GUI] OpenLens 사용하기 (MAC) # 설치 (in MAC) brew install --cask openlens # 사용 # 쉘 접근 기능 extension 설치 @alebcay/openlens-node-pod-menu 입력 후 인스톨 끝 honglab.tistory.com 쿠버네티스에 떠있는 pod에 포트포워딩하는 (기본)방법은 아래 도큐를 확인하자 https://kubernetes.io/ko/docs/tasks/access-application-cluster/port-forward-access-application-cluster/ 포트 포워딩을 사용해서 클러스.. 2024. 3. 28.
[Karpenter] Disruption budget (중단 제어) 사용하기 (v0.34.0~) (feat. karpenter upgrade) https://aws.amazon.com/ko/about-aws/whats-new/2024/02/disruption-controls-karpenter/ Karpenter에 대한 중단 제어 기능 발표 오늘 v0.34.0 릴리스부터 오픈 소스 Karpenter 프로젝트를 사용하는 Amazon Elastic Kubernetes Service(EKS) 고객에게 Kubernetes 클러스터의 Amazon EC2 인스턴스에 획기적인 변경이 적용되는 방법과 시기를 제어할 aws.amazon.com https://karpenter.sh/v0.34/concepts/disruption/ Disruption Understand different ways Karpenter disrupts nodes karpenter.sh k.. 2024. 3. 9.
[CKAD] 2024-02-12 합격 후기 2월 12일에 CKAD를 땄다. 사실 시험을 산 건 작년 5월인데, 그냥 쭉 미루다가 ... (ㅋㅋ) 4월부터 자격증 만료기간이 2년으로 줄어든다는 소식을 듣고 호다닥 땄다 작년에 CKA를 땄던 기억도 남아있고, 업무상으로도 쿠버네티스를 계속 다뤄왔기에 큰 공부 없이 금방 땄다. 뭄샤드 CKAD 강의도 작년에 사뒀었는데, 강의는 하나도 안듣고 kodekloud 실습만 쭉 풀고 갔다 ㅋㅋ kodekloud mock exam이 진짜 짱인 것 같다. killer는 환경 익숙해지려고 조금만 풀어봤다. 너무 어려워서 거기에 스트레스를 많이 받진 않았다. 좀 짜증났던건, psi browser의 키보드 세션? 이 심하게 끊겼다. nginx 이 단어 하나 치는데도 몇 번이나 세션이 끊겨서 직접 마우스로 화면을 클릭해줘.. 2024. 2. 13.
[k8s/EKS] Fargate와 Daemonset # Fargate를 쓰는 이유 karpenter pod를 띄우기 위해서. (karpenter pod는 karpenter가 띄운 노드에 뜰 수 없다.) 별도 ec2 node group을 만들수도 있지만, 우리의 궁국적인 목적은 ec2 node group을 없애고 스팟으로만 운영하는 것이기 때문에 karpenter용 fargate를 띄움 참고로 pod 하나당 fargate 하나가 뜸 # Daemonset 노드의 백그라운드에서 항상 실행되며 여러 작업을 수행 → 노드별로 파드가 하나씩 떠야 함. 이 때, fargate도 결국 노드의 한 종류인데 fargate에도 떠야하느냐? → 아니다. fargate는 hsot가 없기 때문에 데몬셋이 지원되지 않는다. 따라서 데몬셋들은 fargate가 아닌, ec2 노드들에만.. 2024. 2. 9.
[EKS/Terraform] Secondary IP 줄이기 with Terraform # 현상 18개 파드가 존재하는 10.10.0.218 노드가 있다. 그러나 해당 노드엔 2개 eni / eni포함 총 60개의 ip가 붙어있다.... 다른 노드들도 사용하는 파드들에 비해 상당히 많은 ip들을 갖고 있었고, 이로 인해 서브넷에 가용 ip가 부족해졌다. # 분석 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI Elastic network interfaces - Amazon Elastic Compute Cloud For EC2 instances in an IPv6-only subnet, if you attach a secondary network interface to the instanc.. 2024. 2. 6.
[Cluster-Autoscaler] Over Provisioning with Terraform # 현상 node의 cpu / memory가 거의 대부분 점유되고 있는 상황에서도 node가 늘어나지 않고 있다. 내가 생각했을 때 CA를 사용하면 노드 리소스가 80% 이상 사용 중일 때 새로 노드 추가 ~ 뭐 이런식으로 진행될 줄 알았는데, 그게 아니었다. 노드가 새로 추가되는건 노드에 자리가 없어서 배치되지 못하는 pod가 존재할 때 … 이다. 사실 쿠버네티스 사용 목적 등을 생각하면 그게 맞다. 하지만 파드가 하나 새로 떠야되는데 그 때서야 노드 프로비저닝을 시작한다? → 느리다. → 어느정도의 over provisioning이 필요하다. # Over Provisioning https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscal.. 2023. 11. 26.
[ArgoCD/helm] Github OAuth 붙이기 https://artifacthub.io/packages/helm/argo/argo-cd argo-cd 5.50.1 · argoproj/argo A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes. artifacthub.io # 1. Github OAuth Client 만들기 homepage URL : Airflow 도메인 Authotization callback URL : Airflow 도메인 + /api/dex/callback # 2. argocd helm value 추가 configs: cm: url: https://${argocd 도메인} dex.config: | connectors: # Gi.. 2023. 11. 5.