From 18d3c873076bc194423432f04238c4084f5705fa Mon Sep 17 00:00:00 2001 From: Omar Campos Date: Tue, 14 Feb 2023 17:18:37 -0400 Subject: [PATCH 01/11] First recipe for argos k3s --- argos_k3s/argos/argos-configmap.yaml | 7 + argos_k3s/argos/argos-deployment.yaml | 51 +++++++ argos_k3s/argos/argos-ingress.yaml | 19 +++ argos_k3s/argos/argos-namespace.yaml | 6 + argos_k3s/argos/argos-pvc.yaml | 12 ++ argos_k3s/argos/argos-role.yaml | 35 +++++ argos_k3s/argos/argos-service.yaml | 14 ++ argos_k3s/argos_install.sh | 39 ++++++ .../clickhouse/clickhouse-deployment.yaml | 52 +++++++ argos_k3s/clickhouse/clickhouse-ingress.yaml | 29 ++++ argos_k3s/clickhouse/create-clickhouse.sh | 6 + argos_k3s/dev/argos-pv.yaml | 24 ++++ argos_k3s/dev/argos-pvc.yaml | 13 ++ argos_k3s/dev/local-pv.yaml | 24 ++++ argos_k3s/dev/mariadb-storage-local.yaml | 13 ++ argos_k3s/dev/minio-pv.yaml | 24 ++++ argos_k3s/dev/minio-pvc.yaml | 13 ++ argos_k3s/minio/minio-deployment.yaml | 44 ++++++ argos_k3s/minio/minio-ingress.yaml | 19 +++ argos_k3s/minio/minio-namespace.yaml | 6 + argos_k3s/minio/minio-pvc.yaml | 12 ++ argos_k3s/minio/minio-service.yaml | 17 +++ argos_k3s/nginx/create-nginx.sh | 6 + argos_k3s/package.json | 34 +++++ argos_k3s/zookeeper/zookeeper.yaml | 127 ++++++++++++++++++ 25 files changed, 646 insertions(+) create mode 100644 argos_k3s/argos/argos-configmap.yaml create mode 100644 argos_k3s/argos/argos-deployment.yaml create mode 100644 argos_k3s/argos/argos-ingress.yaml create mode 100644 argos_k3s/argos/argos-namespace.yaml create mode 100644 argos_k3s/argos/argos-pvc.yaml create mode 100644 argos_k3s/argos/argos-role.yaml create mode 100644 argos_k3s/argos/argos-service.yaml create mode 100644 argos_k3s/argos_install.sh create mode 100644 argos_k3s/clickhouse/clickhouse-deployment.yaml create mode 100644 argos_k3s/clickhouse/clickhouse-ingress.yaml create mode 100644 argos_k3s/clickhouse/create-clickhouse.sh create mode 100644 argos_k3s/dev/argos-pv.yaml create mode 100644 argos_k3s/dev/argos-pvc.yaml create mode 100644 argos_k3s/dev/local-pv.yaml create mode 100644 argos_k3s/dev/mariadb-storage-local.yaml create mode 100644 argos_k3s/dev/minio-pv.yaml create mode 100644 argos_k3s/dev/minio-pvc.yaml create mode 100644 argos_k3s/minio/minio-deployment.yaml create mode 100644 argos_k3s/minio/minio-ingress.yaml create mode 100644 argos_k3s/minio/minio-namespace.yaml create mode 100644 argos_k3s/minio/minio-pvc.yaml create mode 100644 argos_k3s/minio/minio-service.yaml create mode 100644 argos_k3s/nginx/create-nginx.sh create mode 100644 argos_k3s/package.json create mode 100644 argos_k3s/zookeeper/zookeeper.yaml diff --git a/argos_k3s/argos/argos-configmap.yaml b/argos_k3s/argos/argos-configmap.yaml new file mode 100644 index 0000000..00b22a1 --- /dev/null +++ b/argos_k3s/argos/argos-configmap.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: tcp-services + namespace: ingress-nginx +data: + 9000: "clickhouse/clickhouse-pv-log:9000" \ No newline at end of file diff --git a/argos_k3s/argos/argos-deployment.yaml b/argos_k3s/argos/argos-deployment.yaml new file mode 100644 index 0000000..5de7df8 --- /dev/null +++ b/argos_k3s/argos/argos-deployment.yaml @@ -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 \ No newline at end of file diff --git a/argos_k3s/argos/argos-ingress.yaml b/argos_k3s/argos/argos-ingress.yaml new file mode 100644 index 0000000..fa478ba --- /dev/null +++ b/argos_k3s/argos/argos-ingress.yaml @@ -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 \ No newline at end of file diff --git a/argos_k3s/argos/argos-namespace.yaml b/argos_k3s/argos/argos-namespace.yaml new file mode 100644 index 0000000..bc264d6 --- /dev/null +++ b/argos_k3s/argos/argos-namespace.yaml @@ -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 \ No newline at end of file diff --git a/argos_k3s/argos/argos-pvc.yaml b/argos_k3s/argos/argos-pvc.yaml new file mode 100644 index 0000000..dbed058 --- /dev/null +++ b/argos_k3s/argos/argos-pvc.yaml @@ -0,0 +1,12 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: argos-pvc + namespace: argos +spec: + storageClassName: longhorn + accessModes: + - ReadWriteMany + resources: + requests: + storage: 30Gi \ No newline at end of file diff --git a/argos_k3s/argos/argos-role.yaml b/argos_k3s/argos/argos-role.yaml new file mode 100644 index 0000000..f64d5b8 --- /dev/null +++ b/argos_k3s/argos/argos-role.yaml @@ -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 diff --git a/argos_k3s/argos/argos-service.yaml b/argos_k3s/argos/argos-service.yaml new file mode 100644 index 0000000..1cdf4cf --- /dev/null +++ b/argos_k3s/argos/argos-service.yaml @@ -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 \ No newline at end of file diff --git a/argos_k3s/argos_install.sh b/argos_k3s/argos_install.sh new file mode 100644 index 0000000..8465063 --- /dev/null +++ b/argos_k3s/argos_install.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +function do_install { + # zookeeper + echo "Installing Zookeeper into k3s cluster" + kubectl create ns zookeeper + kubectl apply -f zookeeper/zookeeper.yaml + + # nginx + echo "Creating nginx ingress" + ./nginx/create-nginx.sh + + # minio + echo "Installing minio" + kubectl apply -f minio/minio-namespace.yaml -f minio/minio-service.yaml -f minio/minio-pvc.yaml -f minio/minio-ingress.yaml -f minio/minio-deployment.yaml + + # clickhouse + ./clickhouse/create-clickhouse.sh + + sleep 60 + + 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-namespace.yaml -f argos-ingress.yaml -f argos-pvc.yaml -f argos-role.yaml -f argos-service.yaml -f argos-deployment.yaml + +} + +function do_uninstall{ + kubectl delete -f zookeeper/zookeeper.yaml + kubectl delete -f minio/minio/minio-deployment.yaml -f minio/minio-service.yaml -f minio/minio-pvc.yaml -f minio/minio-ingress.yaml -f minio/minio-namespace.yaml + kubectl delete -f clickhouse/clickhouse-deployment.yaml + kubectl delete -f argos/argos-deployment.yaml -f argos-ingress.yaml -f argos-pvc.yaml -f argos-role.yaml -f argos-service.yaml -f argos/argos-namespace.yaml +} + +case "$1" in + install) do_install ;; + uninstall) do_uninstall ;; +esac diff --git a/argos_k3s/clickhouse/clickhouse-deployment.yaml b/argos_k3s/clickhouse/clickhouse-deployment.yaml new file mode 100644 index 0000000..9ea5583 --- /dev/null +++ b/argos_k3s/clickhouse/clickhouse-deployment.yaml @@ -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 \ No newline at end of file diff --git a/argos_k3s/clickhouse/clickhouse-ingress.yaml b/argos_k3s/clickhouse/clickhouse-ingress.yaml new file mode 100644 index 0000000..1f0ca26 --- /dev/null +++ b/argos_k3s/clickhouse/clickhouse-ingress.yaml @@ -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 \ No newline at end of file diff --git a/argos_k3s/clickhouse/create-clickhouse.sh b/argos_k3s/clickhouse/create-clickhouse.sh new file mode 100644 index 0000000..a256516 --- /dev/null +++ b/argos_k3s/clickhouse/create-clickhouse.sh @@ -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 clickhouse-deployment.yaml \ No newline at end of file diff --git a/argos_k3s/dev/argos-pv.yaml b/argos_k3s/dev/argos-pv.yaml new file mode 100644 index 0000000..dd147d3 --- /dev/null +++ b/argos_k3s/dev/argos-pv.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: argos-pvc + 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 \ No newline at end of file diff --git a/argos_k3s/dev/argos-pvc.yaml b/argos_k3s/dev/argos-pvc.yaml new file mode 100644 index 0000000..45b63be --- /dev/null +++ b/argos_k3s/dev/argos-pvc.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: argos-pvc + namespace: argos +spec: + storageClassName: local-storage + volumeName: argos-pvc + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi \ No newline at end of file diff --git a/argos_k3s/dev/local-pv.yaml b/argos_k3s/dev/local-pv.yaml new file mode 100644 index 0000000..3946f8b --- /dev/null +++ b/argos_k3s/dev/local-pv.yaml @@ -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 \ No newline at end of file diff --git a/argos_k3s/dev/mariadb-storage-local.yaml b/argos_k3s/dev/mariadb-storage-local.yaml new file mode 100644 index 0000000..8e98b48 --- /dev/null +++ b/argos_k3s/dev/mariadb-storage-local.yaml @@ -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 \ No newline at end of file diff --git a/argos_k3s/dev/minio-pv.yaml b/argos_k3s/dev/minio-pv.yaml new file mode 100644 index 0000000..830542b --- /dev/null +++ b/argos_k3s/dev/minio-pv.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: minio-pvc + namespace: argos +spec: + capacity: + storage: 10Gi + hostPath: + path: /data/miniolocalpv + type: DirectoryOrCreate + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Delete + storageClassName: local-storage + nodeAffinity: + required: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: In + values: + - minikube \ No newline at end of file diff --git a/argos_k3s/dev/minio-pvc.yaml b/argos_k3s/dev/minio-pvc.yaml new file mode 100644 index 0000000..a642156 --- /dev/null +++ b/argos_k3s/dev/minio-pvc.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: minio-pvc + namespace: minio +spec: + storageClassName: local-storage + volumeName: minio-pvc + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi \ No newline at end of file diff --git a/argos_k3s/minio/minio-deployment.yaml b/argos_k3s/minio/minio-deployment.yaml new file mode 100644 index 0000000..ba1e885 --- /dev/null +++ b/argos_k3s/minio/minio-deployment.yaml @@ -0,0 +1,44 @@ +apiVersion: apps/v1 # for k8s versions before 1.9.0 use apps/v1beta2 and before 1.8.0 use extensions/v1beta1 +kind: Deployment +metadata: + # This name uniquely identifies the Deployment + name: minio-deployment + namespace: minio +spec: + selector: + matchLabels: + app: minio + strategy: + type: Recreate + template: + metadata: + labels: + # Label is used as selector in the service. + app: minio + spec: + # Refer to the PVC created earlier + volumes: + - name: storage + persistentVolumeClaim: + # Name of the PVC created earlier + claimName: minio-pvc + containers: + - name: minio + # Pulls the default Minio image from Docker Hub + image: minio/minio:latest + args: + - server + - /storage + env: + # Minio access key and secret key + - name: MINIO_ACCESS_KEY + value: "minioadmin" + - name: MINIO_SECRET_KEY + value: "minioadmin" + ports: + - containerPort: 9000 + hostPort: 9000 + # Mount the volume into the pod + volumeMounts: + - name: storage # must match the volume name, above + mountPath: "/storage" \ No newline at end of file diff --git a/argos_k3s/minio/minio-ingress.yaml b/argos_k3s/minio/minio-ingress.yaml new file mode 100644 index 0000000..44002cc --- /dev/null +++ b/argos_k3s/minio/minio-ingress.yaml @@ -0,0 +1,19 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: minio + namespace: minio + annotations: + kubernetes.io/ingress.class: "nginx" +spec: + rules: + - host: argos-minio.mybento.local + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: minio-service + port: + number: 33973 \ No newline at end of file diff --git a/argos_k3s/minio/minio-namespace.yaml b/argos_k3s/minio/minio-namespace.yaml new file mode 100644 index 0000000..6a3ad07 --- /dev/null +++ b/argos_k3s/minio/minio-namespace.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: minio # Change this value if you want a different namespace name + labels: + name: minio # Change this value to match metadata.name \ No newline at end of file diff --git a/argos_k3s/minio/minio-pvc.yaml b/argos_k3s/minio/minio-pvc.yaml new file mode 100644 index 0000000..f422e56 --- /dev/null +++ b/argos_k3s/minio/minio-pvc.yaml @@ -0,0 +1,12 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: minio-pvc + namespace: minio +spec: + storageClassName: longhorn + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 30Gi \ No newline at end of file diff --git a/argos_k3s/minio/minio-service.yaml b/argos_k3s/minio/minio-service.yaml new file mode 100644 index 0000000..28a124a --- /dev/null +++ b/argos_k3s/minio/minio-service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + name: minio-service + namespace: minio +spec: + type: NodePort + sessionAffinity: None + ports: + - port: 9000 + protocol: TCP + name: minio + - port: 33973 + protocol: TCP + name: minio-console + selector: + app: minio \ No newline at end of file diff --git a/argos_k3s/nginx/create-nginx.sh b/argos_k3s/nginx/create-nginx.sh new file mode 100644 index 0000000..e9e2115 --- /dev/null +++ b/argos_k3s/nginx/create-nginx.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +export KUBECONFIG=/etc/rancher/k3s/k3s.yaml +helm upgrade ingress-nginx ingress-nginx --install --repo https://kubernetes.github.io/ingress-nginx --namespace ingress-nginx --create-namespace --set controller.hostNetwork=true --set controller.dnsPolicy=ClusterFirstWithHostNet --set controller.kind=DaemonSet +sleep 60 +kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission diff --git a/argos_k3s/package.json b/argos_k3s/package.json new file mode 100644 index 0000000..bf52c64 --- /dev/null +++ b/argos_k3s/package.json @@ -0,0 +1,34 @@ +{ + "name": "argos-k3s", + "display_name": "ArgOS on K3S", + "description": "ArgOS camera monitoring system", + "parameters": [ + { + "name": "ARGOS_VERSION", + "display_name": "ArgOS Version", + "description": "Desired version of ArgOS to install", + "type": "string", + "required": false + } + ], + "main": "argos_k3s/argos/argos_install.sh", + "dependencies": [ + "argos_k3s/argos/argos_install.sh", + "argos_k3s/argos/argos-deployment.yaml", + "argos_k3s/argos/argos-ingress.yaml", + "argos_k3s/argos/argos-namespace.yaml", + "argos_k3s/argos/argos-pvc.yaml", + "argos_k3s/argos/argos-role.yaml", + "argos_k3s/argos/argos-service.yaml", + "argos_k3s/clickhouse/clickhouse-deployment.yaml", + "argos_k3s/clickhouse/clickhouse-ingress.yaml", + "argos_k3s/clickhouse/create-clickhouse.sh", + "argos_k3s/minio/minio-deployment.yaml", + "argos_k3s/minio/minio-ingress.yaml", + "argos_k3s/minio/minio-namespace.yaml", + "argos_k3s/minio/minio-pvc.yaml", + "argos_k3s/minio/minio-service.yaml", + "argos_k3s/nginx/create-nginx.sh", + "argos_k3s/zookeeper/zookeeper.yaml" + ] + } \ No newline at end of file diff --git a/argos_k3s/zookeeper/zookeeper.yaml b/argos_k3s/zookeeper/zookeeper.yaml new file mode 100644 index 0000000..1b0dd08 --- /dev/null +++ b/argos_k3s/zookeeper/zookeeper.yaml @@ -0,0 +1,127 @@ +apiVersion: v1 +kind: Service +metadata: + namespace: zookeeper + name: zk-hs + labels: + app: zk +spec: + ports: + - port: 2888 + name: server + - port: 3888 + name: leader-election + clusterIP: None + selector: + app: zk +--- +apiVersion: v1 +kind: Service +metadata: + namespace: zookeeper + name: zk-cs + labels: + app: zk +spec: + ports: + - port: 2181 + name: client + selector: + app: zk +--- +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + namespace: zookeeper + name: zk-pdb +spec: + selector: + matchLabels: + app: zk + maxUnavailable: 1 +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: zk + namespace: zookeeper +spec: + selector: + matchLabels: + app: zk + serviceName: zk-hs + replicas: 1 + updateStrategy: + type: RollingUpdate + podManagementPolicy: OrderedReady + template: + metadata: + labels: + app: zk + spec: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: "app" + operator: In + values: + - zk + topologyKey: "kubernetes.io/hostname" + initContainers: + - command: + - /bin/bash + - -c + - |- + set -ex; + mkdir -p /data; + if [[ ! -f "/data/myid" ]]; then + hostindex=$HOSTNAME; let zooid=${hostindex: -1: 1}+1; echo $zooid > "/data/myid" + echo "Zookeeper MyId: " $zooid + fi + env: + - name: HOSTNAME + valueFrom: + fieldRef: + fieldPath: metadata.name + image: zookeeper:3.8.0 + name: zookeeper-init + securityContext: + runAsUser: 1000 + volumeMounts: + - name: zk-data + mountPath: "/data" + containers: + - name: zookeeper + image: "zookeeper:3.8.0" + env: + - name: ZOO_SERVERS + value: "server.1=zk-0.zk-hs.zookeeper.svc.cluster.local:2888:3888;2181" + - name: ZOO_STANDALONE_ENABLED + value: "false" + - name: ZOO_4LW_COMMANDS_WHITELIST + value: "srvr,mntr" + ports: + - containerPort: 2181 + name: client + - containerPort: 2888 + name: server + - containerPort: 3888 + name: leader-election + volumeMounts: + - name: zk-data + mountPath: "/data" + securityContext: + runAsUser: 1000 + runAsGroup: 1000 + fsGroup: 1000 + volumeClaimTemplates: + - metadata: + name: zk-data + spec: + storageClassName: longhorn + accessModes: [ "ReadWriteOnce" ] + resources: + requests: + storage: 10Gi From f8ae16ee43ed00f047b7f5f69ad388ce24ccccdc Mon Sep 17 00:00:00 2001 From: Omar Campos Date: Tue, 14 Feb 2023 18:47:46 -0400 Subject: [PATCH 02/11] Fixed path --- argos_k3s/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/argos_k3s/package.json b/argos_k3s/package.json index bf52c64..bbfbe8d 100644 --- a/argos_k3s/package.json +++ b/argos_k3s/package.json @@ -11,9 +11,9 @@ "required": false } ], - "main": "argos_k3s/argos/argos_install.sh", + "main": "argos_k3s/argos_install.sh", "dependencies": [ - "argos_k3s/argos/argos_install.sh", + "argos_k3s/argos_install.sh", "argos_k3s/argos/argos-deployment.yaml", "argos_k3s/argos/argos-ingress.yaml", "argos_k3s/argos/argos-namespace.yaml", From d3ae31e02aa5b2b61ca5d50579b2de067702de3d Mon Sep 17 00:00:00 2001 From: Omar Campos Date: Tue, 14 Feb 2023 18:54:53 -0400 Subject: [PATCH 03/11] Added install states --- argos_k3s/argos_install.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/argos_k3s/argos_install.sh b/argos_k3s/argos_install.sh index 8465063..3a27fe4 100644 --- a/argos_k3s/argos_install.sh +++ b/argos_k3s/argos_install.sh @@ -1,6 +1,7 @@ #!/bin/bash function do_install { + cachengo-cli updateInstallStatus $APPID "Installing" # zookeeper echo "Installing Zookeeper into k3s cluster" kubectl create ns zookeeper @@ -23,14 +24,16 @@ function do_install { #argos kubectl apply -f argos-namespace.yaml -f argos-ingress.yaml -f argos-pvc.yaml -f argos-role.yaml -f argos-service.yaml -f argos-deployment.yaml - + cachengo-cli updateInstallStatus $APPID "Installed" } function do_uninstall{ + cachengo-cli updateInstallStatus $APPID "Uninstalling" kubectl delete -f zookeeper/zookeeper.yaml kubectl delete -f minio/minio/minio-deployment.yaml -f minio/minio-service.yaml -f minio/minio-pvc.yaml -f minio/minio-ingress.yaml -f minio/minio-namespace.yaml kubectl delete -f clickhouse/clickhouse-deployment.yaml kubectl delete -f argos/argos-deployment.yaml -f argos-ingress.yaml -f argos-pvc.yaml -f argos-role.yaml -f argos-service.yaml -f argos/argos-namespace.yaml + cachengo-cli updateInstallStatus $APPID "Uninstalled" } case "$1" in From 0ede8560ccf240897d8a7ccc13965bd16732b8b8 Mon Sep 17 00:00:00 2001 From: Omar Date: Wed, 15 Feb 2023 11:57:17 -0400 Subject: [PATCH 04/11] Fixed syntax error --- argos_k3s/argos_install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) mode change 100644 => 100755 argos_k3s/argos_install.sh diff --git a/argos_k3s/argos_install.sh b/argos_k3s/argos_install.sh old mode 100644 new mode 100755 index 3a27fe4..0006895 --- a/argos_k3s/argos_install.sh +++ b/argos_k3s/argos_install.sh @@ -17,7 +17,7 @@ function do_install { # clickhouse ./clickhouse/create-clickhouse.sh - +`` sleep 60 kubectl -n clickhouse exec chi-pv-log-deployment-pv-0-0-0 -- clickhouse-client --query "create database argos on cluster 'deployment-pv';" @@ -27,7 +27,7 @@ function do_install { cachengo-cli updateInstallStatus $APPID "Installed" } -function do_uninstall{ +function do_uninstall { cachengo-cli updateInstallStatus $APPID "Uninstalling" kubectl delete -f zookeeper/zookeeper.yaml kubectl delete -f minio/minio/minio-deployment.yaml -f minio/minio-service.yaml -f minio/minio-pvc.yaml -f minio/minio-ingress.yaml -f minio/minio-namespace.yaml From d817a69509d91ce8917ba16f5b9e12f261f08c3e Mon Sep 17 00:00:00 2001 From: Omar Date: Wed, 15 Feb 2023 16:54:25 -0400 Subject: [PATCH 05/11] Changed erroneous permissions on files --- argos_k3s/argos_install.sh | 20 ++++++++++---------- argos_k3s/clickhouse/create-clickhouse.sh | 0 argos_k3s/nginx/create-nginx.sh | 0 3 files changed, 10 insertions(+), 10 deletions(-) mode change 100644 => 100755 argos_k3s/clickhouse/create-clickhouse.sh mode change 100644 => 100755 argos_k3s/nginx/create-nginx.sh diff --git a/argos_k3s/argos_install.sh b/argos_k3s/argos_install.sh index 0006895..0f3ecc7 100755 --- a/argos_k3s/argos_install.sh +++ b/argos_k3s/argos_install.sh @@ -5,34 +5,34 @@ function do_install { # zookeeper echo "Installing Zookeeper into k3s cluster" kubectl create ns zookeeper - kubectl apply -f zookeeper/zookeeper.yaml + kubectl apply -f argos_k3s/zookeeper/zookeeper.yaml # nginx echo "Creating nginx ingress" - ./nginx/create-nginx.sh + ./argos_k3s/nginx/create-nginx.sh # minio echo "Installing minio" - kubectl apply -f minio/minio-namespace.yaml -f minio/minio-service.yaml -f minio/minio-pvc.yaml -f minio/minio-ingress.yaml -f minio/minio-deployment.yaml + 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-ingress.yaml -f argos_k3s/minio/minio-deployment.yaml # clickhouse - ./clickhouse/create-clickhouse.sh -`` + ./argos_k3s/clickhouse/create-clickhouse.sh + sleep 60 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-namespace.yaml -f argos-ingress.yaml -f argos-pvc.yaml -f argos-role.yaml -f argos-service.yaml -f argos-deployment.yaml + 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 zookeeper/zookeeper.yaml - kubectl delete -f minio/minio/minio-deployment.yaml -f minio/minio-service.yaml -f minio/minio-pvc.yaml -f minio/minio-ingress.yaml -f minio/minio-namespace.yaml - kubectl delete -f clickhouse/clickhouse-deployment.yaml - kubectl delete -f argos/argos-deployment.yaml -f argos-ingress.yaml -f argos-pvc.yaml -f argos-role.yaml -f argos-service.yaml -f argos/argos-namespace.yaml + kubectl delete -f argos_k3s/zookeeper/zookeeper.yaml + 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-ingress.yaml -f argos_k3s/minio/minio-namespace.yaml + kubectl delete -f argos_k3s/clickhouse/clickhouse-deployment.yaml + 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" } diff --git a/argos_k3s/clickhouse/create-clickhouse.sh b/argos_k3s/clickhouse/create-clickhouse.sh old mode 100644 new mode 100755 diff --git a/argos_k3s/nginx/create-nginx.sh b/argos_k3s/nginx/create-nginx.sh old mode 100644 new mode 100755 From 3f268aee5a4a20b83bbbdb4fd310c53bab88225b Mon Sep 17 00:00:00 2001 From: Omar Date: Wed, 15 Feb 2023 17:06:02 -0400 Subject: [PATCH 06/11] Fixed paths and delete additional k3s objects --- argos_k3s/argos_install.sh | 4 ++++ argos_k3s/clickhouse/create-clickhouse.sh | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/argos_k3s/argos_install.sh b/argos_k3s/argos_install.sh index 0f3ecc7..64b61f9 100755 --- a/argos_k3s/argos_install.sh +++ b/argos_k3s/argos_install.sh @@ -30,8 +30,12 @@ function do_install { 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-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" } diff --git a/argos_k3s/clickhouse/create-clickhouse.sh b/argos_k3s/clickhouse/create-clickhouse.sh index a256516..bbf8774 100755 --- a/argos_k3s/clickhouse/create-clickhouse.sh +++ b/argos_k3s/clickhouse/create-clickhouse.sh @@ -3,4 +3,4 @@ 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 clickhouse-deployment.yaml \ No newline at end of file +kubectl apply -f argos_k3s/clickhouse/clickhouse-deployment.yaml \ No newline at end of file From 8ad916469d251f6304e40af48a0471de2a27ee78 Mon Sep 17 00:00:00 2001 From: Omar Campos Date: Thu, 16 Feb 2023 14:34:10 -0400 Subject: [PATCH 07/11] Removed db creation from recipe --- argos_k3s/argos_install.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/argos_k3s/argos_install.sh b/argos_k3s/argos_install.sh index 64b61f9..5e716e9 100755 --- a/argos_k3s/argos_install.sh +++ b/argos_k3s/argos_install.sh @@ -18,12 +18,13 @@ function do_install { # clickhouse ./argos_k3s/clickhouse/create-clickhouse.sh - sleep 60 - - kubectl -n clickhouse exec chi-pv-log-deployment-pv-0-0-0 -- clickhouse-client --query "create database argos on cluster 'deployment-pv';" + # 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" } From 840f1b04493b51e3e6e2e6755f972c934c7c7e92 Mon Sep 17 00:00:00 2001 From: Omar Campos Date: Wed, 8 Mar 2023 06:25:22 -0400 Subject: [PATCH 08/11] Added helm install script --- argos_k3s/nginx/create-nginx.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/argos_k3s/nginx/create-nginx.sh b/argos_k3s/nginx/create-nginx.sh index e9e2115..c499f72 100755 --- a/argos_k3s/nginx/create-nginx.sh +++ b/argos_k3s/nginx/create-nginx.sh @@ -1,6 +1,11 @@ #!/bin/bash export KUBECONFIG=/etc/rancher/k3s/k3s.yaml + +curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 +chmod 700 get_helm.sh +./get_helm.sh + helm upgrade ingress-nginx ingress-nginx --install --repo https://kubernetes.github.io/ingress-nginx --namespace ingress-nginx --create-namespace --set controller.hostNetwork=true --set controller.dnsPolicy=ClusterFirstWithHostNet --set controller.kind=DaemonSet sleep 60 kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission From 4284aa1210da24d8f70273a3263fd62216d11868 Mon Sep 17 00:00:00 2001 From: Omar Campos Date: Mon, 20 Mar 2023 12:08:04 -0400 Subject: [PATCH 09/11] Changed to static port minio deployment, service and ingress --- argos_k3s/minio/minio-deployment.yaml | 4 ++++ argos_k3s/minio/minio-ingress.yaml | 2 +- argos_k3s/minio/minio-service.yaml | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/argos_k3s/minio/minio-deployment.yaml b/argos_k3s/minio/minio-deployment.yaml index ba1e885..4700382 100644 --- a/argos_k3s/minio/minio-deployment.yaml +++ b/argos_k3s/minio/minio-deployment.yaml @@ -29,6 +29,8 @@ spec: args: - server - /storage + - --console-address + - :9001 env: # Minio access key and secret key - name: MINIO_ACCESS_KEY @@ -38,6 +40,8 @@ spec: ports: - containerPort: 9000 hostPort: 9000 + - containerPort: 9001 + hostPort: 9001 # Mount the volume into the pod volumeMounts: - name: storage # must match the volume name, above diff --git a/argos_k3s/minio/minio-ingress.yaml b/argos_k3s/minio/minio-ingress.yaml index 44002cc..66f4074 100644 --- a/argos_k3s/minio/minio-ingress.yaml +++ b/argos_k3s/minio/minio-ingress.yaml @@ -16,4 +16,4 @@ spec: service: name: minio-service port: - number: 33973 \ No newline at end of file + number: 9001 \ No newline at end of file diff --git a/argos_k3s/minio/minio-service.yaml b/argos_k3s/minio/minio-service.yaml index 28a124a..cc0d40d 100644 --- a/argos_k3s/minio/minio-service.yaml +++ b/argos_k3s/minio/minio-service.yaml @@ -10,7 +10,7 @@ spec: - port: 9000 protocol: TCP name: minio - - port: 33973 + - port: 9001 protocol: TCP name: minio-console selector: From fdd9c81afb20191fdec23d6ded1181c4aadfb9e0 Mon Sep 17 00:00:00 2001 From: Omar Date: Fri, 14 Apr 2023 18:00:23 -0400 Subject: [PATCH 10/11] Changes to local dev PV and PVCs, added ingress for minio-api --- argos_k3s/dev/argos-pv.yaml | 2 +- argos_k3s/dev/argos-pvc.yaml | 2 +- argos_k3s/minio/minio-api-ingress.yaml | 19 +++++++++++++++++++ ...ngress.yaml => minio-console-ingress.yaml} | 0 argos_k3s/package.json | 3 ++- 5 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 argos_k3s/minio/minio-api-ingress.yaml rename argos_k3s/minio/{minio-ingress.yaml => minio-console-ingress.yaml} (100%) diff --git a/argos_k3s/dev/argos-pv.yaml b/argos_k3s/dev/argos-pv.yaml index dd147d3..08fd153 100644 --- a/argos_k3s/dev/argos-pv.yaml +++ b/argos_k3s/dev/argos-pv.yaml @@ -1,7 +1,7 @@ apiVersion: v1 kind: PersistentVolume metadata: - name: argos-pvc + name: argos-pv namespace: argos spec: capacity: diff --git a/argos_k3s/dev/argos-pvc.yaml b/argos_k3s/dev/argos-pvc.yaml index 45b63be..fd0233e 100644 --- a/argos_k3s/dev/argos-pvc.yaml +++ b/argos_k3s/dev/argos-pvc.yaml @@ -5,7 +5,7 @@ metadata: namespace: argos spec: storageClassName: local-storage - volumeName: argos-pvc + volumeName: argos-pv accessModes: - ReadWriteOnce resources: diff --git a/argos_k3s/minio/minio-api-ingress.yaml b/argos_k3s/minio/minio-api-ingress.yaml new file mode 100644 index 0000000..24a9ba6 --- /dev/null +++ b/argos_k3s/minio/minio-api-ingress.yaml @@ -0,0 +1,19 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: minio + namespace: minio + annotations: + kubernetes.io/ingress.class: "nginx" +spec: + rules: + - host: argos-minio-api.mybento.local + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: minio-service + port: + number: 9001 \ No newline at end of file diff --git a/argos_k3s/minio/minio-ingress.yaml b/argos_k3s/minio/minio-console-ingress.yaml similarity index 100% rename from argos_k3s/minio/minio-ingress.yaml rename to argos_k3s/minio/minio-console-ingress.yaml diff --git a/argos_k3s/package.json b/argos_k3s/package.json index bbfbe8d..8c17f7b 100644 --- a/argos_k3s/package.json +++ b/argos_k3s/package.json @@ -24,7 +24,8 @@ "argos_k3s/clickhouse/clickhouse-ingress.yaml", "argos_k3s/clickhouse/create-clickhouse.sh", "argos_k3s/minio/minio-deployment.yaml", - "argos_k3s/minio/minio-ingress.yaml", + "argos_k3s/minio/minio-console-ingress.yaml", + "argos_k3s/minio/minio-api-ingress.yaml", "argos_k3s/minio/minio-namespace.yaml", "argos_k3s/minio/minio-pvc.yaml", "argos_k3s/minio/minio-service.yaml", From 2e7a5857eb4ddf2cde252b6197f5f9b18f775fcd Mon Sep 17 00:00:00 2001 From: Omar Campos Date: Mon, 8 May 2023 17:58:39 -0400 Subject: [PATCH 11/11] Changed apply and delete for minio ingresses --- argos_k3s/argos_install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/argos_k3s/argos_install.sh b/argos_k3s/argos_install.sh index 5e716e9..f582ec3 100755 --- a/argos_k3s/argos_install.sh +++ b/argos_k3s/argos_install.sh @@ -13,7 +13,7 @@ function do_install { # 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-ingress.yaml -f argos_k3s/minio/minio-deployment.yaml + 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 @@ -32,7 +32,7 @@ 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-ingress.yaml -f argos_k3s/minio/minio-namespace.yaml + 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