mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-05-29 17:25:15 +02:00
Added GCP and Minikube output (#59)
* Added a config to create Minikube k8s, uses hostpath volumes * Reworked templater to produce docker compose and minikube output * Fix config templates
This commit is contained in:
parent
f661791bbf
commit
0ae6feddb0
62 changed files with 37961 additions and 7077 deletions
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
local engine = import "docker-compose.jsonnet";
|
||||
local decode = import "decode-config.jsonnet";
|
||||
local engine = import "engine/docker-compose.jsonnet";
|
||||
local decode = import "util/decode-config.jsonnet";
|
||||
local components = import "components.jsonnet";
|
||||
|
||||
// Import config
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
local engine = import "k8s.jsonnet";
|
||||
local decode = import "decode-config.jsonnet";
|
||||
local engine = import "engine/gcp-k8s.jsonnet";
|
||||
local decode = import "util/decode-config.jsonnet";
|
||||
local components = import "components.jsonnet";
|
||||
|
||||
// Import config
|
||||
|
|
@ -9,44 +9,8 @@ local config = import "config.json";
|
|||
// Produce patterns from config
|
||||
local patterns = decode(config);
|
||||
|
||||
local ns = {
|
||||
apiVersion: "v1",
|
||||
kind: "Namespace",
|
||||
metadata: {
|
||||
name: "trustgraph",
|
||||
},
|
||||
"spec": {
|
||||
},
|
||||
};
|
||||
|
||||
local sc = {
|
||||
apiVersion: "storage.k8s.io/v1",
|
||||
kind: "StorageClass",
|
||||
metadata: {
|
||||
name: "tg",
|
||||
},
|
||||
provisioner: "pd.csi.storage.gke.io",
|
||||
parameters: {
|
||||
type: "pd-balanced",
|
||||
"csi.storage.k8s.io/fstype": "ext4",
|
||||
},
|
||||
reclaimPolicy: "Delete",
|
||||
volumeBindingMode: "WaitForFirstConsumer",
|
||||
};
|
||||
|
||||
//patterns["pulsar"].create(engine)
|
||||
|
||||
// Extract resources usnig the engine
|
||||
local resources = std.flattenArrays([
|
||||
p.create(engine) for p in std.objectValues(patterns)
|
||||
]);
|
||||
|
||||
local resourceList = {
|
||||
apiVersion: "v1",
|
||||
kind: "List",
|
||||
items: [ns, sc] + resources,
|
||||
};
|
||||
|
||||
local resourceList = engine.package(patterns);
|
||||
|
||||
resourceList
|
||||
|
||||
|
|
|
|||
26
templates/config-to-minikube-k8s.jsonnet
Normal file
26
templates/config-to-minikube-k8s.jsonnet
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
|
||||
local engine = import "engine/minikube-k8s.jsonnet";
|
||||
local decode = import "util/decode-config.jsonnet";
|
||||
local components = import "components.jsonnet";
|
||||
|
||||
// Import config
|
||||
local config = import "config.json";
|
||||
|
||||
// Produce patterns from config
|
||||
local patterns = decode(config);
|
||||
|
||||
local ns = {
|
||||
apiVersion: "v1",
|
||||
kind: "Namespace",
|
||||
metadata: {
|
||||
name: "trustgraph",
|
||||
},
|
||||
"spec": {
|
||||
},
|
||||
};
|
||||
|
||||
// Extract resources using the engine
|
||||
local resourceList = engine.package(patterns);
|
||||
|
||||
resourceList
|
||||
|
||||
|
|
@ -1,5 +1,13 @@
|
|||
{
|
||||
|
||||
// Extract resources usnig the engine
|
||||
package:: function(patterns)
|
||||
std.foldl(
|
||||
function(state, p) state + p.create(self),
|
||||
std.objectValues(patterns),
|
||||
{}
|
||||
),
|
||||
|
||||
container:: function(name)
|
||||
{
|
||||
|
||||
44
templates/engine/gcp-k8s.jsonnet
Normal file
44
templates/engine/gcp-k8s.jsonnet
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
|
||||
local k8s = import "k8s.jsonnet";
|
||||
|
||||
local ns = {
|
||||
apiVersion: "v1",
|
||||
kind: "Namespace",
|
||||
metadata: {
|
||||
name: "trustgraph",
|
||||
},
|
||||
"spec": {
|
||||
},
|
||||
};
|
||||
|
||||
local sc = {
|
||||
apiVersion: "storage.k8s.io/v1",
|
||||
kind: "StorageClass",
|
||||
metadata: {
|
||||
name: "tg",
|
||||
},
|
||||
provisioner: "pd.csi.storage.gke.io",
|
||||
parameters: {
|
||||
type: "pd-balanced",
|
||||
"csi.storage.k8s.io/fstype": "ext4",
|
||||
},
|
||||
reclaimPolicy: "Delete",
|
||||
volumeBindingMode: "WaitForFirstConsumer",
|
||||
};
|
||||
|
||||
k8s + {
|
||||
|
||||
// Extract resources usnig the engine
|
||||
package:: function(patterns)
|
||||
local resources = [sc, ns] + std.flattenArrays([
|
||||
p.create(self) for p in std.objectValues(patterns)
|
||||
]);
|
||||
local resourceList = {
|
||||
apiVersion: "v1",
|
||||
kind: "List",
|
||||
items: [ns, sc] + resources,
|
||||
};
|
||||
resourceList
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -67,16 +67,16 @@
|
|||
{
|
||||
name: container.name,
|
||||
image: container.image,
|
||||
|
||||
// FIXME: Make everything run as
|
||||
// root. Needed to get filesystems
|
||||
// to be accessible. There's a
|
||||
// better way of doing this?
|
||||
securityContext: {
|
||||
// fsGroup: 1234
|
||||
// runAsUser: 65534
|
||||
// runAsGroup: 65534
|
||||
// runAsNonRoot: true
|
||||
runAsUser: 0,
|
||||
runAsGroup: 0,
|
||||
// runAsNonRoot: true,
|
||||
// readOnlyRootFilesystem: true,
|
||||
},
|
||||
runAsUser: 0,
|
||||
runAsGroup: 0,
|
||||
},
|
||||
|
||||
resources: {
|
||||
requests: container.reservations,
|
||||
limits: container.limits
|
||||
|
|
@ -197,28 +197,6 @@
|
|||
with_size:: function(size) self + { size: size },
|
||||
|
||||
add:: function() [
|
||||
/*
|
||||
{
|
||||
|
||||
apiVersion: "v1",
|
||||
kind: "PersistentVolume",
|
||||
metadata: {
|
||||
name: volume.name,
|
||||
labels: {
|
||||
type: "local",
|
||||
}
|
||||
},
|
||||
spec: {
|
||||
storageClassName: "tg",
|
||||
volumeMode: "Filesystem",
|
||||
capacity: {
|
||||
storage: volume.size,
|
||||
},
|
||||
accessModes: [ "ReadWriteOnce" ],
|
||||
persistentVolumeReclaimPolicy: "Delete",
|
||||
}
|
||||
},
|
||||
*/
|
||||
{
|
||||
apiVersion: "v1",
|
||||
kind: "PersistentVolumeClaim",
|
||||
|
|
@ -234,7 +212,6 @@
|
|||
storage: volume.size,
|
||||
}
|
||||
},
|
||||
// volumeName: volume.name,
|
||||
}
|
||||
}
|
||||
],
|
||||
115
templates/engine/minikube-k8s.jsonnet
Normal file
115
templates/engine/minikube-k8s.jsonnet
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
|
||||
local k8s = import "k8s.jsonnet";
|
||||
|
||||
local ns = {
|
||||
apiVersion: "v1",
|
||||
kind: "Namespace",
|
||||
metadata: {
|
||||
name: "trustgraph",
|
||||
},
|
||||
"spec": {
|
||||
},
|
||||
};
|
||||
|
||||
k8s + {
|
||||
|
||||
// Extract resources usnig the engine
|
||||
package:: function(patterns)
|
||||
local resources = [ns] + std.flattenArrays([
|
||||
p.create(self) for p in std.objectValues(patterns)
|
||||
]);
|
||||
local resourceList = {
|
||||
apiVersion: "v1",
|
||||
kind: "List",
|
||||
items: resources,
|
||||
};
|
||||
resourceList,
|
||||
|
||||
volume:: function(name)
|
||||
{
|
||||
local volume = self,
|
||||
name: name,
|
||||
with_size:: function(size) self + { size: size },
|
||||
add:: function() [
|
||||
{
|
||||
apiVersion: "v1",
|
||||
kind: "PersistentVolume",
|
||||
metadata: {
|
||||
name: volume.name,
|
||||
},
|
||||
spec: {
|
||||
accessModes: [ "ReadWriteOnce" ],
|
||||
capacity: {
|
||||
storage: volume.size,
|
||||
},
|
||||
persistentVolumeReclaimPolicy: "Delete",
|
||||
hostPath: {
|
||||
path: "/data/pv-" + volume.name,
|
||||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
apiVersion: "v1",
|
||||
kind: "PersistentVolumeClaim",
|
||||
metadata: {
|
||||
name: volume.name,
|
||||
namespace: "trustgraph",
|
||||
},
|
||||
spec: {
|
||||
accessModes: [ "ReadWriteOnce" ],
|
||||
resources: {
|
||||
requests: {
|
||||
storage: volume.size,
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
volRef:: function() {
|
||||
name: volume.name,
|
||||
persistentVolumeClaim: { claimName: volume.name },
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
service:: function(containers)
|
||||
{
|
||||
local service = self,
|
||||
name: containers.name,
|
||||
ports: [],
|
||||
with_port::
|
||||
function(src, dest, name)
|
||||
self + {
|
||||
ports: super.ports + [
|
||||
{ src: src, dest: dest, name: name }
|
||||
]
|
||||
},
|
||||
add:: function() [
|
||||
{
|
||||
apiVersion: "v1",
|
||||
kind: "Service",
|
||||
metadata: {
|
||||
name: service.name,
|
||||
namespace: "trustgraph",
|
||||
},
|
||||
spec: {
|
||||
selector: {
|
||||
app: service.name,
|
||||
},
|
||||
type: "LoadBalancer",
|
||||
ports: [
|
||||
{
|
||||
port: port.src,
|
||||
targetPort: port.dest,
|
||||
name: port.name,
|
||||
}
|
||||
for port in service.ports
|
||||
],
|
||||
}
|
||||
}
|
||||
],
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
21
templates/opts-to-docker-compose.jsonnet
Normal file
21
templates/opts-to-docker-compose.jsonnet
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
|
||||
local engine = import "engine/docker-compose.jsonnet";
|
||||
local components = import "components.jsonnet";
|
||||
|
||||
// Options
|
||||
local options = std.split(std.extVar("options"), ",");
|
||||
|
||||
// Produce patterns from config
|
||||
local patterns = std.foldl(
|
||||
function(state, p) state + components[p],
|
||||
options,
|
||||
{}
|
||||
);
|
||||
|
||||
// Extract resources usnig the engine
|
||||
local resources = engine.package(patterns);
|
||||
|
||||
resources
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
local engine = import "docker-compose.jsonnet";
|
||||
local decode = import "decode-config.jsonnet";
|
||||
local engine = import "engine/docker-compose.jsonnet";
|
||||
local components = import "components.jsonnet";
|
||||
|
||||
// Options
|
||||
|
|
@ -14,11 +13,7 @@ local patterns = std.foldl(
|
|||
);
|
||||
|
||||
// Extract resources usnig the engine
|
||||
local resources = std.foldl(
|
||||
function(state, p) state + p.create(engine),
|
||||
std.objectValues(patterns),
|
||||
{}
|
||||
);
|
||||
local resources = engine.package(patterns);
|
||||
|
||||
std.manifestYamlDoc(resources)
|
||||
|
||||
19
templates/opts-to-minikube-k8s.jsonnet
Normal file
19
templates/opts-to-minikube-k8s.jsonnet
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
|
||||
local engine = import "engine/minikube-k8s.jsonnet";
|
||||
local components = import "components.jsonnet";
|
||||
|
||||
// Options
|
||||
local options = std.split(std.extVar("options"), ",");
|
||||
|
||||
// Produce patterns from config
|
||||
local patterns = std.foldl(
|
||||
function(state, p) state + components[p],
|
||||
options,
|
||||
{}
|
||||
);
|
||||
|
||||
// Extract resources usnig the engine
|
||||
local resources = engine.package(patterns);
|
||||
|
||||
resources
|
||||
|
||||
|
|
@ -1 +0,0 @@
|
|||
"0.9.3"
|
||||
Loading…
Add table
Add a link
Reference in a new issue