Add a script to copy the content of the custom folder to a running pod

For now it is only labels, but adding anything supported will work
(robots.txt, public files, templates, etc)

The content will be copied to the /data/gitea/ folder that is a mounted
persistent volume

https://docs.gitea.io/en-us/customizing-gitea/
This commit is contained in:
Greg 2019-02-27 17:47:48 +01:00
parent 0a60d8831c
commit bbfa3f2964
7 changed files with 22 additions and 13 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
/kubernetes/custom/config/ /kubernetes/config/

View File

@ -3,6 +3,12 @@
This repository contains configuration files and other assets, that are used to This repository contains configuration files and other assets, that are used to
deploy and operate this Gitea instance. deploy and operate this Gitea instance.
To upload the customization files to the running pod:
```
./script/copy_customization
```
Feel free to [open issues] for questions, suggestions, bugs, to-do items, and Feel free to [open issues] for questions, suggestions, bugs, to-do items, and
whatever else you want to discuss or resolve. whatever else you want to discuss or resolve.

View File

@ -17,18 +17,13 @@ spec:
image: busybox image: busybox
command: [ command: [
'sh', '-c', 'sh', '-c',
'mkdir -p /data/gitea/conf && mkdir -p /data/gitea/https && mkdir -p /data/gitea/options/label && cp /root/conf/app.ini /data/gitea/conf/app.ini && chown 1000:1000 /data/gitea/conf/app.ini && chmod 660 /data/gitea/conf/app.ini && cp /root/conf/*.pem /data/gitea/https && chmod 600 /data/gitea/https/*.pem && cp /root/options/label/* /data/gitea/options/label/ && chown -R 1000:1000 /data/gitea' 'mkdir -p /data/gitea/conf && mkdir -p /data/gitea/https && cp /root/conf/app.ini /data/gitea/conf/app.ini && chown 1000:1000 /data/gitea/conf/app.ini && chmod 660 /data/gitea/conf/app.ini && cp /root/conf/*.pem /data/gitea/https && chmod 600 /data/gitea/https/*.pem && chown -R 1000:1000 /data/gitea'
] ]
volumeMounts: volumeMounts:
- mountPath: /data - mountPath: /data
name: gitea-server-data name: gitea-server-data
- mountPath: /root/conf - mountPath: /root/conf
name: config name: config
# The labels have been created as a ConfigMap from local files using this command:
#
# kubectl create configmap gitea-options-label --from-file=custom/options/label/
- mountPath: /root/options/label
name: label
containers: containers:
- name: gitea-server - name: gitea-server
image: gitea/gitea:1.7.2 image: gitea/gitea:1.7.2
@ -57,9 +52,6 @@ spec:
- key: key.pem - key: key.pem
path: key.pem path: key.pem
mode: 256 mode: 256
- name: label
configMap:
name: gitea-options-label
--- ---
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim

11
script/copy_customization Executable file
View File

@ -0,0 +1,11 @@
#!/usr/bin/env bash
for podname in $(kubectl get pods -l name=gitea-server -o json \
| jq -r '.items[].metadata.name'); do
for path in ./kubernetes/custom/*; do
echo "Copying ${path}..."
kubectl cp "${path}" "${podname}":"/data/gitea/"
done
# Fix permissions
kubectl exec "${podname}" -- chown -R 1000:1000 /data/gitea/
done

View File

@ -7,7 +7,7 @@ secret = `kubectl get secret gitea-config -o yaml`
yaml = YAML.load(secret) yaml = YAML.load(secret)
yaml['data'].each do |key, data| yaml['data'].each do |key, data|
filename = File.join('kubernetes', 'custom', 'config', key) filename = File.join('kubernetes', 'config', key)
File.open(filename, "w+") do |f| File.open(filename, "w+") do |f|
puts "Writing #{filename}" puts "Writing #{filename}"
f.write Base64.decode64(data) f.write Base64.decode64(data)

View File

@ -2,8 +2,8 @@
# Delete the gitea-config secrets # Delete the gitea-config secrets
kubectl delete secret gitea-config kubectl delete secret gitea-config
# Replace it from the local files in kubernetes/custom/config/* (acquired by running # Replace it from the local files in kubernetes/config/* (acquired by running
# ./script/get_secrets) # ./script/get_secrets)
kubectl create secret generic gitea-config --from-file=cert.pem=kubernetes/custom/config/cert.pem --from-file=key.pem=kubernetes/custom/config/key.pem --from-file=app.ini=kubernetes/custom/config/app.ini kubectl create secret generic gitea-config --from-file=cert.pem=kubernetes/config/cert.pem --from-file=key.pem=kubernetes/config/key.pem --from-file=app.ini=kubernetes/config/app.ini
# Force the pod to restart by patching the deployment resource # Force the pod to restart by patching the deployment resource
kubectl patch deployment gitea-server -p "{\"spec\":{\"template\":{\"metadata\":{\"annotations\":{\"date\":\"`date +'%s'`\"}}}}}" kubectl patch deployment gitea-server -p "{\"spec\":{\"template\":{\"metadata\":{\"annotations\":{\"date\":\"`date +'%s'`\"}}}}}"