nexus - choisungwook/portfolio GitHub Wiki

개요

  • nexus helm 사용 메뉴얼

준비

  • 쿠버네티스 설치와 클러스터 구성
  • helm3 설치
  • cert-manager 설치와 사용방법 이해
  • 외부 도메인/네임서버
  • 실습에서는 네임서버를 cloudflare사용
  • 동적 프로비저닝 활성화

저장소 추가

helm repo add sonatype https://sonatype.github.io/helm3-charts/
helm repo update

override_values.yaml 파일 생성

(옵션1) docker + ingress subapth

  • ingress 활성화
    • ingress.hostRepo: 도메인주소
  • ingress subpath 변경
    • nexus.env: NEXUS_CONTENT
    • ingress.hostPath: NEXUS_CONTENT에 설정한 값으로 변경
  • docker
    • helm nexus에서는 docker ingress설정이 필수
nexus:
  docker:
    enabled: true
    registries:
      - port: 5000
        host: docker.choilab.com
        secretName: docker-ssl
  env:
  - name: NEXUS_CONTEXT
    value: nexus
  livenessProbe:
    path: /nexus
  readinessProbe:
    path: /nexus

ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: nginx
  hostPath: /nexus
  hostRepo: choilab.com
  tls:
    - hosts:
      - docker.choilab.com

(옵션2) cert-manager + ingress + docker

이 예제는 dns-01 solver을 사용하고 네임서버를 cloudflare를 사용했습니다.

  • cloudflaer accesstoekn 생성
apiVersion: v1
kind: Secret
metadata:
  name: cloudflare-api-token-secret
  namespace: nexus
type: Opaque
stringData:
  api-token: <your-token>
  • issuer 생성
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: nexus-prodissuser
  namespace: nexus
spec:
  acme:
    # The ACME server URL
    server: https://acme-v02.api.letsencrypt.org/directory
    # Email address used for ACME registration
    email: <your email>
    # Name of a secret used to store the ACME account private key
    privateKeySecretRef:
      name: nexus-prodissuser
    # Enable the challenge provider
    solvers:
      - dns01:
          cloudflare:
            email: <your email>
            apiTokenSecretRef:
              name: cloudflare-api-token-secret #cloudflare api token
              key: api-token
  • override_values.yaml파일 생성
nexus:
  docker:
    enabled: true
    # docker domain
    registries:
      - port: 5000
        host: docker.choilab.xyz
        secretName: docker-tls
ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/issuer: "nexus-prodissuser"
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
    
  hostPath: /
  # nexus domain
  hostRepo: nexus.choilab.xyz
  tls:
    # docker domain
    - hosts:
      - docker.choilab.xyz
      secretName: docker-tls
    # nexus domain
    - hosts:
      - nexus.choilab.xyz
      secretName: nexus-tls

설치

kubectl create ns nexus
helm install -n nexus nexus -f override_values.yaml sonatype/nexus-repository-manager

nexus docker private repo 설정

⚠️ **GitHub.com Fallback** ⚠️