이 문서는 Kubernetes 클러스터에서 JFrog Artifactory를 설정하는 방법에 대한 지침을 제공합니다. 이는 개발자가 로컬 머신에서 실행되는 Kubernetes 환경에 JFrog를 설치하고 구성하기 위한 기본 튜토리얼 역할을 합니다.
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이 포함되어 있습니다.
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 커뮤니티 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 명령은 클러스터에 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.638082/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를 열 수 있습니다.
기본 사용자 이름 "admin"과 비밀번호 "password"를 사용하여 로그인할 수 있습니다. 처음 로그인하면 Artifactory에서 기본 비밀번호를 변경하라는 메시지를 표시합니다. 비밀번호를 업데이트하고 기본 URL을 http://jfrog.artifactory.devops.myapp.com(Artifactory Ingress 리소스에 구성된 도메인)으로 설정하고 다른 초기 구성 단계를 건너뛰십시오.
초기 저장소 구성을 생성하여 아티팩트에 종속성과 바이너리를 푸시할 수 있습니다.
"Artifactory → Artifacts → Manage Repositories → Create Repository"로 이동하여 다음 저장소를 생성합니다.
저장소를 유지 관리하기 위해 Maven 저장소를 사용하고 있습니다. 구성에 따라 "my-app-snapshot" 로컬 저장소
를 제공해야 합니다.다음 구성에 따라 "my-app-central-snapshot" 로컬 저장소를 제공해야 합니다.
다음 구성에 따라 "my-app-virtual-snapshot" 로컬 저장소를 제공해야 합니다.
가상 저장소에 로컬 및 원격 저장소를 추가하고 "기본 배포 저장소"에서 로컬 저장소를 선택합니다.
모든 리포지토리가 생성되면 “Artifactory → Artifacts” 아래의 메인 섹션에서 해당 리포지토리를 볼 수 있습니다. Maven 애플리케이션에는 가상 URL http://jfrog.artifactory.devops.myapp.com/artifactory/my-app-virtual-snapshot/이 사용됩니다.
Maven 애플리케이션이 Artifactory로 인증할 수 있도록 Maven 설정 구성 파일 "~/.m2/settings.xml"에서 인증 세부 정보를 구성해야 합니다.
my-app-virtual-snapshot admin Give your artifactory admin passoword
참고: 관리 사용자는 UI 및 Artifactory 액세스에 사용되어서는 안 됩니다. 대신 Artifactory에서 읽기 및 쓰기에 대한 적절한 권한을 가진 사용자 정의 사용자를 생성하십시오.
Maven 애플리케이션 POM XML 파일 내에 Maven 저장소와 배포 관리 태그를 구성했습니다.
false my-app-virtual-snapshot my-app-virtual-snapshot http://jfrog.artifactory.devops.myapp.com/artifactory/my-app-virtual-snapshot/ default my-app-virtual-snapshot my-app-virtual-snapshot http://jfrog.artifactory.devops.myapp.com/artifactory/my-app-virtual-snapshot/ default
다음 명령을 사용하여 Maven 애플리케이션을 배포할 수 있습니다.
mvn clean deploy
maven의 출력은 다음과 같습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3