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.
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
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
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:
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.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
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/”
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:
Estoy usando el repositorio maven para mantener el repositorio. Después de la configuración, tenemos que proporcionar el repositorio local "my-app-snapshot"
Después de la configuración, tenemos que proporcionar el repositorio local “my-app-central-snapshot”
Después de la configuración, tenemos que proporcionar el repositorio local “my-app-virtual-snapshot”
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.
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-snapshot admin Give 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
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
Podemos implementar la aplicación maven con el siguiente comando
mvn clean deploy
Podemos obtener el siguiente resultado de maven:
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