본문 바로가기

kubernetes49

grafana api콜버튼 플러그인 (in helm chart) grafana 대시보드에서 버튼 딸깍 하면 api 콜 날리게 할 순 없나? 찾아보다가 플러그인 발견https://github.com/cloudspout/cloudspout-button-panel GitHub - cloudspout/cloudspout-button-panel: Grafana panel to integrate with any kind of HTTP/REST APIGrafana panel to integrate with any kind of HTTP/REST API - cloudspout/cloudspout-button-panelgithub.com  helm chart (6.58.4 버전)에서는 다음과 같이 추가 가능 plugins:- https://github.com/cloudspout/cl.. 2024. 8. 28.
[GitLab] helm registry로 사용하기 https://docs.gitlab.com/ee/user/packages/helm_repository/ Helm charts in the package registry | GitLabGitLab product documentation.docs.gitlab.com  # 환경변수 설정 - 자신에 맞게GITLAB_USERNAME='' # 개인 유저이름GITLAB_PASSWORD='' # 개인 토큰 사용GITLAB_DOMAIN='' # 개인 깃랩 도메인 입력GITLAB_PROJECT_ID=2 # helm registry로 이용할 프로젝트의 id 입력GITLAB_HELM_CHANNEL=stableGITLAB_HELM_REPO_NAME=my-gitlab # 로컬에서 자유롭게 선언GITLAB_HELM_URL=http.. 2024. 8. 4.
[Airflow/helm] Keycloak OAuth 붙이기 # 사용 차트User Community 버전 / 8.8.0https://artifacthub.io/packages/helm/airflow-helm/airflow/8.8.0 airflow 8.8.0 · airflow-helm/airflow-helmAirflow Helm Chart (User Community) - the standard way to deploy Apache Airflow on Kubernetes with Helmartifacthub.io  # 1. Keycloak Client 생성참고로 난 keycloak 21버전을 사용한다.>> keycloak 설치 글 : [Keycloak 21] k8s cluster에 helm chart로 설치하기 Client > Create client Client .. 2024. 8. 4.
[k8s] 주기적으로 rollout restart 하는 k8s cronjob # 요구사항- 한 앱이 메모리 누수가 있는데, 당장 고칠 개발팀 리소스가 부족함- 일단은 매일 새벽에 한번씩 restart 시켜주는 크론잡 만들어주기로 함- BlueGreen 배포 전략을 사용하느라, argo Rollout 객체를 사용함 # 이름 정리- 앱 이름 : `honglab-app`- 네임스페이스 : `application` # 필요 객체크론잡과, RBAC을 위한 SA, Role, RoleBinding이 필요함애플리케이션과 크론잡은 같은 클러스터, 같은 네임스페이스에 위치시켜 RBAC을 위한 과정을 최소화 함. 1) ServiceAccountapiVersion: v1kind: ServiceAccountmetadata: name: restart-honglab-app-sa namespace: ap.. 2024. 8. 4.
[Sentry/helm] sentry 쿠버에 띄우기 # 사용 차트https://artifacthub.io/packages/helm/sentry/sentry/23.11.0 sentry 23.11.0 · webofmars/sentryA Helm chart for Kubernetesartifacthub.io sentry - 23.11.0 사용  센트리는 같이 깔아야 하는 놈들이 많다. clickhouse, kafka, zookeeper, postgres, redis, rabbitmq ...(values도 엄청 길다.. 2천줄 넘음;)1. postgres랑 redis는 AWS RDS, ElastiCache를 사용하는거로 변경하고,2. 폐쇄망이라 일단 mail설정은 포기 (나중에 누군가 하겠지)3. ingress 사용4. prometheus serviceMonit.. 2024. 7. 26.
[Nexus/helm] nexus-repository-manager helm chart로 구성하기 https://artifacthub.io/packages/helm/sonatype/nexus-repository-manager nexus-repository-manager 64.2.0 · sonatype/sonatypeDEPRECATED Sonatype Nexus Repository Manager - Universal Binary repositoryartifacthub.io 이 차트를 처음 봤을 때,  차트를 더이상 업데이트/지원하지 않는다...고가용성 차트를 따로 제공한다 : 이 차트만 유일하게 지원할거임-> https://artifacthub.io/packages/helm/sonatype/nxrm-ha nxrm-ha 70.1.0 · sonatype/sonatypeResilient Deployment .. 2024. 7. 18.
[aws-load-balancer-controller] failed calling webhook "mtargetgroupbinding.elbv2.k8s.aws" # 사전 설명폐쇄망에서 eks 구축을 하고 있었다.A 계정의 A 클러스터를 먼저 만들어보고, 테라폼 모듈을 완성해 다른 B, C, D 계정에도 똑같이 만들려고 하는데...Internal error occurred: failed calling webhook "mtargetgroupbinding.elbv2.k8s.aws": failed to call webhook: Post "https://aws-load-balancer-webhook-service.kube-system.svc:443/mutate-elbv2-k8s-aws-v1beta1-targetgroupbinding?timeout=10s": context deadline exceeded TargetGroupBinding 객체를 만드려고 시도할 때 마다 이.. 2024. 7. 17.
[ArgoCD/helm] LDAP 인증 붙이기 https://artifacthub.io/packages/helm/argo/argo-cd argo-cd 7.3.7 · argoproj/argoA Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes.artifacthub.io  # values.yamlconfigs: cm: dex.config: | connectors: - type: ldap name: ldap id: ad config: # ldap 주소(또는 IP) host: ldap.honglab.com:389 insecureNoSSL: tru.. 2024. 7. 16.
[Grafana/helm] LDAP 인증 붙이기 https://artifacthub.io/packages/helm/grafana/grafana grafana 8.3.4 · grafana/grafanaThe leading tool for querying and visualizing time series and metrics.artifacthub.io  # values.yamlgrafana.ini: auth.ldap: enabled: true allow_sign_up: true config_file: /etc/grafana/ldap.tomlldap: enabled: true config: |- verbose_logging = true [[servers]] # ldap 주소(또는 IP) host = "ldap.ho.. 2024. 7. 16.
[AWS EKS] 보안그룹 최소 필요사항 정리 - 폐쇄망 기준- VPC Endpoint는 필요한 것 모두 생성되어 있다고 가정- inbound / outbound 모두 제어 (any는 없음)- Node의 보안그룹 / Cluster의 보안그룹은 각자의 클러스터 아키텍처에 맞게 생각 보안그룹typeprotocolport대상설명Node 보안그룹ingresstcp443, 10250Cluster 보안그룹필수 통신 포트Node 보안그룹egresstcp443, 10250Cluster 보안그룹필수 통신 포트Node 보안그룹egresstcp, udp53Cluster 보안그룹DNSNode 보안그룹egresstcp443VPC Endpoint 보안그룹endpoint 통신Node 보안그룹egresstcp443S3 Prefix Listendpoint 통신      Clust.. 2024. 7. 1.
[ArgoCD] RBAC 액션별로 제공하기 # 공식 문서https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/ # policy 규칙p, , , , / allowResources: `clusters`, `projects`, `applications`, `applicationsets`, `repositories`, `certificates`, `accounts`, `gpgkeys`, `logs`, `exec`, `extensions`Actions: `get`, `create`, `update`, `delete`, `sync`, `override`, `action/` 이 때 `sync`, `override`, `action/*` 액션은 applications 리소스에 대해서만 사용 가능 # ac.. 2024. 6. 18.
[Robusta] 직관적인 쿠버네티스 클러스터 알람 받기 그동안 쿠버네티스 워크로드에 대한 알림은 argocd / datadog 일부 만 있었다.그러다가 파드 내에서 OOMKill이 일어나 리스타트 되는 경우가 많다는 것을 알게 되었는데, argocd에서는 이 경우를 감지하지 못하고, datadog 알림은 가독성이 썩 좋진 못했다. 어떤 이유로 restart되었는지 알지 못하고, 어떤 클러스터의 어떤 파드인지도 한 눈에 들어오지 않는다.뭐 사실 이것도 어떻게든 잘 깎으면 개선할 수 있었겠지만, 또 거기에 리소스를 쏟을 시간은 없었다. (사실 하기 싫은거 맞음) 그러다가 Robusta 라는 것을 알게 되었다. (어디 오픈톡방에서 누가 키워드를 남겼는데 이후로 찾아보았다.)레퍼런스는 많이 없었는데, 제니퍼소프트 블로그 글을 보고 일단 한번 설치해 봐야겠다는 생각을.. 2024. 6. 6.
[external-dns] 특정 ingress만 무시하기 (exclude) 인터넷에 검색해보면external-dns.alpha.kubernetes.io/exclude: "true" 라는 어노테이션을 통해 특정 ingress를 external-dns에서 무시할 수 있도록 한다고 써있다.근데 그렇게 해봤는데 안됨...심지어 공식도큐 등을 계속 뒤지다보니 공식적으로 저런 어노테이션을 제공한적이 없어서 더 멘붕 옴 근데 유일한 한국 블로그 글이 있었는데, 여기에 정확한 답이 있었다.(벨로그 아이디가 없어서 댓글 못달았는데 제발 적게 일하고 많이 버십쇼)https://velog.io/@nigasa12/External-dns%EC%97%90-exclude-filter%EB%A5%BC-%EA%B1%B8%EC%96%B4%EB%B3%B4%EC%9E%90 External-dns에 exclude .. 2024. 4. 30.
[AWS EKS] CoreDNS Addon을 FARGATE로 띄우기 (w. Terraform) # 0. 서론eks의 모든 노드들을 카펜터로 띄우기 시작했다.카펜터가 아닌 노드가 없기 때문에 karpenter 자체는 fargate로 띄워야만 했다.여기까지는 managed node group > karpenter로 마이그레이션하다가 알게 된 것이고.. 카펜터만 띄우는 설정으로 새로 클러스터를 띄우다보니 coredns가 karpenter보다 먼저 떠야 한다는 것을 알게 되었다.(카펜터도 내부 dns에 의존하는 무언가가 있나보다. 더 자세히 알아보진 않았다.) 따라서 karpenter와 마찬가지로 coredns도 fargate로 띄우도록 설정을 변경하게 되었다.이 때 필요한 과정을 terraform으로 설명하겠다. # 1. coredns fargate profile 생성locals { cluster_n.. 2024. 4. 28.
[AWS EKS] 클러스터 보안그룹 vs 추가 보안그룹 (Cluster SG vs Additional SG) # 결론클러스터 보안그룹과 추가 보안그룹은 다르다.클러스터 보안그룹 (EKS 생성 시 자동 생성되며, self rule도 자동으로 생성되어 있음) 은 eks api로 만든 컴퓨팅 리소스 (fargate, managed ec2 node group) 들에 적용된다.즉,컨트롤플레인의 cross-eni : 클러스터 보안그룹 & 추가 보안그룹 사용fargate, managed node group 노드 : 클러스터 보안그룹 사용자체 런치템플릿 사용한 managed node group, self managed 노드 : 커스텀 보안그룹 사용 (내가 지정하는걸로) # 일단 용어정리클러스터 보안그룹 : eks 클러스터 생성 시 자동으로 생성되는 "Cluster security group"추가 보안그룹 : eks 클러스터 .. 2024. 4. 28.