ARTIFACTORY:安装快速入门指南-头盔

保罗•潘
2022-03-21 07:22

你会得到什么?

用户添加图片

这个示例将演示如何创建一个生产就绪的人工头盔部署。我们将演示在GKE集群上的安装。所有命令均以helm3+格式给出。

对于高级用户,请查看我们的高级用户指南对于本快速入门指南中未涵盖的问题。

先决条件

源代码和版本

Artifactory-HA图表可于github

详情请参阅发布说明获取每个图表版本的默认Artifactory版本和我们的官方文件的最新更新。

注意,从图表版本107.18.6及以上,数字在图表版本107之后。X是该图表的默认人工版本。所以图表版本107.18.6带有手工7.18.6。

环境的细节

在下表中,我们将列出将要演示的示例部署的环境细节。您可以找到有关系统资源需求的更多信息2022世界杯阿根廷预选赛赛程在这里

环境的细节

方面

细节

版本

107.21.12

2022世界杯阿根廷预选赛赛程

  • 2 - 6 cpu

  • 4GI - 8GI内存

  • 4 - 6 GI JVM内存

  • 3个节点集群,其中一个节点不服务流量

网络

  • 公共负载均衡器(L4)

  • SSL在nginx部署时终止

持久性

S3的云文件系统

数据库

捆绑Postgresql数据库

许可证

3个企业/企业+许可证

我们将在命名空间:artifactory-ha和发布名称:artifactory-ha下部署发布

安装步骤

获取图表

在安装JFrog头盔图表之前,您需要将JFrog头盔存储库添加到头盔客户端

$ helm repo添加jfrog https://charts.jfrog.io

现在,更新存储库。

$ helm回购更新

准备钥匙和秘密

主键和连接键

Artifactory将生成以下键。但是,对于生产环境上的新安装,这是必须的,否则您将使用默认的虚拟键值。确保保存了键值。

创建唯一的主密钥

#创建密钥
export MASTER_KEY=$(openssl rand -hex 32)
echo $ {MASTER_KEY}

创建一个“masterkey-secret”来保存该值

$ kubectl创建秘密的通用主键-- -from-literal=主键=${MASTER_KEY}

创建一个唯一的连接键

默认情况下,图表还将为您设置一个连接键值。对于生产环境,我们强烈建议设置一个唯一的值。

#创建连接键
export JOIN_KEY=$(openssl rand -hex 32)
echo $ {JOIN_KEY}

创建一个包含密钥的秘密。密钥中的密钥必须命名为join-key

$ kubectl创建秘密通用joinkey-secret——from-literal=join-key=${JOIN_KEY}

数据库的秘密

数据库凭据也可以提供一个秘密。
对于这个版本,我们正在安装一个捆绑的postgresql,所以我们将只传递带有属性的凭据

$ export POSTGRES_USERNAME=artifactory
$ export POSTGRES_PASSWORD=密码
#传递值给helm
$ helm upgrade——install ——namespace artifactory-ha jfrog/artifactory-ha——set postgresql. sh——set postgresql.postgresqlUsername=${POSTGRES_USERNAME}

我们还可以让发布生成一个随机密码,并从一个秘密中检索它。

Tls的秘密

有许多方法可以公开人工服务和设置ssl连接。对于这个版本,我们将部署捆绑的nginx部署,并使用loadBalancer服务类型公开它。我们还将使用nginx终止ssl连接,然后将流量转发到artifactory服务。因此,我们将首先将证书放在tls secret中。

$ kubectl创建秘密TLS人工工厂- TLS——cert=路径/to/ TLS。cert——关键=路径/ / tls.key

许可证的秘密

在激活Artifactory HA时,需要安装相应的license。

在这个例子中,我们将把license作为一个秘密传递:
1.准备一个文本文件,并将许可证写入其中。如果写多个许可证(必须在同一个文件中),重要的是在每个许可证块之间添加**两行新行**!
2.创建Kubernetes secret(假设本地许可文件是'art.lic')

$ kubectl创建秘密通用artifactory-cluster-license -n artifactory-ha——from-file=./art.lic#将许可证传给舵手
helm upgrade——install artifactory-ha——set artifactory.license.secret=artifactory-cluster-license,artifactory.license.dataKey=art.lic

