Dokumen ini menyediakan panduan tentang menyediakan JFrog Artifactory dalam gugusan Kubernetes. Ia berfungsi sebagai tutorial asas untuk pembangun memasang dan mengkonfigurasi JFrog pada persekitaran Kubernetes yang dijalankan pada mesin tempatan.
Saya menggunakan bekas Docker untuk menyediakan persekitaran kerja untuk berbilang aplikasi (Persekitaran Persediaan). Pendekatan ini memastikan persekitaran terpencil dan boleh diselenggara sepenuhnya untuk pembangunan aplikasi, membolehkan kami memulakan dan menamatkan persekitaran ini dengan mudah. Di bawah ialah arahan Docker untuk mencipta persekitaran.
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
Bekas mengandungi Docker, Kubectl, Helm, Terraform, Kind, Git
Saya telah mencipta semua skrip Terraform, yang tersedia dalam repositori GitHub. Anda boleh memuat turun dan menyediakan Jenkins pada gugusan Kubernetes, yang berjalan secara setempat dalam bekas Docker.
Klon repositori ke mesin Linux tempatan anda untuk bermula.
git clone https://github.com/developerhelperhub/kuberentes-help.git cd kuberentes-help/kubenretes/tutorials/sections/0009/
Sediakan kluster Kubernetes dalam bekas Docker menggunakan Kind, menamakan kluster "devops-jfrog-cluster-control-plane" Kluster ini menyokong kemasukan dan mendedahkan port 80 dan 443 untuk membenarkan akses kepada perkhidmatan dari luar kluster.
Kluster cipta skrip terraform tersedia di bawah folder jenis
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
Mengikuti arahan sahkan kelompok
kubectl cluster-info kubectl get nodes -o wide
Sediakan pengawal kemasukan Nginx pada kelompok Kubernetes
Pengawal Ingress NGINX untuk mengurus akses luaran kepada perkhidmatan dalam gugusan Kubernetes. Ia bertindak sebagai titik masuk untuk aplikasi Kubernetes anda, menghalakan trafik HTTP dan HTTPS luaran ke perkhidmatan yang sesuai dalam kelompok.
Mengikuti arahan pasang pengawal kemasukan pada kelompok
Ingress create skrip tersedia di bawah folder "ingress"
cd ingress kubectl apply -f ingress-nginx.yaml
Mengikuti arahan sahkan pengawal kemasukan nginx
kubectl get -n ingress-nginx pod
Output
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
Tambah Repositori Helm Komuniti JFrog Artifactory OSS: Untuk bermula, anda perlu menambah repositori Helm komuniti JFrog Artifactory OSS pada pelanggan Helm anda:
Nota: JFrog mencipta skrip tersedia di bawah folder “jfrog”
helm repo add jfrog https://charts.jfrog.io helm repo update
Arahan berikut boleh digunakan untuk mengesahkan versi apl dan versi carta perkhidmatan yang dipasang dalam kelompok:
helm search repo artifactory-oss
Dalam contoh ini, saya memasang versi troli ialah “107.90.8” dan Versi Apl ialah “7.90.8”
NAME CHART VERSION APP VERSION DESCRIPTION jfrog/artifactory-oss 107.90.8 7.90.8 JFrog Artifactory OSS
Buat fail YAML nilai Helm bernama helm-value.yaml, yang akan digunakan untuk mengkonfigurasi perkhidmatan JFrog Artifactory OSS. Fail konfigurasi ini akan digunakan oleh Helm untuk memasang perkhidmatan dalam kelompok.
artifactory: postgresql: postgresqlPassword: postgres_password nginx: enabled: false ingress: enabled: false
Dalam konfigurasi di atas, saya telah mengkonfigurasi perkara berikut:
Arahan Helm berikut digunakan untuk memasang Artifactory dalam kelompok. Ia mencipta sumber yang diperlukan dalam gugusan, termasuk ruang nama yang dipanggil "artifactory-oss," dan memasang semua sumber dalam ruang nama ini.
helm install artifactory-oss -f helm-value.yaml jfrog/artifactory-oss --namespace artifactory-oss --create-namespace
Nilai carta helm: https://github.com/jfrog/charts/blob/master/stable/artifactory-oss/values.yaml
Kami boleh mengesahkan bahawa semua sumber telah dipasang dalam ruang nama "artifactory-oss". UI perkhidmatan Artifactory berjalan pada port 8082, manakala Artifactory sendiri beroperasi pada port 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 <none> 8082/TCP,8025/TCP,8081/TCP 3m19s service/artifactory-oss-postgresql ClusterIP 10.96.95.36 <none> 5432/TCP 3m19s service/artifactory-oss-postgresql-headless ClusterIP None <none> 5432/TCP 3m19s NAME READY AGE statefulset.apps/artifactory-oss 0/1 3m19s statefulset.apps/artifactory-oss-postgresql 1/1 3m19s
Kami perlu mencipta sumber Ingress untuk menghalakan permintaan ke perkhidmatan Artifactory. Tambahkan konfigurasi berikut pada fail 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
Kami perlu mengkonfigurasi proxy-body-size=0. Tetapan ini mengarahkan Ingress untuk tidak mengenakan had pada saiz fail apabila memuat naik fail ke Artifactory.
Laksanakan arahan berikut untuk menggunakan kemasukan dalam kelompok
kubectl apply -f ingress-resource.yaml
Sahkan alamat IP ditetapkan:
kubectl -n artifactory-oss get ingress NAME CLASS HOSTS ADDRESS PORTS AGE jfrog-ingress nginx jfrog.artifactory.devops.myapp.com localhost 80 2m53s
Tambahkan domain kami ke bahagian bawah fail /etc/hosts pada mesin tempatan anda. Konfigurasi ini tidak sepatutnya berada di dalam kotak Linux kami yang berfungsi "test-jfrog-envornment-box"; ia harus digunakan pada fail /etc/hosts mesin peribadi anda.
(anda memerlukan akses pentadbir):
127.0.0.1 jfrog.artifactory.devops.myapp.com
Kami boleh membuka UI artifactory dalam penyemak imbas “http://jfrog.artifactory.devops.myapp.com/”
You can log in using the default username "admin" and password "password." Upon your first login, Artifactory will prompt you to change the default password. Be sure to update the password, set the base URL to http://jfrog.artifactory.devops.myapp.com (the domain configured in the Artifactory Ingress resource), and skip any other initial configuration steps.
We can create the initial repositories configurations to push the dependencies and binary in the artifactory.
Navigate to “Artifactory → Artifacts → Manage Repositories → Create Repository” and create the following repositories:
I am using maven repository to maintain the repository. Following configuration we have to give “my-app-snapshot” local repository
Following configuration we have to give “my-app-central-snapshot” local repository
Following configuration we have to give “my-app-virtual-snapshot” local repository
Add the local and remote repositories to the virtual repository and select the local repository in the “Default Deployment Repository”.
Once all the repositories are created, you can view them in the main section under “Artifactory → Artifacts.” The virtual URL http://jfrog.artifactory.devops.myapp.com/artifactory/my-app-virtual-snapshot/ will be used for your Maven application.
We need to configure the authentication details in the Maven settings configuration file “~/.m2/settings.xml” to enable your Maven application to authenticate with Artifactory.
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>my-app-virtual-snapshot</id> <username>admin</username> <password>Give your artifactory admin passoword</password> </server> </servers> </settings>
Note: The admin user should not be used for UI and Artifactory access. Instead, create a custom user with appropriate permissions for reading and writing in Artifactory.
We have configure the maven repository and distribution management tags inside our maven application POM XML file
<distributionManagement> <repository> <uniqueVersion>false</uniqueVersion> <id>my-app-virtual-snapshot</id> <name>my-app-virtual-snapshot</name> <url>http://jfrog.artifactory.devops.myapp.com/artifactory/my-app-virtual-snapshot/</url> <layout>default</layout> </repository> </distributionManagement> <repositories> <repository> <id>my-app-virtual-snapshot</id> <name>my-app-virtual-snapshot</name> <url>http://jfrog.artifactory.devops.myapp.com/artifactory/my-app-virtual-snapshot/</url> <layout>default</layout> </repository> </repositories>
The we can deploy the maven application with following command
mvn clean deploy
We can the following output of maven :
Atas ialah kandungan terperinci Sediakan JFrog Artifactory pada Kubernetes dan Sambungkan Aplikasi But Spring. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!