maintenance: drop completed wait-bound oneoffs
This commit is contained in:
parent
37ca992610
commit
72ec2c2979
@ -5,14 +5,6 @@ resources:
|
|||||||
- namespace.yaml
|
- namespace.yaml
|
||||||
- serviceaccount.yaml
|
- serviceaccount.yaml
|
||||||
- pvc.yaml
|
- pvc.yaml
|
||||||
- oneoffs/veles-feedback-acl-ensure-job.yaml
|
|
||||||
- deployment.yaml
|
- deployment.yaml
|
||||||
- service.yaml
|
- service.yaml
|
||||||
- ingress.yaml
|
- ingress.yaml
|
||||||
configMapGenerator:
|
|
||||||
- name: veles-feedback-acl-ensure-script
|
|
||||||
namespace: gitea
|
|
||||||
files:
|
|
||||||
- scripts/veles_feedback_acl_ensure.sh
|
|
||||||
generatorOptions:
|
|
||||||
disableNameSuffixHash: true
|
|
||||||
|
|||||||
@ -1,54 +0,0 @@
|
|||||||
# services/gitea/oneoffs/veles-feedback-acl-ensure-job.yaml
|
|
||||||
# One-off job for gitea/veles-feedback-acl-ensure-4.
|
|
||||||
# Purpose: keep Veles feedback anonymously readable while limiting write access
|
|
||||||
# to testers/admins and avoiding source-code repository access.
|
|
||||||
apiVersion: batch/v1
|
|
||||||
kind: Job
|
|
||||||
metadata:
|
|
||||||
name: veles-feedback-acl-ensure-4
|
|
||||||
namespace: gitea
|
|
||||||
spec:
|
|
||||||
ttlSecondsAfterFinished: 3600
|
|
||||||
suspend: true
|
|
||||||
backoffLimit: 0
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
vault.hashicorp.com/agent-inject: "true"
|
|
||||||
vault.hashicorp.com/agent-pre-populate-only: "true"
|
|
||||||
vault.hashicorp.com/role: "gitea"
|
|
||||||
vault.hashicorp.com/agent-inject-secret-gitea-db-secret__password: "kv/data/atlas/gitea/gitea-db-secret"
|
|
||||||
vault.hashicorp.com/agent-inject-template-gitea-db-secret__password: |
|
|
||||||
{{ with secret "kv/data/atlas/gitea/gitea-db-secret" }}
|
|
||||||
{{ .Data.data.password }}
|
|
||||||
{{ end }}
|
|
||||||
spec:
|
|
||||||
serviceAccountName: gitea-vault
|
|
||||||
restartPolicy: Never
|
|
||||||
volumes:
|
|
||||||
- name: veles-feedback-acl-ensure-script
|
|
||||||
configMap:
|
|
||||||
name: veles-feedback-acl-ensure-script
|
|
||||||
defaultMode: 0555
|
|
||||||
affinity:
|
|
||||||
nodeAffinity:
|
|
||||||
requiredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
nodeSelectorTerms:
|
|
||||||
- matchExpressions:
|
|
||||||
- key: kubernetes.io/arch
|
|
||||||
operator: In
|
|
||||||
values: ["arm64"]
|
|
||||||
- key: hardware
|
|
||||||
operator: In
|
|
||||||
values: ["rpi5"]
|
|
||||||
- key: node-role.kubernetes.io/worker
|
|
||||||
operator: Exists
|
|
||||||
containers:
|
|
||||||
- name: apply
|
|
||||||
image: postgres:15
|
|
||||||
command: ["/bin/sh"]
|
|
||||||
args: ["/scripts/veles_feedback_acl_ensure.sh"]
|
|
||||||
volumeMounts:
|
|
||||||
- name: veles-feedback-acl-ensure-script
|
|
||||||
mountPath: /scripts
|
|
||||||
readOnly: true
|
|
||||||
@ -1,122 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
db_host="${GITEA_DB_HOST:-postgres-service.postgres.svc.cluster.local}"
|
|
||||||
db_port="${GITEA_DB_PORT:-5432}"
|
|
||||||
db_name="${GITEA_DB_NAME:-gitea}"
|
|
||||||
db_user="${GITEA_DB_USER:-gitea}"
|
|
||||||
org_name="${VELES_GITEA_ORG:-veles-alpha}"
|
|
||||||
repo_name="${VELES_GITEA_FEEDBACK_REPO:-feedback}"
|
|
||||||
team_name="${VELES_GITEA_TESTER_TEAM:-testers}"
|
|
||||||
|
|
||||||
if [ ! -r /vault/secrets/gitea-db-secret__password ]; then
|
|
||||||
echo "Missing readable Vault secret file: /vault/secrets/gitea-db-secret__password" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
export PGPASSWORD
|
|
||||||
PGPASSWORD="$(tr -d '\r\n' </vault/secrets/gitea-db-secret__password)"
|
|
||||||
|
|
||||||
psql_base="psql -h ${db_host} -p ${db_port} -U ${db_user} -d ${db_name} -v ON_ERROR_STOP=1 -P pager=off"
|
|
||||||
|
|
||||||
${psql_base} \
|
|
||||||
-v org_name="${org_name}" \
|
|
||||||
-v repo_name="${repo_name}" \
|
|
||||||
-v team_name="${team_name}" <<'SQL'
|
|
||||||
begin;
|
|
||||||
|
|
||||||
create temporary table veles_acl_ids on commit drop as
|
|
||||||
select
|
|
||||||
org.id as org_id,
|
|
||||||
repo.id as repo_id,
|
|
||||||
team.id as team_id
|
|
||||||
from gitea."user" org
|
|
||||||
join gitea.repository repo
|
|
||||||
on repo.owner_id = org.id
|
|
||||||
join gitea.team team
|
|
||||||
on team.org_id = org.id
|
|
||||||
where org.lower_name = lower(:'org_name')
|
|
||||||
and org.type = 1
|
|
||||||
and repo.lower_name = lower(:'repo_name')
|
|
||||||
and team.lower_name = lower(:'team_name');
|
|
||||||
|
|
||||||
do $$
|
|
||||||
begin
|
|
||||||
if (select count(*) from veles_acl_ids) != 1 then
|
|
||||||
raise exception 'Expected one veles feedback ACL target, found %', (select count(*) from veles_acl_ids);
|
|
||||||
end if;
|
|
||||||
end $$;
|
|
||||||
|
|
||||||
update gitea.team team
|
|
||||||
set authorize = 1,
|
|
||||||
includes_all_repositories = false,
|
|
||||||
can_create_org_repo = false
|
|
||||||
from veles_acl_ids ids
|
|
||||||
where team.id = ids.team_id;
|
|
||||||
|
|
||||||
update gitea."user" org
|
|
||||||
set visibility = 0
|
|
||||||
from veles_acl_ids ids
|
|
||||||
where org.id = ids.org_id;
|
|
||||||
|
|
||||||
update gitea.repository repo
|
|
||||||
set is_private = false
|
|
||||||
from veles_acl_ids ids
|
|
||||||
where repo.id = ids.repo_id;
|
|
||||||
|
|
||||||
delete from gitea.repo_unit unit
|
|
||||||
using veles_acl_ids ids
|
|
||||||
where unit.repo_id = ids.repo_id
|
|
||||||
and unit.type in (1, 3, 4, 5, 6, 7, 8, 9, 10);
|
|
||||||
|
|
||||||
insert into gitea.repo_unit (repo_id, type, config, created_unix, everyone_access_mode)
|
|
||||||
select
|
|
||||||
ids.repo_id,
|
|
||||||
2,
|
|
||||||
'{"EnableTimetracker":false,"AllowOnlyContributorsToTrackTime":true,"EnableDependencies":true}',
|
|
||||||
extract(epoch from now())::bigint,
|
|
||||||
0
|
|
||||||
from veles_acl_ids ids
|
|
||||||
where not exists (
|
|
||||||
select 1
|
|
||||||
from gitea.repo_unit existing
|
|
||||||
where existing.repo_id = ids.repo_id
|
|
||||||
and existing.type = 2
|
|
||||||
);
|
|
||||||
|
|
||||||
insert into gitea.team_repo (org_id, team_id, repo_id)
|
|
||||||
select ids.org_id, ids.team_id, ids.repo_id
|
|
||||||
from veles_acl_ids ids
|
|
||||||
where not exists (
|
|
||||||
select 1
|
|
||||||
from gitea.team_repo existing
|
|
||||||
where existing.team_id = ids.team_id
|
|
||||||
and existing.repo_id = ids.repo_id
|
|
||||||
);
|
|
||||||
|
|
||||||
delete from gitea.team_unit unit
|
|
||||||
using veles_acl_ids ids
|
|
||||||
where unit.team_id = ids.team_id
|
|
||||||
and unit.type in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
|
|
||||||
|
|
||||||
insert into gitea.team_unit (org_id, team_id, type, access_mode)
|
|
||||||
select ids.org_id, ids.team_id, desired.type, desired.access_mode
|
|
||||||
from veles_acl_ids ids
|
|
||||||
cross join (
|
|
||||||
values
|
|
||||||
(1, 0),
|
|
||||||
(2, 2),
|
|
||||||
(3, 0),
|
|
||||||
(4, 0),
|
|
||||||
(5, 0),
|
|
||||||
(6, 0),
|
|
||||||
(7, 0),
|
|
||||||
(8, 0),
|
|
||||||
(9, 0),
|
|
||||||
(10, 0)
|
|
||||||
) as desired(type, access_mode);
|
|
||||||
|
|
||||||
commit;
|
|
||||||
SQL
|
|
||||||
|
|
||||||
echo "Veles feedback Gitea ACL ready"
|
|
||||||
@ -13,7 +13,6 @@ resources:
|
|||||||
- unbound-configmap.yaml
|
- unbound-configmap.yaml
|
||||||
- serverstransport.yaml
|
- serverstransport.yaml
|
||||||
- ingressroute.yaml
|
- ingressroute.yaml
|
||||||
- oneoffs/mailu-sync-job.yaml
|
|
||||||
- mailu-sync-cronjob.yaml
|
- mailu-sync-cronjob.yaml
|
||||||
- front-lb.yaml
|
- front-lb.yaml
|
||||||
|
|
||||||
|
|||||||
@ -1,103 +0,0 @@
|
|||||||
# services/mailu/oneoffs/mailu-sync-job.yaml
|
|
||||||
# One-off job for mailu-mailserver/mailu-sync-9.
|
|
||||||
# Purpose: mailu sync 9 (see container args/env in this file).
|
|
||||||
# Run by setting spec.suspend to false, reconcile, then set it back to true.
|
|
||||||
# Safe to delete the finished Job/pod; it should not run continuously.
|
|
||||||
apiVersion: batch/v1
|
|
||||||
kind: Job
|
|
||||||
metadata:
|
|
||||||
name: mailu-sync-9
|
|
||||||
namespace: mailu-mailserver
|
|
||||||
spec:
|
|
||||||
ttlSecondsAfterFinished: 3600
|
|
||||||
suspend: true
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
vault.hashicorp.com/agent-inject: "true"
|
|
||||||
vault.hashicorp.com/agent-pre-populate-only: "true"
|
|
||||||
vault.hashicorp.com/role: "mailu-mailserver"
|
|
||||||
vault.hashicorp.com/agent-inject-secret-mailu-db-secret__database: "kv/data/atlas/mailu/mailu-db-secret"
|
|
||||||
vault.hashicorp.com/agent-inject-template-mailu-db-secret__database: |
|
|
||||||
{{- with secret "kv/data/atlas/mailu/mailu-db-secret" -}}{{ .Data.data.database }}{{- end -}}
|
|
||||||
vault.hashicorp.com/agent-inject-secret-mailu-db-secret__username: "kv/data/atlas/mailu/mailu-db-secret"
|
|
||||||
vault.hashicorp.com/agent-inject-template-mailu-db-secret__username: |
|
|
||||||
{{- with secret "kv/data/atlas/mailu/mailu-db-secret" -}}{{ .Data.data.username }}{{- end -}}
|
|
||||||
vault.hashicorp.com/agent-inject-secret-mailu-db-secret__password: "kv/data/atlas/mailu/mailu-db-secret"
|
|
||||||
vault.hashicorp.com/agent-inject-template-mailu-db-secret__password: |
|
|
||||||
{{- with secret "kv/data/atlas/mailu/mailu-db-secret" -}}{{ .Data.data.password }}{{- end -}}
|
|
||||||
vault.hashicorp.com/agent-inject-secret-mailu-sync-credentials__client-id: "kv/data/atlas/mailu/mailu-sync-credentials"
|
|
||||||
vault.hashicorp.com/agent-inject-template-mailu-sync-credentials__client-id: |
|
|
||||||
{{- with secret "kv/data/atlas/mailu/mailu-sync-credentials" -}}{{ index .Data.data "client-id" }}{{- end -}}
|
|
||||||
vault.hashicorp.com/agent-inject-secret-mailu-sync-credentials__client-secret: "kv/data/atlas/mailu/mailu-sync-credentials"
|
|
||||||
vault.hashicorp.com/agent-inject-template-mailu-sync-credentials__client-secret: |
|
|
||||||
{{- with secret "kv/data/atlas/mailu/mailu-sync-credentials" -}}{{ index .Data.data "client-secret" }}{{- end -}}
|
|
||||||
vault.hashicorp.com/agent-inject-secret-mailu-initial-account-secret__password: "kv/data/atlas/mailu/mailu-initial-account-secret"
|
|
||||||
vault.hashicorp.com/agent-inject-template-mailu-initial-account-secret__password: |
|
|
||||||
{{- with secret "kv/data/atlas/mailu/mailu-initial-account-secret" -}}{{ .Data.data.password }}{{- end -}}
|
|
||||||
spec:
|
|
||||||
restartPolicy: OnFailure
|
|
||||||
affinity:
|
|
||||||
nodeAffinity:
|
|
||||||
requiredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
nodeSelectorTerms:
|
|
||||||
- matchExpressions:
|
|
||||||
- key: node-role.kubernetes.io/worker
|
|
||||||
operator: Exists
|
|
||||||
preferredDuringSchedulingIgnoredDuringExecution:
|
|
||||||
- weight: 100
|
|
||||||
preference:
|
|
||||||
matchExpressions:
|
|
||||||
- key: kubernetes.io/arch
|
|
||||||
operator: In
|
|
||||||
values: ["arm64"]
|
|
||||||
serviceAccountName: mailu-vault-sync
|
|
||||||
containers:
|
|
||||||
- name: mailu-sync
|
|
||||||
image: python:3.11-alpine
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
command: ["/bin/sh", "-c"]
|
|
||||||
args:
|
|
||||||
- |
|
|
||||||
set -euo pipefail
|
|
||||||
. /vault/scripts/mailu_vault_env.sh
|
|
||||||
pip install --no-cache-dir requests psycopg2-binary passlib >/tmp/pip.log \
|
|
||||||
&& python /app/sync.py
|
|
||||||
env:
|
|
||||||
- name: KEYCLOAK_BASE_URL
|
|
||||||
value: http://keycloak.sso.svc.cluster.local
|
|
||||||
- name: KEYCLOAK_REALM
|
|
||||||
value: atlas
|
|
||||||
- name: MAILU_DOMAIN
|
|
||||||
value: bstein.dev
|
|
||||||
- name: MAILU_DEFAULT_QUOTA
|
|
||||||
value: "20000000000"
|
|
||||||
- name: MAILU_SYSTEM_USERS
|
|
||||||
value: no-reply-portal@bstein.dev,no-reply-vaultwarden@bstein.dev
|
|
||||||
- name: MAILU_DB_HOST
|
|
||||||
value: postgres-service.postgres.svc.cluster.local
|
|
||||||
- name: MAILU_DB_PORT
|
|
||||||
value: "5432"
|
|
||||||
volumeMounts:
|
|
||||||
- name: sync-script
|
|
||||||
mountPath: /app/sync.py
|
|
||||||
subPath: sync.py
|
|
||||||
- name: vault-scripts
|
|
||||||
mountPath: /vault/scripts
|
|
||||||
readOnly: true
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 50m
|
|
||||||
memory: 128Mi
|
|
||||||
limits:
|
|
||||||
cpu: 200m
|
|
||||||
memory: 256Mi
|
|
||||||
volumes:
|
|
||||||
- name: sync-script
|
|
||||||
configMap:
|
|
||||||
name: mailu-sync-script
|
|
||||||
defaultMode: 0444
|
|
||||||
- name: vault-scripts
|
|
||||||
configMap:
|
|
||||||
name: mailu-vault-env
|
|
||||||
defaultMode: 0555
|
|
||||||
Loading…
x
Reference in New Issue
Block a user