Compare commits
3 Commits
feature/ho
...
feature/ha
| Author | SHA1 | Date | |
|---|---|---|---|
| db6afaf180 | |||
| 5a2f9a1b88 | |||
| 1c6f18b67c |
@@ -28,7 +28,6 @@ Bootstrap()
|
||||
Gitea()
|
||||
{
|
||||
echo "Installing secret..."
|
||||
kubectl apply -f "secrets/"
|
||||
kubectl apply -f "private/${CLUSTER}/gitea-repo-main.yaml"
|
||||
kubectl apply -f "private/${CLUSTER}/main.key"
|
||||
}
|
||||
|
||||
21
infra/base/homepage/homepage-extra-rbac.yaml
Normal file
21
infra/base/homepage/homepage-extra-rbac.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: homepage-services-reader
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["services"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: homepage-services-reader
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: homepage-services-reader
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: homepage
|
||||
namespace: homepage
|
||||
16
infra/base/homepage/homepage-widget-credentials-sealed.yaml
Normal file
16
infra/base/homepage/homepage-widget-credentials-sealed.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
apiVersion: bitnami.com/v1alpha1
|
||||
kind: SealedSecret
|
||||
metadata:
|
||||
creationTimestamp: null
|
||||
name: homepage-widget-credentials
|
||||
namespace: homepage
|
||||
spec:
|
||||
encryptedData:
|
||||
HOMEPAGE_VAR_GITEA_TOKEN: AgAVN1C931EQpn+sodr3CpjlhORfJVTW8aUr+pGZQb+65Pb8QLGeVGVa7Jv60gDJUX3r+93/jMrEbCOeDL6I4qCz/V35wMCxFZLnXIdkmto0W4MKt6cK8To1/OP7EhQJOGBlSuOFsrwoy+HDtvLIqmyF0nrxhTusm9/NHrw+gCVwSTPhiAX1MCuSOSRWpbXvyNphW8j7aqUaV6ixDt424Fe4alEIShYELcS3EX/VPgsf2p2bhvBRCQOh3LEprkuxSFMuPfCBk06TPTbIN4saNVm0Ke0zW/pxkVNSiIxEnKjOmpPJtacsfWN7du+nQbx276G2qvWrf+iawJVq0Z/SLikA/NUFBL6EjSRfgE3cSOri8sbxsd0AycsFGyp98EM29wE+WOQl52M/lwl02EmCivqkICSO7Jp9pM1ScbmRMa5vcnupsGbVDxhRKLqxhAskt/BXDkRzvHN31gH3YmelES3JuqNMHV0urFxmX2oOX9Pxbtv63csc+zhy1Ui5aoex7TPnLdk7kYLSAE2MSrzT6wHvVhBC5kNnDYVrLehvJrT+eNh0MOLx2wkuJmIOxRAGUyNi5DfDnP6qnvj2aefEymLuOXAIUXH8DbeBtrjsd74HX2hhIfBlPkXvhJR3ks7i5RXjK2/YYHkgJ+nJoW80S9N7ciaRy103g74TNJZt6QzzL5Vb80qZ6yQOD4G081KmTLDmhHjJVIIv9M3nLh2s0IeBV3/Z5qHZmtjN7sSaKAn4MIr5FaH9quhx
|
||||
HOMEPAGE_VAR_GRAFANA_TOKEN: AgBloBlOlP+R/4VizE1CGpj0wyiwU14BemAnuUpld7OvOGc67dwfDPyponkQXjAZg3UU2cZ70A51WUAuVlAr+25Ktlf/FW2OBqj+1BJOCqMMyu+kv026yjX2aB8dKGzlTxgF8aji+j1mC8vP3vvmgI4Zf2HQAH7uFwLfeo8+QnV5EyhcExSS0xDne+VtOP9jNXbPRayry0DdyRVtaeKAiZacO+45oAJWszWOwmoMTg9FZQkLjER6Q0tyI6NnoNObsFCnh56chZTdzBOYtmPnwld1bP2FjoJDqn8AfRwbPTIj7t0eFP7WLUO7GQKpxVl+pFwJLb5xCOw2+HNtp1BhNCu7icuc0P88IlvwzkbN0lXJbYigVOzyjEo8f/al1DXPM4WaB/Nqmr7Mtt8KTRh2WMVTgiX5jsu25D0rGDvY9gqfBBqswkRhCLsG0v0EN32zXj1/52KYdmB7pk/+2lMwSaGMS11MOenHeU1Z95fGxm9f3EGF0E8xlFr4FowgsNwr+tJQqpM0bT/4mZnaQbGWtKPFizMtsfQFm+rHFcNCrGaOuecslmiIJs8lTm18KlrncsGfxNS64tVXk+LvydU0rwybvpg2rQjEWtAl1IQsaaiz96OAlYxxK1MGxN7KE6F8R4kfnWTZ5Fs1KMmd/DOIVBXyCbqXxk8pbekmaIeNSfv92JNZ0QNJWsBa2vgQ24WI2pb4XiR0BvtLpt3BVlZUcSK92SzUblWmYWVMwHYCJkEeEUV1PhYEmyiN+V/Kq5Qb
|
||||
template:
|
||||
metadata:
|
||||
creationTimestamp: null
|
||||
name: homepage-widget-credentials
|
||||
namespace: homepage
|
||||
@@ -2,3 +2,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- homepage.yaml
|
||||
- homepage-widget-credentials-sealed.yaml
|
||||
- homepage-extra-rbac.yaml
|
||||
|
||||
@@ -22,3 +22,4 @@ resources:
|
||||
- karpor
|
||||
- databunker
|
||||
- homepage
|
||||
- vault
|
||||
|
||||
4
infra/base/vault/kustomization.yaml
Normal file
4
infra/base/vault/kustomization.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- vault.yaml
|
||||
43
infra/base/vault/vault.yaml
Normal file
43
infra/base/vault/vault.yaml
Normal file
@@ -0,0 +1,43 @@
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: vault
|
||||
namespace: argocd
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "1"
|
||||
labels:
|
||||
app.kubernetes.io/name: vault
|
||||
app.kubernetes.io/part-of: security
|
||||
app.kubernetes.io/managed-by: argocd
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: default
|
||||
|
||||
sources:
|
||||
- repoURL: https://helm.releases.hashicorp.com
|
||||
chart: vault
|
||||
targetRevision: "0.32.0"
|
||||
helm:
|
||||
releaseName: vault
|
||||
valueFiles:
|
||||
- $values/infra/values/base/vault-values.yaml
|
||||
- $values/infra/values/upc-dev/vault-values.yaml
|
||||
|
||||
- repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
ref: values
|
||||
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
namespace: vault
|
||||
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
allowEmpty: false
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
- Validate=true
|
||||
- ServerSideApply=true
|
||||
@@ -39,11 +39,8 @@ server:
|
||||
gethomepage.dev/name: "ArgoCD"
|
||||
gethomepage.dev/description: "GitOps continuous delivery"
|
||||
gethomepage.dev/group: "DevOps"
|
||||
gethomepage.dev/icon: "argocd"
|
||||
gethomepage.dev/icon: "argo-cd"
|
||||
gethomepage.dev/href: "https://argocd.forteapps.net"
|
||||
gethomepage.dev/widget.type: "argocd"
|
||||
gethomepage.dev/widget.url: "https://argocd.forteapps.net"
|
||||
# gethomepage.dev/widget.key: "{{HOMEPAGE_VAR_ARGOCD_TOKEN}}"
|
||||
tls: true
|
||||
extraArgs:
|
||||
- --insecure
|
||||
|
||||
@@ -122,7 +122,7 @@ ingress:
|
||||
gethomepage.dev/href: "https://git.forteapps.net"
|
||||
gethomepage.dev/widget.type: "gitea"
|
||||
gethomepage.dev/widget.url: "https://git.forteapps.net"
|
||||
# gethomepage.dev/widget.key: "{{HOMEPAGE_VAR_GITEA_TOKEN}}"
|
||||
gethomepage.dev/widget.key: "{{HOMEPAGE_VAR_GITEA_TOKEN}}"
|
||||
hosts:
|
||||
- host: git.forteapps.net
|
||||
paths:
|
||||
|
||||
@@ -9,15 +9,15 @@ ingress:
|
||||
gethomepage.dev/group: "Monitoring"
|
||||
gethomepage.dev/icon: "grafana"
|
||||
gethomepage.dev/href: "https://grafana.forteapps.net"
|
||||
gethomepage.dev/widget.type: "grafana"
|
||||
gethomepage.dev/widget.url: "https://grafana.forteapps.net"
|
||||
# gethomepage.dev/widget.username: "{{HOMEPAGE_VAR_GRAFANA_USER}}"
|
||||
# gethomepage.dev/widget.password: "{{HOMEPAGE_VAR_GRAFANA_PASSWORD}}"
|
||||
tls:
|
||||
- secretName: grafana-tls
|
||||
hosts:
|
||||
- grafana.forteapps.net
|
||||
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 1Gi
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
|
||||
@@ -14,20 +14,24 @@ config:
|
||||
# Scan all namespaces for services with gethomepage.dev/enabled: "true"
|
||||
kubernetes:
|
||||
mode: cluster
|
||||
traefik: true
|
||||
|
||||
settings:
|
||||
title: "Forte Platform"
|
||||
headerStyle: clean
|
||||
layout:
|
||||
Apps:
|
||||
style: row
|
||||
columns: 3
|
||||
Security:
|
||||
style: row
|
||||
columns: 3
|
||||
DevOps:
|
||||
style: row
|
||||
columns: 4
|
||||
Identity:
|
||||
style: row
|
||||
columns: 4
|
||||
columns: 2
|
||||
Monitoring:
|
||||
style: row
|
||||
columns: 4
|
||||
columns: 1
|
||||
|
||||
# Top-of-page cluster overview widget
|
||||
widgets:
|
||||
@@ -39,14 +43,19 @@ config:
|
||||
showLabel: true
|
||||
label: "Cluster"
|
||||
nodes:
|
||||
show: false
|
||||
# Both empty — all entries come from K8s service annotations
|
||||
show: true
|
||||
cpu: true
|
||||
memory: true
|
||||
showLabel: true
|
||||
# In-cluster entries come from K8s service annotations.
|
||||
# External (out-of-cluster) services are listed here statically.
|
||||
bookmarks: []
|
||||
services: []
|
||||
# Widget API credentials (optional — add via SealedSecret + envFrom below)
|
||||
# Homepage reads HOMEPAGE_VAR_* env vars and substitutes them in widget annotations.
|
||||
# Example: gethomepage.dev/widget.key: "{{HOMEPAGE_VAR_GRAFANA_TOKEN}}"
|
||||
# To enable: create a sealed secret and add envFrom to load it.
|
||||
services:
|
||||
- Apps:
|
||||
- Forte Feedback:
|
||||
href: https://feedback.forteapps.net
|
||||
description: Fortes internal feedback app
|
||||
icon: forte
|
||||
|
||||
resources:
|
||||
requests:
|
||||
@@ -55,3 +64,10 @@ resources:
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 256Mi
|
||||
|
||||
env:
|
||||
- name: HOMEPAGE_ALLOWED_HOSTS
|
||||
value: start.forteapps.net
|
||||
envFrom:
|
||||
- secretRef:
|
||||
name: homepage-widget-credentials
|
||||
|
||||
@@ -21,9 +21,9 @@ ingress:
|
||||
gethomepage.dev/enabled: "true"
|
||||
gethomepage.dev/name: "Keycloak"
|
||||
gethomepage.dev/description: "Identity & access management"
|
||||
gethomepage.dev/group: "Identity"
|
||||
gethomepage.dev/group: "Security"
|
||||
gethomepage.dev/icon: "keycloak"
|
||||
gethomepage.dev/href: "https://id.forteapps.net"
|
||||
gethomepage.dev/href: "https://id.forteapps.net/admin/forte-test/console/"
|
||||
|
||||
metrics:
|
||||
enabled: true
|
||||
|
||||
36
infra/values/base/vault-values.yaml
Normal file
36
infra/values/base/vault-values.yaml
Normal file
@@ -0,0 +1,36 @@
|
||||
# HashiCorp Vault Helm Chart Values
|
||||
# Chart: hashicorp/vault v0.32.0
|
||||
|
||||
server:
|
||||
standalone:
|
||||
enabled: true
|
||||
|
||||
dataStorage:
|
||||
enabled: true
|
||||
size: 5Gi
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 250m
|
||||
memory: 256Mi
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
ingressClassName: traefik
|
||||
pathType: Prefix
|
||||
activeService: true
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||
gethomepage.dev/enabled: "true"
|
||||
gethomepage.dev/name: "Vault"
|
||||
gethomepage.dev/description: "Secrets management"
|
||||
gethomepage.dev/group: "Security"
|
||||
gethomepage.dev/icon: "vault"
|
||||
gethomepage.dev/href: "https://vault.forteapps.net"
|
||||
|
||||
ui:
|
||||
enabled: true
|
||||
serviceType: ClusterIP
|
||||
@@ -1,3 +1,10 @@
|
||||
ingress:
|
||||
enabled: true
|
||||
host: databunker.forteapps.net
|
||||
annotations:
|
||||
gethomepage.dev/enabled: "true"
|
||||
gethomepage.dev/name: "Databunker"
|
||||
gethomepage.dev/description: "Secure Database for PII and PCI Records"
|
||||
gethomepage.dev/group: "Security"
|
||||
gethomepage.dev/icon: "adminer"
|
||||
gethomepage.dev/href: "https://databunker.forteapps.net"
|
||||
|
||||
9
infra/values/upc-dev/vault-values.yaml
Normal file
9
infra/values/upc-dev/vault-values.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
server:
|
||||
ingress:
|
||||
hosts:
|
||||
- host: vault.forteapps.net
|
||||
paths: []
|
||||
tls:
|
||||
- secretName: vault-tls
|
||||
hosts:
|
||||
- vault.forteapps.net
|
||||
Reference in New Issue
Block a user