本文档提供有关在 Kubernetes 集群中设置 JFrog Artifactory 的指南。它作为开发人员在本地计算机上运行的 Kubernetes 环境上安装和配置 JFrog 的基本教程。
我使用 Docker 容器为多个应用程序设置工作环境(Setup Environment)。这种方法确保了应用程序开发的环境完全隔离且可维护,使我们能够轻松启动和终止这些环境。下面是创建环境的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 存储库中找到。您可以在 Kubernetes 集群上下载并设置 Jenkins,该集群在 Docker 容器中本地运行。
将存储库克隆到本地 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 脚本在 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
在 Kubernetes 集群上设置 Nginx 入口控制器
NGINX Ingress Controller 用于管理 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
添加 JFrog Artifactory OSS 社区 Helm 存储库:首先,您需要将 JFrog Artifactory OSS 社区 Helm 存储库添加到您的 Helm 客户端:
注意:JFrog 在“jfrog”文件夹下创建可用脚本
helm repo add jfrog https://charts.jfrog.io helm repo update
以下命令可用于验证集群中安装的服务的app版本和chart版本:
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
创建一个名为 helm-value.yaml 的 Helm 值 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
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
我们需要创建一个 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 时不对文件大小施加限制。
执行以下命令,在集群中应用ingress
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-enornment-box”内;它应该应用于您个人计算机的 /etc/hosts 文件。
(您需要管理员权限):
127.0.0.1 jfrog.artifactory.devops.myapp.com
我们可以在浏览器“http://jfrog.artifactory.devops.myapp.com/”中打开artifactory 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”下的主要部分中查看它们。虚拟 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
注意:管理员用户不应用于 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