모두가 볼 수 있는 WIKI 페이지를 오픈 했습니다.
UnSimple image builder
Unsimple image builder
보통 gii source 기반 이미지 빌드는 Jenkins 빌드파이프라인이나, Argocd 등을 이용하지만 임의로 이미지 빌드 등이 필요한 경우 수동 처리의 귀찮음을 해결하기 위한 도구.
쉽게 말해 매번 docker build -t registry.address/project/category/image_name:tag-tagnumber 명령을 입력하기 귀찮아서 만든 도구.
대강 구성도
┌─────────────────────────────────────────────┐ │ Git Image WebBuilder │ │ :8888 (Flask + gunicorn) │ │ │ │ ┌─────────┐ ┌─────────┐ ┌───────────────┐ │ │ │ Sources │ │ Builder │ │ Scripts │ │ │ │ │ │ │ │ │ │ │ │Registry │ │Build │ │Registered │ │ │ │Git Svr │ │Push │ │Ad-hoc (SSH) │ │ │ └─────────┘ │Rollout │ └───────────────┘ │ │ └────┬────┘ │ │ ┌───────────────┼───────────────┐ │ │ │ SQLite DB │ Build Logs │ │ │ │ (builder.db) │ (data/) │ │ │ └───────────────┴───────────────┘ │ └──────┬──────────┬──────────┬───────────────┘ │ │ │ ┌──────────────┘ │ └──────────────┐ │ │ │ ▼ ▼ ▼ ┌────────────────────┐ ┌──────────────────────┐ ┌──────────────────┐ │ Git Server │ │ Docker Daemon │ │ K8s Cluster │ │ │ │ │ │ │ │ Forgejo / GitHub │ │ docker build │ │ kubectl rollout │ │ Gitea / GitLab │ │ docker push │ │ restart │ │ │ │ │ │ status / pods │ │ SSH clone ──┐ │ │ │ │ │ │ │ HTTP clone ─┤ │ │ ▼ │ └──────────────────┘ └──────────────┘ │ │ ┌──────────────┐ │ │ │ │ Registry │ │ │ │ │ Harbor / │ │ │ │ │ DockerHub │ │ │ │ └──────────────┘ │ │ └──────────────────────┘ │ ┌────────┴─────────┐ │ Build Pipeline │ │ │ │ 1. git clone │ │ 2. Dockerfile ? │ │ 3. docker login │ │ 4. docker build │ │ 5. docker push │ │ 6. rollout │ │ (optional) │ └──────────────────┘
다운로드
사용법
기본적으로 git에 등록된 branch를 Unsimple image builder로 클론.
클론된 파일의 Dockerfile을 기반으로 이미지를 빌드한다.
연결된 image registry에 자동 push, 등록된 k8s 클러스터의 디플로이먼트(deployment, statefulset) rollout 명령 까지 날릴 수 있다.
Cloudera inspector
CDP Private Cloud Base/Data Services 설치를 위한 사전정비 도구.
패키지임에도 불구하고 사전에 작업해야 하는게 뭐 그렇게 많은지 갑갑해서 만들었다.
설치 사전작업, 메타데이터 저장용 Postgresql 설치, CM 설치 과정을 Web UI를 통해 진행할 수 있다.
상세 매뉴얼
사전 준비사항
CDP 설치를 위한 사전 준비사항을 처리하는 어플리케이션이지만 그래도 최소한의 사전 작업은 필요하다. 이 도구는 SSH key를 통한 인증 기반으로 만들어졌기 때문에 키를 배포하는 과정은 처리 해줘야 한다.
# private key 생성 openssl genrsa -out id_rsa 1024 # 이 때 ~/.ssh/id_rsa 파일이 생성된다. 이 파일을 업로드 해야 한다. # public key 생성 ssh-keygen -y -f id_rsa > id_rsa.pub # authoorized_keys cat id_rsa.pub >> authorized_keys # 노드로 등록할 각 서버에 authorized_keys를 복사 해줘야 한다. chmod 700 ~/.ssh chmod 600 ~/.ssh/*
어플리케이션 설치
키 교환이 완료되었으면 아래 파일을 다운로드받고 설치 후 Web페이지에 접속해서 작업을 진행한다.
다운로드 링크
SSH Tunneling
- SSH(Secure Shell): 프로토콜을 이용하여 네트워크 트래픽을 암호화된 통로(터널)를 통해 안전하게 전송하는 기술
- 일반적인 Proxy의 연결 방식과 차이가 없지만 SSH 프로토콜을 기반으로 작동하므로, 평문 연결에 대해서도 암호화 통신을 하는 효과를 얻을 수 있다. 단, 터널 제한을 하지 않는다면 클라이언트에서 중계서버에서 접근 가능한 모든 서버에 접근할 수 있다는 이야기이므로 오히려 보안상 취약할 수 있다.

