blob: 0c63c76b6666469aa2539693b352bb3eeaeade41 [file] [log] [blame]
import (
"encoding/json"
)
input: {
network: #Network @name(Network)
subdomain: string @name(Subdomain)
}
_domain: "\(input.subdomain).\(input.network.domain)"
url: "https://\(_domain)"
name: "Zot"
namespace: "app-zot"
readme: "OCI-native container image registry, simplified"
description: "OCI-native container image registry, simplified"
icon: "<svg xmlns='http://www.w3.org/2000/svg' width='50' height='50' viewBox='0 0 24 24'><path fill='currentColor' d='M21.231 2.462L7.18 20.923h14.564V24H2.256v-2.462L16.308 3.076H2.975V0h18.256z'/></svg>"
ingress: {
zot: {
auth: enabled: false
network: input.network
subdomain: input.subdomain
service: {
name: "zot"
port: number: _httpPort // TODO(gio): make optional
}
}
}
// TODO(gio): configure busybox
images: {
zot: {
registry: "ghcr.io"
repository: "project-zot"
name: "zot-linux-amd64"
tag: "v2.0.3"
pullPolicy: "IfNotPresent"
}
}
charts: {
zot: {
kind: "GitRepository"
address: "https://github.com/giolekva/pcloud.git"
branch: "main"
path: "charts/zot"
}
volume: {
kind: "GitRepository"
address: "https://github.com/giolekva/pcloud.git"
branch: "main"
path: "charts/volumes"
}
}
volumes: {
zot: {
name: "zot"
accessMode: "ReadWriteOnce"
size: "100Gi"
}
}
_httpPort: 80
helm: {
zot: {
chart: charts.zot
info: "Installing Zot server"
values: {
image: {
repository: images.zot.fullName
tag: images.zot.tag
pullPolicy: images.zot.pullPolicy
}
service: {
type: "ClusterIP"
additionalAnnotations: {
"metallb.universe.tf/address-pool": global.id
}
port: _httpPort
}
ingress: enabled: false
mountConfig: true
configFiles: {
"config.json": json.Marshal({
storage: rootDirectory: "/var/lib/registry"
http: {
address: "0.0.0.0"
port: "5000"
}
log: level: "debug"
extensions: {
ui: enable: true
search: enable: true
}
})
}
persistence: true
pvc: {
create: false
name: volumes.zot.name
}
startupProbe: {}
}
}
volume: {
chart: charts.volume
info: "Creating disk"
values: volumes.zot
}
}