请注意.此方法仅与初始部署相关!一旦部署了Artifactory,您就不应该继续传递这些参数,因为许可证已经被持久化到Artifactory的存储中(它们将被忽略)。更新许可证应该在初始部署后通过Artifactory UI或REST API完成,或者通过许可证桶进行管理。

2022世界杯阿根廷预选赛赛程资源:

在这个样例部署中,我们将最低cpu和内存请求增加到2cpu和4G内存,每个人工节点的上限为6cpu和8G内存。我们还将Jvm内存增加到4g xms和6g xmx。详细的系统资源推荐请参考2022世界杯阿根廷预选赛赛程在这里

工件使用的默认属性可能没有充分利用可用的系统资源。2022世界杯阿根廷预选赛赛程如果你发现有足够的物理资源的作品表现不佳,请查看2022世界杯阿根廷预选赛赛程调优节中的内容。

可伸缩性由artificial .node. replicaccount控制。我们保留默认值2,这将产生一个3个节点的集群。

你可以用下面的安装测试属性:$ helm install artifactory-ha \
——设置artifactory.primary.re2022世界杯阿根廷预选赛赛程sources.requests。cpu = " 2 " \
——设置artifactory.primary.re2022世界杯阿根廷预选赛赛程sources.limits。cpu = \“6”
——设置artifactory.primary.re2022世界杯阿根廷预选赛赛程sources.requests。内存= \“4 gi”
——设置artifactory.primary.re2022世界杯阿根廷预选赛赛程sources.limits。内存= \“8 gi”
——设置artifactory.primary.javaOpts。xms = \“4 g”
——设置artifactory.primary.javaOpts。xmx = \“6克”
——设置artifactory.node.re2022世界杯阿根廷预选赛赛程sources.requests。cpu = " 2 " \
——设置artifactory.node.re2022世界杯阿根廷预选赛赛程sources.limits。cpu = \“6”
——设置artifactory.node.re2022世界杯阿根廷预选赛赛程sources.requests。内存= \“4 gi”
——设置artifactory.node.re2022世界杯阿根廷预选赛赛程sources.limits。内存= \“8 gi”
——设置artifactory.node.javaOpts。xms = \“4 g”
——设置artifactory.node.javaOpts。xmx = \“6克”
——设置artifactory.node.replicaCount = 2 \
——命名空间artifactory-ha jfrog/artifactory-ha——version 107.21.12——dry-run
我们将把上述属性添加到values.yaml中。artifactory:
主:
2022世界杯阿根廷预选赛赛程资源:
请求:
记忆:“4 gi”
cpu:“2”
限制:
记忆:“8 gi”
cpu:“6”
javaOpts:
xms:“4 g”
xmx:“6克”
节点:
replicaCount: 2
2022世界杯阿根廷预选赛赛程资源:
请求:
记忆:“4 gi”
cpu:“2”
限制:
记忆:“8 gi”
cpu:“6”
javaOpts:
xms:“4 g”
xmx:“6克”

持久性

默认安装将为每个artifactory pod动态提供PVC。对于Artifactory HA,文件存储将在每个节点上的本地数据文件夹之间共享存储。

在本例中,我们将进行配置云s3存储使用显式凭证。你也可以签出文件存储提供程序文档对于所有其他选项。
$ helm install artifactory-ha \
——设置artifactory.persistence。类型= aws-s3-v3 \
——设置artifactory.persistence.awsS3V3.identity = yourIdentity \
——设置artifactory.persistence.awsS3V3.credential = yourIdentity \
——设置artifactory.persistence.awsS3V3.region = usw2 \
——设置artifactory.persistence.awsS3V3。bucketName = artifactory-aws \
——设置artifactory.persistence.awsS3V3.path = artifactory / filestore \
——设置artifactory.persistence.awsS3。端点= AWS_S3_ENDPOINT \
——命名空间artifactory-ha jfrog/artifactory-ha——version 107.21.12——dry-run
我们将把上述属性添加到values.yaml中artifactory:
持久性:
类型:aws-s3-v3
awsS3V3:
身份:yourIdentity
证书:yourIdentity
地区:usw2
bucketName: artifactory-aws
路径:artifactory / filestore
端点:AWS_S3_ENDPOINT

数据库:

