mirror of
https://github.com/helm/charts.git
synced 2026-08-23 22:37:45 +00:00
Moved Artifactory to stable and updated version to 5.3.2 (#1314)
* Upgraded artifactory version to 4.16.0 * changes as per suggestion * Added Stable Artifactory chart * removed Incubator Artifactory chart * Fixed port issue * Fixed path * fixed readme * Added Documentation for all variables. * Updated labels * Fixed Parameter names * Fixed Notes.txt * Updated Artifactory version to 5.4.1 * Fixed metadata * Fixed naming * Changes. * Added release name to selector * Nginx for Oss and Pro * Fixed readme * using secret for database password * renamed secret to postgresql-secret.yaml
This commit is contained in:
committed by
Reinhard Nägele
parent
40a297e720
commit
689cc8b6d8
@@ -1,54 +0,0 @@
|
||||
# JFrog Artifactory Helm Chart
|
||||
|
||||
## Prerequisites Details
|
||||
|
||||
* Artifactory Pro trial license [get one from here](https://www.jfrog.com/artifactory/free-trial/)
|
||||
|
||||
## Todo
|
||||
|
||||
* Implement Support of Reverse proxy for Docker Repo using Nginx
|
||||
* Smarter upscaling/downscaling
|
||||
|
||||
## Chart Details
|
||||
This chart will do the following:
|
||||
|
||||
* Deploy Artifactory-oss
|
||||
* Deploy Artifactory-Pro
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```bash
|
||||
$ helm install --name my-release incubator/artifactory
|
||||
```
|
||||
|
||||
Note: By default it will run Artifactory-oss to run Artifactory-Pro uncomment image in value.yaml or use following command
|
||||
```bash
|
||||
$ helm install --name my-release --set image=docker.bintray.io/jfrog/artifactory-pro incubator/artifactory
|
||||
```
|
||||
|
||||
## Deleting the Charts
|
||||
|
||||
Deletion of the PetSet doesn't cascade to deleting associated Pods and PVCs. To delete them:
|
||||
|
||||
```
|
||||
$ helm delete my-release
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The following tables lists the configurable parameters of the artifactory chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|---------------------------|-----------------------------------|----------------------------------------------------------|
|
||||
| `Image` | Container image name | `docker.bintray.io/jfrog/artifactory-oss` |
|
||||
| `ImageTag` | Container image tag | `5.2.0` |
|
||||
| `ImagePullPolicy` | Container pull policy | `Always` |
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
|
||||
|
||||
|
||||
## Useful links
|
||||
https://www.jfrog.com
|
||||
https://www.jfrog.com/confluence/
|
||||
@@ -1,22 +0,0 @@
|
||||
Get the Artifactory URL to visit by running these commands in the same shell:
|
||||
{{- if contains "NodePort" .Values.ServiceType }}
|
||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "fullname" . }})
|
||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
echo http://$NODE_IP:$NODE_PORT/
|
||||
|
||||
{{- else if contains "LoadBalancer" .Values.ServiceType }}
|
||||
**** NOTE: It may take a few minutes for the LoadBalancer IP to be available. ****
|
||||
**** You can watch the status of by running 'kubectl get svc -w {{ template "fullname" . }}' ****
|
||||
export SERVICE_IP=$(kubectl get svc {{ template "fullname" . }} --namespace {{ .Release.Namespace }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||
echo http://$SERVICE_IP:{{ .Values.httpPort }}/
|
||||
|
||||
{{- else if contains "ClusterIP" .Values.ServiceType }}
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "fullname" . }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
echo http://127.0.0.1:{{ .Values.httpPort }}
|
||||
kubectl port-forward --namespace {{ .Release.Namespace }} $POD_NAME {{ .Values.httpPort }}:{{ .Values.httpPort }}
|
||||
|
||||
{{- end }}
|
||||
|
||||
Default credential for Artifactory:
|
||||
user: admin
|
||||
password: password
|
||||
@@ -1,16 +0,0 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{define "name"}}{{default "artifactory" .Values.nameOverride | trunc 24 }}{{end}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
|
||||
We truncate at 24 chars because some Kubernetes name fields are limited to this
|
||||
(by the DNS naming spec).
|
||||
*/}}
|
||||
{{define "fullname"}}
|
||||
{{- $name := default "artifactory" .Values.nameOverride -}}
|
||||
{{printf "%s-%s" .Release.Name $name | trunc 24 -}}
|
||||
{{end}}
|
||||
@@ -1,37 +0,0 @@
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{template "fullname" .}}
|
||||
labels:
|
||||
app: {{ template "fullname" . }}
|
||||
heritage: "{{ .Release.Service }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
chart: "{{.Chart.Name}}-{{.Chart.Version}}"
|
||||
spec:
|
||||
replicas: {{default 1 .Values.replicaCount}}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{template "fullname" .}}
|
||||
release: {{.Release.Name | quote }}
|
||||
spec:
|
||||
containers:
|
||||
- name: {{ template "fullname" . }}
|
||||
image: "{{ .Values.image}}:{{ .Values.imageTag}}"
|
||||
imagePullPolicy: {{default "IfNotPresent" .Values.ImagePullPolicy}}
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 10 }}
|
||||
ports:
|
||||
- containerPort: 8081
|
||||
name: http
|
||||
volumeMounts:
|
||||
- name: etc
|
||||
mountPath: /var/opt/jfrog/artifactory/etc
|
||||
- name: logs
|
||||
mountPath: /var/opt/jfrog/artifactory/logs
|
||||
- name: data
|
||||
mountPath: /var/opt/jfrog/artifactory/data
|
||||
volumes:
|
||||
- name: data
|
||||
- name: logs
|
||||
- name: etc
|
||||
@@ -1,18 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{template "fullname" .}}
|
||||
labels:
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
chart: "{{.Chart.Name}}-{{.Chart.Version}}"
|
||||
app: {{template "fullname" .}}
|
||||
spec:
|
||||
ports:
|
||||
- port: {{default 8081 .Values.httpPort}}
|
||||
targetPort: 8081
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
app: {{template "fullname" .}}
|
||||
type: {{.Values.ServiceType}}
|
||||
@@ -1,30 +0,0 @@
|
||||
# Default values for Artifactory.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare name/value pairs to be passed into your templates.
|
||||
# name: value
|
||||
|
||||
Name: artifactory
|
||||
Component: "Artifactory"
|
||||
|
||||
## Uncomment following line if you want to run Artifactory-Pro
|
||||
#image: "docker.bintray.io/jfrog/artifactory-pro"
|
||||
image: "docker.bintray.io/jfrog/artifactory-oss"
|
||||
imageTag: "5.2.0"
|
||||
imagePullPolicy: "Always"
|
||||
replicaCount: 1
|
||||
httpPort: 8081
|
||||
## Kubernetes configuration
|
||||
## For minikube, set this to NodePort, elsewhere use LoadBalancer
|
||||
##
|
||||
ServiceType: ClusterIP
|
||||
resources:
|
||||
requests:
|
||||
memory: 2048Mi
|
||||
cpu: 200m
|
||||
|
||||
## Persist data to a persitent volume
|
||||
persistence:
|
||||
enabled: true
|
||||
storageClass: generic
|
||||
accessMode: ReadWriteOnce
|
||||
size: 8Gi
|
||||
Executable → Regular
+6
-2
@@ -1,6 +1,8 @@
|
||||
apiVersion: v1
|
||||
name: artifactory
|
||||
home: https://www.jfrog.com/artifactory/
|
||||
version: 5.2.0
|
||||
version: 5.4.1
|
||||
appVersion: 5.4.1
|
||||
description: Universal Repository Manager supporting all major packaging formats, build tools and CI servers.
|
||||
keywords:
|
||||
- artifactory
|
||||
@@ -9,6 +11,8 @@ sources:
|
||||
- https://bintray.com/jfrog/product/JFrog-Artifactory-Pro/view
|
||||
- https://github.com/JFrogDev
|
||||
maintainers:
|
||||
- name: Jainish shah
|
||||
- name: jainishshah17
|
||||
email: jainishs@jfrog.com
|
||||
- name: eldada
|
||||
email: eldada@jfrog.com
|
||||
icon: https://raw.githubusercontent.com/JFrogDev/artifactory-dcos/master/images/jfrog_med.png
|
||||
@@ -0,0 +1,111 @@
|
||||
# JFrog Artifactory Helm Chart
|
||||
|
||||
## Prerequisites Details
|
||||
|
||||
* Artifactory Pro trial license [get one from here](https://www.jfrog.com/artifactory/free-trial/)
|
||||
|
||||
## Chart Details
|
||||
This chart will do the following:
|
||||
|
||||
* Deploy Artifactory-Oss
|
||||
* Deploy Artifactory-Pro
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `artifactory`:
|
||||
|
||||
```bash
|
||||
$ helm install --name artifactory stable/artifactory
|
||||
```
|
||||
|
||||
### Deploying Artifactory OSS
|
||||
By default it will run Artifactory-Pro to run Artifactory-Oss use following command:
|
||||
```bash
|
||||
$ helm install --name artifactory --set artifactory.image.repository=docker.bintray.io/jfrog/artifactory-oss stable/artifactory
|
||||
```
|
||||
|
||||
### Accessing Artifactory
|
||||
**NOTE:** It might take a few minutes for Artifactory's public IP to become available.
|
||||
Follow the instructions outputted by the install command to get the Artifactory IP to access it.
|
||||
|
||||
### Updating Artifactory
|
||||
Once you have a new chart version, you can update your deployment with
|
||||
```bash
|
||||
$ helm upgrade artifactory --namespace artifactory stable/artifactory
|
||||
```
|
||||
|
||||
This will apply any configuration changes on your existing deployment.
|
||||
|
||||
### Customizing Database password
|
||||
You can override the specified database password (set in [values.yaml](values.yaml)), by passing it as a parameter in the install command line
|
||||
```bash
|
||||
$ helm install --name artifactory --namespace artifactory --set database.env.pass=12_hX34qwerQ2 stable/artifactory
|
||||
```
|
||||
|
||||
You can customise other parameters in the same way, by passing them on `helm install` command line.
|
||||
|
||||
### Deleting Artifactory
|
||||
```bash
|
||||
$ helm delete --purge artifactory
|
||||
```
|
||||
|
||||
This will completely delete your Artifactory Pro deployment.
|
||||
**IMPORTANT:** This will also delete your data volumes. You will loose all data!
|
||||
|
||||
## Configuration
|
||||
|
||||
The following tables lists the configurable parameters of the artifactory chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
|---------------------------|-----------------------------------|----------------------------------------------------------|
|
||||
| `database.name` | Database name | `postgresql` |
|
||||
| `database.replicaCount` | Database replica count | `1` |
|
||||
| `database.env.type` | Database type | `postgresql` |
|
||||
| `database.env.name` | Database name | `artifactory` |
|
||||
| `database.env.user` | Database username | `artifactory` |
|
||||
| `database.env.pass` | Database password | `artXifactory1973` |
|
||||
| `database.image.repository` | Database container image | `docker.bintray.io/postgres` |
|
||||
| `database.image.version` | Database container image tag | `9.5.2` |
|
||||
| `database.image.pullPolicy` | Container pull policy | `IfNotPresent` |
|
||||
| `database.service.type` | Database service type | `ClusterIP` |
|
||||
| `database.externalPort` | Database service external port | `5432` |
|
||||
| `database.internalPort` | Database service internal port | `5432` |
|
||||
| `database.persistence.mountPath` | Database persistence volume mount path | `"/var/lib/postgresql/data"` |
|
||||
| `database.persistence.enabled` | Database persistence volume enabled | `true` |
|
||||
| `database.persistence.accessMode` | Database persistence volume access mode | `ReadWriteOnce` |
|
||||
| `database.persistence.size` | Database persistence volume size | `10Gi` |
|
||||
| `artifactory.name` | Artifactory name | `artifactory` |
|
||||
| `artifactory.replicaCount` | Replica count for Artifactory deployment| `1` |
|
||||
| `artifactory.image.pullPolicy` | Container pull policy | `IfNotPresent` |
|
||||
| `artifactory.image.repository` | Container image | `docker.bintray.io/jfrog/artifactory-pro` |
|
||||
| `artifactory.image.version` | Container image tag | `5.4.1` |
|
||||
| `artifactory.service.type`| Artifactory service type | `ClusterIP` |
|
||||
| `artifactory.externalPort` | Artifactory service external port | `8081` |
|
||||
| `artifactory.internalPort` | Artifactory service internal port | `8081` |
|
||||
| `artifactory.persistence.mountPath` | Artifactory persistence volume mount path | `"/var/opt/jfrog/artifactory"` |
|
||||
| `artifactory.persistence.enabled` | Artifactory persistence volume enabled | `true` |
|
||||
| `artifactory.persistence.accessMode` | Artifactory persistence volume access mode | `ReadWriteOnce` |
|
||||
| `artifactory.persistence.size` | Artifactory persistence volume size | `20Gi` |
|
||||
| `nginx.name` | Nginx name | `nginx` |
|
||||
| `nginx.replicaCount` | Nginx replica count | `1` |
|
||||
| `nginx.image.repository` | Container image | `docker.bintray.io/jfrog/nginx-artifactory-pro` |
|
||||
| `nginx.image.pullPolicy` | Container pull policy | `IfNotPresent` |
|
||||
| `nginx.image.version` | Container image tag | `5.4.1` |
|
||||
| `nginx.service.type`| Nginx service type | `LoadBalancer` |
|
||||
| `nginx.externalPortHttp` | Nginx service external port | `80` |
|
||||
| `nginx.internalPortHttp` | Nginx service internal port | `80` |
|
||||
| `nginx.externalPortHttps` | Nginx service external port | `443` |
|
||||
| `nginx.internalPortHttps` | Nginx service internal port | `443` |
|
||||
| `nginx.env.artUrl` | Nginx Environment variable Artifactory URL | `"http://artifactory:8081/artifactory"` |
|
||||
| `nginx.env.ssl` | Nginx Environment enable ssl | `true` |
|
||||
| `nginx.persistence.mountPath` | Nginx persistence volume mount path | `"/var/opt/jfrog/nginx"` |
|
||||
| `nginx.persistence.enabled` | Nginx persistence volume enabled | `true` |
|
||||
| `nginx.persistence.accessMode` | Nginx persistence volume access mode | `ReadWriteOnce` |
|
||||
| `nginx.persistence.size` | Nginx persistence volume size | `5Gi` |
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
|
||||
|
||||
|
||||
## Useful links
|
||||
https://www.jfrog.com
|
||||
https://www.jfrog.com/confluence/
|
||||
@@ -0,0 +1,27 @@
|
||||
Congratulations. You have just deployed JFrog Artifactory Pro!
|
||||
|
||||
1. Get the Artifactory URL by running these commands:
|
||||
|
||||
{{- if contains "NodePort" .Values.nginx.service.type }}
|
||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "nginx.name" . }})
|
||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
echo http://$NODE_IP:$NODE_PORT/
|
||||
|
||||
{{- else if contains "LoadBalancer" .Values.nginx.service.type }}
|
||||
|
||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||
You can watch the status of the service by running 'kubectl get svc -w {{ template "nginx.name" . }}'
|
||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "nginx.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||||
echo http://$SERVICE_IP/
|
||||
|
||||
{{- else if contains "ClusterIP" .Values.nginx.service.type }}
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "component={{ .Values.nginx.name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
echo http://127.0.0.1:{{ .Values.nginx.externalPortHttp }}
|
||||
kubectl port-forward --namespace {{ .Release.Namespace }} $POD_NAME {{ .Values.nginx.externalPortHttp }}:{{ .Values.nginx.internalPortHttp }}
|
||||
|
||||
{{- end }}
|
||||
|
||||
2. Open Artifactory in your browser
|
||||
Default credential for Artifactory:
|
||||
user: admin
|
||||
password: password
|
||||
@@ -0,0 +1,65 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Expand the name artifactory service.
|
||||
*/}}
|
||||
{{- define "artifactory.name" -}}
|
||||
{{- default .Values.artifactory.name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Expand the name database service.
|
||||
*/}}
|
||||
{{- define "database.name" -}}
|
||||
{{- default .Values.database.name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Expand the name nginx service.
|
||||
*/}}
|
||||
{{- define "nginx.name" -}}
|
||||
{{- default .Values.nginx.name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "fullname" -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified application name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "artifactory.fullname" -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- printf "%s-%s-%s" .Release.Name $name .Values.artifactory.name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified database name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "database.fullname" -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- printf "%s-%s-%s" .Release.Name $name .Values.database.name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified nginx name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "nginx.fullname" -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- printf "%s-%s-%s" .Release.Name $name .Values.nginx.name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,59 @@
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "artifactory.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||
component: "{{ .Values.artifactory.name }}"
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
spec:
|
||||
replicas: {{ .Values.artReplicaCount }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "name" . }}
|
||||
component: "{{ .Values.artifactory.name }}"
|
||||
release: {{ .Release.Name }}
|
||||
annotations:
|
||||
pod.beta.kubernetes.io/init-containers: '[{
|
||||
"name": "remove-lost-found",
|
||||
"image": {{ .Values.initContainerImage | quote }},
|
||||
"command": ["rm", "-rf", "{{ .Values.artifactory.persistence.mountPath }}/lost+found"],
|
||||
"volumeMounts": [{
|
||||
"name": "artifactory-volume",
|
||||
"mountPath": {{ .Values.artifactory.persistence.mountPath | quote }}
|
||||
}],
|
||||
"imagePullPolicy": {{ .Values.artifactory.image.pullPolicy | quote }}
|
||||
}]'
|
||||
spec:
|
||||
containers:
|
||||
- name: {{ .Values.artifactory.name }}
|
||||
image: "{{ .Values.artifactory.image.repository }}:{{ .Values.artifactory.image.version }}"
|
||||
imagePullPolicy: {{ .Values.artifactory.image.pullPolicy }}
|
||||
env:
|
||||
- name: DB_TYPE
|
||||
value: {{ .Values.database.env.type }}
|
||||
- name: DB_USER
|
||||
value: {{ .Values.database.env.user }}
|
||||
- name: DB_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "fullname" . }}
|
||||
key: artifactory-database-password
|
||||
- name: DB_HOST
|
||||
value: {{ template "database.name" . }}
|
||||
ports:
|
||||
- containerPort: {{ .Values.artifactory.internalPort }}
|
||||
volumeMounts:
|
||||
- mountPath: {{ .Values.artifactory.persistence.mountPath | quote }}
|
||||
name: artifactory-volume
|
||||
volumes:
|
||||
- name: artifactory-volume
|
||||
{{- if .Values.artifactory.persistence.enabled }}
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ template "artifactory.fullname" . }}
|
||||
{{- else }}
|
||||
emptyDir: {}
|
||||
{{- end -}}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
{{- if .Values.artifactory.persistence.enabled }}
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ template "artifactory.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "name" . }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
annotations:
|
||||
{{- if .Values.artifactory.persistence.storageClass }}
|
||||
volume.beta.kubernetes.io/storage-class: {{ .Values.artifactory.persistence.storageClass | quote }}
|
||||
{{- else }}
|
||||
volume.alpha.kubernetes.io/storage-class: default
|
||||
{{- end }}
|
||||
spec:
|
||||
accessModes:
|
||||
- {{ .Values.artifactory.persistence.accessMode | quote }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.artifactory.persistence.size | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,21 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "artifactory.name" . }}
|
||||
labels:
|
||||
app: {{ template "name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||
component: "{{ .Values.artifactory.name }}"
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
spec:
|
||||
type: {{ .Values.artifactory.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.artifactory.externalPort }}
|
||||
targetPort: {{ .Values.artifactory.internalPort }}
|
||||
protocol: TCP
|
||||
name: {{ .Release.Name }}
|
||||
selector:
|
||||
app: {{ template "name" . }}
|
||||
component: "{{ .Values.artifactory.name }}"
|
||||
release: {{ .Release.Name }}
|
||||
@@ -0,0 +1,53 @@
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "nginx.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||
component: "{{ .Values.nginx.name }}"
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
spec:
|
||||
replicas: {{ .Values.nginx.replicaCount }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "name" . }}
|
||||
component: "{{ .Values.nginx.name }}"
|
||||
release: {{ .Release.Name }}
|
||||
annotations:
|
||||
pod.beta.kubernetes.io/init-containers: '[{
|
||||
"name": "remove-lost-found",
|
||||
"image": {{ .Values.initContainerImage | quote }},
|
||||
"command": ["rm", "-rf", "{{ .Values.nginx.persistence.mountPath }}/lost+found"],
|
||||
"volumeMounts": [{
|
||||
"name": "nginx-volume",
|
||||
"mountPath": {{ .Values.nginx.persistence.mountPath | quote }}
|
||||
}],
|
||||
"imagePullPolicy": {{ .Values.nginx.image.pullPolicy | quote }}
|
||||
}]'
|
||||
spec:
|
||||
containers:
|
||||
- name: {{ .Values.nginx.name }}
|
||||
image: "{{ .Values.nginx.image.repository }}:{{ .Values.nginx.image.version }}"
|
||||
imagePullPolicy: {{ .Values.nginx.image.pullPolicy }}
|
||||
env:
|
||||
- name: ART_BASE_URL
|
||||
value: {{ .Values.nginx.env.artUrl }}
|
||||
- name: SSL
|
||||
value: "{{ .Values.nginx.env.ssl }}"
|
||||
ports:
|
||||
- containerPort: {{ .Values.nginx.internalPortHttp }}
|
||||
- containerPort: {{ .Values.nginx.internalPortHttps }}
|
||||
volumeMounts:
|
||||
- mountPath: {{ .Values.nginx.persistence.mountPath | quote }}
|
||||
name: nginx-volume
|
||||
volumes:
|
||||
- name: nginx-volume
|
||||
{{- if .Values.nginx.persistence.enabled }}
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ template "nginx.fullname" . }}
|
||||
{{- else }}
|
||||
emptyDir: {}
|
||||
{{- end -}}
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
{{- if .Values.nginx.persistence.enabled }}
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ template "nginx.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "name" . }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
annotations:
|
||||
{{- if .Values.nginx.persistence.storageClass }}
|
||||
volume.beta.kubernetes.io/storage-class: {{ .Values.nginx.persistence.storageClass | quote }}
|
||||
{{- else }}
|
||||
volume.alpha.kubernetes.io/storage-class: default
|
||||
{{- end }}
|
||||
spec:
|
||||
accessModes:
|
||||
- {{ .Values.nginx.persistence.accessMode | quote }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.nginx.persistence.size | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,25 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "nginx.name" . }}
|
||||
labels:
|
||||
app: {{ template "name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||
component: "{{ .Values.nginx.name }}"
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
spec:
|
||||
type: {{ .Values.nginx.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.nginx.externalPortHttp }}
|
||||
targetPort: {{ .Values.nginx.internalPortHttp }}
|
||||
protocol: TCP
|
||||
name: {{ .Values.nginx.name }}http
|
||||
- port: {{ .Values.nginx.externalPortHttps }}
|
||||
targetPort: {{ .Values.nginx.internalPortHttps }}
|
||||
protocol: TCP
|
||||
name: {{ .Release.Name }}https
|
||||
selector:
|
||||
app: {{ template "name" . }}
|
||||
component: "{{ .Values.nginx.name }}"
|
||||
release: {{ .Release.Name }}
|
||||
@@ -0,0 +1,57 @@
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "database.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||
component: "{{ .Values.database.name }}"
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "name" . }}
|
||||
component: "{{ .Values.database.name }}"
|
||||
release: {{ .Release.Name }}
|
||||
annotations:
|
||||
pod.beta.kubernetes.io/init-containers: '[{
|
||||
"name": "remove-lost-found",
|
||||
"image": {{ .Values.initContainerImage | quote }},
|
||||
"command": ["rm", "-rf", "{{ .Values.database.persistence.mountPath }}/lost+found"],
|
||||
"volumeMounts": [{
|
||||
"name": "postgresql-volume",
|
||||
"mountPath": {{ .Values.database.persistence.mountPath | quote }}
|
||||
}],
|
||||
"imagePullPolicy": {{ .Values.database.image.pullPolicy | quote }}
|
||||
}]'
|
||||
spec:
|
||||
containers:
|
||||
- name: {{ .Values.database.name }}
|
||||
image: "{{ .Values.database.image.repository }}:{{ .Values.database.image.version }}"
|
||||
imagePullPolicy: {{ .Values.database.image.pullPolicy }}
|
||||
env:
|
||||
- name: POSTGRES_DB
|
||||
value: {{ .Values.database.env.name }}
|
||||
- name: POSTGRES_USER
|
||||
value: {{ .Values.database.env.user }}
|
||||
- name: POSTGRES_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "fullname" . }}
|
||||
key: artifactory-database-password
|
||||
ports:
|
||||
- containerPort: {{ .Values.database.internalPort }}
|
||||
volumeMounts:
|
||||
- mountPath: {{ .Values.database.persistence.mountPath | quote }}
|
||||
name: postgresql-volume
|
||||
volumes:
|
||||
- name: postgresql-volume
|
||||
{{- if .Values.database.persistence.enabled }}
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ template "database.fullname" . }}
|
||||
{{- else }}
|
||||
emptyDir: {}
|
||||
{{- end -}}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
{{- if .Values.database.persistence.enabled }}
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ template "database.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "name" . }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
annotations:
|
||||
{{- if .Values.database.persistence.storageClass }}
|
||||
volume.beta.kubernetes.io/storage-class: {{ .Values.database.persistence.storageClass | quote }}
|
||||
{{- else }}
|
||||
volume.alpha.kubernetes.io/storage-class: default
|
||||
{{- end }}
|
||||
spec:
|
||||
accessModes:
|
||||
- {{ .Values.database.persistence.accessMode | quote }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.database.persistence.size | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,16 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
name: {{ template "fullname" . }}
|
||||
type: Opaque
|
||||
data:
|
||||
{{- if .Values.database.env.pass }}
|
||||
artifactory-database-password: {{ .Values.database.env.pass | b64enc | quote }}
|
||||
{{- else }}
|
||||
artifactory-database-password: {{ randAlphaNum 10 | b64enc | quote }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,21 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "database.name" . }}
|
||||
labels:
|
||||
app: {{ template "name" . }}
|
||||
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||
component: "{{ .Values.database.name }}"
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
spec:
|
||||
type: {{ .Values.database.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.database.externalPort }}
|
||||
targetPort: {{ .Values.database.internalPort }}
|
||||
protocol: TCP
|
||||
name: {{ .Release.Name }}
|
||||
selector:
|
||||
app: {{ template "name" . }}
|
||||
component: "{{ .Values.database.name }}"
|
||||
release: {{ .Release.Name }}
|
||||
@@ -0,0 +1,74 @@
|
||||
# Default values for artifactory.
|
||||
# This is a YAML-formatted file.
|
||||
|
||||
# Beware when changing values here. You should know what you are doing!
|
||||
# Access the values with {{ .Values.key.subkey }}
|
||||
|
||||
# Common
|
||||
initContainerImage: "busybox:1.26.2"
|
||||
|
||||
# Database
|
||||
database:
|
||||
name: postgresql
|
||||
replicaCount: 1
|
||||
env:
|
||||
type: postgresql
|
||||
name: artifactory
|
||||
user: artifactory
|
||||
# pass: artXifactory1973
|
||||
image:
|
||||
repository: docker.bintray.io/postgres
|
||||
version: 9.5.2
|
||||
pullPolicy: IfNotPresent
|
||||
service:
|
||||
type: ClusterIP
|
||||
externalPort: 5432
|
||||
internalPort: 5432
|
||||
persistence:
|
||||
mountPath: "/var/lib/postgresql/data"
|
||||
enabled: true
|
||||
accessMode: ReadWriteOnce
|
||||
size: 10Gi
|
||||
|
||||
# Artifactory
|
||||
artifactory:
|
||||
name: artifactory
|
||||
replicaCount: 1
|
||||
image:
|
||||
#repository: "docker.bintray.io/jfrog/artifactory-oss"
|
||||
repository: "docker.bintray.io/jfrog/artifactory-pro"
|
||||
version: 5.4.2
|
||||
pullPolicy: IfNotPresent
|
||||
service:
|
||||
type: ClusterIP
|
||||
externalPort: 8081
|
||||
internalPort: 8081
|
||||
persistence:
|
||||
mountPath: "/var/opt/jfrog/artifactory"
|
||||
enabled: true
|
||||
accessMode: ReadWriteOnce
|
||||
size: 20Gi
|
||||
|
||||
# Nginx
|
||||
nginx:
|
||||
name: nginx
|
||||
replicaCount: 1
|
||||
image:
|
||||
repository: "docker.bintray.io/jfrog/nginx-artifactory-pro"
|
||||
version: 5.4.2
|
||||
pullPolicy: IfNotPresent
|
||||
service:
|
||||
## For minikube, set this to NodePort, elsewhere use LoadBalancer
|
||||
type: LoadBalancer
|
||||
externalPortHttp: 80
|
||||
internalPortHttp: 80
|
||||
externalPortHttps: 443
|
||||
internalPortHttps: 443
|
||||
env:
|
||||
artUrl: "http://artifactory:8081/artifactory"
|
||||
ssl: true
|
||||
persistence:
|
||||
mountPath: "/var/opt/jfrog/nginx"
|
||||
enabled: true
|
||||
accessMode: ReadWriteOnce
|
||||
size: 5Gi
|
||||
Reference in New Issue
Block a user