728x90
반응형

카프카를 helm으로 설치하고 삭제한 뒤에 서비스가 제대로 제거되지 않고 남아 있었다.

 

서비스를 삭제하기 위해 kubectl delete svc ... 나 kubectl delete svc ... --force 를 했지만 되지 않았다.

 

그래서 찾아보니 metada에 있는 아래의 finalizers 항목을 지우면 된다고 해서 해보니 바로 제거되는 것을 확인할 수 있었다.

 

finalizers:
  - service.kubernetes.io/load-balancer-cleanup

참고 문헌

1. https://serverfault.com/a/1018700

반응형
728x90
반응형

기존에는 서버에 직접 로그스태시를 설치하여 카프카와 ES를 연동했다.

 

그래서 메모리 문제가 발생할 때 설정을 수정하고 재시작했었고 서버에 문제가 생기는 경우 로그 수집이 중단됐었다.

 

서버를 더 늘리면 되는데 그때마다 증설이 어려워 kubernetes를 이용해보기로 했다.

helm install -f values.yaml logstash elastic/logstash
helm upgrade -f values.yaml logstash elastic/logstash

기존에는 서버별로 수집하는 토픽을 설정했다면 쿠버네티스로 이전하면서 필터가 비슷한 경우 아니면 전부 분리할 수 있었다.

 

replica 수를 설정하여 파티션 만큼 로그스태시를 올릴 수 있어 속도 개선이나 장애 상황에 유연하게 대응할 수 있었다.

 

또한 파드별로 리소스 제한을 하여 특정 토픽에 메모리 문제가 생겨도 해당 파드만 재시작되어 다른 토픽 수집이 안됐던 것을 방지할 수 있었다.

참고 문헌

1. https://github.com/elastic/helm-charts/tree/main/logstash

반응형

'Log' 카테고리의 다른 글

[Log] Kibana에서 소수점 숫자가 안나오는 문제  (1) 2024.01.11
[Log] 그라파나 설정 및 API  (0) 2023.05.04
[Log] Logstash 메모리 문제  (0) 2022.08.25
[Log] Apache Flume  (1) 2022.04.07
[Log] Grafana 이전 하기  (0) 2021.01.28
728x90
반응형

젠킨스 자체를 쿠버네티스 환경에 helm을 이용하면 쉽게 구축할 수 있었다.

 

하지만 기존에 사용하던 플러그인들과 각종 환경들을 그대로 가져오는 것이 문제였다.

 

플러그인의 경우 사용 중인지 아닌지 판별이 어려웠다.

 

plugins.jenkins.io/{plugin-name}에 있는 플러인 이름을 확인한 다음 values.yaml에서 installPlugins에 작성하여 배포했다.

 

https://github.com/jenkinsci/helm-charts/blob/0572830631b4a8bef26cff0286a99b9747686be1/charts/jenkins/values.yaml#L241-L245

 

작업들의 경우 ThinBackup을 이용하여 백업한 뒤 tar로 묶어서 scp로 다운로드했다.

 

그리고 백업 파일을 젠킨스가 올라간 파드에 kubectl cp 라는 명령어로 업로드하여 쉽게 작업들을 이전할 수 있었다.

 

Go 언어를 사용하여 플러그인을 사용하면 go를 쉽게 설치하여 사용할 수 있었다.

 

하지만 ansible 같은 설치를 별도로 해주어야 하는 프로그램들이 있어 젠킨스에서 제공하는 도커 이미지로는 할 수 없었다.

 

그리고 젠킨스 파드 내에서 프로그램 설치를 시도했지만 권한을 막아두었기에 에이전트를 띄워서 작업할 수 있는지 해보았다.

 

테스트를 해보니 작업을 수행할 때마다 파드를 띄우고 끝나면 종료하는 형식이었다.

 

python이 설치된 이미지를 활용할 수는 있겠지만 매번 ansible을 설치하거나 ansible이 설치된 커스텀 이미지를 만들어야 했다.

 

이런 것들이 번거롭기에 커스텀 젠킨스 이미지를 생성하여 사용하였다.

FROM jenkins/jenkins:2.375.2-lts-jdk11

USER root

RUN apt-get update && apt-get install -y build-essential python3 python3-pip
RUN pip install ansible

USER jenkins

 

참고 문헌

https://github.com/jenkinsci/helm-charts/tree/main/charts/jenkins

https://plugins.jenkins.io/thinBackup/

https://hub.docker.com/r/jenkins/jenkins

반응형
728x90
반응형

개발용으로 ElasticSearch를 설치할 필요가 있었다.

 

예전에 서버 몇대에 직접 설치를 했었는데 이번에는 kubernets를 활용하여 설치해보았다.

 

helm 버전은 3 으로 진행했으며 처음 해보는 거라 다음과 같이 저장소를 추가하고 설치해보았다.

$ helm repo add elastic https://helm.elastic.co
$ helm install elasticsearch elastic/elasticsearch

위와 같이 하면 기본 구성으로 ElasticSearch가 설치되어 올라간 것을 확인할 수 있었다.

 

하지만 Ingress 연동은 설정으로 추가할 수 없어 해당 저장소를 클론한 다음 elasticsearch/values.yaml 을 수정해야 했다.

# Enabling this will publically expose your Elasticsearch instance.
# Only enable this if you have security enabled on your cluster
ingress:
  enabled: true
  annotations: {}
    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
  path: /
  hosts:
    - example.com
  tls: []
  #  - secretName: chart-example-tls
  #    hosts:
  #      - chart-example.local

ingress에 enabled가 false로 돼있는데 이것을 true로 변경하고 hosts에 연결할 도메인 주소를 넣으면 된다.

$ helm install elasticsearch --version version ./elasticsearch/

위와 같이 배포한 뒤 Ingress까지 잘 연동되는 것을 확인할 수 있었다.

 

끝으로 Kibana와 Logstash를 연동할 때 Ingress에 설정한 도메인만 넣으면 기본적으로 9200 포트로 설정된다.

 

하지만 80으로 접속을 해야하기 때문에 http://example.com:80 으로 포트를 명시하여 설정하면 잘 동작한다. 

 

참고 문헌

  1. https://github.com/elastic/helm-charts

반응형

'Log' 카테고리의 다른 글

[Log] Apache Flume  (1) 2022.04.07
[Log] Grafana 이전 하기  (0) 2021.01.28
[Log] Logstash 메모리 누수?  (0) 2020.12.03
[Log] Elastic Search 특정 필드 업데이트  (0) 2020.11.26
[Log] Spark 현재 날짜 조회 및 형변환  (0) 2020.09.10

+ Recent posts