kubernetes

    [Terraform & Azure] Terraform으로 Azure 리소스의 하위 리소스 import 하기(Terraform import)

    [Terraform & Azure] Terraform으로 Azure 리소스의 하위 리소스 import 하기(Terraform import)

    안녕하세요~! 오늘은 Terraform, 그 중에서도 Azure provider(azurerm)과 관련된 이야기입니다. 배경 배경부터 거슬러 올라가자면....애초에 이런 상황이 발생하지 말았어야 하는데요...^^;;;;; 클러스터가 생성은 terraform으로 되었지만 state가 로컬에서만 관리되다가(문제의 시발점) 어느 순간부터 변경점을 terraform이 아니라 azure cli 및 포털 액세스를 통해 적용해 온 클러스터들이 있었습니다. 거기에 추가로 tfstate 파일이 소유자의 노트북 교체로 분실되면서 상황이 더욱 더 막장으로 치닫게 되었는데요... 클러스터 두 개 그냥 뭐... 관리를... cli로............ .... .. ... ........ㅠㅠ 못 참겠어서 백엔드 연동하고 마이..

    [Kubernetes] AKS 쿠버네티스 Multi-AZ(Availability Zone) 환경에 PV를 사용할 때, 주의하자! volume node affinity conflict

    [Kubernetes] AKS 쿠버네티스 Multi-AZ(Availability Zone) 환경에 PV를 사용할 때, 주의하자! volume node affinity conflict

    꽤 지난 이야기이긴 한데, 테스트 클러스터에서 겪었던 일이라 소규모 클러스터, 그 중에서도 statefulset을 사용하는 클러스터를 운영하는 경우 마주칠 수 있는 상황이라 공유합니다. 증상 커피를 마시고 왔는데, 테스트 클러스터의 statefulset으로 올려진 애플리케이션이 pending 상태로 전환되어 있다. 뭐야 왜지? 에서 출발한 의문. 로그를 확인해 보니, FailedScheduling 이 해당 애플리케이션에서 발생하였는데, 원인은 1 Insufficient cpu, 1 Too many pods, 1 node(s) had volume node affinity conflict 였습니다. 시스템 노드를(Master Plane 말고.. 요거는 매니지드 쿠버네티스로 띄워둔거라 마스터노드는 내가 관리하..

    [이럴땐이렇게] Kubernetes(쿠버네티스)에서 namespace 삭제가 안 될 때 강제 삭제하기

    [이럴땐이렇게] Kubernetes(쿠버네티스)에서 namespace 삭제가 안 될 때 강제 삭제하기

    안녕하세요~ 요즘 집이나 회사나 처리할 일이 많아서ㅜㅜ 짬이 통 나질 않네요.. 금요일 오후 늦게부터는 시간이 좀 되니까 Multi-AZ 환경에서의 statefulset 배포시 주의점이나 아니면 Rancher 연동으로 꼭! 찾아오겠습니다. 짧게라도 ... Kubernetes에서 kubectl delete ns ${NAME} 이런식으로 namespace를 삭제하실 때 행이 걸리고 namespace는 삭제되지 않은 채 kubectl get ns ${NAME} 이런식으로 확인해 보면 terminating 상태로 계속 대기중인 경우가 종종 있습니다. 이 경우 finalizer를 비워 주시면 되는데요, finalizer를 비워주시는 방법은 API를 이용한 방법이 아래에 소개드릴 방법보다 더 정석이라고 생각해서 먼..

    [Kubernetes] RBAC을 이용하여 특정 namespace에만 권한 주기

    [Kubernetes] RBAC을 이용하여 특정 namespace에만 권한 주기

    안녕하세요! 오늘은 특정 NAMESPACE에만 권한을 부여하고, 이 권한에 대한 kubeconfig 를 생성하는 방법에 대해 알아보겠습니다. 특정 namespace용 kubeconfig 만들기 TL;DR; Kubernetes에서 제공하는 role, role binding, service account를 이용합니다. 관련문서: https://kubernetes.io/docs/reference/access-authn-authz/rbac/ 특정 namespace에 read/write 권한을 갖는 role을 생성하고, 시스템 어카운트인 serviceaccount를 생성하고, rolebindingd을 통해 앞서 정의한 role을 생성한 serviceaccount에 바인딩합니다. 상황 클러스터를 관리하고 있는 ad..

    [Kubernetes & Azure] TLS 인증서(SSL 인증서) Keyvault 연동하기

    [Kubernetes & Azure] TLS 인증서(SSL 인증서) Keyvault 연동하기

    위에는 CSI 드라이버를 이용한 방법이구요, 아래는 오픈소스를 이용한 방법인데요~ 저는 1번이 번거로워서 아래 방식(2번)으로 진행하였으니 참고 부탁 드립니다. CSI 드라이버를 이용한 방법 공식문서: https://docs.microsoft.com/ko-kr/azure/aks/csi-secrets-store-nginx-tls#bind-certificate-to-ingress-controller TLS를 사용하여 nginx ingress controller를 사용하는 secret storage CSI 드라이버 설정 어플리케이션에 설정하는 방법: deployment에 volume mount하여 certificate사용 Ingress controller에 설정하는 방법: 어플리케이션 pod는 tls 인증서에..

    [Kubernetes] Node selector vs. Node affinity, 어떤 것을 사용할까?

    [Kubernetes] Node selector vs. Node affinity, 어떤 것을 사용할까?

    Node selector vs. Node affinity, 어떤 것을 사용할까? 오늘의 주제는 node selector와 node affinity 입니다. Kubernetes에서 pod가 스케쥴링 될 node를 지정하는 기능에 대한 이야기인데요, 고민하지 마시고 node affinity를 사용하시면 됩니다. - 끝 - 농담입니다 😉 결론이 저거는 맞는데 저렇게 포스팅하면 안 되고, 차근히 알아보도록 하겠습니다. 주의: 제가 여기서 이야기하는 '서비스'는 회사 입장에서의 '서비스'이고, 쿠버네티스의 service 타입 리소스에 국한되어 언급하는 것이 아닙니다. deployment 타입을 포함하며 특정 리소스 타입에 국한되지 않는, 예를 들어 로그인 서버라고 한다면 로그인 서비스와 같은 추상적이고 포괄적인 ..