본문 바로가기

k8s39

[RBAC & IRSA] ECR Secret Updater Cronjob 구성 pod가 ECR의 이미지를 받아오는 방법은 여러가지가 있다. 1. EKS에서 보편적이고 권장되는 방법인, EKS Node Role의 권한으로 받아오는 것 2. ECR Token 값을 받아와 Docker Secret으로 저장 후 pod가 해당 Secret을 물고 올라감 나도 당연히 우리 회사의 새 아키텍처에서 1번으로 세팅해두고 싶었다. 그러나! 새 아키텍처에서는 "모든 계정의 클러스터" 에서 "공용 계정의 ECR" 에서 이미지를 받아오는 것으로 결정됐다. 뭐...그래도 Cross Account로 받아오는 방법이 당연 있을텐데, 역시 ECR Repository 단위로 타 계정을 허용해줄 수 있었다. { "Version": "2008-10-17", "Statement": [ { "Sid": "AllowPus.. 2023. 9. 4.
[Grafana Loki] Errors loading rules # 상황 - 중앙 EKS 클러스터에 grafana chart를 사용해 Grafana가 설치되어 있음 - 각 EKS 클러스터별로 loki-stack chart를 사용해 Loki와 promtail이 설치되어 있음 - 각 EKS 클러스터별로 kube-prometheus-stack chart를 통해 Prometheus와 AlertManager가 설치되어 있음 (로키 스택에서 프로메테우스도 전부 깔 수 있지만, 프로메테우스가 먼저 깔려있는 상태에서 로키 도입하다 보니 이렇게 됨) # 문제 상황 Grafana와 Loki를 별도로 쿠버네티스 위에 띄우고, Grafana에서 Data Source로 Loki를 추가했습니다. Connection Test는 성공하지만,,, 위 사진처럼 Alert rules로 가면 로키 데이.. 2023. 7. 27.
[k8s/aws] 쿠버네티스에서 AWS EBS를 볼륨으로 사용할 수 있기까지 본 글은 설명하고자 하는 전체 과정을 러프하게만 설명하며, 각 리소스들에 대한 상세한 설명 및 만드는 방법 등은 모두 생략합니다. # PV, PVC - 쿠버네티스에서의 볼륨 쿠버네티스에서 앱들은 pod 형태로 올라가며, 각 pod에는 1개 이상의 컨테이너가 돌아갑니다. 컨테이너 내 디스크에 존재하는 파일은 유실될 가능성이 높으며, 다른 pod 내 컨테이너와 공유할 수 없습니다. -> 쿠버네티스 클러스터 상의 볼륨 리소스를 사용해 같은 배포 내의 pod들이 같은 볼륨을 바라볼 수 있어야 합니다. 먼저 임시 볼륨 (ephemeral volume) 이 있습니다. 임시 볼륨으로도 파드 재시작 시의 데이터 보존은 가능하지만, 데이터의 영구 보존은 불가합니다. 그치만 영구 보존... 필요하죠? 필요한 경우, PV와.. 2023. 7. 26.
[Terraform/k8s] aws-auth ConfigMap Patch # aws-auth란? aws와 k8s는 권한 체계를 다르게 가져간다. -> aws에 어드민 권한이 있더라도 eks를 최초로 생성한 User(또는 Role)가 아니라면 내부 리소스를 확인할 수 없다. 하지만 aws에서 올리는 k8s인 eks 특성상, aws의 권한을 인가받을 수 있어야 한다. 예를들면, 당장 eks의 노드(ec2. 또는 fargate session)에서도 k8s 리소스들에 대한 권한이 필요하며, aws의 다른 유저들에게 내가 생성한 eks를 공유할수도 있어야 한다. -> aws authentication을 k8s 권한체계랑 매핑시켜주는게 aws-auth ConfigMap의 역할이다. aws-auth의 full configuration format은 아래에서 확인할 수 있다. https:/.. 2023. 7. 20.
[Terraform/k8s] gp2 Storage Class patch eks를 만들면, gp2 storage class가 자동으로 같이 생성되어 있다. https://docs.aws.amazon.com/eks/latest/userguide/storage-classes.html Storage classes - Amazon EKS Storage classes Amazon EKS clusters that were created prior to Kubernetes version 1.11 weren't created with any storage classes. You must define storage classes for your cluster to use and you should define a default storage class for your persistent vo.. 2023. 6. 5.
[CKA] 2023-04-22 합격 후기 4월 22일에 CKA를 땄다. 이전부터 따야지 따야지 했었는데, 막상 일 하면서 병행으로 준비하기가 힘들었었는데 (사실 의지 부족...) 이직하면서 백수 기간이 3주 생기면서 이참에 따게 되었다. 백수 기간 3주 중 첫 1주는 롤체로 버리고 😅 2주동안 준비하여 시험을 보게 되었다. 다만 난 이전에 준비를 하다 만 적이 있었고, 쿠버네티스 운영을 업무로 해왔기 때문에 남들보다 적게 준비했던 것 같다. 어디 오픈톡방에서 누가 알려줘서 30%쿠폰을 사용하여 등록했다. 몰랐는데, 시험 등록 == 시험 일정 잡기 가 아니었고, 시험을 등록해 두면 1년 내로만 시험을 치면 되는 구조였다. 재시험의 기회도 있었고... 남들 하는대로 뭄샤드 강의 들었고, 뭄샤드 강의 끝 Mock Exam 여러 번 열심히 풀었다. C.. 2023. 4. 30.
[kubernetes] Taints, Tolerations vs Node Affinity (요약) # Ref 유데미 뭄샤드 강의 # Taints & Tolerations 특정 Pod가 특정 Node에 스케줄될 수 있는지에 대한 제한 Taint : Node에 설정 해당 Taint를 Toleration할 수 있는 Pod만 해당 Node에서 뜰 수 있음 그러나 해당 Pod는 해당 Node를 Prefer (선호)할 뿐, 무조건 해당 Node에만 뜨는 것은 아님. 즉, A Pod만이 Node01에 뜰 수 있도록 보장할 순 있지만, A Pod가 Node01에 배치되는걸 보장할 수 없음 Blue Taint-Toleration / Red Taint-Toleration 되어있을 때, A : 1을 선호하지만 3에도 배치 가능 B : 2를 선호하지만 3에도 배치 가능 C : 1, 2에 배치 불가능하기 때문에 3에만 배치.. 2022. 12. 13.
[Terraform/k8s] k8s YAML 리소스로 Terraform Code를 쉽게 작성하는 3가지 방법 Terraform으로 kubernetes를 관리하는 경우, yaml 리소스를 한땀한땀 HCL Code로 변경하는건 매우 귀찮다 (너무 당연하게도) 노가다를 자동으로 돌려주는 오픈소스가 이미 있었다 1. k2tf (Open Source) 공식 k8s provider에서 제공하는 API를 사용하는 경우, k2tf를 사용해 간편하게 변환할 수 있다 https://github.com/sl1pm4t/k2tf GitHub - sl1pm4t/k2tf: Kubernetes YAML to Terraform HCL converter Kubernetes YAML to Terraform HCL converter. Contribute to sl1pm4t/k2tf development by creating an account o.. 2022. 8. 21.
[Terraform/EKS/k8s] import 시 Kubernetes: Unauthorized 상황 Terraform의 한 모듈 내에서 EKS Cluster와 k8s 리소스들을 같이 프로비저닝 중 k8s 리소스 블럭들을 추가하였고, 기존 cluster 내부 리소스들을 import 해야하는 상황 ## k8s provider 설정 data "aws_eks_cluster_auth" "cluster" { name = aws_eks_cluster.this.id } provider "kubernetes" { host = aws_eks_cluster.this.endpoint token = data.aws_eks_cluster_auth.cluster.token cluster_ca_certificate = base64decode(aws_eks_cluster.this.certificate_authority[0].d.. 2022. 6. 28.