"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Configure JFrog Artifactory en Kubernetes y conecte la aplicación Spring Boot

Configure JFrog Artifactory en Kubernetes y conecte la aplicación Spring Boot

Publicado el 2024-11-08
Navegar:294

Este documento proporciona orientación sobre cómo configurar JFrog Artifactory en un clúster de Kubernetes. Sirve como un tutorial básico para que los desarrolladores instalen y configuren JFrog en un entorno Kubernetes que se ejecuta en una máquina local.

Configurar el entorno local para crear recursos de DevOps

Utilizo contenedores Docker para configurar entornos de trabajo para múltiples aplicaciones (Entorno de configuración). Este enfoque garantiza entornos totalmente aislados y fáciles de mantener para el desarrollo de aplicaciones, lo que nos permite iniciar y finalizar estos entornos fácilmente. A continuación se muestra el comando Docker para crear el entorno.

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

El contenedor contiene Docker, Kubectl, Helm, Terraform, Kind, Git

Configurar Jenkins en el clúster de Kubernetes

He creado todos los scripts de Terraform, que están disponibles en el repositorio de GitHub. Puedes descargar y configurar Jenkins en un clúster de Kubernetes, que se ejecuta localmente en un contenedor Docker.

Clone el repositorio en su máquina Linux local para comenzar.

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

Configure el clúster de Kubernetes en un contenedor Docker usando Kind, nombrando el clúster “devops-jfrog-cluster-control-plane”. Este clúster admite el ingreso y expone los puertos 80 y 443 para permitir el acceso a los servicios. desde fuera del clúster.

Clúster crea script de terraform disponible en la carpeta kind

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

El siguiente comando verifica el clúster

kubectl cluster-info
kubectl get nodes -o wide

Configurar el controlador de ingreso Nginx en el clúster de Kubernetes
El controlador de ingreso NGINX para administrar el acceso externo a los servicios en un clúster de Kubernetes. Actúa como punto de entrada para sus aplicaciones Kubernetes, enrutando el tráfico HTTP y HTTPS externo a los servicios apropiados dentro del clúster.

El siguiente comando instala el controlador de ingreso en el clúster

Secuencia de comandos de creación de ingreso disponible en la carpeta “ingress”

cd ingress
kubectl apply -f ingress-nginx.yaml

El siguiente comando verifica el controlador de ingreso nginx

kubectl get -n ingress-nginx pod

Producción

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

Configurar JFrog Artifactory OSS (código abierto)

Agregue el repositorio de Helm de la comunidad JFrog Artifactory OSS: para comenzar, debe agregar el repositorio de Helm de la comunidad JFrog Artifactory OSS a su cliente Helm:

Nota: JFrog crea scripts disponibles en la carpeta “jfrog”

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

El siguiente comando se puede utilizar para verificar la versión de la aplicación y la versión del gráfico de los servicios instalados en el clúster:

helm search repo  artifactory-oss

En este ejemplo, estoy instalando la versión del carrito “107.90.8” y la versión de la aplicación es “7.90.8”

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

Cree un archivo YAML de valores de Helm llamado helm-value.yaml, que se utilizará para configurar el servicio OSS de JFrog Artifactory. Helm utilizará este archivo de configuración para instalar el servicio en el clúster.

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

En la configuración anterior, he configurado los siguientes puntos:

  • Helm está usando la base de datos PostgreSQL predeterminada, donde especifiqué la contraseña de la base de datos.
  • Los recursos NGINX e Ingress están deshabilitados.

El siguiente comando de Helm se utiliza para instalar Artifactory en el clúster. Crea los recursos necesarios en el clúster, incluido un espacio de nombres llamado "artifactory-oss", e instala todos los recursos dentro de este espacio de nombres.

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

Valores del gráfico de timón: https://github.com/jfrog/charts/blob/master/stable/artifactory-oss/values.yaml

Podemos verificar que todos los recursos se hayan instalado en el espacio de nombres "artifactory-oss". La interfaz de usuario del servicio Artifactory se ejecuta en el puerto 8082, mientras que Artifactory funciona en el puerto 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

Necesitamos crear un recurso de Ingress para enrutar solicitudes al servicio Artifactory. Agregue la siguiente configuración al archivo 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

Necesitamos configurar proxy-body-size=0. Esta configuración indica a Ingress que no imponga un límite en el tamaño del archivo al cargar archivos en Artifactory.

