Kubernetes 이야기

Kubernetes에 Nexus 설치 본문

Kubernetes/devops

Kubernetes에 Nexus 설치

kmaster 2023. 12. 29. 08:26
반응형

 

Sonatype Nexus는 소프트웨어 개발에서 사용되는 인기 있는 저장소 관리자 도구이다. 이는 소프트웨어 개발 프로세스에서 사용되는 바이너리 파일, 라이브러리 및 종속성과 같은 artifact를 관리하는 데 사용된다. Nexus는 이러한 artifact를 저장하고 검색하기 위한 중앙 저장소를 제공하여 개발 팀이 종속성을 관리하고 라이브러리를 공유하며 소프트웨어 빌드 프로세스의 일관성을 유지하는 데 도움을 준다.

 

개발자들은 Java개발 시 maven이나 gradle 컴파일 할 때 내부 Nexus 서버와 연동하여 jar 파일 등을 다운로드하거나 jar 를 deploy하는 형태로 많이 사용할 것이다. 특히 폐쇄망 환경에서는 거의 필수로 사용된다.

 

하지만, Nexus는 이러한 빌드 도구와의 통합 외에도 다양한 기능을 제공하고 있다. ( 예를들어, Docker Registry의 기능도 포함하고 있다. )

 

Sonatype Nexus의 주요 기능

 

  1. 아티팩트 관리: Nexus는 바이너리 아티팩트(라이브러리, 프레임워크 등)를 저장하고 관리하기 위한 저장소로 사용
  2. 프록시 및 캐싱: Nexus는 외부 저장소의 프록시로 작동하며 아티팩트를 로컬로 캐싱한다. 이는 빌드 시간을 단축하고 외부 저장소 다운타임으로 인한 빌드 프로세스에 영향을 최소화하는 데 도움이 된다.
  3. 보안 및 액세스 제어: Nexus는 액세스 제어 및 보안 기능을 제공하여 관리자가 누가 아티팩트에 액세스하고 발행할 수 있는지 정의할 수 있다.
  4. 저장소 상태 확인: Nexus는 저장소에 대한 상태 확인을 수행하여 저장된 아티팩트에 문제가 있는지 식별하고 플래그를 지정할 수 있다.
  5. 빌드 도구와의 통합: Nexus는 Apache Maven, Gradle 등과 같은 인기 있는 빌드 도구와 원활하게 통합된다. 이 통합을 통해 빌드 도구는 빌드 프로세스 중에 Nexus 저장소에서 종속성을 검색할 수 있다.
  6. 여러 저장소 형식 지원: Nexus는 Maven, npm, Docker, NuGet 등과 같은 다양한 저장소 형식을 지원한다. 이 유연성은 Nexus를 다양한 프로젝트 및 생태계에서 사용할 수 있게 한다.
  7. 아티팩트 검색 및 탐색: Nexus는 저장소에서 아티팩트를 검색하고 탐색할 수 있는 웹 인터페이스를 제공한다. 이를 통해 프로젝트에서 사용되는 종속성을 쉽게 찾고 이해할 수 있다.

설치

 

kubernetes에 설치하는 방법은 helm 배포가 있다. 이번에는 단순 yaml로 배포해 보자.

 

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nexus-data
spec:
  storageClassName: openebs-hostpath
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  volumeMode: Filesystem
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nexus
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nexus
  template:
    metadata:
      labels:
        app: nexus
    spec:
      containers:
      - image: sonatype/nexus3:3.63.0
        name: nexus
        ports:
        - containerPort: 8081
          protocol: TCP
        volumeMounts:
        - mountPath: /nexus-data
          name: nexus-data
      volumes:
      - name: nexus-data
        persistentVolumeClaim:
          claimName: nexus-data
---
apiVersion: v1
kind: Service
metadata:
  name: nexus-service
spec:
  ports:
  - name: nexus
    port: 8081
    protocol: TCP
    targetPort: 8081
    nodePort: 30200
  selector:
    app: nexus
  type: NodePort

 

 

로그인을 시도할 때 admin 패스워드는 /nexus-data/admin.password 파일에 존재한다.

 

 

로그인 후 다음과 같이 경고 메시지가 보인다.

The host system is allocating a maximum of 1 cores to the application. A minimum of 4 is recommended

 

Deployment.yaml 에 다음의 env를 추가하여 재기동하면 해결된다.

...
    spec:
      containers:
      - image: sonatype/nexus3:3.63.0
        name: nexus
        env:
        - name: INSTALL4J_ADD_VM_PARAMS
          value: "-XX:ActiveProcessorCount=4"
...

 

반응형

'Kubernetes > devops' 카테고리의 다른 글

Nexus에 Pypi 저장소 구축  (1) 2023.12.29
tekton과 argocd를 이용한 GitOps 구축하기  (0) 2023.01.12
Giblab install on kubernetes  (0) 2022.10.09
Backstage  (0) 2022.10.02
dapr  (0) 2022.09.30
Comments