diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f5c2367 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +template +build +.secrets +mysecret.json +mysecret.yaml +mysealedsecret.json +.env +.mysealedsecret.json2235032335 diff --git a/active/cronjob.yaml b/active/cronjob.yaml index cf3ce8f..e14efde 100644 --- a/active/cronjob.yaml +++ b/active/cronjob.yaml @@ -1,22 +1,25 @@ apiVersion: batch/v1 -kind: Job +kind: CronJob metadata: - name: timestamp-job + name: timestamp-cronjob spec: - template: - metadata: - name: timestamp-job + schedule: "*/1 * * * *" + jobTemplate: spec: - containers: - - name: timestamp-container - image: busybox - command: ["sh", "-c", "while true; do date >> /logs/runs.log; sleep 60; done"] - volumeMounts: - - name: data - mountPath: /logs - subPath: logs - restartPolicy: Never - volumes: - - name: data - persistentVolumeClaim: - claimName: data + template: + metadata: + labels: + app: timestamp-job + spec: + containers: + - name: timestamp-container + image: busybox + command: ["sh", "-c", "date >> /logs/runs.log"] + volumeMounts: + - name: logs-volume + mountPath: /logs + restartPolicy: OnFailure + volumes: + - name: logs-volume + persistentVolumeClaim: + claimName: data diff --git a/active/weather/Chart.yaml b/active/weather/Chart.yaml new file mode 100644 index 0000000..d2e9262 --- /dev/null +++ b/active/weather/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v2 +name: weather-cronjob-chart +description: A Helm chart for deploying a cron job to fetch weather information +version: 0.1.0 diff --git a/active/weather/charts/.gitkeep b/active/weather/charts/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/active/weather/templates/cronjob.yaml b/active/weather/templates/cronjob.yaml new file mode 100644 index 0000000..5f873a7 --- /dev/null +++ b/active/weather/templates/cronjob.yaml @@ -0,0 +1,27 @@ +apiVersion: batch/v1 +kind: CronJob +metadata: + name: {{ .Release.Name }}-weather-cronjob +spec: + schedule: "{{ .Values.schedule }}" + jobTemplate: + spec: + template: + metadata: + labels: + app: weather-job + spec: + containers: + - name: weather-container + image: {{ .Values.container.image }} + command: ["sh", "-c", "{{ .Values.container.command }}"] + volumeMounts: + - name: logs-volume + mountPath: /logs + subPath: logs + restartPolicy: {{ .Values.restartPolicy }} + volumes: + - name: logs-volume + persistentVolumeClaim: + claimName: {{ .Values.volume.claimName }} + subPath: logs diff --git a/active/weather/values.yaml b/active/weather/values.yaml new file mode 100644 index 0000000..9d36df1 --- /dev/null +++ b/active/weather/values.yaml @@ -0,0 +1,10 @@ +schedule: "*/1 * * * *" + +container: + image: busybox + command: "curl 'wttr.in/peoria,il?format=3' >> /logs/weather.log" + +restartPolicy: OnFailure + +volume: + claimName: data diff --git a/active/weather_report.yaml b/active/weather_report.yaml new file mode 100644 index 0000000..a1df687 --- /dev/null +++ b/active/weather_report.yaml @@ -0,0 +1,25 @@ +apiVersion: batch/v1 +kind: CronJob +metadata: + name: weather-cronjob +spec: + schedule: "*/1 * * * *" + jobTemplate: + spec: + template: + metadata: + labels: + app: weather-job + spec: + containers: + - name: weather-container + image: curlimages/curl + command: ["sh", "-c", "date >> /logs/wttr.log && curl 'wttr.in/peoria,il?format=3' >> /logs/wttr.log && echo ''"] + volumeMounts: + - name: logs-volume + mountPath: /logs + restartPolicy: OnFailure + volumes: + - name: logs-volume + persistentVolumeClaim: + claimName: data diff --git a/mysealedsecret.yaml b/mysealedsecret.yaml new file mode 100644 index 0000000..ab48c56 --- /dev/null +++ b/mysealedsecret.yaml @@ -0,0 +1,15 @@ +apiVersion: bitnami.com/v1alpha1 +kind: SealedSecret +metadata: + creationTimestamp: null + name: mysecret + namespace: minecraft +spec: + encryptedData: + foo: AgCBsDB9HP0nqFPgLIEMug9Zgp7kQ4O5lfKZy0MaB1chPCzV0vSdg13ZRjv5NbsjFbb2G8tUt0O81JL/5l7sRnaJIZQJS4Ro7/4ij3K5Av8hq754gQJDGQQP0DLq/bRwdhimayw6ZNnsCxUnrTqJRRch7rGo0zWQjIcUy1fs53p9fIUZxEPdoBTIgP6sLfcKuROVQt1+IPO351WNx3CIrB4BuSkWGlPs/wx1yddC5bWl7X85AsrqwFQvU6qamOrqCvKCrJVVCAk323Z9+ziY8BkYZXhWjayMyl35weTKZjLs4p6lnpreTpjriWdSblkRmcA1G9aNCOp2axtuUG//HdEg4N1vioENcig5r+lp6ySXxODEdHX/ROfg8GqPSmMqyzX/GjI3b1Cz2nsyMfWcWC1w2D3aLL7B5gI939qN6oUm3Ip2OSOUJBLeVaZVhw+ozM7qmtIj/HGTtepjebdvHgvWHP8zAQB+crftWLu53qT7CWrM7QLdMIvsMI7mTAfTOfF536yYi6/i945ixhaLWShsWyNfvedq6DZ8azZyKTbmva34oADoxrpaR/tpvA9SSUz2yM0R+7WqWaDFWxUqqqijuocyeKjpj+AFr5rxLZVtx2gJ01vg2axGv3hieT/xM9h9LqdCxxq1nhv9ue66FRsuAD9gT1QYpH2I8GAAaKNBYTxHFW6eDke1z03/2BHkPoSsTug= + template: + metadata: + creationTimestamp: null + name: mysecret + namespace: default + type: Opaque diff --git a/people.yml b/people.yml new file mode 100644 index 0000000..4093979 --- /dev/null +++ b/people.yml @@ -0,0 +1,10 @@ +version: 1.0 +provider: + name: openfaas + gateway: http://127.0.0.1:8080 +functions: + people: + lang: python + handler: ./people + image: people:latest + diff --git a/people/handler.py b/people/handler.py new file mode 100644 index 0000000..6281bd7 --- /dev/null +++ b/people/handler.py @@ -0,0 +1,18 @@ +def detect_person(url): + return "Hello, World!" + + +def handle(req): + """handle a request to the function + Args: + req (str): request body + """ + + if not req: + raise Exception("Empty request") + + if isinstance(req, str): + req = req.encode("utf-8") + url = req + + return detect_person(url) diff --git a/people/requirements.txt b/people/requirements.txt new file mode 100644 index 0000000..cb50cf8 --- /dev/null +++ b/people/requirements.txt @@ -0,0 +1,30 @@ +# pip install -r requirements.txt + +# base ---------------------------------------- +Cython +matplotlib>=3.2.2 +numpy>=1.18.5 +opencv-python>=4.1.2 +Pillow +PyYAML>=5.3.1 +scipy>=1.4.1 +tensorboard>=2.2 +torch>=1.7.0 +torchvision>=0.8.1 +tqdm>=4.41.0 + +# logging ------------------------------------- +# wandb + +# plotting ------------------------------------ +seaborn>=0.11.0 +pandas + +# export -------------------------------------- +# coremltools>=4.1 +# onnx>=1.8.1 +# scikit-learn==0.19.2 # for coreml quantization + +# extras -------------------------------------- +thop # FLOPS computation +pycocotools>=2.0 # COCO mAP diff --git a/pvc-inpsector.yaml b/pvc-inpsector.yaml index 87065aa..51f3654 100644 --- a/pvc-inpsector.yaml +++ b/pvc-inpsector.yaml @@ -5,14 +5,28 @@ metadata: namespace: minecraft spec: containers: - - image: busybox + - image: docker.io/curlimages/curl name: pvc-inspector command: ["sleep", "3600"] + env: + - name: FOO + valueFrom: + secretKeyRef: + name: mysecret + key: foo volumeMounts: - mountPath: /data name: data # subPath: minecraft + # + # + - name: sealed-secret + mountPath: /secret + readOnly: true volumes: - name: data persistentVolumeClaim: claimName: data + - name: sealed-secret + secret: + secretName: mysecret diff --git a/python-function.yml b/python-function.yml new file mode 100644 index 0000000..4f50666 --- /dev/null +++ b/python-function.yml @@ -0,0 +1,9 @@ +version: 1.0 +provider: + name: openfaas + gateway: http://127.0.0.1:8080 +functions: + python-function: + lang: python + handler: ./python-function + image: waylonwalker/python-function:latest diff --git a/python-function/handler.py b/python-function/handler.py new file mode 100644 index 0000000..8487d01 --- /dev/null +++ b/python-function/handler.py @@ -0,0 +1,8 @@ +def handle(req): + """handle a request to the function + Args: + req (str): request body + """ + # print("Hello! You said: " + req) + + return {"message": req} diff --git a/python-function/requirements.txt b/python-function/requirements.txt new file mode 100644 index 0000000..e69de29 diff --git a/startup.sh b/startup.sh new file mode 100644 index 0000000..1567fa3 --- /dev/null +++ b/startup.sh @@ -0,0 +1,22 @@ +kind create cluster --name minecraft +helm repo add argo https://argoproj.github.io/argo-helm +helm repo update +helm install argo argo/argo-cd --namespace argocd --create-namespace +kubectl port-forward service/argo-argocd-server -n argocd 8080:443 +argocd admin initial-password -n argocd +argocd login localhost:8080 +argocd app list +argocd app create minecraft --repo https://github.com/waylonwalker/minecraft-servers --path active --dest-server https://kubernetes.default.svc --dest-namespace minecraft +argocd app list +argocd app sync minecraft +argocd app list +argocd app set minecraft --sync-policy automated --auto-prune +argocd app list +argocd app get minecraft + +# --- +helm repo update \ + && helm upgrade openfaas \ + --install openfaas/openfaas \ + --namespace openfaas \ + --create-namespace