Ejecute el siguiente comando para aplicar el ingreso en el cluster

kubectl apply -f ingress-resource.yaml

Verifique que la dirección IP esté configurada:

kubectl -n artifactory-oss get ingress

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

Agregue nuestro dominio al final del archivo /etc/hosts en su máquina local. Esta configuración no debe estar dentro de nuestra caja de Linux en funcionamiento “test-jfrog-envornment-box”; debe aplicarse al archivo /etc/hosts de su máquina personal.
(necesitará acceso de administrador):

127.0.0.1 jfrog.artifactory.devops.myapp.com

Podemos abrir la interfaz de usuario del artefacto en el navegador “http://jfrog.artifactory.devops.myapp.com/”

Setup JFrog Artifactory on Kubernetes and Connect Spring Boot Application

Puedes iniciar sesión usando el nombre de usuario predeterminado "admin" y la contraseña "contraseña". Al iniciar sesión por primera vez, Artifactory le pedirá que cambie la contraseña predeterminada. Asegúrese de actualizar la contraseña, establezca la URL base en http://jfrog.artifactory.devops.myapp.com (el dominio configurado en el recurso Artifactory Ingress) y omita cualquier otro paso de configuración inicial.

Podemos crear las configuraciones iniciales de los repositorios para impulsar las dependencias y el binario en el artefacto.

Vaya a “Artefacto → Artefactos → Administrar repositorios → Crear repositorio” y cree los siguientes repositorios:

  • Local: Este repositorio administra los archivos binarios de tu aplicación. Por ejemplo, “instantánea de mi aplicación”
  • Remoto: Este repositorio almacena todas las dependencias utilizadas en su aplicación, que se descargarán de los repositorios centrales y se almacenarán en el repositorio. Por ejemplo, “instantánea-central-de-mi-aplicación”
  • Virtual: este repositorio virtual proporciona un punto final común que agrega los repositorios "local" y "remoto". Este punto final se configurará en su aplicación. “instantánea-virtual-de-mi-aplicación”

Estoy usando el repositorio maven para mantener el repositorio. Después de la configuración, tenemos que proporcionar el repositorio local "my-app-snapshot"

Setup JFrog Artifactory on Kubernetes and Connect Spring Boot Application

Después de la configuración, tenemos que proporcionar el repositorio local “my-app-central-snapshot”

Setup JFrog Artifactory on Kubernetes and Connect Spring Boot Application

Después de la configuración, tenemos que proporcionar el repositorio local “my-app-virtual-snapshot”

Setup JFrog Artifactory on Kubernetes and Connect Spring Boot Application

Setup JFrog Artifactory on Kubernetes and Connect Spring Boot Application

Agregue los repositorios local y remoto al repositorio virtual y seleccione el repositorio local en el "Repositorio de implementación predeterminado".

Una vez creados todos los repositorios, puedes verlos en la sección principal en "Artefacto → Artefactos". La URL virtual http://jfrog.artifactory.devops.myapp.com/artifactory/my-app-virtual-snapshot/ se utilizará para su aplicación Maven.

Setup JFrog Artifactory on Kubernetes and Connect Spring Boot Application

Necesitamos configurar los detalles de autenticación en el archivo de configuración de Maven “~/.m2/settings.xml” para permitir que su aplicación Maven se autentique con Artifactory.

my-app-virtual-snapshotadminGive your artifactory admin passoword

Nota: El usuario administrador no debe usarse para la interfaz de usuario y el acceso a Artifactory. En su lugar, cree un usuario personalizado con los permisos adecuados para leer y escribir en Artifactory.

Hemos configurado el repositorio maven y las etiquetas de administración de distribución dentro del archivo XML POM de nuestra aplicación 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

Podemos implementar la aplicación maven con el siguiente comando

mvn clean deploy

Podemos obtener el siguiente resultado de maven:

Setup JFrog Artifactory on Kubernetes and Connect Spring Boot Application

Repositorio Git de referencia

  • https://github.com/developerhelperhub/spring-boot-jfrog-artifact-app
  • https://github.com/developerhelperhub/kuberentes-help/tree/main/kubenretes/tutorials/sections/0009
Declaración de liberación Este artículo se reproduce en: https://dev.to/binoy_59380e698d318/setup-jfrog-artifactory-on-kubernetes-and-connect-spring-boot-application-1n4c?1 Si hay alguna infracción, comuníquese con Study_golang@163 .com para eliminarlo
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3