Compare commits

...

6 commits

Author SHA1 Message Date
5021006e7d
argo: add aarons age key
All checks were successful
ci/woodpecker/pr/dashboard Pipeline was successful
ci/woodpecker/push/dashboard Pipeline was successful
2024-09-30 19:57:56 +02:00
8236d7a1f3
app-files/core-deployments.yaml: replace argocd-ingress with the entire argo deployment
All checks were successful
ci/woodpecker/push/dashboard Pipeline was successful
ci/woodpecker/pr/dashboard Pipeline was successful
2024-09-30 19:12:41 +02:00
dd686f7283
argo: add argo sops key & kustomization file 2024-09-30 19:10:44 +02:00
f87f57fc94
renovate.json: enable kubernetes update handler 2024-09-30 19:04:49 +02:00
8986401675
argo: deploy argo with helm 2024-09-30 18:58:24 +02:00
b2d0614d8b
argo/cm.yaml: enable argocd kustomize plugins 2024-09-30 18:56:50 +02:00
10 changed files with 143 additions and 57 deletions

2
.gitignore vendored
View file

@ -1,4 +1,4 @@
**/secret.yaml
**/temp.yaml **/temp.yaml
**/credentials **/credentials
**/.DS_Store **/.DS_Store
*.agekey

13
.sops.yaml Normal file
View file

@ -0,0 +1,13 @@
---
keys:
- &argo age1mraede6gqxkh2rkeq5fjrcflp7emenl2qn885asxvtx5erga2pdqujuexz
- &tom age1s9nvc4rxj3kaj4apmzzn8fmjrudrvdhgu70rg04we9hyse5aadsq7kmckn
- &aaron age1z5wtjmk0jw0j9qz9k5rrnp30nzqxrl3v6wgl7eryvqus28zekp4qpx9jc2
creation_rules:
- path_regex: .*
encrypted_regex: ^(data|stringData)$
key_groups:
- age:
- *argo
- *tom
- *aaron

View file

@ -32,14 +32,26 @@ spec:
apiVersion: argoproj.io/v1alpha1 apiVersion: argoproj.io/v1alpha1
kind: Application kind: Application
metadata: metadata:
name: argocd-ingress name: argocd
namespace: argocd namespace: argocd
spec: spec:
project: default project: default
source: sources:
repoURL: https://git.ar21.de/yolokube/core-deployments.git - repoURL: https://argoproj.github.io/argo-helm
chart: argo-cd
targetRevision: 7.6.6
helm:
releaseName: argo
valueFiles:
- $values/argo/values.yaml
- repoURL: https://git.ar21.de/yolokube/core-deployments.git
targetRevision: HEAD
ref: values
- repoURL: https://git.ar21.de/yolokube/core-deployments.git
targetRevision: HEAD targetRevision: HEAD
path: argo path: argo
kustomize:
buildOptions: "--enable-alpha-plugins --enable-exec"
destination: destination:
server: https://kubernetes.default.svc server: https://kubernetes.default.svc
namespace: argocd namespace: argocd
@ -47,7 +59,8 @@ spec:
syncOptions: syncOptions:
- CreateNamespace=true - CreateNamespace=true
automated: automated:
prune: true selfHeal: true
prune: false
--- ---
apiVersion: argoproj.io/v1alpha1 apiVersion: argoproj.io/v1alpha1
kind: Application kind: Application

View file

@ -9,6 +9,7 @@ metadata:
app.kubernetes.io/name: argocd-cm app.kubernetes.io/name: argocd-cm
app.kubernetes.io/part-of: argocd app.kubernetes.io/part-of: argocd
data: data:
kustomize.buildOptions: "--enable-alpha-plugins --enable-exec"
statusbadge.enabled: "true" statusbadge.enabled: "true"
resource.customizations: | resource.customizations: |
networking.k8s.io/Ingress: networking.k8s.io/Ingress:
@ -33,28 +34,3 @@ data:
# Optional set of OIDC scopes to request. If omitted, defaults to: ["openid", "profile", "email", "groups"] # Optional set of OIDC scopes to request. If omitted, defaults to: ["openid", "profile", "email", "groups"]
requestedScopes: ["openid", "profile", "email"] requestedScopes: ["openid", "profile", "email"]
logoutURL: https://auth.ar21.de/application/o/yolokube-argocd/end-session/ logoutURL: https://auth.ar21.de/application/o/yolokube-argocd/end-session/
---
kind: ConfigMap
apiVersion: v1
metadata:
name: argocd-cmd-params-cm
namespace: argocd
labels:
app.kubernetes.io/instance: argocd-ingress
app.kubernetes.io/name: argocd-cm
app.kubernetes.io/part-of: argocd
data:
server.insecure: "true"
---
kind: ConfigMap
apiVersion: v1
metadata:
name: argocd-rbac-cm
namespace: argocd
labels:
app.kubernetes.io/instance: argocd-ingress
app.kubernetes.io/name: argocd-cm
app.kubernetes.io/part-of: argocd
data:
policy.csv: |
g, yolokube-general, role:admin

View file

@ -1,24 +0,0 @@
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/tls-acme: "true"
name: argocd-ingress
namespace: argocd
spec:
rules:
- host: "argo.services.yolokube.de"
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: argocd-server
port:
number: 80
tls:
- hosts:
- argo.services.yolokube.de
secretName: argocd-tls-key

6
argo/kustomization.yaml Normal file
View file

@ -0,0 +1,6 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
generators:
- ./secret-generator.yaml
resources:
- ./cm.yaml

View file

