Этот документ содержит рекомендации по настройке JFrog Artifactory в кластере Kubernetes. Он служит базовым руководством для разработчиков по установке и настройке JFrog в среде Kubernetes, работающей на локальном компьютере.
Я использую контейнеры 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
Я создал все скрипты Terraform, которые доступны в репозитории GitHub. Вы можете загрузить и настроить Jenkins в кластере Kubernetes, который работает локально в контейнере Docker.
Для начала клонируйте репозиторий на локальный компьютер с Linux.
git clone https://github.com/developerhelperhub/kuberentes-help.git cd kuberentes-help/kubenretes/tutorials/sections/0009/
Настройте кластер Kubernetes в контейнере Docker с помощью Kind, назвав кластер «devops-jfrog-cluster-control-plane». Этот кластер поддерживает входной трафик и предоставляет порты 80 и 443 для разрешения доступа к сервисам. из-за пределов кластера.
Скрипт создания терраформа кластера доступен в папке 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
Следующая команда проверяет кластер
kubectl cluster-info kubectl get nodes -o wide
Настройка входного контроллера Nginx в кластере Kubernetes
Контроллер входа NGINX для управления внешним доступом к сервисам в кластере Kubernetes. Он действует как точка входа для ваших приложений Kubernetes, маршрутизируя внешний трафик HTTP и HTTPS к соответствующим службам в кластере.
Следующая команда установит входящий контроллер в кластере
Сценарий создания 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
Добавьте репозиторий Helm сообщества JFrog Artifactory OSS: для начала вам необходимо добавить репозиторий Helm сообщества JFrog Artifactory OSS в ваш клиент 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
Создайте YAML-файл значений Helm с именем helm-value.yaml, который будет использоваться для настройки службы JFrog Artifactory OSS. Этот файл конфигурации будет использоваться 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
Значения диаграммы управления: https://github.com/jfrog/charts/blob/master/stable/artifactory-oss/values.yaml
Мы можем убедиться, что все ресурсы установлены в пространстве имен «artifactory-oss». Пользовательский интерфейс службы Artifactory работает на порту 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
Нам нужно создать Ingress-ресурс для маршрутизации запросов к сервису Artifactory. Добавьте следующую конфигурацию в файл 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/»
Вы можете войти в систему, используя имя пользователя по умолчанию «admin» и пароль «password». При первом входе в систему Artifactory предложит вам изменить пароль по умолчанию. Обязательно обновите пароль, установите базовый URL-адрес http://jfrog.artifactory.devops.myapp.com (домен, настроенный в ресурсе Artifactory Ingress) и пропустите любые другие шаги начальной настройки.
Мы можем создать начальные конфигурации репозиториев, чтобы поместить зависимости и двоичные файлы в артефакт.
Перейдите в «Artifactory → Артефакты → Управление репозиториями → Создать репозиторий» и создайте следующие репозитории:
Я использую репозиторий maven для поддержки репозитория. После настройки мы должны предоставить локальный репозиторий «my-app-snapshot»
После настройки мы должны предоставить локальный репозиторий «my-app-central-snapshot».
После настройки мы должны предоставить локальный репозиторий «my-app-virtual-snapshot»
Добавьте локальный и удаленный репозитории в виртуальный репозиторий и выберите локальный репозиторий в «Репозитории развертывания по умолчанию».
После того, как все репозитории будут созданы, вы сможете просмотреть их в главном разделе в разделе «Artifactory → Артефакты». Виртуальный URL-адрес http://jfrog.artifactory.devops.myapp.com/artifactory/my-app-virtual-snapshot/ будет использоваться для вашего приложения Maven.
Нам необходимо настроить данные аутентификации в файле конфигурации настроек Maven «~/.m2/settings.xml», чтобы ваше приложение Maven могло выполнять аутентификацию с помощью Artifactory.
my-app-virtual-snapshot admin Give your artifactory admin passoword
Примечание: администратора нельзя использовать для доступа к пользовательскому интерфейсу и Artifactory. Вместо этого создайте специального пользователя с соответствующими разрешениями на чтение и запись в Artifactory.
Мы настроили теги управления репозиторием и распространением maven внутри XML-файла POM нашего приложения 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