Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions argos_k3s/argos/argos-configmap.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: tcp-services
namespace: ingress-nginx
data:
9000: "clickhouse/clickhouse-pv-log:9000"
51 changes: 51 additions & 0 deletions argos_k3s/argos/argos-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: argos-dep
namespace: argos
labels:
app: argos
spec:
# serviceName: argos
replicas: 1
selector:
matchLabels:
app: argos
template:
metadata:
labels:
app: argos
spec:
serviceAccountName: argos-service-account
containers:
- name: argos
image: cachengo/argos:1.0.0
imagePullPolicy: Always
ports:
- containerPort: 8080
env:
- name: DVR_DATA_DIR
value: "/raft-storage"
- name: DVR_DB_PASSWORD
value: ""
- name: DVR_DB_USERNAME
value: default
- name: DVR_DATABASE_URL
value: chi-pv-log-deployment-pv-0-0.clickhouse:9000,chi-pv-log-deployment-pv-1-0.clickhouse:9000
- name: DVR_DB_NAME
value: argos
- name: DVR_MINIO_ENDPOINT
value: minio-service.minio:9000
- name: DVR_MINIO_ACCESS_KEY
value: minioadmin
- name: DVR_MINIO_SECRET
value: minioadmin
- name: DVR_PROCESS_SUPERVISOR
value: kube
volumeMounts:
- name: argos-pvc
mountPath: /raft-storage/videos
volumes:
- name: argos-pvc
persistentVolumeClaim:
claimName: argos-pvc
19 changes: 19 additions & 0 deletions argos_k3s/argos/argos-ingress.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: argos-ingress
namespace: argos
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: argos.mybento.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: argos-service
port:
number: 8080
6 changes: 6 additions & 0 deletions argos_k3s/argos/argos-namespace.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
name: argos # Change this value if you want a different namespace name
labels:
name: argos # Change this value to match metadata.name
12 changes: 12 additions & 0 deletions argos_k3s/argos/argos-pvc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: argos-pvc
namespace: argos
spec:
storageClassName: longhorn
accessModes:
- ReadWriteMany
resources:
requests:
storage: 30Gi
35 changes: 35 additions & 0 deletions argos_k3s/argos/argos-role.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: argos-service-account
namespace: argos
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: argos
name: camera-deployer
rules:
- apiGroups: ["apps"] # "" indicates the core API group
resources: ["deployments", "pods"]
verbs: ["get", "list", "create", "delete"]

---
apiVersion: rbac.authorization.k8s.io/v1
# This role binding allows "jane" to read pods in the "default" namespace.
# You need to already have a Role named "pod-reader" in that namespace.
kind: RoleBinding
metadata:
name: deploy-cameras-binding
namespace: argos
roleRef:
# "roleRef" specifies the binding to a Role / ClusterRole
apiGroup: rbac.authorization.k8s.io
kind: Role #this must be Role or ClusterRole
name: camera-deployer # this must match the name of the Role or ClusterRole you wish to bind to
subjects:
# You can specify more than one "subject"
- namespace: argos
kind: ServiceAccount
name: argos-service-account # "name" is case sensitive
# apiGroup: rbac.authorization.k8s.io
14 changes: 14 additions & 0 deletions argos_k3s/argos/argos-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
name: argos-service
namespace: argos
spec:
selector:
app: argos
ports:
- protocol: TCP
port: 8080
targetPort: 8080
nodePort: 32401
type: NodePort
47 changes: 47 additions & 0 deletions argos_k3s/argos_install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/bin/bash

function do_install {
cachengo-cli updateInstallStatus $APPID "Installing"
# zookeeper
echo "Installing Zookeeper into k3s cluster"
kubectl create ns zookeeper
kubectl apply -f argos_k3s/zookeeper/zookeeper.yaml

# nginx
echo "Creating nginx ingress"
./argos_k3s/nginx/create-nginx.sh

# minio
echo "Installing minio"
kubectl apply -f argos_k3s/minio/minio-namespace.yaml -f argos_k3s/minio/minio-service.yaml -f argos_k3s/minio/minio-pvc.yaml -f argos_k3s/minio/minio-api-ingress.yaml -f minio-console-ingress.yaml -f argos_k3s/minio/minio-deployment.yaml

# clickhouse
./argos_k3s/clickhouse/create-clickhouse.sh

# kubectl -n clickhouse exec chi-pv-log-deployment-pv-0-0-0 -- clickhouse-client --query "create database argos on cluster 'deployment-pv';"

#argos
kubectl apply -f argos_k3s/argos/argos-namespace.yaml -f argos_k3s/argos/argos-ingress.yaml -f argos_k3s/argos/argos-pvc.yaml -f argos_k3s/argos/argos-role.yaml -f argos_k3s/argos/argos-service.yaml -f argos_k3s/argos/argos-deployment.yaml



cachengo-cli updateInstallStatus $APPID "Installed"
}

