본문 바로가기

개발 및 운영122

메일서버 (SMAP/IMAP) 종류 기존에 메일서버를 postfix + dovecot 을 사용했다. 그 외에 메일서버를 찾아보았다. SMTP Server postfix 언어 : C | 메모리 안정성 낮음 dovecot 를 통한 인증 지원 virtual domain/alias : sql 지원, socketmap 지원 haraka 언어 : Javascript | 메모리 안정성 O | 타입 안정성 X 플러그인 지원 커스텀 인증 지원 IMAP Server dovecot 언어 : C | 메모리 안정성 낮음 다양한 인증 지원 및 lua script 지원 wildduck 언어 : Javascript | 메모리 안정성 O | 타입 안정성 X 클러스터 : 지원 플러그인 지원 미숙함 커스텀 인증 지원하지 않음 완전체 솔루션 mailu 오픈소스 poste 유.. 2023. 2. 4.
Kubernetes 에서 Node 죽었을 때 PV가 있는 파드가 스케쥴링 되지 않는 현상 Kubernetes Cluster 에서 Node 가 예기치 않게 죽었을 때, Node Status 는 NotReady 상태가 되고, 해당 Node 에 물린 Pod 들은 일정 시간이 지난 이후 다른 노드로 Re-schedule 되어 자동적으로 복구 될 수 있다. 하지만 rook-ceph 을 통해 PV 가 물린 Pod 는 이야기가 달라진다. Node 가 그냥 죽은 상태는 큰 문제가 되지 않지만, Split-brain 이나 Node suspend 상태 등으로 인해 NotReady 가 되었지만 이후에 다시 살아나서 Volume Write 가 이루어지는 경우에는 다른 파드가 떠있다면 충돌이 일어나 Volume 이 손상되게 된다. 이러한 것을 막기 위해 Volume 이 Unmount 되지 않았다면 다른 Pod 에서.. 2022. 12. 27.
RKE2 의 API 서버 접속 방법 (왜 127.0.0.1:6443 인가?) Kubernetes 의 kubelet 은 kube-apiserver 랑 통신한다. 그래서 control plane 노드가 여러개 있으면 Domain 이나 VIP 를 만들어서 Load Balancer 를 통해 살아있는 Control Plane 노드로 연결할 수 있도록 구현해 주어야 한다. 하지만 RKE2 를 Elemental 으로 설치했는데 고민이 생겼다. 이러한 Load Balancer 를 설정할 수 있는 방법이 없었기 때문이다. (RKE2 를 그냥 설치하면 server address 를 설정할 수 있지만 elemental 과 rancher 로 프로비저닝하면 자동으로 지정된다) 그래서 만약 첫번째로 프로비저닝된 control plane 노드가 죽으면, 다른 노드들은 어떻게 통신하지? 라는 물음이었는데, .. 2022. 10. 26.
EJBCA-CE Docker with HSM on Kubernetes ejbca-ee can be integrated with HSM. > https://github.com/Keyfactor/ejbca-containers/blob/master/hsm-integration/hsm-drivers/hsm-driver-softhsm/Containerfile However, registry.primekey.com is not accessible as it is a paid repository. So, I implement it using the open source pkcs11-proxy. See https://gist.github.com/jclab-joseph/973d06db6856a8e5cb851909fbc7268b And https://github.com/jc-lab/hsm-.. 2022. 10. 3.
Node.JS Stream Backpressure 처리에 대해 전에 한번 확인 했던 것 같은데 stream 을 만들어 쓸려니까 또 까먹었다.. 테스트 소스: https://gist.github.com/jclab-joseph/d4258a4f8c2d19c15ccc8dfb27540f16 Readable Stream 에서 push 할 때 그냥 callback 으로 기다리게 하면 좋을려만.. 과정은 이렇다. - this.push 의 return 이 false 이면 내부 버퍼가 다 찬 것이다. (실제 고정 버퍼는 아니고 highWaterMark 사이즈를 넘었다는 것이다. 따라서 다시 push 할 필요는 없다. 버퍼링 된 것이다.) - 버퍼가 비워지면 다시 _read 가 호출된다. 그러면 다시 push 가 가능하다. (this.push 가 false 가 되면, Duplex 또는.. 2022. 9. 15.
rook-ceph 에서 Proxmox ceph 을 external cluster 으로 사용할 때 문제 rook-ceph 에서 proxmox 의 ceph 에 external cluster 으로써 연결 해 사용하려고 했다. 하지만 동작하지 않는다... 정확히는 Cluster 는 연결되지만 rados gateway 가 동작하지 않았다. (CephObjectStore) 아래와 같이 버전이 다르다고 하는데 사실 버전은 동일했다. ceph-object-controller: failed to reconcile CephObjectStore "rook-ceph-external/my-store". waiting for ceph monitors upgrade to finish. current version: 16.2.9-0 pacific. expected version: 16.2.9-0 pacific. will reconc.. 2022. 8. 10.
반응형