Skip to main content

Nexus installation on EKS

  • Create nexus namespace
  •                         
    apiVersion: v1
    kind: Namespace
    metadata:
      name: nexus
                            
                        
  • Create storage class for nexus to store data on AWS EBS
  •                         
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: nexus
    provisioner: kubernetes.io/aws-ebs
    parameters:
      type: gp2
      fsType: ext4
    allowVolumeExpansion: true  
                            
                        
  • Create persistent volume claim
  •                         
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: nexus
      namespace: nexus
      labels:
        app: nexus
    spec:
      storageClassName: nexus
      resources:
        requests:
          storage: 50Gi
      accessModes:
        - ReadWriteOnce 
                            
                        
  • Create deployment for pod, replicaset and deployment itself.
    Since, nexus's docker registry accessible on separate ports, hence as per requirement add number of ports for docker registry.
  •                     
    apiVersion: apps/v1beta1
    kind: Deployment
    metadata:
      name: nexus
      namespace: nexus
    spec:
      replicas: 1
      template:
        metadata:
          name: nexus
          labels:
            app: nexus
        spec:
          securityContext:
            fsGroup: 2000
          containers:
          - image: sonatype/nexus3:latest
            name: nexus
            imagePullPolicy: IfNotPresent
            resources:
              requests:
                memory: 1Gi
                cpu: 500m
              limits:
                  memory: 1Gi
                  cpu: 500m
            ports:
              - containerPort: 8081
                protocol: TCP
                name: nexus-ui
              - containerPort: 8082
                protocol: TCP
                name: docker-1
            volumeMounts:
              - name: nexus-data
                mountPath: /nexus-data
          volumes:
            - name: nexus-data
              persistentVolumeClaim:
                claimName: nexus
            
                        
                    
  • Create service to expose nexus UI and docker registry ports
  •                     
    apiVersion: v1
    kind: Service
    metadata:
      name: nexus
      namespace: nexus
      labels:
        app: nexus
    spec:
      type: LoadBalancer
      ports:
        - name: nexus-ui
          port: 8081
          protocol: TCP
          targetPort: 8081
        - name: docker-1
          port: 8082
          protocol: TCP
          targetPort: 8082
      selector:
        app: nexus
    
                        
                    

Verify all resources status

                    
kubectl get ns
kubectl get sc -n nexus
kubectl get pvc -n nexus
kubectl get pv -n nexus
kubectl get po -n nexus
kubectl get svc -n nexus
                
            

Comments