function do_uninstall {
cachengo-cli updateInstallStatus $APPID "Uninstalling"
kubectl delete -f argos_k3s/zookeeper/zookeeper.yaml
kubectl delete ns zookeeper
kubectl delete -f argos_k3s/minio/minio-deployment.yaml -f argos_k3s/minio/minio-service.yaml -f argos_k3s/minio/minio-pvc.yaml -f argos_k3s/minio/minio-api-ingress.yaml -f minio-console-ingress.yaml -f argos_k3s/minio/minio-namespace.yaml
kubectl delete -f argos_k3s/clickhouse/clickhouse-deployment.yaml
kubectl -n clickhouse delete deployment clickhouse-operator
kubectl -n clickhouse delete svc clickhouse-operator-metrics
kubectl -n clickhouse delete ns clickhouse
kubectl delete -f argos_k3s/argos/argos-deployment.yaml -f argos_k3s/argos/argos-ingress.yaml -f argos_k3s/argos/argos-pvc.yaml -f argos_k3s/argos/argos-role.yaml -f argos_k3s/argos/argos-service.yaml -f argos_k3s/argos/argos-namespace.yaml
cachengo-cli updateInstallStatus $APPID "Uninstalled"
}

case "$1" in
install) do_install ;;
uninstall) do_uninstall ;;
esac
52 changes: 52 additions & 0 deletions argos_k3s/clickhouse/clickhouse-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
apiVersion: "clickhouse.altinity.com/v1"
kind: "ClickHouseInstallation"
metadata:
name: "pv-log"
namespace: clickhouse
spec:
configuration:
users:
default/networks/ip: "::/0"
zookeeper:
nodes:
- host: zk-cs.zookeeper.svc.cluster.local
clusters:
- name: "deployment-pv"
# Templates are specified for this cluster explicitly
templates:
podTemplate: pod-template-with-volumes
layout:
shardsCount: 2
replicasCount: 0


templates:
podTemplates:
- name: pod-template-with-volumes
spec:
containers:
- name: clickhouse
image: clickhouse/clickhouse-server:22.3
volumeMounts:
- name: data-storage-vc-template
mountPath: /var/lib/clickhouse
- name: log-storage-vc-template
mountPath: /var/log/clickhouse-server

volumeClaimTemplates:
- name: data-storage-vc-template
spec:
storageClassName: longhorn
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
- name: log-storage-vc-template
spec:
storageClassName: longhorn
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
29 changes: 29 additions & 0 deletions argos_k3s/clickhouse/clickhouse-ingress.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: clickhouse-client
namespace: clickhouse
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: clickhouse.mybento.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: clickhouse-pv-log
port:
number: 8123
- host: clickhouse-client.mybento.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: clickhouse-pv-log
port:
number: 9000
6 changes: 6 additions & 0 deletions argos_k3s/clickhouse/create-clickhouse.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash

kubectl create ns clickhouse
sudo apt-get install gettext-base
curl -s https://raw.githubusercontent.com/Altinity/clickhouse-operator/master/deploy/operator-web-installer/clickhouse-operator-install.sh | OPERATOR_NAMESPACE=clickhouse bash
kubectl apply -f argos_k3s/clickhouse/clickhouse-deployment.yaml
24 changes: 24 additions & 0 deletions argos_k3s/dev/argos-pv.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: argos-pv
namespace: argos
spec:
capacity:
storage: 10Gi
hostPath:
path: /tmp/videos
type: DirectoryOrCreate
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: local-storage
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- minikube
13 changes: 13 additions & 0 deletions argos_k3s/dev/argos-pvc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: argos-pvc
namespace: argos
spec:
storageClassName: local-storage
volumeName: argos-pv
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
24 changes: 24 additions & 0 deletions argos_k3s/dev/local-pv.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-pv
namespace: argos
spec:
capacity:
storage: 10Gi
hostPath:
path: /data/localpv
type: DirectoryOrCreate
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: local-storage
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- minikube
13 changes: 13 additions & 0 deletions argos_k3s/dev/mariadb-storage-local.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mariadb-pvc
namespace: argos
spec:
storageClassName: local-storage
volumeName: local-pv
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
Loading