@ -0,0 +1,10 @@
apiVersion: viaduct.ai/v1
kind: ksops
metadata:
name: secret-generator
annotations:
config.kubernetes.io/function: |
exec:
path: ksops
files:
- ./sops-secret.yaml

37
argo/sops-secret.yaml Normal file
View file

@ -0,0 +1,37 @@
apiVersion: v1
kind: Secret
metadata:
name: sops-age
namespace: argocd
type: Opaque
data:
keys.txt: ENC[AES256_GCM,data:EQvfQQy6rco2iqbVLn/3jxsNTcU1tbfCkkAP9D3ggD/MJcIaQ3ZdxonbnnYUS34mmhEwba9R3vn80EQCj0M5jU5ucMeU+E25HbQAJFPBI2pvXuRQy8nMVtRwgrJZdaFKBUzGjtNrSj04y1y6QdIsIMqkn8byi5RthJ86IYo4if4WNPJp1EyiM/3+PTn/fLT/QtzU83LUz8D/hPTtUYJCxyeHEYBuC/niHfT1NgqsBRspI13bPUmxBjmtew1docQL61QSRdflopD7vxb9b6elQ/Zj4vs/TK0ILT5do1KkRGnZT8hRTnqnArcLdTr8xR5gVlIFFInncvzdLPsN,iv:JvuOYExMwMBlgM/W83ttlnvUPkuFPVvkBNwzumBxpLU=,tag:AXJOv4ZO0znONF9VG+5j3g==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1mraede6gqxkh2rkeq5fjrcflp7emenl2qn885asxvtx5erga2pdqujuexz
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxeitkMzBjTGxSM09RTnFB
N0UxRytKMmszMHhKVFY3b0pNcHIwWHcwbUNjClY4cHMvemhzRkNXRVhtcVRtN1c4
OGtaWFkwTWYwNHNTL3lMVmlYOGREYTAKLS0tIEZxNm1IMmFxdzB2dUhvdlNsUUxl
UHdKaW8ydkpoLzQ0dEVyc0plaVhCTlUK6PF6CVvLDDTIozhRYHZxgcNeeKQPJAPr
Ay/35PSwzZ4RVJyAKqyhkkQSXkwLsytV1AC527NEZbmBniGgioyFHA==
-----END AGE ENCRYPTED FILE-----
- recipient: age1s9nvc4rxj3kaj4apmzzn8fmjrudrvdhgu70rg04we9hyse5aadsq7kmckn
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXZ1BmeUNLT1RQR3cybzQx
aTRJVXkzQTFmNVowTmpVckJHdmRWTlVtSEV3Cm1oakp0c0NoRnF5c3pIb01ja2g3
UE1hUXV2bmNqeFlPM2tsY0J0UndYVTgKLS0tIDRBaGVBK0xlSFVFVVdXZjQ1RXhQ
UUo1Q0lXVjNGWllzYnlJS29qZHdZZGsK8Z1JWhY9HSY5xm6gZaT3TB2eqMysNxgL
MDk4gaQq8qbrMF/jN40ljt1ZgtAlY2gQKFyqygUNiwgHxN8iC2upng==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2024-09-30T17:09:05Z"
mac: ENC[AES256_GCM,data:Qvm2+3NQy9oywWveAhJdvnmg9tQzdCwjQSczYAS2j5Y0nPw3VeCT27Efm0A591fsvUhjukcDnX2ogEkKtPPJgq5VAJtGLXh2akAdjFxYxm8UPkgw8e6ev/R4kQQdTQ0if8qeeIO3CHEvAKhmrGimbg4DDHgPvyGoiHtTbBBFFr0=,iv:EDmPxMOXpHdyTmGbHFYAholnzi+WLc+GBXmu0k3GAuE=,tag:ThMbGppwFUocX7g2bsWI7w==,type:str]
pgp: []
encrypted_regex: ^(data|stringData)$
version: 3.9.0

51
argo/values.yaml Normal file
View file

@ -0,0 +1,51 @@
global:
domain: argo.services.yolokube.de
configs:
cm:
create: false
params:
create: true
server.insecure: true
rbac:
create: true
policy.csv: |
g, yolokube-general, role:admin
server:
ingress:
enabled: true
annotations:
kubernetes.io/tls-acme: "true"
tls: true
repoServer:
volumes:
- name: custom-tools
emptyDir: {}
- name: sops-key
secret:
secretName: sops-age
initContainers:
- name: install-ksops
image: viaductoss/ksops:v4.3.2
command: ["/bin/sh", "-c"]
args:
- echo "Installing KSOPS...";
mv ksops /custom-tools/;
mv kustomize /custom-tools/;
echo "Done.";
volumeMounts:
- mountPath: /custom-tools
name: custom-tools
volumeMounts:
- mountPath: /usr/local/bin/kustomize
name: custom-tools
subPath: kustomize
- mountPath: /usr/local/bin/ksops
name: custom-tools
subPath: ksops
- mountPath: /.config/sops/age
name: sops-key
env:
- name: XDG_CONFIG_HOME
value: /.config
- name: SOPS_AGE_KEY_FILE
value: /.config/sops/age/keys.txt

View file

@ -5,6 +5,10 @@
"argocd": { "argocd": {
"fileMatch": ["^app-files/core-deployments\\.yaml$"] "fileMatch": ["^app-files/core-deployments\\.yaml$"]
}, },
"kubernetes": {
"enabled": true,
"fileMatch": ["\\.yaml$"]
},
"packageRules": [ "packageRules": [
{ {
"matchPackageNames": ["kube-prometheus-stack"], "matchPackageNames": ["kube-prometheus-stack"],