"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Kubernetes에서 JFrog Artifactory 설정 및 Spring Boot 애플리케이션 연결

Kubernetes에서 JFrog Artifactory 설정 및 Spring Boot 애플리케이션 연결

2024-11-08에 게시됨
검색:909

이 문서는 Kubernetes 클러스터에서 JFrog Artifactory를 설정하는 방법에 대한 지침을 제공합니다. 이는 개발자가 로컬 머신에서 실행되는 Kubernetes 환경에 JFrog를 설치하고 구성하기 위한 기본 튜토리얼 역할을 합니다.

DevOps 리소스 구축을 위한 로컬 환경 설정

Docker 컨테이너를 사용하여 여러 애플리케이션에 대한 작업 환경(설정 환경)을 설정합니다. 이 접근 방식은 애플리케이션 개발을 위한 완전히 격리되고 유지 관리 가능한 환경을 보장하므로 이러한 환경을 쉽게 시작하고 종료할 수 있습니다. 다음은 환경을 생성하는 Docker 명령입니다.

docker run -it --name test-jfrog-envornment-box -v ${HOME}/root/ -v ${PWD}/work -w /work --net host developerhelperhub/kub-terr-work-env-box sh

컨테이너에는 Docker, Kubectl, Helm, Terraform, Kind, Git이 포함되어 있습니다.

Kubernetes 클러스터에 Jenkins 설정

GitHub 저장소에서 사용할 수 있는 모든 Terraform 스크립트를 만들었습니다. Docker 컨테이너에서 로컬로 실행되는 Kubernetes 클러스터에서 Jenkins를 다운로드하고 설정할 수 있습니다.

시작하려면 저장소를 로컬 Linux 머신에 복제하세요.

git clone https://github.com/developerhelperhub/kuberentes-help.git
cd kuberentes-help/kubenretes/tutorials/sections/0009/

Kind를 사용하여 Docker 컨테이너에 Kubernetes 클러스터를 설정하고 클러스터 이름을 "devops-jfrog-cluster-control-plane"으로 지정합니다. 이 클러스터는 수신을 지원하고 포트 80 및 443을 노출하여 서비스에 대한 액세스를 허용합니다. 클러스터 외부에서.

종류 폴더에서 사용할 수 있는 클러스터 생성 Terraform 스크립트

cd kind
terraform init #Install the required providers to set up the necessary resources.
terraform plan #Verify the resources that will be installed on the system.
terraform apply #Install resources on the system

다음 명령으로 클러스터를 확인합니다.

kubectl cluster-info
kubectl get nodes -o wide

Kubernetes 클러스터에 Nginx 수신 컨트롤러 설정
Kubernetes 클러스터의 서비스에 대한 외부 액세스를 관리하는 NGINX 수신 컨트롤러. 이는 외부 HTTP 및 HTTPS 트래픽을 클러스터 내의 적절한 서비스로 라우팅하는 Kubernetes 애플리케이션의 진입점 역할을 합니다.

다음 명령에 따라 클러스터에 수신 컨트롤러를 설치합니다.

'ingress' 폴더에서 사용 가능한 Ingress 생성 스크립트

cd ingress
kubectl apply -f ingress-nginx.yaml

다음 명령은 nginx 수신 컨트롤러를 확인합니다.

kubectl get -n ingress-nginx pod

산출

NAME                                       READY   STATUS      RESTARTS   AGE
ingress-nginx-admission-create-5mt2k       0/1     Completed   0          53s
ingress-nginx-admission-patch-w2rlk        0/1     Completed   0          53s
ingress-nginx-controller-d45d995d4-gl65h   1/1     Running     0          53s

JFrog Artifactory OSS 설정(오픈 소스)

JFrog Artifactory OSS 커뮤니티 Helm 저장소 추가: 시작하려면 JFrog Artifactory OSS 커뮤니티 Helm 저장소를 Helm 클라이언트에 추가해야 합니다.

참고: JFrog는 "jfrog" 폴더에서 사용할 수 있는 스크립트를 생성합니다.

helm repo add jfrog https://charts.jfrog.io
helm repo update

다음 명령을 사용하여 클러스터에 설치된 서비스의 앱 버전과 차트 버전을 확인할 수 있습니다.

helm search repo  artifactory-oss