默认部署将安装捆绑的postgresql数据库。对于生产,我们建议使用外部postgresql数据库。在本例中,我们将使用捆绑的postgresql数据库进行部署。有关其他资料库的选择,请参阅外部数据库文档$ helm install artifactory-ha \
——设置postgresql。启用= true \
——设置postgresql。postgresqlUsername = artifactory \
——设置postgresql。postgresqlPassword =密码\
——设置postgresql.postgresqlDatabase = artifactory \
——设置postgresql.postgresqlExtendedConf.maxConnections = 1000 \
——命名空间artifactory-ha jfrog/artifactory-ha——version 107.21.12——dry-run

有关外部数据库设置,请参阅本指令末尾的外部数据库设置链接。

我们将把上述属性添加到values.yaml中postgresql:
启用:真
postgresqlUsername: artifactory
postgresqlPassword:密码
postgresqlDatabase: artifactory
postgresqlExtendedConf:
maxConnections: 1000

网络:

在这个例子中,我们使用nginx部署和负载均衡器服务来公开人工服务。

在kubernetes上有很多方法可以终止ssl,包括入口、L7负载平衡。对于这个版本,因为我们将使用loadBalancer类型部署在GKE上,所以GKE将为我们分配LB。然而,由于负载均衡器只是一个4层负载均衡器,因此我们不会在LB上终止ssl,而是在我们的nginx部署上终止ssl。$ helm install artifactory-ha \
——设置nginx。启用= false \
——设置nginx。tlsSecretName = artifactory-tls \
——设置nginx。replicaccount: 2 \
——设置nginx.re2022世界杯阿根廷预选赛赛程sources.requests。cpu = " 100 " \
——设置nginx.re2022世界杯阿根廷预选赛赛程sources.limits。cpu = " 250 " \
——设置nginx.re2022世界杯阿根廷预选赛赛程sources.requests。内存= \“250米”
——设置nginx.re2022世界杯阿根廷预选赛赛程sources.limits。内存= \“500米”
——命名空间artifactory-ha jfrog/artifactory-ha——version 107.21.12——dry-run
我们将把上述属性添加到values.yaml中nginx:
启用:真
tlsSecretName: artifactory-tls
replicaCount: 2
2022世界杯阿根廷预选赛赛程资源:
请求:
cpu: 100
内存:250米
限制:
cpu: 250
内存:500米

安装你的版本:

既然所有属性都已就绪,我们就可以开始部署了
下面是我们将传递给图表的所有env变量:

env美元
POSTGRES_USERNAME = artifactory
POSTGRES_PASSWORD =密码

这是最终值。yaml文件:

全球:
joinKeySecretName: joinkey-secret
masterKeySecretName: masterkey-secret
artifactory:
持久性:
类型:aws-s3-v3
awsS3V3:
身份:yourIdentity
证书:yourIdentity
地区:usw2
bucketName: artifactory-aws
路径:artifactory / filestore
端点:AWS_S3_ENDPOINT
主:
2022世界杯阿根廷预选赛赛程资源:
请求:
记忆:“4 gi”
cpu:“2”
限制:
记忆:“8 gi”
cpu:“6”
javaOpts:
xms:“4 g”
xmx:“6克”
节点:
replicaCount: 2
2022世界杯阿根廷预选赛赛程资源:
请求:
记忆:“4 gi”
cpu:“2”
限制:
记忆:“8 gi”
cpu:“6”
javaOpts:
xms:“4 g”
xmx:“6克”
postgresql:
启用:真
postgresqlUsername: artifactory
postgresqlPassword:密码
postgresqlDatabase: artifactory
postgresqlExtendedConf:
maxConnections: 1000
nginx:
启用:真
tlsSecretName: artifactory-tls
replicaCount: 2
2022世界杯阿根廷预选赛赛程资源:
请求:
cpu: 100
内存:250米
限制:
cpu: 250
内存:500米

让我们去:

$ helm install artifactory-ha \
——设置artifactory.license。秘密= artifactory-cluster-license \
——设置artifactory.license.dataKey =艺术。地方政府投资公司\
——设置postgresql。postgresqlPassword = $ {POSTGRES_PASSWORD} \
——设置postgresql。postgresqlUsername = $ {POSTGRES_USERNAME} \
- f值。yaml \
——命名空间artifactory-ha jfrog/artifactory-ha——版本107.21.12

