Compare commits
2 Commits
848288af7a
...
f3fde15002
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f3fde15002 | ||
|
|
42d2894ed1 |
@@ -1,9 +1,8 @@
|
|||||||
# Apache Guacamole - Blue Jay Remote Access
|
# Apache Guacamole - Remote Desktop Gateway
|
||||||
# FlowerCore Infrastructure Gateway
|
# MySQL 8 + guacd + guacamole web
|
||||||
# MySQL 8 + guacd + guacamole web (Blue Jay branded)
|
|
||||||
# ArgoCD managed - BlueJay Lab
|
# ArgoCD managed - BlueJay Lab
|
||||||
# ALL credentials sourced from 1Password via OnePasswordItem CRD (guacamole-credentials)
|
# ALL credentials sourced from 1Password via OnePasswordItem CRD (guacamole-credentials)
|
||||||
# Custom image: fc-guacamole:bluejay (Blue Jay branding + 1Password vault extension)
|
# Fields: username, password, DB-User, DB-Password, DB-Root-Password, DB-Name, URL
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Namespace
|
kind: Namespace
|
||||||
@@ -110,6 +109,7 @@ spec:
|
|||||||
clusterIP: None
|
clusterIP: None
|
||||||
---
|
---
|
||||||
# DB schema init Job
|
# DB schema init Job
|
||||||
|
# Generates the MySQL schema and pipes it into the database
|
||||||
apiVersion: batch/v1
|
apiVersion: batch/v1
|
||||||
kind: Job
|
kind: Job
|
||||||
metadata:
|
metadata:
|
||||||
@@ -141,7 +141,9 @@ spec:
|
|||||||
- sh
|
- sh
|
||||||
- -c
|
- -c
|
||||||
- |
|
- |
|
||||||
|
# Generate schema SQL
|
||||||
/opt/guacamole/bin/initdb.sh --mysql > /tmp/initdb.sql
|
/opt/guacamole/bin/initdb.sh --mysql > /tmp/initdb.sql
|
||||||
|
# Apply schema (ignore errors if tables already exist)
|
||||||
mysql -h guac-mysql -u root -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE" < /tmp/initdb.sql || true
|
mysql -h guac-mysql -u root -p"$MYSQL_ROOT_PASSWORD" "$MYSQL_DATABASE" < /tmp/initdb.sql || true
|
||||||
env:
|
env:
|
||||||
- name: MYSQL_ROOT_PASSWORD
|
- name: MYSQL_ROOT_PASSWORD
|
||||||
@@ -174,7 +176,6 @@ spec:
|
|||||||
app: guacd
|
app: guacd
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
serviceAccountName: guacd-exec
|
|
||||||
- name: guacd
|
- name: guacd
|
||||||
image: guacamole/guacd:latest
|
image: guacamole/guacd:latest
|
||||||
ports:
|
ports:
|
||||||
@@ -206,48 +207,7 @@ spec:
|
|||||||
targetPort: 4822
|
targetPort: 4822
|
||||||
name: guacd
|
name: guacd
|
||||||
---
|
---
|
||||||
# Guacamole Properties ConfigMap
|
# Guacamole Web Application
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: guacamole-properties
|
|
||||||
namespace: guacamole
|
|
||||||
labels:
|
|
||||||
app: guacamole
|
|
||||||
data:
|
|
||||||
guacamole.properties: |
|
|
||||||
# Blue Jay Remote Access — Guacamole Configuration
|
|
||||||
# MySQL/guacd settings provided via env vars — do NOT duplicate here
|
|
||||||
|
|
||||||
# 1Password Vault Integration
|
|
||||||
1password-connect-url: http://onepassword-connect.onepassword-system.svc.cluster.local:8080
|
|
||||||
1password-connect-token: placeholder-configure-via-secret
|
|
||||||
1password-vault-id: qaphopopkryhbg353ukzhhuqoq
|
|
||||||
|
|
||||||
# Extension Priority
|
|
||||||
extension-priority: mysql, ban, bluejay, 1password-vault, *
|
|
||||||
|
|
||||||
# Ban (brute force)
|
|
||||||
ban-max-invalid-attempts: 5
|
|
||||||
ban-address-duration: 300000
|
|
||||||
ban-max-addresses: 1000
|
|
||||||
|
|
||||||
# TOTP
|
|
||||||
totp-issuer: Blue Jay Remote Access
|
|
||||||
totp-digits: 6
|
|
||||||
totp-period: 30
|
|
||||||
totp-mode: sha256
|
|
||||||
|
|
||||||
# Session Recording
|
|
||||||
recording-search-path: /var/lib/guacamole/recordings
|
|
||||||
|
|
||||||
# Logging
|
|
||||||
log-level: info
|
|
||||||
|
|
||||||
# API Token Expiry
|
|
||||||
api-session-timeout: 60
|
|
||||||
---
|
|
||||||
# Guacamole Web Application — Blue Jay branded
|
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
@@ -267,8 +227,7 @@ spec:
|
|||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- name: guacamole
|
- name: guacamole
|
||||||
image: localhost/fc-guacamole:bluejay
|
image: guacamole/guacamole:latest
|
||||||
imagePullPolicy: Never
|
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 8080
|
- containerPort: 8080
|
||||||
name: http
|
name: http
|
||||||
@@ -296,10 +255,6 @@ spec:
|
|||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: guacamole-credentials
|
name: guacamole-credentials
|
||||||
key: DB-Password
|
key: DB-Password
|
||||||
volumeMounts:
|
|
||||||
- name: guac-properties
|
|
||||||
mountPath: /etc/guacamole/guacamole.properties
|
|
||||||
subPath: guacamole.properties
|
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
memory: 256Mi
|
memory: 256Mi
|
||||||
@@ -319,10 +274,6 @@ spec:
|
|||||||
port: 8080
|
port: 8080
|
||||||
initialDelaySeconds: 60
|
initialDelaySeconds: 60
|
||||||
periodSeconds: 5
|
periodSeconds: 5
|
||||||
volumes:
|
|
||||||
- name: guac-properties
|
|
||||||
configMap:
|
|
||||||
name: guacamole-properties
|
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Service
|
kind: Service
|
||||||
@@ -338,6 +289,7 @@ spec:
|
|||||||
name: http
|
name: http
|
||||||
---
|
---
|
||||||
# Traefik addPrefix middleware
|
# Traefik addPrefix middleware
|
||||||
|
# External URL guac.iamworkin.lan/ gets prefix /guacamole added
|
||||||
apiVersion: traefik.io/v1alpha1
|
apiVersion: traefik.io/v1alpha1
|
||||||
kind: Middleware
|
kind: Middleware
|
||||||
metadata:
|
metadata:
|
||||||
@@ -381,7 +333,8 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
secretName: guacamole-tls
|
secretName: guacamole-tls
|
||||||
---
|
---
|
||||||
# 1Password secret sync
|
# 1Password secret sync — creates guacamole-credentials K8s Secret
|
||||||
|
# Fields: username, password, DB-User, DB-Password, DB-Root-Password, DB-Name, URL
|
||||||
apiVersion: onepassword.com/v1
|
apiVersion: onepassword.com/v1
|
||||||
kind: OnePasswordItem
|
kind: OnePasswordItem
|
||||||
metadata:
|
metadata:
|
||||||
@@ -389,38 +342,3 @@ metadata:
|
|||||||
namespace: guacamole
|
namespace: guacamole
|
||||||
spec:
|
spec:
|
||||||
itemPath: vaults/IAmWorkin/items/Guacamole
|
itemPath: vaults/IAmWorkin/items/Guacamole
|
||||||
---
|
|
||||||
# RBAC for guacd K8s exec protocol
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: guacd-exec
|
|
||||||
namespace: guacamole
|
|
||||||
---
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
name: guacd-pod-exec
|
|
||||||
rules:
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["pods"]
|
|
||||||
verbs: ["get", "list"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["pods/exec"]
|
|
||||||
verbs: ["create"]
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["namespaces"]
|
|
||||||
verbs: ["list"]
|
|
||||||
---
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
metadata:
|
|
||||||
name: guacd-pod-exec
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: guacd-exec
|
|
||||||
namespace: guacamole
|
|
||||||
roleRef:
|
|
||||||
kind: ClusterRole
|
|
||||||
name: guacd-pod-exec
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -132,7 +132,7 @@ spec:
|
|||||||
topologyKey: kubernetes.io/hostname
|
topologyKey: kubernetes.io/hostname
|
||||||
containers:
|
containers:
|
||||||
- name: telephony-web
|
- name: telephony-web
|
||||||
image: localhost/fc-telephony-web:latest
|
image: localhost/fc-telephony-web:v20260324d
|
||||||
imagePullPolicy: Never
|
imagePullPolicy: Never
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 5100
|
- containerPort: 5100
|
||||||
|
|||||||
Reference in New Issue
Block a user