이 예에서는 카트 버전이 "107.90.8"이고 앱 버전이 "7.90.8"입니다.

NAME                         CHART VERSION        APP VERSION        DESCRIPTION
jfrog/artifactory-oss        107.90.8             7.90.8             JFrog Artifactory OSS

JFrog Artifactory OSS 서비스를 구성하는 데 사용되는 helm-value.yaml이라는 Helm 값 YAML 파일을 생성합니다. 이 구성 파일은 Helm에서 클러스터에 서비스를 설치하는 데 사용됩니다.

artifactory:
    postgresql:
    postgresqlPassword: postgres_password
    nginx:
    enabled: false
    ingress:
    enabled: false

위 구성에서는 다음 사항을 구성했습니다.

  • Helm은 데이터베이스 비밀번호를 지정한 기본 PostgreSQL 데이터베이스를 사용하고 있습니다.
  • NGINX 및 Ingress 리소스가 비활성화되었습니다.

다음 Helm 명령은 클러스터에 Artifactory를 설치하는 데 사용됩니다. "artifactory-oss"라는 네임스페이스를 포함하여 클러스터에 필요한 리소스를 생성하고 이 네임스페이스 내에 모든 리소스를 설치합니다.

helm install artifactory-oss -f helm-value.yaml jfrog/artifactory-oss --namespace artifactory-oss --create-namespace

Helm 차트 값: https://github.com/jfrog/charts/blob/master/stable/artifactory-oss/values.yaml

모든 리소스가 "artifactory-oss" 네임스페이스에 설치되었는지 확인할 수 있습니다. Artifactory 서비스 UI는 포트 8082에서 실행되고 Artifactory 자체는 포트 8081에서 작동합니다.

kubectl get -n artifactory-oss all

NAME                               READY   STATUS    RESTARTS   AGE
pod/artifactory-oss-0              0/7     Running   0          3m19s
pod/artifactory-oss-postgresql-0   1/1     Running   0          3m19s

NAME                                          TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
service/artifactory-oss                       ClusterIP   10.96.170.63           8082/TCP,8025/TCP,8081/TCP   3m19s
service/artifactory-oss-postgresql            ClusterIP   10.96.95.36            5432/TCP                     3m19s
service/artifactory-oss-postgresql-headless   ClusterIP   None                   5432/TCP                     3m19s

NAME                                          READY   AGE
statefulset.apps/artifactory-oss              0/1     3m19s
statefulset.apps/artifactory-oss-postgresql   1/1     3m19s

요청을 Artifactory 서비스로 라우팅하려면 Ingress 리소스를 만들어야 합니다. ingress-resource.yaml 파일에 다음 구성을 추가합니다.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
    name: jfrog-ingress
    namespace: artifactory-oss
    annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
spec:
    ingressClassName: nginx
    rules:
    - host: jfrog.artifactory.devops.myapp.com
        http:
        paths:
            - path: /
            pathType: ImplementationSpecific
            backend:
                service:
                name: artifactory-oss
                port:
                    number: 8082

proxy-body-size=0을 구성해야 합니다. 이 설정은 Ingress가 Artifactory에 파일을 업로드할 때 파일 크기에 제한을 두지 않도록 지시합니다.

다음 명령을 실행하여 클러스터에 수신을 적용합니다.

kubectl apply -f ingress-resource.yaml

IP 주소가 설정되었는지 확인하세요.

kubectl -n artifactory-oss get ingress

NAME            CLASS   HOSTS                                ADDRESS     PORTS   AGE
jfrog-ingress   nginx   jfrog.artifactory.devops.myapp.com   localhost   80      2m53s

로컬 머신의 /etc/hosts 파일 하단에 도메인을 추가하세요. 이 구성은 작동 중인 Linux 상자 "test-jfrog-envornment-box" 내에 있어서는 안 됩니다. 이는 개인 머신의 /etc/hosts 파일에 적용되어야 합니다.
(관리자 액세스가 필요합니다):

127.0.0.1 jfrog.artifactory.devops.myapp.com

브라우저 "http://jfrog.artifactory.devops.myapp.com/"에서 아티팩트 UI를 열 수 있습니다.

Setup JFrog Artifactory on Kubernetes and Connect Spring Boot Application

