28 Commits
Author SHA1 Message Date
Pierre Geeraert 5b5d62e4fa commenting build-contexts
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 57s
2025-06-03 10:45:53 +01:00
Pierre Geeraert 9afe770202 try to use cache
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1m40s
2025-06-03 10:43:15 +01:00
Pierre Geeraert 6a52ed2f66 try to use cache
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 3m20s
2025-06-03 10:28:43 +01:00
pierre geeraert 279d59e376 change the action
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 3m14s
2025-06-02 23:54:34 +01:00
pierre geeraert a6d9f29f1a change the action 2025-06-02 23:52:20 +01:00
pierre geeraert bb36edfca5 change the action 2025-06-02 23:51:27 +01:00
pierre geeraert f451b8ff3b change the action 2025-06-02 23:50:30 +01:00
pierre geeraert b837e1a952 change the action
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 3m3s
2025-06-02 23:41:01 +01:00
pierre geeraert aa1501214d update the number of replicas 2025-06-02 23:37:56 +01:00
pierre geeraert 246eff86a6 test the action
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 44s
2025-06-02 23:13:12 +01:00
pierre geeraert e2ea76c6c9 change the action 2025-06-02 23:12:21 +01:00
pierre geeraert ad4fe6df26 change the action 2025-06-02 23:10:30 +01:00
pierre geeraert 43a000a9c1 fixing the wrong redirect
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 32s
2025-06-02 23:04:03 +01:00
pierre geeraert 32a0e65a68 forgot to remove the baseurl var
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 26s
2025-06-02 22:54:14 +01:00
pierre geeraert b80be01a52 change the config file
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 24s
2025-06-02 22:47:01 +01:00
pi-ux-ce daa935bbef update the secret for kubeconfig
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 26s
2025-06-02 22:39:49 +01:00
pierre geeraert cb49bfba58 change the config file
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 27s
2025-06-02 22:38:26 +01:00
pierre geeraert 60af5e87ce adding views for kubernetes connection
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 26s
2025-06-02 22:19:02 +01:00
Pierre Geeraert aad687f630 enable more view effects
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 26s
2025-06-02 17:38:48 +01:00
pi-ux-ce 6b30f381df Merge branch 'main' of https://gitea.tryton.geeraert.eu/pi-ux-ce/Django_kube
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 35s
2025-06-02 14:40:48 +01:00
Pierre Geeraert 5b03dc35b4 add urls for view
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 25s
2025-06-02 14:01:34 +01:00
pi-ux-ce f9732160f0 try to use only the code from the docker image
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 24s
2025-06-02 13:59:10 +01:00
Pierre Geeraert 8a84a8d42f works on the view
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 27s
2025-06-02 13:52:01 +01:00
Pierre Geeraert 39e6a69a08 fix the syntax error
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 27s
2025-06-02 10:58:21 +01:00
pi-ux-ce c9d6d77931 dependencies for bootstrap
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 26s
2025-06-02 09:39:05 +00:00
pi-ux-ce 2f30234edd Update requirements.txt
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 34s
2025-06-02 09:01:05 +00:00
pi-ux-ce cdd1dd0245 Update .gitea/workflows/dockerfile_runner.yaml
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 28s
2025-06-02 08:40:36 +00:00
pi-ux-ce df9d6c93cc Merge pull request 'working on views' (#1) from view into main
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 30s
Reviewed-on: #1
2025-06-02 08:36:25 +00:00
10 changed files with 340 additions and 28 deletions
+18 -8
View File
@@ -2,12 +2,8 @@ name: Gitea Actions Demo
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on:
push:
branches:
- "*"
paths:
- 'dockerfile'
tags-ignore:
- '*'
issue_comment:
types: [created]
jobs:
Explore-Gitea-Actions:
@@ -20,6 +16,13 @@ jobs:
- name: List files in the repository
run: |
ls ${{ gitea.workspace }}
- name: Cache pip
uses: actions/cache@v3
with:
path: /root/.cache/pip
key: pip-{{ hashFiles('requirements*.txt') }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
@@ -34,7 +37,14 @@ jobs:
uses: docker/build-push-action@v6
with:
push: true
#build-contexts: pip_cache=${{steps.vars.outputs.pip-dir}}
tags: gitea.tryton.geeraert.eu/pi-ux-ce/django-python:latest
cache-from: type=gha
cache-to: type=gha,mode=max
- name: drop the pod to force pulling the new image
uses: actions-hub/kubectl@master
env:
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
with:
args: delete pod -n django-python --all
- run: echo "🍏 This job's status is ${{ job.status }}."
+8 -1
View File
@@ -1,6 +1,13 @@
name: Gitea Actions Demo
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on: [push]
on:
push:
branches:
- "*"
paths:
- '*.yaml'
tags-ignore:
- '*'
jobs:
Explore-Gitea-Actions:
+9 -2
View File
@@ -26,11 +26,14 @@ spec:
- containerPort: 8000
name: webserver-port
volumeMounts:
- name: django-python-code
mountPath: /code
## - name: django-python-code
# mountPath: /code
- name: servarr-data
mountPath: /data
readOnly: true
- name: secret-kubeconfig
mountPath: /kubeconfig
resources:
limits:
@@ -43,6 +46,10 @@ spec:
- name: servarr-data
hostPath:
path: /data
- name: secret-kubeconfig
secret:
defaultMode: 420
secretName: kubeconfig
---
@@ -0,0 +1,134 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Scaled down</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto|Varela+Round">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
<style>
body {
font-family: 'Varela Round', sans-serif;
}
.modal-confirm {
color: #636363;
width: 325px;
font-size: 14px;
}
.modal-confirm .modal-content {
padding: 20px;
border-radius: 5px;
border: none;
}
.modal-confirm .modal-header {
border-bottom: none;
position: relative;
}
.modal-confirm h4 {
text-align: center;
font-size: 26px;
margin: 30px 0 -15px;
}
.modal-confirm .form-control, .modal-confirm .btn {
min-height: 40px;
border-radius: 3px;
}
.modal-confirm .close {
position: absolute;
top: -5px;
right: -5px;
}
.modal-confirm .modal-footer {
border: none;
text-align: center;
border-radius: 5px;
font-size: 13px;
}
.modal-confirm .icon-box {
color: #fff;
position: absolute;
margin: 0 auto;
left: 0;
right: 0;
top: -70px;
width: 105px;
height: 105px;
border-radius: 50%;
z-index: 9;
/*background: #82ce34;*/
background: #a80505;
padding: 15px;
text-align: center;
box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.1);
}
.modal-confirm .icon-box i {
font-size: 58px;
position: relative;
top: 0px;
}
.modal-confirm .icon-box:hover,.modal-confirm .icon-box:focus {
background: #6fb32b;
/*background: #a80505;*/
outline: none;
}
.modal-confirm.modal-dialog {
margin-top: 80px;
}
.modal-confirm .btn {
color: #fff;
border-radius: 4px;
/*background: #82ce34;*/
background: #a80505;
text-decoration: none;
transition: all 0.4s;
line-height: normal;
border: none;
}
.modal-confirm .btn:hover, .modal-confirm .btn:focus {
background: #800404;
/*background: #a80505;*/
outline: none;
}
.trigger-btn {
display: inline-block;
margin: 100px auto;
}
</style>
</head>
<body>
<div class="text-center">
<!-- Button HTML (to Trigger Modal) -->
<!--<a href="#myModal" class="trigger-btn" data-toggle="modal">Click to Open Confirm Modal</a> -->
<!-- Modal HTML -->
<!--<div id="myModal" class="modal fade">-->
<div class="modal-dialog modal-confirm">
<div class="modal-content">
<div class="modal-header">
<div class="icon-box" onclick="window.location='/kubernetes_connection/scale_up/{{namespace}}/{{deployment}}';">
<!--<i class="material-icons">&#xE876;</i>-->
<i class="material-icons">&#xd7;</i>
</div>
<h4 class="modal-title w-100">Too bad!</h4>
</div>
<div class="modal-body">
<p class="text-center">{{ deployment }} deployment from namespace {{ namespace }} is now scaled down.</p>
<p class="text-center">Current URL {{ url }}.</p>
<p class="text-center">base URL {{ baseurl }}.</p>
</div>
<div href={{ url }} class="modal-footer">
<!--<button href={{ url }} class="btn btn-success btn-block" data-dismiss="modal">Redirect</button>-->
<a href="https://google.fr" class="btn btn-success btn-block" data-dismiss="modal">Redirect</a>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
+133
View File
@@ -0,0 +1,133 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Scaled up</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto|Varela+Round">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
<style>
body {
font-family: 'Varela Round', sans-serif;
}
.modal-confirm {
color: #636363;
width: 325px;
font-size: 14px;
}
.modal-confirm .modal-content {
padding: 20px;
border-radius: 5px;
border: none;
}
.modal-confirm .modal-header {
border-bottom: none;
position: relative;
}
.modal-confirm h4 {
text-align: center;
font-size: 26px;
margin: 30px 0 -15px;
}
.modal-confirm .form-control, .modal-confirm .btn {
min-height: 40px;
border-radius: 3px;
}
.modal-confirm .close {
position: absolute;
top: -5px;
right: -5px;
}
.modal-confirm .modal-footer {
border: none;
text-align: center;
border-radius: 5px;
font-size: 13px;
}
.modal-confirm .icon-box {
color: #fff;
position: absolute;
margin: 0 auto;
left: 0;
right: 0;
top: -70px;
width: 95px;
height: 95px;
border-radius: 50%;
z-index: 9;
background: #82ce34;
padding: 15px;
text-align: center;
box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.1);
}
.modal-confirm .icon-box i {
font-size: 58px;
position: relative;
top: 3px;
}
.modal-confirm .icon-box:hover,.modal-confirm .icon-box:focus {
/*background: #6fb32b;*/
background: #a80505;
outline: none;
}
.modal-confirm.modal-dialog {
margin-top: 80px;
}
.modal-confirm .btn {
color: #fff;
border-radius: 4px;
background: #82ce34;
text-decoration: none;
transition: all 0.4s;
line-height: normal;
border: none;
}
.modal-confirm .btn:hover, .modal-confirm .btn:focus {
background: #6fb32b;
/*background: #a80505;*/
outline: none;
}
.trigger-btn {
display: inline-block;
margin: 100px auto;
}
</style>
</head>
<body>
<div class="text-center">
<!-- Button HTML (to Trigger Modal) -->
<!--<a href="#myModal" class="trigger-btn" data-toggle="modal">Click to Open Confirm Modal</a> -->
<!-- Modal HTML -->
<!--<div id="myModal" class="modal fade">-->
<div class="modal-dialog modal-confirm">
<div class="modal-content">
<div class="modal-header">
<div class="icon-box" onclick="window.location='/kubernetes_connection/scale_down/{{namespace}}/{{deployment}}';">
<!--<i class="material-icons">&#xE876;</i>-->
<i class="material-icons">&#xE876;</i>
</div>
<h4 class="modal-title w-100">Awesome!</h4>
</div>
<div class="modal-body">
<p class="text-center">{{ deployment }} deployment from namespace {{ namespace }} is now scaled up.</p>
<p class="text-center">Current URL {{ url }}.</p>
<p class="text-center">base URL {{ baseurl }}.</p>
</div>
<div href={{ url }} class="modal-footer">
<!--<button href={{ url }} class="btn btn-success btn-block" data-dismiss="modal">Redirect</button>-->
<a href="https://google.fr" class="btn btn-success btn-block" data-dismiss="modal">Redirect</a>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
+12
View File
@@ -1,5 +1,6 @@
from django.shortcuts import render
def home(request):
thislist = ["apple", "banana", "cherry"]
return render(request, 'home.html',{'thislist': thislist})
@@ -7,3 +8,14 @@ def home(request):
def about(request):
thislist = ["apple", "banana", "cherry"]
return render(request, 'about.html',{'thislist': thislist})
def success(request):
return render(request, 'start.html',{'deployment': 'django','url':'https://google.com'})
def scale_up(request,namespace_name,deploy_name):
baseurl = "{0}://{1}{2}".format(request.scheme, request.get_host(), request.path)
return render(request, 'start.html', {'namespace':namespace_name,'deployment': deploy_name, 'url': 'https://namespace.com','baseurl': baseurl})
def scale_down(request,namespace_name,deploy_name):
baseurl = "{0}://{1}{2}".format(request.scheme, request.get_host(), request.path)
return render(request, 'shutdown.html', {'namespace':namespace_name,'deployment': deploy_name, 'url': 'https://namespace.com','baseurl': baseurl})
+4
View File
@@ -43,6 +43,10 @@ urlpatterns = [
path('dashboard/hello/', dashboardapp.hello),
path('dashboard/view/about', dashboardview.about),
path('dashboard/view/home', dashboardview.home),
path('dashboard/view/success', dashboardview.success),
path('dashboard/scale_up/<str:namespace_name>/<str:deploy_name>', dashboardview.scale_up),
path('dashboard/scale_down/<str:namespace_name>/<str:deploy_name>', dashboardview.scale_down),
################## kubernetes_connection#####
+17 -13
View File
@@ -18,23 +18,26 @@ def hello(request):
return HttpResponse('<h1>Hello k8s!</h1>')
def scale_up(request,namespace_name,deploy_name):
config.load_kube_config(config_file='/code/kubeconfig')
config.load_kube_config(config_file='/kubeconfig/config')
api = client.AppsV1Api()
deployment = api.read_namespaced_deployment(name=deploy_name, namespace=namespace_name)
deployment.spec.replicas = 2
deployment.spec.replicas = 1
resp = api.patch_namespaced_deployment(
name=deploy_name, namespace=namespace_name, body=deployment);
return HttpResponse('<h1>Scaled up !</h1>')
#return HttpResponse('<h1>Scaled up !</h1>')
return render(request, 'start.html', {'namespace':namespace_name,'deployment': deploy_name, 'url': 'https://namespace.com'})
def scale_down(request,namespace_name,deploy_name):
config.load_kube_config(config_file='/code/kubeconfig')
config.load_kube_config(config_file='/kubeconfig/config')
api = client.AppsV1Api()
deployment = api.read_namespaced_deployment(name=deploy_name, namespace=namespace_name)
deployment.spec.replicas = 0
resp = api.patch_namespaced_deployment(
name=deploy_name, namespace=namespace_name, body=deployment);
return HttpResponse('<h1>Scaled down !</h1>')
#return HttpResponse('<h1>Scaled down !</h1>')
return render(request, 'shutdown.html',
{'namespace': namespace_name, 'deployment': deploy_name, 'url': 'https://namespace.com'})
def nodes(request):
config.load_kube_config(config_file='/code/kubeconfig')
@@ -111,15 +114,16 @@ def backup_job(request):
#help with yaml import
#https://github.com/kubernetes-client/python/issues/589
def backup_job_yaml(request):
def backup_job_yaml(request,sync_target):
config.load_kube_config(config_file='/code/kubeconfig')
v1 = client.BatchV1Api()
with urllib.request.urlopen(https://gitea.tryton.geeraert.eu/pi-ux-ce/Backup_kube/raw/branch/main/Infrequent_access/pod.yaml") as manifest_url:
yaml_location = {
"synology" : "https://gitea.tryton.geeraert.eu/pi-ux-ce/Backup_kube/raw/branch/main/Infrequent_access/synology_pod.yaml",
"openmediavault":"https://gitea.tryton.geeraert.eu/pi-ux-ce/Backup_kube/raw/branch/main/Infrequent_access/openmediavault_pod.yaml"
}
print(yaml_location[sync_target])
url_to_select=yaml_location[sync_target]
api_response = v1.create_namespaced_job(body=pod_manifest_job)
# with open('/code/pod.yaml') as :
job = yaml.safe_load(manifest_url)
v1.create_namespaced_job(
job['metadata']['namespace'], job, pretty=True
)
return HttpResponse(job['metadata']['namespace'])
return HttpResponse(api_response)
+2 -2
View File
@@ -5,8 +5,8 @@ WORKDIR /code/
COPY requirements.txt ./
COPY django_code ./
RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt
RUN --mount=type=cache,target=/root/.cache/pip,from=pip_cache pip install --upgrade pip
RUN --mount=type=cache,target=/root/.cache/pip,from=pip_cache pip install --no-cache-dir -r requirements.txt
COPY . .
RUN python django_code/manage.py migrate
+1
View File
@@ -5,3 +5,4 @@ docker
kubernetes
ruamel.yaml
pyyaml
django-bootstrap-v5