- 터널링 설정 : Linux Shell / Windows Power shell / OS X shell
# ssh -L $LOCALHOST_LISTEN_PORT:$TARGET_HOST:$TARGET_PORT $USER_NAME@TUNNEL_SERVER # ssh -L 내_PC에서_오픈할_포트:실제_접속할_서버_호스트:실제_접속할_서버_포트 중계서버_계정@중계서버_호스트 ssh -L 18080:172.17.0.100:8080 user@172.17.200.200
- 터널링 설정 : Windows Putty

OpenLdap 설치 (on Redhat linux)
- LDAP 개요

- LDAP(Lightweight Directory Access Protocol) :
디렉터리 서비스(Directory Service)에 접근하고 관리하기 위한 표준 프로토콜로써 다음과 같은 특징을 가진다.
경량 프로토콜 : 이름 그대로 “Lightweight”, 기존 X.500 디렉터리 서비스의 복잡한 구조를 단순화해 TCP/IP 환경에서 효율적으로 동작한다.
계층적 구조(Tree 구조): dc=example,dc=com과 같은 도메인 기반 트리 구조로 데이터를 저장.ou=users,dc=example,dc=com (ou=Organizational Unit).
데이터 저장 방식: 사용자 정보(UID, 이름, 비밀번호, 메일 등)를 속성(attribute) 형태로 저장.
검색 및 인증 서비스: SSO, RBAC 등에 사용 (OpenLDAP / Active Directory)
Cloudera Components Configuration
Cloudera Manager (Hadoop Eco Ssytem) & Components Configuration 예제
Cloudera Manager, HDFS, Hive, Impala 등 CM 및 각 콤포넌트 설정 예시
Hive 설정
Apache Hive는 방대한 규모에서 분석할 수 있는 내결함성을 갖춘 분산 데이터 웨어하우스 시스템이다. 데이터 웨어하우스는 정보에 입각한 데이터 중심 의사 결정을 내릴 수 있도록 쉽게 분석할 수 있는 정보의 중앙 스토어를 제공하며, 사용자가 SQL를 사용하여 페타바이트 데이터를 읽고 쓰고 관리할 수 있도록 한다.
JDBC, ODBC 연결 및 SQL을 처리해주는 hiveserver2와
테이블 정보 등 메타데이터를 관리해주는 metastore 두 기능을 제공한다.
Trino(PrestoDB) 설치
Trino(PrestoDB)는 분산 SQL 쿼리 엔진으로, 하나 이상의 혼성 데이터 소스에 분산된 대규모 데이터 세트를 쿼리하기 위해 설계된 오픈 소스 소프트웨어이다. Trino는 Hive 및 Iceberg 테이블 형식을 사용하여 HDFS, AWS S3, Google Cloud Storage 또는 Azure Blob Storage 같은 다양한 스토리지 시스템에 존재하는 ORC 또는 Parquet 와 같은 개방형 열 지향 데이터 파일 형식을 포함하는 데이터레이크를 쿼리할 수 있다. 또한 Trino는 MySQL, PostgreSQL, Cassandra, Kafka, MongoDB, 그리고 Elasticsearch 와 같은 다양한 데이터 소스의 테이블을 쿼리하는 페더레이션 쿼리를 실행할 수 있다. Trino는 Apache 라이선스 에 따라 배포된다.
AWS의 Athena가 Presto 기반, NHN cloud의 DataQuery의 경우 Trino 기반이다.
- RPM, DEB 등 패키지 설치가 아닌 바이너리 다운로드 및 구동 기준 변수 설정 등.
Trino 구동을 위한 설정, (LDAP 인증, TLS 적용 설정)
- LDAP을 통한 인증 설정이 된 Trino 클러스터 설정.
- 인증 기능을 활성화 하기 위해서는 TLS설정이 필요하므로, TLS 설정을 포함한다.
자체 서명 인증서 생성과 관련된 내용은 “사설 인증서 생성” 에서 확인할 수 있다.
- LDAP이 아닌 FileDB를 통한 인증 설정.
- Trino를 통해 접근할 타겟 데이터 베이스 카탈로그 설정.
- Iceberg 활용을 위한 메타스토어 등록 등.
- HDFS(Hadoop Distributed File system), 오브젝트 스토리지(minio) 등.