기본 사용자 이름 "admin"과 비밀번호 "password"를 사용하여 로그인할 수 있습니다. 처음 로그인하면 Artifactory에서 기본 비밀번호를 변경하라는 메시지를 표시합니다. 비밀번호를 업데이트하고 기본 URL을 http://jfrog.artifactory.devops.myapp.com(Artifactory Ingress 리소스에 구성된 도메인)으로 설정하고 다른 초기 구성 단계를 건너뛰십시오.

초기 저장소 구성을 생성하여 아티팩트에 종속성과 바이너리를 푸시할 수 있습니다.

"Artifactory → Artifacts → Manage Repositories → Create Repository"로 이동하여 다음 저장소를 생성합니다.

  • 로컬: 이 저장소는 애플리케이션 바이너리를 관리합니다. 예를 들어 'my-app-snapshot'
  • 원격: 이 저장소는 애플리케이션에 사용되는 모든 종속성을 저장하며 중앙 저장소에서 다운로드되어 저장소에 저장됩니다. 예: "my-app-central-snapshot"
  • 가상: 이 가상 저장소는 "로컬" 및 "원격" 저장소를 집계하는 공통 끝점을 제공합니다. 이 엔드포인트는 애플리케이션에서 구성됩니다. "내 앱-가상-스냅샷"

저장소를 유지 관리하기 위해 Maven 저장소를 사용하고 있습니다. 구성에 따라 "my-app-snapshot" 로컬 저장소

를 제공해야 합니다.

Setup JFrog Artifactory on Kubernetes and Connect Spring Boot Application

다음 구성에 따라 "my-app-central-snapshot" 로컬 저장소를 제공해야 합니다.

Setup JFrog Artifactory on Kubernetes and Connect Spring Boot Application

다음 구성에 따라 "my-app-virtual-snapshot" 로컬 저장소를 제공해야 합니다.

Setup JFrog Artifactory on Kubernetes and Connect Spring Boot Application

Setup JFrog Artifactory on Kubernetes and Connect Spring Boot Application

가상 저장소에 로컬 및 원격 저장소를 추가하고 "기본 배포 저장소"에서 로컬 저장소를 선택합니다.

모든 리포지토리가 생성되면 “Artifactory → Artifacts” 아래의 메인 섹션에서 해당 리포지토리를 볼 수 있습니다. Maven 애플리케이션에는 가상 URL http://jfrog.artifactory.devops.myapp.com/artifactory/my-app-virtual-snapshot/이 사용됩니다.

Setup JFrog Artifactory on Kubernetes and Connect Spring Boot Application

Maven 애플리케이션이 Artifactory로 인증할 수 있도록 Maven 설정 구성 파일 "~/.m2/settings.xml"에서 인증 세부 정보를 구성해야 합니다.

my-app-virtual-snapshotadminGive your artifactory admin passoword

참고: 관리 사용자는 UI 및 Artifactory 액세스에 사용되어서는 안 됩니다. 대신 Artifactory에서 읽기 및 쓰기에 대한 적절한 권한을 가진 사용자 정의 사용자를 생성하십시오.

Maven 애플리케이션 POM XML 파일 내에 Maven 저장소와 배포 관리 태그를 구성했습니다.

falsemy-app-virtual-snapshotmy-app-virtual-snapshothttp://jfrog.artifactory.devops.myapp.com/artifactory/my-app-virtual-snapshot/defaultmy-app-virtual-snapshotmy-app-virtual-snapshothttp://jfrog.artifactory.devops.myapp.com/artifactory/my-app-virtual-snapshot/default

다음 명령을 사용하여 Maven 애플리케이션을 배포할 수 있습니다.

mvn clean deploy

maven의 출력은 다음과 같습니다.

Setup JFrog Artifactory on Kubernetes and Connect Spring Boot Application

참조 Git 레포

  • https://github.com/developerhelperhub/spring-boot-jfrog-artifact-app
  • https://github.com/developerhelperhub/kuberentes-help/tree/main/kubenretes/tutorials/sections/0009
릴리스 선언문 이 기사는 https://dev.to/binoy_59380e698d318/setup-jfrog-artifactory-on-kubernetes-and-connect-spring-boot-application-1n4c?1에 복제되어 있습니다. 침해가 있는 경우에는 Study_golang@163으로 문의하시기 바랍니다. .com에서 삭제하세요
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3