所有产品hth华体会最新官方网站-定制
以下高级定制与所有JFrog产品相关。hth华体会最新官方网站
建立TLS并添加证书
为人工工厂建立TLS和添加证书
在HTTPS中,通信协议使用传输层安全(TLS)加密。缺省情况下,禁用JFrog平台节点间的TLS。启用TLS时,JFrog Access充当证书颁发机构(CA),对所有不同的JFrog平台节点使用的TLS证书进行签名。
要在JFrog平台节点之间建立TLS:通过更改tls
入口(在保安区下)在access.config.yaml
文件。有关其他信息,请参见管理TLS证书。
要在图表中启用TLS,请设置
tls
到true under访问
在values.yaml
。缺省情况下,它被设置为false。access: accessConfig: security: tls: true
要添加自定义TLS证书,请从证书文件中创建TLS密钥。
Kubectl创建秘密TLS < TLS -secret-name>——cert=ca。crt - = ca.private.key的关键
对于重置访问证书,可以设置
resetAccessCAKeys
的访问部分下设置为truevalues.yaml
并执行一个头盔升级。一旦头盔升级完成,设置
resetAccessCAKeys
在后续升级时设置为false(避免每次升级时重置访问证书)。access: accessConfig: security: tls: true customCertificatesSecretName:
resetAccessCAKeys: true
建立TLS并添加x射线、任务控制和分发证书
在节点之间创建信任ca.crt
从Artifactory服务器JFROG_HOME美元/ artifactory / var / etc /访问键
到您想要设置信任的节点美元JFROG_HOME / var / etc /安全/键/信任
。有关详细信息,请参见管理TLS证书。
将此证书添加到Xray中:
创建一个
configmaps.yaml
文件中包含以下内容。x光common: configMaps: | ca.crt: | -----BEGIN CERTIFICATE----- <证书内容> -----END CERTIFICATE----- customVolumeMounts: | - name: xray-configmaps mountPath: /tmp/ca. conf子路径:ca.crt服务器:preStartCommand: "mkdir -p {{. values .xray.persistence. crt "/etc/security/keys/trusted && cp -fv /tmp/ca. mountPath}}crt {{. values .xray.persistence。mountPath}}/etc/security/keys/trusted/ca.crt" router: tlsEnabled: true
任务控制common: configMaps: | ca.crt: | -----BEGIN CERTIFICATE----- <证书内容> -----END CERTIFICATE----- customVolumeMounts: | - name: mission-control-configmaps mountPath: /tmp/ca. confmkdir -p {{. values .missionControl.persistence. crt子路径:ca.crt missionControl: preStartCommand: "mkdir -p {{. values .missionControl.persistence. crt/etc/security/keys/trusted && cp -fv /tmp/ca. mountPath}}crt {{. values . missioncontrol .persistence。mountPath}} / etc /安全/键/相信/ ca。. crt" router: tlsEnabled: true
分布common: configMaps: | ca.crt: | -----BEGIN CERTIFICATE----- <证书内容> -----END CERTIFICATE----- customVolumeMounts: | - name: distribution-configmaps mountPath: /tmp/ca. confmkdir -p {{. values .distribution.persistence. crt子路径:ca.crt distribution: preStartCommand: "mkdir -p {{. values .distribution.persistence. crt "/etc/security/keys/trusted && cp -fv /tmp/ca. mountPath}}crt {{. values .distribution.persistence。mountPath}}/etc/security/keys/trusted/ca.crt" router: tlsEnabled: true
掌舵安装/升级。
x光Helm升级——安装xray -f configmaps。命名空间xray jfrog/xray
任务控制头盔升级-安装任务控制-f configmaps。jfrog/任务控制
分布安装分发版-f configmaps。命名空间分发jfrog/分发
使用上面指定的文件创建一个configMap。
反过来,这将:创建一个指向该名称的configMap的卷
xray-configmaps
。将这个configMap挂载到
/ tmp
使用一个customVolumeMounts。
使用
preStartCommand
,复制ca.crt
文件到x射线可信密钥文件夹/etc/security/keys/trusted/ca.crt.
router.tlsEnabled
设置为true以在活跃度和就绪度探测中添加HTTPS方案。
为管道建立TLS和添加证书
可以在节点之间创建信任ca.crt
下的Artifactory服务器中的文件JFROG_HOME美元/ artifactory / var / etc /访问键
您希望在下面设置信任的节点JFROG_HOME美元/管道/ var / etc /安全/键/信任
。有关更多信息,请参见管理TLS证书。
在受信任目录中可以有多个证书。例如,您可以在使用自定义证书设置的负载平衡器后面配置pipeline API URL。您需要在可信文件夹中添加这些证书,因为构建节点将通过负载平衡器端点与pipeline API通信。
添加NODE_EXTRA_CA_CERTS
使用自定义证书时的环境变量。pipeline查看可信文件夹中所有可用的证书,并将它们连接到一个名为pipeline_custom_certs.crt,
然后将其作为NODE_EXTRA_CA_CERTS
环境变量。
您可以添加TLS通过Kubernetes密钥获取证书。您需要在此图表之外创建秘密并使用标签提供,"Values.pipelines.customCertificates.certificateSecretName
".
下面的示例展示了如何创建密钥。
——from-file=ca.crt=ca.crt
您可以通过更新这些值将秘密传递给Helm安装。yaml文件。
pipelines: customCertificates: enabled: true certificateSecretName: ca-cert
添加信托证书圈
创建包含证书(来自源计算机的根证书)的密钥。
下面的示例展示了如何创建包含根证书的密钥。
——from-file=./edge-root.crt
更新值。将秘密传递给Helm安装。
artifactory: circleoftrustcertificatesssecret: edge-root-crt
运行以下命令将秘密传递给Helm安装。
头盔升级——安装artifactory jfrog/artifactory -f values.yaml
添加自定义初始化容器
初始容器是在主容器与容器化应用程序一起运行之前运行的容器。在某些情况下,您将需要使用一个专门的、不受支持的init进程,例如,在启动主容器之前检查文件系统中的某些内容或测试某些内容。如果需要添加自定义init容器,请使用该节进行定义类中的自定义初始化容器values.yaml
文件(b(默认情况下,该部分被注释掉)。
artifactory: ##添加自定义初始化容器customInitContainers: | ##初始化容器模板到这里##
common: ##添加预定义初始化容器之前执行的自定义初始化容器customInitContainersBegin: | ## init containers template到这里## ##添加预定义初始化容器之后执行的自定义初始化容器customInitContainers: | ## init containers template到这里##
普通:##添加自定义初始化容器customInitContainers: | ##初始化容器模板到这里##
添加自定义初始化容器customInitContainers: | ##初始化容器模板到这里##
添加自定义Sidecars容器
sidecar是与主应用程序容器松散耦合的pod中的实用程序容器。在某些情况下,您可能需要使用额外的sidecar容器,例如用于监视代理或日志收集。如果需要添加自定义侧车容器,请使用该节在类中定义自定义侧车容器values.yaml
文件(默认情况下,该部分被注释掉)。
添加自定义sidecar容器customSidecarContainers: | ## sidecar容器模板在这里##
添加自定义sidecar容器customSidecarContainers: | ## sidecar容器模板到这里##
添加自定义sidecar容器customSidecarContainers: | ## sidecar容器模板到这里##
添加自定义sidecar容器customSidecarContainers: | ## sidecar容器模板到这里##
添加自定义卷
Kubernetes卷本质上是一个目录,在一个pod中运行的所有容器都可以访问它。如果您需要在自定义init或sidecar容器中使用自定义卷,类中定义自定义init或自定义sidecar容器values.yaml
默认情况下,这些部分被注释掉。
artifactory: ##添加自定义卷customVolumes: | ##自定义卷来到这里##
服务器:##添加自定义卷customVolumes: | ##自定义卷来到这里##
任务控制和分发自定义卷
要添加自定义文件或为初始化容器添加自定义文件,或对任务控制/分发容器将看到的文件系统进行更改,请使用以下部分进行定义中的自定义卷values.yaml
。默认情况下,这些值为空。
common: ##添加自定义卷customVolumes: | # - name: custom-script # configMap: # name: custom-script ##添加自定义卷customVolumeMounts: | # - name: custom-script # mountPath: "/scripts/script.sh" # subPath: script.sh
common: ##添加自定义卷customVolumes: | # - name: custom-script # configMap: # name: custom-script distribution: ##添加自定义卷customVolumeMounts: | # - name: custom-script # mountmount: "/scripts/script.sh" # subPath: script.sh发行商:##添加自定义卷customVolumeMounts: | # - name: custom-script # mountPath: "/scripts/script.sh" # subPath: script.sh
覆盖默认的系统YAML文件
在一些高级用例中,用户希望提供他们自己的用例system.yaml
文件配置JFrog服务。使用此选项将覆盖现有的system.yaml
在values.yaml
文件。有两种方法可以重写的system.yaml
:通过使用自定义Init容器和使用外部系统。使用已存在的secret。
那么优先顺序如下。
自定义Init容器
外部system.yaml
默认的系统。Yaml in values.yaml
对于管线图,从图表版本2.2.0及更高版本.Values.existingSecret
已更改为.Values.systemYaml.existingSecret
和.Values.systemYaml.dataKey
。
使用一个自定义Init容器
自定义初始化容器使用外部源,如vault,外部存储库等来覆盖system.yaml
文件。
下面的例子是x光图。
customInitContainers: | - name: "custom-systemyaml-setup" image: "{{. values . values . "" imagePullPolicy: "{{. values。命令:- 'sh' - '-c' - 'wget - o {{. values .xray.persistence. policy}}"mountPath}} / etc /系统。. yaml https:///systemyaml' volumeMounts: - mountPath: "{{. values .xray.persistence. htm "mountPath}}" name: data-volume
使用外部系统YAML文件
创建一个外部
system.yaml
其中一个服务的文件,例如,Xray,并给它文件名-xray-cus-sy.yaml
。configVersion: 1 shared: logging: consoleLog: enabled: true jfrogUrl: "http://artifactory-artifactory. conf "。Rt:8082" database: type: "postgresql" driver: "org.postgresql. "驱动程序" username: "xray" url: "postgres://xray-postgresql:5432/xraydb? "sslmode=disable" server: mailServer: "" indexAllBuilds: "true"
创建Kubernetes密钥。
Kubectl创建秘密通用系统——from-file ./xray-cu -sy.yaml
现在,在相关部分使用这个秘密。
systemYamlOverride: existingSecret: sydatakey: xray-cu - sys .yaml
自动生成密码(内部PostgreSQL)
内部PostgreSQL需要一个变量在安装或升级时可用。如果用户没有设置,则将设置一个随机的10个字符的字母数字字符串;因此,建议用户在安装和升级期间显式设置此参数。
——设置postgresql。postgresqlPassword = <价值> \
这些值在两次升级之间应该保持不变。如果这是自动生成的舵安装
在未来的升级中,同样的密码也必须被传递。
要读取当前密码,请使用以下命令(有关读取秘密值的更多信息,请参见Kubernetes:解码一个秘密).
POSTGRES_PASSWORD=$(kubectl get secret -n-postgresql -o jsonpath="{.data. name ")Postgresql-password}" | base64——decode)
升级时可设置以下参数。
——设置postgresql。postgresqlPassword = $ {POSTGRES_PASSWORD} \
使用自定义机密
秘密是Kubernetes对象,用于存储敏感数据,如加密的用户名和密码。如果需要在自定义init或sidecar容器中添加自定义秘密,请使用本节在values.yaml
文件(b(默认情况下,该部分被注释掉)。
artifactory: #添加自定义秘密-每个文件的秘密customSecrets: - name:自定义秘密密钥:自定义秘密。Yaml data: > secret data
#添加自定义秘密-每个文件的秘密customSecrets: -名称:自定义秘密密钥:自定义秘密。Yaml data: > secret data
#添加自定义秘密-每个文件的秘密customSecrets: -名称:自定义秘密密钥:自定义秘密。Yaml data: > secret data
customSecrets: - name: custom-secret key: custom-secret。Yaml data: > secret data
customSecrets: - name: custom-secret key: custom-secretYaml data: > secret data
要使用自定义密钥,需要定义一个自定义卷。
下面的示例展示了如何在Artifactory中定义自定义卷。
artifactory: ##添加自定义卷customVolumes: | - name: custom-secret secret: secretName: custom-secret //{{模板artifactory.name"。}} -unified-secret
要使用卷,需要将卷挂载定义为自定义init或sidecar容器的一部分。
下面的示例展示了如何在Artifactory中将卷挂载定义为sidecar容器的一部分。
artifactory: customSidecarContainers:—名称:side-car-container volumeMounts:—名称:custom-secret mountPath: /opt/custom-secret。yaml子路径:custom-secret。yaml readOnly: true
通过在容器模板中设置以下内容,可以将sidecar配置为作为自定义用户运行。
#以root身份运行容器示例(id 0) securityContext: runAsUser: 0 fsGroup: 0
使用统一保密
立起旗帜,<产品图表名称>
.unifiedSecretInstallation
,真正的
如果您想安装一个统一的秘密,将所有秘密(包括自定义秘密)组合在一起。缺省情况下,该标志为false,不统一保密。
如果将该标志设置为true,则更新secretName
在自定义卷中,{{模板"artifactory-ha.name"。}} -unified-secret
,然后运行安装。
下面的示例展示了如何在Artifactory中定义一个自定义卷,当您希望使用统一的秘密时。
artifactory: ##添加自定义卷customVolumes: | - name: custom-secret secret: secretName: {{template "artifactory.name"。}} -unified-secret
作为最佳实践,我们建议您使用易于识别的统一密钥名称来命名自定义密钥。
人工高可用性
Artifactory存储
人工HA支持广泛的存储后端(有关更多信息,请参阅人工HA存储选项).
在这个图表中,您将设置想要使用的存储类型artifactory.persistence.type
并传递所需的配置设置。此图表中的默认存储是文件系统
复制,其中数据被复制到所有节点。
所有存储配置(NFS除外)都有一个默认值artifactory.persistence.redundancy
参数。这用于设置应该存储在集群节点中的二进制文件的副本数量。一旦在初始部署时设置了这个值,就不能使用Helm更新它。建议将此值设置为大于集群大小一半的数字,并且永远不要将集群缩小到小于此数字的大小。
警告:使用外部斑点存储时使用聚氯乙烯
当使用外部blob存储(例如,AWS S3、Azure blob存储或Google存储)时,在失去与外部存储的连接或Artifactory pod崩溃的情况下,仍然需要在PVC (Persistent Volume Claims)中持久化临时最终存储。
避免使用PVC可能会导致数据丢失,在意外的吊舱终止的情况下。
在OpenShift集群上部署Artifactory并使用Azure PostgreSQL数据库服务
当使用Azure PostgreSQL数据库服务在OpenShift集群上部署Artifactory时,该服务需要TLS加密的数据库连接。要了解更多信息,请参见元数据服务故障处理。
使用现有卷声明
使用主节点的现有卷声明
要为Artifactory主节点存储使用现有的卷声明,您需要执行以下操作。
按名称创建持久卷声明
体积- <发布名> -artifactory-ha-primary-0
例如,volume-myrelease-artifactory-ha-primary-0
。将参数传递给
舵安装
和执掌升级
。…——设置artifactory.primary.persistence.existingClaim = true
使用成员节点的现有卷声明
要为Artifactory成员节点存储使用现有的卷声明,您需要执行以下操作。
根据定义的副本数量创建持久卷声明
artifactory.node.replicaCount
通过名字体积- <发布名> -artifactory-ha-member——<序数>
,例如,volume-myrelease-artifactory-ha-member-0
和volume-myrelease-artifactory-ha-primary-1
。将参数传递给
舵安装
和执掌升级
。…——设置artifactory.node.persistence.existingClaim = true
使用现有的共享卷声明
要使用要在所有节点之间共享的现有卷声明(用于数据和备份),您需要执行以下操作。
使用readwritmany创建符合命名约定的pvc。
{{template "artifactory-ha。fullname”。}}-data-pvc-
{{template "artifactory-ha. >fullname”。}} -backup-pvc 这里有一个示例显示正在使用2个现有卷声明。
myexample-artifactory-ha-data-pvc-1
设置
artifactory.persistence.fileSystem.existingSharedClaim.enabled
在values.yaml
文件真正的
。——set artifactory.persistence. filessystem . existingsharedclaim。——set artifactory.persistence. filessystem . existingsharedclaim . numberofexistingclaims =2
添加许可证
要激活Artifactory HA,必须在安装过程中安装适当的许可证。有三种方法可以管理许可证:通过Artifactory UI、REST API或Kubernetes Secret。
指定多个license
无论是在Artifactory UI中,使用REST API还是在artifactory.cluster.license
文件中,请确保用换行符分隔许可证。
最简单和推荐的方法是使用人工UI。Kubernetes Secret或REST API适用于高级用户,更适合自动化。
您应该只使用这些方法中的一种。在集群运行时在它们之间切换可能会禁用Artifactory HA集群。
选项A:使用REST API
您可以通过REST API。请注意,REST API对许可证中的换行符使用“\n”(这是当前推荐的方法)。
选项B:使用人工UI
主集群运行后,打开Artifactory UI并在UI中插入许可证。看到HA安装和设置了解更多详情。
一次输入所有许可证,每个许可证用换行符分隔。如果一次添加一个许可证,您可能会被重定向到没有许可证的节点,并且不会为该节点加载UI。
选项C:使用Kubernetes Secret
重要的
此方法仅适用于初始部署。一旦部署了Artifactory,就不应该继续传递这些参数,因为许可证已经持久化到Artifactory的存储中(它们将被忽略)。应该通过人工UI或REST API更新许可证。
您可以将Artifactory许可证部署为Kubernetes秘密。您需要准备一个包含许可的文本文件。如果添加多个license,则添加到同一个文件中。记得要加上每条线之间加两条新线许可证。
创建Kubernetes密钥(假设本地许可文件为'
art.lic
”)。Kubectl创建秘密通用artifactory-cluster-license——from-file=./art.lic
创建一个
license-values.yaml
。artifactory: license: secret: artifactory-cluster-license dataKey: art.lic
与
license-values.yaml
。
在JFrog平台上运行以下命令。命名空间jfrog-platform jfrog/jfrog-platform -f license-values.yaml
为Artifactory运行以下命令。
设置artifactory.license.secret=artifactory-cluster-license,artifactory.license. datakey =artifactory。命名空间artifactory jfrog/artifactory
创建Kubernetes Secret作为Helm发布的一部分
创建一个
license-values.yaml
。artifactory: license: licenseKey: |-
与
license-values.yaml
。命名空间jfrog-platform jfrog/jfrog-platform -f license-values.yaml
此方法仅适用于初始部署。一旦部署了Artifactory,就不应该继续传递这些参数,因为许可证已经持久化到Artifactory的存储中(它们将被忽略)。应该通过人工UI或REST API更新许可证。
如果您希望使用相同的方法继续管理Artifactory许可,您可以使用values.yaml
文件。
扩展人工集群
Artifactory HA的一个关键特性是能够使用——设置artifactory.node.replicaCount = $ {CLUSTER_SIZE}
如果需要,还可以调整集群的大小。
在扩展
在扩展时,如果密码是自动生成的,则需要显式地传递数据库密码(这是附带的PostgreSQL Helm图中的默认密码)。
要获取当前数据库密码,请使用以下命令。
export DB_PASSWORD=$(kubectl get $(kubectl get secret -o name | grep postgresql) -o jsonpath="{.data. sql "Postgresql-password}" | base64——decode)
重要的
使用——设置postgresql.postgresqlPassword = $ {DB_PASSWORD}
使用每个缩放操作来防止错误配置集群。
扩大规模:
假设您有一个具有2个成员节点的集群,并且您希望扩展到3个成员节点(总共4个节点),请使用以下命令。
#扩展到4个节点(1个主节点和3个成员节点)helm upgrade——install artifactory-ha——set artifactory.nodereplicaccount =3——set postgresql。postgresqlPassword=${DB_PASSWORD} --namespace artifactory-ha jfrog/artifactory-ha
缩小规模:
#伸缩到2个成员节点helm upgrade——install artifactory-ha——set artifactory.nodereplicaccount =2——set postgresql。postgresqlPassword=${DB_PASSWORD} --namespace artifactory-ha jfrog/artifactory-ha
因为Artifactory是作为Kubernetes状态集运行的,所以删除节点不会删除持久卷。您需要显式地删除它,如下所示。
#列出聚氯乙烯kubectl得到聚氯乙烯#移除序数最高的聚氯乙烯!在这个例子中,最高的节点序数是2,所以需要删除它的存储空间。Kubectl delete PVC volume-artifactory-node-2
人工高级选项
使用秘密方式添加license
有两种方法可以使用secret添加许可证:
这些方法仅与初始部署相关。一旦部署了Artifactory,就不应该继续传递这些参数,因为许可证已经持久化到Artifactory的存储中(它们将被忽略)。应该通过人工UI或REST API更新许可证。如果您希望使用相同的方法继续管理Artifactory许可,您可以使用values.yaml
文件。
使用已存在的Kubernetes密钥创建License
您可以将Artifactory许可证部署为Kubernetes秘密通过准备一个包含许可证的文本文件,并从中创建一个Kubernetes密钥。
kubectl Create secret generic -n artifactory artifactory-license——from-file=./art。——install artifactory——set artifactory.license.secret=artifactory-license,artifactory.license. datakey =art。命名空间artifactory jfrog/artifactory
创建一个秘密作为头盔释放的一部分
要创建一个秘密作为Helm发行版的一部分,请更新values.yaml
然后运行安装程序。
artifactory: license: licenseKey: |-helm upgrade——install artifactory -f values。命名空间artifactory jfrog/artifactory
与安全相关的问题
下一节将讨论Helm Charts安装中与安全相关的问题,例如管理订阅和秘密、网络策略等。
自定义数据库密码
您可以覆盖指定的数据库密码(在values.yaml
),通过在安装命令行中将其作为参数传递。
——安装artifactory——namespace artifactory——set postgresql。postgresqlPassword = 12 _hx34qwerq2 jfrog / artifactory
方法中传递其他参数,也可以以同样的方式自定义它们舵安装
命令行。
创建入口对象
要让Helm创建一个带有主机名的入口对象,请将这些行添加到artifactory-ingress-values.yaml
文件和使用它与您的头盔安装或升级。
ingress: enabled: true hosts: - artifactory.company.com artifactory: service: type: NodePort nginx: enabled: false helm upgrade——install artifactory- f artifactory-ingress-values。命名空间artifactory jfrog/artifactory
如果您的集群允许自动创建/检索TLS证书(例如,通过使用cert-manager;有关更多信息,请参见cert-manager
),创建入口对象,如下所示。
要手动配置TLS,首先为希望保护的地址创建/检索密钥和证书对。
接下来,在名称空间中创建一个TLS秘密。
Kubectl创建秘密TLS artifactory-tls——cert=path/to/ TLS。cert——关键=路径/ / tls.key
在自定义的Artifactory Ingress TLS部分中包括秘密的名称以及所需的主机名
values.yaml
文件。ingress: ##如果true,将创建Artifactory ingress ## enabled: true ## Artifactory ingress主机名##如果启用了ingress,必须提供## hosts: - artifactory.domain.com注解:kubernetes。io/ TLS -acme: "true" ## Artifactory入口TLS配置##秘密必须在命名空间## TLS: - secretName: Artifactory - TLS hosts: - artifactory.domain.com中手动创建
使用入口注释
下面是一个入口注释的示例,它使Artifactory能够使用Repository Path方法作为Docker注册表工作。有关更多信息,请参见人工作为Docker注册表。
ingress: enabled: true defaultBackend: enabled: false hosts: - myhost.example.com annotations: ingress.kubernetes. comIo /force-ssl-redirect: "true"Io /proxy-body-size: "0"Io /proxy-read-timeout: "600"kubernetes.io/ingress.class: nginx nginx.ingress. kubernetes.ioIo /configuration-snippet: | rewrite ^/(v2)/token /artifactory/api/docker/null/v2/token;重写^ / (v2 )/([^\/]*)/(.*) / artifactory / api /码头工人/ 2美元/ 1 / 3美元;nginx.ingress.kubernetes。Io /proxy-body-size: "0" tls: - hosts: - "myhost.example.com"
如果您使用Artifactory作为SSO提供者(例如,使用Xray),您将需要使用以下注释,并更改到您的域。
. .kubernetes.io/ingress.class: nginx nginx.ingress. kubernetes.ioproxy_pass_header Server;proxy_set_header x - jfrog - overrides - base - url https://;
添加其他入口规则
您还可以选择向Artifactory Ingress添加额外的Ingress规则。这个用例的一个例子是将/xray路径路由到xray。要做到这一点,只需将以下内容添加到artifactory-values.yaml
文件并运行升级。
ingress: enabled: true defaultBackend: enabled: false注解:kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes。io / configuration-snippet: |重写”(?我)/ x光 (/|$)(.*)"/ 2美元打破;addtionalrules: | - host:http: paths: - path: / backend: serviceName: servicePort: - path: /xray backend: serviceName: servicePort: - path: /artifactory backend: serviceName: {{template "artifactory.nginx. nginx. conf "fullname”。}} servicePort: {{. values .nginx。——install xray jfrog/artifactory -f artifactory-values.yaml
为复制器服务使用专用入口对象
您还可以选择向Replicator服务添加一个额外的Ingress对象。这个用例的一个例子可能是路由/复制因子
通往人工工厂的道路。要做到这一点,只需将以下内容添加到artifactory-values.yaml
文件。
artifactory: replicator: enabled: true ingress: name:hosts: - myhost.example.com annotation: kubernetes.io/ingress.class: nginx nginx.ingress. kubernetes.ioIo /proxy-buffering: "关闭" nginx.ingress.kubernetes。Io /configuration-snippet: | chunked_transfer_encoding on;tls: - hosts: - "myhost.example.com" secretName:
在另一个负载均衡器后面运行入口
如果你正在运行一个用于卸载TLS的负载均衡器,在Nginx入口控制器前面,或者如果你正在设置X-Forwarded - *
头,您可能希望启用use-forwarded-headers = true
选择。否则,Nginx将用它从外部负载均衡器接收到的请求信息填充这些标头。
运行以下命令启用该选项。
创建命名空间ingress-nginx——安装命名空间ingress-nginx ingress-nginx/ingress-nginx——set-string controller.config.use-forward -headers=true
另外,创建一个values.yaml
文件中包含以下内容。然后安装nginx-ingress
使用您创建的值文件。
控制器:config: use-forwarded-headers: "true"
创建值后,运行以下命令。yaml文件。
创建命名空间ingress-nginx——安装命名空间ingress-nginx ingress-nginx/ingress-nginx -f values.yaml
日志分析
FluentD, Prometheus和Grafana
配置Prometheus和Grafana,通过使用FluentD,请参阅日志分析存储库。存储库包含一个文件artifactory-values.yaml
它可以用来部署Prometheus、Service Monitor和Grafana。
配置网络策略
NetworkPolicy指定在此命名空间中允许哪些入口和出口。我们鼓励在可能的情况下更具体地提高系统安全性。
在networkpolicy
部分values.yaml
文件中可以指定NetworkPolicy对象的列表。
- 对于podSelector, Ingress和Egress,如果没有提供,则使用默认值
——{}
是应用的,也就是允许一切。 一个完整的(但非常开放的)示例,导致创建2个NetworkPolicy对象:
networkpolicy: #允许所有进出Artifactory。- name: artifactory podSelector: matchLabels: app: artifactory egress: - {} ingress: -{} #允许artifactory pods连接到postgresql pods,但不允许流量离开postgresql pod。—name: postgres podSelector: matchLabels: app: postgresql ingress:—from:—podSelector: matchLabels: app: artifactory
先进的存储选项
文件存储库是物理存储二进制文件的地方,它是两家门店是Artifactory仓储和管理资源必不可少的2022世界杯阿根廷预选赛赛程。Artifactory支持广泛的存储后端;在本节中,我们详细介绍了人工存储的一些高级选项;有关更多信息,请参见人工文件存储选项。
设置人工持久化存储类型
在Helm图表中,设置您想要使用的存储类型artifactory.persistence.type
并传递所需的配置设置。此图表中的默认存储是文件系统
复制,其中数据被复制到所有节点。
重要的
除了网络文件系统(NFS)之外,所有存储配置都有一个默认值artifactory.persistence.redundancy
参数。这用于设置应该在集群的节点中存储多少个二进制文件副本。一旦在初始部署时设置了这个值,就不能使用Helm更新它。建议将此值设置为大于集群大小一半的数字,并且永远不要将集群缩小到小于此数字的大小。
要将选择的桶用作HA的文件存储库,请将文件存储库的参数传递给Helm的安装/升级。
设置NFS存储
要使用NFS服务器作为集群的存储,需要执行以下操作。
设置NFS服务器并获取其IP为
NFS_IP
。创建
数据
和备份
NFS导出目录中所有目录的写权限。将NFS参数传递给Helm安装/升级,如下所示。
artifactory: persistent: type: nfs nfs: ip: ${NFS_IP}
配置NFS持久化类型
在某些情况下,Helm Chart不可能为Artifactory自动设置NFS挂载。在这些情况下(例如AWS EFS),您将使用artifactory.persistence.type =文件系统,
即使您的底层持久性实际上是网络文件系统。
同样的事情也适用于使用慢速存储设备(如廉价磁盘)作为Artifactory的主要存储解决方案;这意味着服务来自网络文件系统/慢速存储的高使用率文件需要花费时间,这就是为什么您希望将缓存文件系统本地存储在磁盘上(在快速磁盘上,如SSD)。
创建一个
values.yaml
文件。将卷挂载到快速存储设备上,如下所示。
artifactory: ##设置您的卷挂载到您的快速存储设备customVolumes: | - name: my-cache-fast-storage persistentvolumecclaims: claimName: my-cache-fast-storage-pvc ##启用缓存并配置缓存目录customvolumounts: | - name: my-cache-fast-storage mountPath: /my-fast-cache-mount ##使用您创建的值文件安装helm chart persistence: cacheProviderDir: /my-fast-cache-mount fileSystem: cache: enabled: true
使用您创建的值文件安装Artifactory。
Artifactory——命名空间artifactory -f values.yaml
Artifactory哈——install artifactory-ha jfrog/artifactory-ha——namespace artifactory-ha -f values.yaml
谷歌存储
通过传递下面的Google Storage参数,您可以使用Google Storage桶作为集群的文件存储来舵安装
和执掌升级
。有关更多信息,请参见谷歌云存储。
工件:持久性:类型:google-storage-v2
Artifactory哈
要使用GCP服务帐户,Artifactory需要一个gcp.credentials.json
与binaraystore.xml文件在同一目录下的文件。
这可以通过运行以下命令来生成。
Gcloud iam服务帐户密钥创建——iam-account
这将产生以下内容,可以将其保存到文件或复制到您的values.yaml
。
{“类型”:“service_account”、“project_id”:“< project_id >”,“private_key_id ": "?????", " private_key”:“——开始私钥\ n ? ?= = \ n——结束私钥\ n”、“client_email”:“? ? @j < project_id > .iam.gserviceaccount.com”、“client_id ": "???????", " auth_uri”:“https://accounts.google.com/o/oauth2/auth”、“token_uri”:“https://oauth2.googleapis.com/token”,“auth_provider_x509_cert_url”:“https://www.googleapis.com/oauth2/v1/certs”,“client_x509_cert_url”:“https://www.googleapis.com/robot/v1..”。}
一种选择是创建自己的secret然后传给你的舵安装
在风俗中values.yaml
。
#从之前创建的文件中创建Kubernetes secret。#重要:文件必须命名为“gcp.credentials”。Json”,因为这将在以后用作秘密密钥!——from-file=./gcp.credentials.json
在您的自定义中设置此秘密values.yaml
。
artifactory: persistence: googleStorage: gcpServiceAccount: enabled: true customSecretName: artifactory-gcp-creds
另一种选择是将生成的配置直接放在自定义中values.yaml
然后一个秘密就会由此产生。
artifactory: persistence: googleStorage: gcpServiceAccount: enabled: true config: | {"type": "service_account", "project_id": "", "private_key_id": "?????", "private_key": "-----BEGIN PRIVATE KEY-----\n???????? .= = \ n——结束私钥\ n”、“client_email”:“? ? @j < project_id > .iam.gserviceaccount.com”、“client_id ": "???????", " auth_uri”:“https://accounts.google.com/o/oauth2/auth”、“token_uri”:“https://oauth2.googleapis.com/token”,“auth_provider_x509_cert_url”:“https://www.googleapis.com/oauth2/v1/certs”,“client_x509_cert_url”:“https://www.googleapis.com/robot/v1..”。}
Aws s3 v3
要使用AWS S3桶作为集群的文件存储并使用官方AWS SDK访问它,请参见S3官方SDK二进制提供程序。如果您想直接将IAM角色附加到Artifactory pod(而不是将其附加到Artifactory运行的机器上),请使用此模板。
您应该将其与Kubernetes机制结合使用,以便将IAM角色附加到pod上,例如kube2iam。
传递AWS S3 V3参数和指向IAM角色的注释(当使用IAM角色时;这是kube2iam特有的,可能因实现而异舵安装
和执掌升级
。
#使用明确的凭证:artifactory: persistence: type: aws-s3-v3 awsS3V3: region: ${AWS_REGION} bucketName: ${AWS_S3_BUCKET_NAME} identity: ${AWS_ACCESS_KEY_ID} credential: ${AWS_SECRET_ACCESS_KEY} useinstancecredals: false #使用现有IAM角色artifactory: annotations: ' IAM \.amazonaws\.com/role'=${AWS_IAM_ROLE_ARN} persistence: type: aws-s3-v3 awsS3V3: region: ${AWS_REGION} bucketName: ${AWS_S3_BUCKET_NAME}
要启用直接下载云存储,请使用以下方法。
artifactory: persistence: awsS3V3: enableSignedUrlRedirect: true
微软Azure Blob存储
通过将Azure Blob Storage参数传递给,可以使用Azure Blob Storage作为集群的文件存储舵安装
和执掌升级
。有关更多信息,请参见Azure Blob存储二进制提供程序。
artifactory: persistence: type: azureBlob azureBlob: accountName: ${AZURE_ACCOUNT_NAME} accountKey: ${AZURE_ACCOUNT_KEY} endpoint: ${AZURE_ENDPOINT} containerName: ${AZURE_CONTAINER_NAME}
要将持久卷声明作为缓存目录与Azure Blob Storage一起使用,请将以下参数也传递给舵安装
和执掌升级
(验证mountPath
和cacheProviderDir
指向同一个位置)。
artifactory: persistence: existingClaim: ${YOUR_CLAIM} mountPath: /opt/cache-dir cacheProviderDir: /opt/cache-dir
自定义binarystore.xml
提供自定义有两个选项binarystore.xml。
直接在values.yaml。
artifactory: persistence: binarystoreXml: |
创建你自己的秘密并传递给你的
舵安装
命令。#准备您的自定义密钥文件(custom- binarstore .yaml)类型:Secret apiVersion: v1元数据:名称:custom-binarystore标签:app: artifactory图表:artifactory stringData: binarstore .xml: |-
接下来,从该文件创建一个密钥。
Kubectl apply -n artifactory -f ./custom- binarstore .yaml
把秘密传给你的
舵安装
命令。Artifactory——安装artifactory——命名空间artifactory——设置artifactory.persistence。customBinarystoreXmlSecret = custom-binarystore jfrog / artifactory
Artifactory哈安装artifactory-ha——命名空间artifactory-ha——设置artifactory.persistencecustomBinarystoreXmlSecret = custom-binarystore jfrog / artifactory-ha
添加扩展
扩展(也称为插件)是扩展和集成系统的软件组件。大多数集群管理员将使用Kubernetes的托管或分发实例。在本节中,我们包含了一些您可以使用Helm Charts与Artifactory一起使用的扩展。
使用Logger Sidecars
日志记录器侧车使您能够跟踪来自Artifactory的各种日志(请参阅values.yaml
文件)。
要获取pod中的容器列表,请执行以下操作。
kubectl get pods -n-o jsonpath='{.spec.containers[*].name}' | tr ' ' ' '\n'
通过以下命令查看具体日志。
kubectl logs -n-c
添加用户插件
用户插件使您能够扩展Artifactory的行为,例如,创建Kubernetes密钥。
创建一个秘密人工用户插件使用以下命令。
kubectl创建Secret generic archive-old-artifacts——from-file= archiveolartifacts。kubectl——from-file=webhook。groovy——从文件= webhook.config.json。——名称空间= artifactory示例
创建一个
plugin-values.yaml
包含插件秘密名称和Artifactory图表artifactory: artifactory用户插件的秘密列表。每个插件文件一个秘密。copyOnEveryStartup: - source: /artifactory_bootstrap/plugins/* target: etc/artifactory/plugins/artifactorycopyOnEveryStartupis used to copy and overwrite the files from /artifactory_bootstrap/plugins to /opt/jfrog/artifactory/var/etc/artifactory/plugins every time the pod is restarted.
人工HA图artifactory: artifactory用户插件的秘密列表。每个插件文件一个秘密。userPluginSecrets: - archive-old-artifacts - webhook - cleanup primary: preStartCommand: "mkdir -p {{. values .artifactory.persistence. "/etc/artifactory/plugins/ && cp -Lrf /artifactory_bootstrap/plugins/* {{. values .artifactory.persistence. mount . path}}mountPath}} / etc / artifactory /插件/”artifactory.primary。preStartCommandis used to copy and overwrite the files from /artifactory_bootstrap/plugins to /opt/jfrog/artifactory/var/etc/artifactory/plugins every time the pod is restarted.
你现在可以通过
plugins.yaml
将您创建的文件添加到Helm install命令中,以便使用用户插件部署Artifactory,如下所示。Artifactory——命名空间artifactory -f plugin-values.yaml
Artifactory哈——命名空间artifactory-ha -f plugin-values.yaml
另一种情况是,您可能希望在依赖于此图表的Helm图表中创建秘密。在这个场景中,秘密的名称很可能是通过模板函数动态生成的,因此传递静态命名的秘密是不可能的。
在这种情况下,Helm chart支持将字符串作为模板通过tpl
函数——只需传递包含用于命名秘密的模板语言的原始字符串作为值,而不是将以下内容添加到图表中values.yaml
文件。
artifactory: userPluginSecrets: - '{{template "my-chart。fullname”。}}’
使用ConfigMaps存储非机密数据
configMap是一个API对象,用于在键值对中存储非机密数据。如果您希望将自定义文件挂载到Artifactory,可以使用init shell脚本或自定义配置文件(例如logback.xml
),您可以使用此选项。
为Artifactory创建自定义configMaps
创建一个configmaps.yaml
文件如下所示,然后在安装/升级Helm时使用它。这将反过来做到以下几点:
创建一个指向该名称的configMap的卷
artifactory-configmaps
。将这个configMap挂载到
/ tmp / my-config-map
使用customVolumeMounts
。将我们挂载的shell脚本设置为
postStartCommand
。复制
logback.xml
文件美元ARTIFACTORY_HOME / etc / artifactory
目录中。artifactory: configMaps: | logback.xml: |
> %date [%-5level] \(%-20c{3}:%L\) %message%n jetty"> < appenter -ref ="CONSOLE"/> ArtifactoryHelm升级——install artifactory -f configmaps。命名空间artifactory jfrog/artifactory
Artifactory哈——install artifactory-ha jfrog/artifactory-ha——namespace artifactory-ha -f values.yaml
使用Nginx .conf创建自定义Nginx .conf
创建
nginx.conf
文件:Kubectl create configmap nginx-config——from-file=nginx.conf
将configMap传递给Helm安装:
ArtifactoryHelm升级——安装artifactory——设置nginx。customConfigMap=nginx-config——namespace artifactory jfrog/artifactory
Artifactory哈——install artifactory-ha jfrog/artifactory-ha——namespace artifactory-ha -f values.yaml
使用外部数据库
对于生产级安装,建议使用带有静态密码的外部PostgreSQL。
PostgreSQL
有些情况下,你会想使用一个外部的PostgreSQL与不同的数据库名称,例如,my-artifactory-db;在这种情况下,您需要设置一个自定义的PostgreSQL连接URL,其中my-artifactory-db是数据库的名称。
这可以通过以下参数完成。
postgresql: enabled: false数据库:type: postgresql driver: org.postgresql.Driver url: 'jdbc:postgresql://${DB_HOST}:${DB_PORT}/my-artifactory-db' user:password:
你必须设定postgresql.enabled = false
对于图表使用数据库。*
参数。没有它,他们将被忽视。
其他数据库类型
在某些情况下,您可能希望使用不同的数据库而不是所附的数据库PostgreSQL。有关更多信息,请参见配置数据库。
官方Artifactory Docker镜像包含PostgreSQL数据库驱动程序。对于其他数据库类型,必须将相关的数据库驱动程序添加到Artifactory的tomcat/lib中。
这可以通过以下参数完成。
postgresql: enabled: false database: type: MySQL driver: com.mysql.jdbc.Driver url:user: password: Artifactory: preStartCommand: "mkdir -p /opt/jfrog/ Artifactory /var/bootstrap/ Artifactory /tomcat/lib;CD /opt/jfrog/artifactory/var/bootstrap/artifactory/tomcat/lib && curl https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.41/mysql-connector-java-5.1.41.jar -o /opt/jfrog/artifactory/var/bootstrap/artifactory/tomcat/lib/mysql-connector-java-5.1.41.jar"
你必须设定postgresql.enabled = false
对于图表使用数据库。*
参数。没有它,他们将被忽视。
使用外部Oracle数据库配置Artifactory
要在Oracle数据库中使用Artifactory,所需的即时客户端库文件,libaio
必须复制到tomcat自由
。此外,您还需要设置LD_LIBRARY_PATH
env变量。
用配置创建一个值文件。
postgresql: enabled: false数据库:type: oracle driver: oracle.jdbc. oracledriver url:
user: password: artifactory: preStartCommand: "mkdir -p /opt/jfrog/artifactory/var/bootstrap/artifactory/tomcat/lib;CD /opt/jfrog/artifactory/var/bootstrap/artifactory/tomcat/lib && curl https://download.oracle.com/otn_software/linux/instantclient/19600/instantclient-basic-linux.x64-19.6.0.0.0dbru.zip -o instantclient-basic-linux.x64-19.6.0.0.0dbru.zip && unzip instantclient-basic-linux.x64-19.6.0.0.0dbru.zip && cp instantclient_19_6/ojdbc8.jar。&& rm -rf instantclient-basic-linux.x64-19.6.0.0.0dbru.zip instantclient_19_6" extraEnvironmentVariables: -名称:LD_LIBRARY_PATH值:/opt/jfrog/artifactory/var/bootstrap/artifactory/tomcat/lib 使用您创建的值文件安装Artifactory。
Artifactory——命名空间artifactory -f values-oracle.yaml
Artifactory哈——install artifactory-ha jfrog/artifactory-ha——namespace artifactory-ha -f values.yaml
如果这是从6升级。X到7。X,等号相加
preStartCommand
下artifactory.migration.preStartCommand
。
使用已有的Kubernetes秘密
如果您将数据库凭据存储在预先存在的Kubernetes Secret中,您可以通过database.secrets
而不是database.user
和database.password
。
postgresql: enabled: false database: secrets: user: name: "my-secret" key: "user" password: name: "my-secret" key: "password" url: name: "my-secret" key: "url"
基础设施定制
人工内存和CPU资源2022世界杯阿根廷预选赛赛程
Artifactory Helm图表支持配置资源请求,并限制Artifactory、Nginx和PostgreSQL。默认情况下,这些设置被注释掉。它是高度建议设置这些,这样您就可以完全控制分配的资源和限制。2022世界杯阿根廷预选赛赛程人工java内存参数也可以(也应该)设置为与分配的资源匹配2022世界杯阿根廷预选赛赛程artifactory.javaOpts.xms
和artifactory.javaOpts.xmx
。
#设置所有pod的资源请求和限制的示例(包括将java内存设置传递给Artifactory) Artifactory: javaOpts: xms: "1g" xmx: "4g" resources: requests: memory: "1Gi" cpu: "500m" limits: memory: "4Gi" cp2022世界杯阿根廷预选赛赛程u: "2" nginx: resources: requests: memory: "250Mi" cpu: "100m" limits: memory: "500Mi" cpu: "250m"
#设置所有pod的资源请求和限制的示例(包括将java内存设置传递给Artifactory) Artifactory: primary: resources: requests: memory: "1Gi" cpu: "500m" limits: memory: "4Gi" cp2022世界杯阿根廷预选赛赛程u: "2" node: resources: requests: memory: "1Gi" cpu: "500m" limits: memory: "4Gi" cpu: "2" javaOpts: xms: "1g" xmx: "4g" initContainers: resources: requests: memory: "64Mi" cpu: "10m" limits: memory: "128Mi" cpu: "250m" postgresql: resources: requests: memory: "512Mi" cpu: "200m" limits:内存:"1Gi" cpu: "1" nginx:资源:请求:2022世界杯阿根廷预选赛赛程内存:"250Mi" cpu: "100m"限制:内存:"500Mi" cpu: "250m"
虽然可以通过这种方式设置资源限制和请求,但建议对小型、中型和大2022世界杯阿根廷预选赛赛程型安装使用预构建的值文件,并在必要时根据需要更改它们。
自定义Docker注册表
如果你需要从私有注册表中获取Docker镜像,你需要创建一个Kubernetes Docker注册表秘密并在安装/升级时传递给Helm。
创建一个名为“regsecret”的Docker注册表秘密——Docker -registry regsecret——Docker -server=< your-name>——Docker -username=——Docker -password= ——Docker -email= helm upgrade——install artifactory——set imagePullSecrets=regsecret——namespace artifactory jfrog/artifactory
引导Artifactory
在使用Helm Charts时,您可以引导Artifactory管理密码和Artifactory配置。
引导Artifactory Admin密码
你可以引导管理
用户密码请参见重新创建默认的Admin用户。
创建
admin-creds-values.yaml
并提供IP(默认为127.0.0.1)和密码。artifactory: admin: ip: "
" #示例:"*"允许从任何地方访问用户名:"admin"密码:" " 应用
admin-creds-values.yaml
文件。Artifactoryjfrog/artifactory -f admin- credls -values.yaml
Artifactory哈命名空间artifactory-ha jfrog/artifactory-ha -f admin- credls -values.yaml
- 重新启动人工豆荚(
Kubectl delete pod
).
引导人工配置
您可以使用Helm Charts来引导Artifactory全局配置和安全配置。要做到这一点,你我需要一个Artifactory订阅。
创建一个
bootstrap-config.yaml
与一个artifactory.config.import.xml
和一个security.import.xml
如下所示。apiVersion: v1 kind: ConfigMap元数据:name: my-release-boot -config data: artifactory.config.import.xml: |
security.import.xml: | 在Kubernetes中创建一个configMap。
Kubectl应用-f bootstrap-config.yaml
使用以下选项之一将configMap传递给Helm。
Artifactoryhelm upgrade——install artifactory——set artifactory.license.secret=artifactory-license,artifactory.license. datakey =art.lic,artifactory。configMapName=my-release-bootstrap-config——namespace artifactory jfrog/artifactory
Artifactory哈——安装artifactory-ha——set artifactory.license.secret=artifactory-license,artifactory.license. datakey =art.lic,artifactory. datakey =art.lic。configMapName=my-release-bootstrap-config——namespace artifactory-ha jfrog/artifactory-ha
或
Artifactory——安装artifactory——set artifactory.license. licensekey =
,artifactory。configMapName=my-release-bootstrap-config——namespace artifactory jfrog/artifactory Artifactory哈——install artifactory-ha——set artifactory.license. licensekey =
,artifactory. conf = 。configMapName=my-release-bootstrap-config——namespace artifactory-ha jfrog/artifactory-ha
为每次启动复制配置文件
存储在/ artifactory-extra-conf
目录只复制到ARTIFACTORY_HOME /等
目录。在某些情况下,您可能希望将配置文件复制到ARTIFACTORY_HOME /等
目录。
例如:
的binarystore.xml
文件:如果您使用默认行为,您的binarystore.xml
配置只会在第一次启动时被复制,这意味着随着时间的推移,您对binaryStore.xml
将不应用配置。
为了确保您的更改应用于每次启动,c用以下值创建一个YAML块:
artifactory: copyOnEveryStartup: - source: /artifactory_bootstrap/ binarstore .xml目标:etc/artifactory .xml
来自Artifactory版本7.46。(Helm charts版本107.46.x), binarstore .xml复制到
等/ artifactory
在copy-system-configurations
初始化容器。因此,您不需要使用copyOnEveryStartup
用于配置binarstore .xml。使用您创建的值文件安装Helm图表:
Artifactory命名空间artifactory jfrog/artifactory -f values.yaml
Artifactory哈命名空间artifactory-ha jfrog/artifactory-ha -f values.yaml
您必须配置Artifactory的任何自定义配置文件,例如logback.xml
:
创建一个configMap
logback.xml
配置。接下来,创建一个
values.yaml
文件中包含以下值:artifactory: ##用您的配置文件customVolumes: | - name: logback-xml-configmap configMap: name: logback-xml-configmap customvolumounts: | - name: logback-xml-configmap mountPath: /tmp/artifactory-logback/ copyOnEveryStartup: - source: /tmp/artifactory-logback/* target: etc/artifactory
使用您创建的值文件安装Helm图表:
Artifactory命名空间artifactory jfrog/artifactory -f values.yaml
Artifactory哈命名空间artifactory-ha /jfrog/artifactory-ha -f values.yaml
监控和日志记录
人工JMX配置
对象下公开mbeanorg.jfrog.artifactory
域,它使您能够监视存储库、执行器池、存储和HTTP连接池。要了解更多信息,请参见人工JMX mbean。
要在部署中启用JMX,请使用以下命令。
artifactory: javaOpts: jmx: enabled: true
artifactory: primary: javaOpts: jmx: enabled: true node: javaOpts: jmx: enabled: true
这将允许在默认端口9010上使用JMX访问Artifactory;要将端口更改为您选择的端口,请使用设置artifactory.javaOpts.jmx.port
。
要使用JMX与安装在计算机上的jconsole(或任何类似工具)连接到Artifactory,请遵循以下步骤。
如上所述启用JMX,并将Artifactory服务更改为LoadBalancer类型。
Artifactoryartifactory: service: type: LoadBalancer javaOpts: jmx: enabled: true
Artifactory哈artifactory: service: type: LoadBalancer primary: javaOpts: jmx: enabled: true node: javaOpts: jmx: enabled: true
的默认设置
java.rmi.server.hostname
服务名称(也可以使用artifactory.javaOpts.jmx.host
).要使用jconsole连接到Artifactory,请使用主机文件将Artifactory Kuberentes服务IP映射到服务名称,如下面的示例所示。Artifactory< artifactory-service-ip > artifactory——<发布名>
Artifactory哈artifactory-ha- 使用服务地址和端口启动jconsole。
Artifactoryjconsole artifactory——<发布名>:< jmx-port >
Artifactory哈Jconsole artifactory-ha-
-primary: Jconsole :
Artifactory Filebeat
如果您希望从Artifactory安装中收集日志,并将它们发送到中央日志收集解决方案(如ELK),则可以使用此选项。
创建一个filebeat.yaml
文件中包含以下内容。
filebeat: enabled: true logstashUrl:资2022世界杯阿根廷预选赛赛程源:请求:内存:"100Mi" cpu: "100m"限制:内存:"100Mi" cpu: "100m"
可选地,您可以自定义filebeat.yaml
将输出发送到不同的位置,然后在安装/升级Helm时使用它。
filebeat: enabled: true filebeatYml: |
Helm升级——安装artifactory -f filebeat。命名空间artifactory jfrog/artifactory执掌升级——安装一个rtifactory-ha -f filebeat.yaml --namespace artifactory-ha jfrog/artifactory-ha
这将开始将您的Artifactory日志发送到您选择的日志聚合器,这取决于您在filebeatYml
。
使用Nginx安装Artifactory和Artifactory HA,并在Nginx Service (LoadBalancer)中终止SSL
您可以在Nginx的LoadBalancer层执行SSL卸载时安装Helm chart,例如:使用AWS ACM证书在LoadBalancer层执行SSL卸载。只需将以下内容添加到artifactory-ssl-values.yaml
文件,然后在您的Helm安装/升级中使用它。
Nginx: https: enabled: false service: ssloffload: true注解:service.beta.kubernetes。Io /aws-load-balance -ssl-cert: "arn:aws:acm:xx-xxxx:xxxxxxxx:certificate/xxxxxxxxxxxxx"Io /aws-load-balance -backend-protocol: "http"io / aws-load-balancer-ssl-ports:“https”
Helm升级——安装artifactory -f artifactory-ssl-values。命名空间artifactory jfrog/artifactory执掌升级——安装一个rtifactory-ha -f artifactory-ssl-values.yaml --namespace artifactory-ha jfrog/artifactory-ha
高级数据库选项的洞察力
部署PostgreSQL
有些情况下,您将需要使用外部PostgreSQL而不是封闭的PostgreSQL。有关更多信息,请参见创建Insight PostgreSQL数据库。
这可以通过以下参数完成。
…——设置postgresql。Enabled =false \——set database。url=${DB_URL} \——设置数据库。user=${DB_USER} \——设置数据库。password=${DB_PASSWORD} \…
你必须设定postgresql.enabled = false
对于图表使用数据库。*
参数。没有它,他们将被忽视。
使用PostgreSQL连接细节的现有秘密
您可以使用现有的秘密来管理数据库连接详细信息。使用以下参数将它们传递给install命令。
export POSTGRES_USERNAME_SECRET_NAME= export POSTGRES_USERNAME_SECRET_KEY= export POSTGRES_PASSWORD_SECRET_NAME= export POSTGRES_PASSWORD_SECRET_KEY=…——set database.secrets.user.name=${POSTGRES_USERNAME_SECRET_NAME} \${POSTGRES_USERNAME_SECRET_KEY} \——set database. secret_name =${POSTGRES_PASSWORD_SECRET_NAME} \——set database. secret_password . key=${POSTGRES_USERNAME_SECRET_KEY} \key=${POSTGRES_PASSWORD_SECRET_KEY} \…
部署Elasticsearch
默认情况下,Insight Helm Chart部署了一个Elasticsearch pod。它还使用特权初始化容器配置Docker主机内核参数。在某些安装中,您可能不允许运行特权容器,在这种情况下,您可以通过配置以下参数禁用Docker主机配置。
——设置elasticsearch.configureDockerHost = false
有些情况下,您将需要使用外部Elasticsearch而不是封闭的Elasticsearch。
这可以通过以下参数完成。
——设置elasticsearch。启用=false \——set elasticsearch。url=${ES_URL} \——set elasticsearch。用户名=${ES_USERNAME} \——set elasticsearch。密码= $ {ES_PASSWORD} \
任务控制的高级数据库选项
部署PostgreSQL
有些情况下,您将需要使用外部PostgreSQL而不是封闭的PostgreSQL。有关更多信息,请参见创建任务控制PostgreSQL数据库。
这可以通过以下参数完成。
…——设置postgresql。Enabled =false \——set database。url=${DB_URL} \——设置数据库。user=${DB_USER} \——设置数据库。password=${DB_PASSWORD} \…
你必须设定postgresql.enabled = false
对于图表使用数据库。*
参数。没有它,他们将被忽视。
使用PostgreSQL连接细节的现有秘密
您可以使用现有的秘密来管理数据库连接详细信息。使用以下参数将它们传递给install命令。
export POSTGRES_USERNAME_SECRET_NAME= export POSTGRES_USERNAME_SECRET_KEY= export POSTGRES_PASSWORD_SECRET_NAME= export POSTGRES_PASSWORD_SECRET_KEY=…——set database.secrets.user.name=${POSTGRES_USERNAME_SECRET_NAME} \${POSTGRES_USERNAME_SECRET_KEY} \——set database. secret_name =${POSTGRES_PASSWORD_SECRET_NAME} \——set database. secret_password . key=${POSTGRES_USERNAME_SECRET_KEY} \key=${POSTGRES_PASSWORD_SECRET_KEY} \…
部署Elasticsearch
默认情况下,任务控制掌舵图部署了一个Elasticsearch pod。它还使用特权初始化容器配置Docker主机内核参数。在某些安装中,您可能不允许运行特权容器,在这种情况下,您可以通过配置以下参数禁用Docker主机配置。
——设置elasticsearch.configureDockerHost = false
有些情况下,您将需要使用外部Elasticsearch而不是封闭的Elasticsearch。
这可以通过以下参数完成。
——设置elasticsearch。启用=false \——set elasticsearch。url=${ES_URL} \——set elasticsearch。用户名=${ES_USERNAME} \——set elasticsearch。密码= $ {ES_PASSWORD} \
管道的高级选项
安装带有入口的管道图
先决条件
在部署带有Ingress的管道之前,你需要准备好以下内容:
- 正在运行的Kubernetes集群
- 一个Artifactory或Artifactory哈企业+许可证
- 预先创建的存储库
jfrogpipelines
在人工类型中通用的
与布局maven-2-default
- 预先创建的存储库
- 一个部署Nginx-ingress控制器
- [可选]A已部署Cert-manager用于自动管理TLS证书可以加密
- [可选]https访问所需的TLS密钥
准备配置
获取JFrog Pipelines helm图以获取所需的配置文件。
获取jfrog/pipelines -untar
的本地副本
values-ingress.yaml
和values-ingress-passwords.yaml
使用所需的配置值。在
values-ingress.yaml
文件,编辑如下内容:Artifactory URL
进入主机
入口tls秘密
在
values-ingress-passwords.yaml
文件,年代设置密码uiUserPassword
,postgresqlPassword
和auth.password
,对……也是一样万能钥匙
和joinKey
。
安装JFrog管道
执行install命令。
jfrog/pipelines -f pipelines/values-ingressYaml -f pipes /values-ingress-password . Yaml
为管道密码使用外部秘密
密码的最佳实践是使用外部秘密,而不是将密码存储在values.yaml
文件。
填写密码,
万能钥匙
和joinKey
在values-ingress-passwords.yaml
然后创建并安装外部密钥。##生成pipelines-system-yaml秘密helm模板——name-template pipelines pipelines/ -s templates/pipelines-system-yamlYaml \ -f管道/值-入口-外部-秘密。Yaml -f pipes /values-ingress-password . Yaml|kubectl apply --namespace pipelines -f - ## Generate pipelines-database secret helm template --name-template pipelines pipelines/ -s templates/database-secret.yaml \ -f pipelines/values-ingress-passwords.yaml | kubectl apply --namespace pipelines -f - ## Generate pipelines-rabbitmq-secret secret helm template --name-template pipelines pipelines/ -s templates/rabbitmq-secret.yaml \ -f pipelines/values-ingress-passwords.yaml | kubectl apply --namespace pipelines -f -
安装管道。
jfrog/pipelines -f values-ingress-external-secret.yaml
建立一个构建平面
要使用管道,你需要设置一个构建平面。有关更多信息,请参阅以下内容:
使用外部PostgreSQL
如果要使用外部PostgreSQL,请设置postgresql.enabled = false
和创建values-external-postgresql.yaml
在下面是Yaml配置。
global: # Internal Postgres必须设置为false postgresql: user: db_username password: db_user_password host: db_host port: 5432 database: db_name ssl: false / true postgresql: enabled: false
验证用户db_username
和数据库db_name
在运行Helm安装/升级之前,必须存在。
jfrog/ pipes -f values-external-postgresql.yaml
使用外部保险库
如果您想使用外部Vault,请设置vault.enabled = false
然后创建一个values-external-vault.yaml
在下面的yaml配置中。
vault: enabled: false global: vault: ## vault url示例#外部:https://vault.example.com #内部在同一个Kubernetes集群中运行:http://vault-active:8200 url: vault_url token: vault_token ##使用现有秘密设置vault令牌# existingSecret: vault-secret
如果您将外部Vault令牌存储在已有的Kubernetes Secret中,您可以通过existingSecret
。
创建一个包含Vault令牌的秘密:
——from-literal=token=${VAULT_TOKEN} helm升级——安装管道——命名空间管道jfrog/ pipes -f values-external-vault.yaml
使用外部系统。带有现有秘密的yaml
这适用于用户希望提供自己的高级用例system.yaml
来配置管道。这将覆盖现有的system.yaml
在values.yaml
。
systemYamlOverride: ##您可以通过指定existingSecret来使用已存在的密钥。dataKey:
在图表2.2.0及以上版本中.Values.existingSecret
变成了.Values.systemYaml.existingSecret
和.Values.systemYaml.dataKey
。
从2.3.7及以上版本的图表中.Values.systemYaml
变成了.Values.systemYamlOverride
。
执掌升级——安装管道——名称空间管道jfrog /管道- fvalues-external-systemyaml.yaml
在生产环境中使用Vault
要安全地使用保险库,您必须设置disablemlock
设置在values.yaml
按照……的规定去假Hashicorp Vault推荐。
对于非生产环境,将此值设置为true是可以接受的。H但是,这确实带来了一个潜在的安全问题,即加密的凭据可能被交换到未加密的磁盘上。出于这个原因,我们建议您始终将此值设置为false,以确保启用mlock。
Vault: disablemlock: true
Vault: disablemlock: false
卸载和删除
本节详细介绍了Artifactory和Xray的卸载步骤。
卸载Artifactory
仅在Helm v3及以上版本支持卸载。
使用以下命令卸载Artifactory。
Helm卸载artifactory &&睡眠90 && kubectl删除PVC -l app=artifactory
接下来,删除存储桶和SQL数据库。
Gsutil rm -r gs://artifactory gcloud SQL实例删除artifactory
删除Artifactory
在删除Artifactory之前,您不需要卸载它。
使用下面的命令删除Artifactory也将删除您的数据卷,并且您将丢失所有数据。你必须删除前备份所有这些信息。
使用如下命令删除Artifactory。
删除命名空间artifactory
这将完全删除您的人工部署(Pro或HA集群)。
删除x光
使用下面的命令删除Xray也将删除您的数据卷,您将丢失所有数据。你必须删除前备份所有这些信息。
要删除x射线服务和数据工具,使用以下命令。
kubectl delete pvc -l release=xray
如果安装了x射线而没有提供值rabbitmq.rabbitmqPassword / rabbitmq-ha.rabbitmqPassword
(密码是自动生成的),按照这些说明操作。
通过运行此命令获取当前密码。
RABBITMQ_PASSWORD=$(kubectl get secret -n
-rabbitmq -o jsonpath="{.data. path ")Rabbitmq-password}”| base64——decode) 通过传递先前自动生成的秘密来升级版本。
helm upgrade
jfrog/xray——set rabbitmq.rabbitmqPassword=${RABBITMQ_PASSWORD}/rabbitmq-ha.rabbitmqPassword=${RABBITMQ_PASSWORD}
如果Xray是用所有默认值安装的(例如,RabbitMQ/PostgreSQL没有用户提供的值),遵循以下步骤。
- 如上节所述,检索所有当前密码(RabbitMQ/PostgreSQL)。
通过传递以前自动生成的秘密来升级版本。
Helm upgrade——install xray——namespace xray jfrog/xray——set rabbitmq-ha。rabbitmqPassword=
——set postgresql.pos