删除安装

如果您需要删除当前版本,您可以这样做

Helm delete artifactory-ha—namespace artifactory-ha

但是,这不会删除任何持久卷。如果你打算重新开始,你需要明确地移除pvc。

Kubectl delete PVC -l release=artifactory-ha -n artifactory-ha
Kubectl删除PVC -l app.kubernetes。Io /instance=artifactory-ha -n artifactory-ha

升级Artifactory

建议在运行升级命令时显式地传递上一版本中的所有值。这是为了避免退回到任何默认值。请特别注意您创建的秘密,因为在升级操作中未能引用这些秘密可能会导致生成新的不同值并破坏工件。这样的案子很难恢复。

更新次要版本或更新值。yaml

当您只想升级值时,使用常规升级命令:头盔升级—安装artifactory-ha \
——set databaseUpgradeReady=true \
——设置postgresql。postgresqlPassword = $ {POSTGRES_PASSWORD} \
——设置postgresql。postgresqlUsername = $ {POSTGRES_USERNAME} \
- f重视新。yaml \
——命名空间artifactory-ha jfrog/artifactory-ha——版本107.21.12

如果您想要升级工件版本,但该版本没有默认的当前图表版本。注意,在执行此操作后,必须始终显式传递版本,以避免退回到旧版本:

头盔升级—安装artifactory-ha \
——set databaseUpgradeReady=true \
——设置postgresql。postgresqlPassword = $ {POSTGRES_PASSWORD} \
——设置postgresql。postgresqlUsername = $ {POSTGRES_USERNAME} \
——设置global.versions。artifactory = 7.21.13 \
- f值。yaml \
——命名空间artifactory-ha jfrog/artifactory-ha——版本107.21.12

更新图表版本:

头盔升级—安装artifactory-ha \
——set databaseUpgradeReady=true \
——设置postgresql。postgresqlPassword = $ {POSTGRES_PASSWORD} \
——设置postgresql。postgresqlUsername = $ {POSTGRES_USERNAME} \
- f值。yaml \
——命名空间artifactory-ha jfrog/artifactory-ha——版本107.24.3

总是检查upgrade_notes这是所有主要版本跳转的第一次。

当您将Artifactory升级到默认为新图表版本的版本时,建议升级图表版本。

注意:
1.我们不再传递许可证信息,因为这是一次升级。
2.databaseUpgradeReady标志只在使用捆绑的postgresql图表时才需要。这将迫使您采取谨慎措施,检查绑定的数据库是否引入了任何不想要的属性更改。考虑使用-dry-run选项来检查绑定的postgresql db是否引入了任何意外的更改。
3.如果您正在从postgresql.image.tag为9的图表版本(< 4.x.x)升级。X或10。X或12。x, make sure to pass the current postgresql.image.tag and set databaseUpgradeReady=true

要开始使用该产品,您可以使用下面的指南:

快速入门指南:JFrog自托管
快速入门指南:开始
快速入门指南:Maven和Gradle
快速入门指南:npm

术语表

-调谐Artifactory- - - - - -//m.si-fil.com/knowledge-base/how-do-i-tune-artifactory-for-heavy-loads/
—系统要求//m.si-fil.com/confluence/display/JFROG/System+Requirements
——Filestore- - - - - -//m.si-fil.com/confluence/display/JFROG/Configuring+the+Filestore
—外部数据库- - - - - -//m.si-fil.com/confluence/display/JFROG/Configuring+the+Database
-图表源代码- - - - - -https://github.com/jfrog/charts/tree/master/stable/artifactory-ha
-官方Artifactory Helm文件-//m.si-fil.com/confluence/display/JFROG/Installing+Artifactory#InstallingArtifactory-HelmHAInstallation
-舵图高级用户-//m.si-fil.com/confluence/display/JFROG/Helm+Charts+for+Advanced+Users
—Kubernetes Load Balancer Service -
https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
—Kubernetes默认存储类- - - - - -
https://kubernetes.io/docs/tasks/administer-cluster/change-default-storage-class/
- Kubernetes动态供应PV -https://kubernetes.io/docs/concepts/storage/dynamic-provisioning/