295 lines
8.5 KiB
YAML
295 lines
8.5 KiB
YAML
image:
|
|
repository: tccr.io/truecharts/guacamole-client
|
|
pullPolicy: IfNotPresent
|
|
tag: v1.4.0@sha256:43f7b0575173f509b5215a89170dfea80ea07f0b2bfed405882a4bc7ec9dfa52
|
|
|
|
podSecurityContext:
|
|
runAsUser: 1001
|
|
runAsGroup: 1001
|
|
|
|
securityContext:
|
|
readOnlyRootFilesystem: false
|
|
|
|
service:
|
|
main:
|
|
ports:
|
|
main:
|
|
port: 9998
|
|
targetPort: 8080
|
|
|
|
env:
|
|
POSTGRES_DATABASE: "{{ .Values.postgresql.postgresqlDatabase }}"
|
|
POSTGRES_USER: "{{ .Values.postgresql.postgresqlUsername }}"
|
|
POSTGRES_PORT: 5432
|
|
GUACD_HOSTNAME: "localhost"
|
|
GUACD_PORT: 4822
|
|
|
|
envFrom:
|
|
- configMapRef:
|
|
name: guacamole-client-env
|
|
|
|
totp:
|
|
TOTP_ENABLED: false
|
|
# TOTP_ISSUER: "Apache Guacamole"
|
|
# TOTP_DIGITS: "6"
|
|
# TOTP_PERIOD: "30"
|
|
# TOTP_MODE: "sha1"
|
|
|
|
header:
|
|
HEADER_ENABLED: false
|
|
# HTTP_AUTH_HEADER: "REMOTE_USER"
|
|
|
|
api: {}
|
|
# API_SESSION_TIMEOUT: "60"
|
|
|
|
json: {}
|
|
# JSON_SECRET_KEY: "random32charkey"
|
|
# JSON_TRUSTED_NETWORKS: "127.0.0.0/8, 10.0.0.0/8"
|
|
|
|
duo: {}
|
|
# DUO_API_HOSTNAME: "api-XXXXXXXX.duosecurity.com"
|
|
# DUO_INTEGRATION_KEY: "exactly20charkey"
|
|
# DUO_SECRET_KEY: "exactly40charkey"
|
|
# DUO_APPLICATION_KEY: "atleast40charkey"
|
|
|
|
cas: {}
|
|
# CAS_AUTHORIZATION_ENDPOINT: ""
|
|
# CAS_REDIRECT_URI: ""
|
|
# CAS_CLEARPASS_KEY: ""
|
|
# CAS_GROUP_ATTRIBUTE: ""
|
|
# CAS_GROUP_FORMAT: "plain"
|
|
# CAS_GROUP_LDAP_BASE_DN: ""
|
|
# CAS_GROUP_LDAP_ATTRIBUTE: ""
|
|
|
|
openid: {}
|
|
# OPENID_AUTHORIZATION_ENDPOINT: ""
|
|
# OPENID_JWKS_ENDPOINT: ""
|
|
# OPENID_ISSUER: ""
|
|
# OPENID_CLIENT_ID: ""
|
|
# OPENID_REDIRECT_URI: ""
|
|
# OPENID_USERNAME_CLAIM_TYPE: "email"
|
|
# OPENID_GROUPS_CLAIM_TYPE: "groups"
|
|
# OPENID_MAX_TOKEN_VALIDITY: "300"
|
|
|
|
radius: {}
|
|
# RADIUS_HOSTNAME: "localhost"
|
|
# RADIUS_AUTH_PORT: "1812"
|
|
# RADIUS_SHARED_SECRET: ""
|
|
# RADIUS_AUTH_PROTOCOL: "eap-tls"
|
|
# RADIUS_KEY_FILE: ""
|
|
# RADIUS_KEY_TYPE: "pkcs12"
|
|
# RADIUS_KEY_PASSWORD: ""
|
|
# RADIUS_CA_FILE: ""
|
|
# RADIUS_CA_TYPE: "pem"
|
|
# RADIUS_CA_PASSWORD: ""
|
|
# RADIUS_TRUST_ALL: "false"
|
|
# RADIUS_RETRIES: "5"
|
|
# RADIUS_TIMEOUT: "60"
|
|
# RADIUS_EAP_TTLS_INNER_PROTOCOL: "eap-tls"
|
|
|
|
ldap: {}
|
|
# LDAP_HOSTNAME: "localhost"
|
|
# LDAP_USER_BASE_DN: ""
|
|
# LDAP_PORT: "389"
|
|
# LDAP_ENCRYPTION_METHOD: "none"
|
|
# LDAP_MAX_SEARCH_RESULTS: "1000"
|
|
# LDAP_SEARCH_BIND_DN: ""
|
|
# LDAP_USER_ATTRIBUTES: ""
|
|
# LDAP_SEARCH_BIND_PASSWORD: ""
|
|
# LDAP_USERNAME_ATTRIBUTE: ""
|
|
# LDAP_MEMBER_ATTRIBUTE: ""
|
|
# LDAP_USER_SEARCH_FILTER: "(objectClass=*)"
|
|
# LDAP_CONFIG_BASE_DN: ""
|
|
# LDAP_GROUP_BASE_DN: ""
|
|
# LDAP_GROUP_SEARCH_FILTER: "(objectClass=*)"
|
|
# LDAP_MEMBER_ATTRIBUTE_TYPE: "dn"
|
|
# LDAP_GROUP_NAME_ATTRIBUTE: "cn"
|
|
# LDAP_DEREFERENCE_ALIASES: "never"
|
|
# LDAP_FOLLOW_REFERRALS: "false"
|
|
# LDAP_MAX_REFERRAL_HOPS: "5"
|
|
# LDAP_OPERATION_TIMEOUT: "30"
|
|
|
|
postgresql:
|
|
enabled: true
|
|
existingSecret: "dbcreds"
|
|
postgresqlUsername: guacamole
|
|
postgresqlDatabase: guacamole
|
|
|
|
envValueFrom:
|
|
POSTGRES_HOSTNAME:
|
|
secretKeyRef:
|
|
name: dbcreds
|
|
key: plainhost
|
|
POSTGRES_PASSWORD:
|
|
secretKeyRef:
|
|
name: dbcreds
|
|
key: postgresql-password
|
|
|
|
probes:
|
|
liveness:
|
|
path: "/guacamole"
|
|
readiness:
|
|
path: "/guacamole"
|
|
startup:
|
|
path: "/guacamole"
|
|
|
|
persistence:
|
|
initdbdata:
|
|
enabled: true
|
|
mountPath: "/initdbdata"
|
|
# Both temphack and temphackalso will be removed on the next image release
|
|
temphack:
|
|
enabled: true
|
|
mountPath: "/opt/guacamole/postgresql-hack"
|
|
temphackalso:
|
|
enabled: true
|
|
mountPath: "/opt/guacamole/postgresql"
|
|
|
|
initContainers:
|
|
1-creat-initdb-file:
|
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
|
volumeMounts:
|
|
- name: initdbdata
|
|
mountPath: "/initdbdata"
|
|
command: ["/bin/sh", "-c"]
|
|
args:
|
|
- >
|
|
echo "Creating initdb.sql file...";
|
|
/opt/guacamole/bin/initdb.sh --postgres > /initdbdata/initdb.sql;
|
|
if [ -e /initdbdata/initdb.sql ];
|
|
then
|
|
echo "Init file created successfully!";
|
|
exit 0;
|
|
else
|
|
echo "Init file failed to create.";
|
|
exit 1;
|
|
fi;
|
|
2-initdb:
|
|
image: "{{ .Values.postgresqlImage.repository }}:{{ .Values.postgresqlImage.tag }}"
|
|
env:
|
|
- name: POSTGRES_DATABASE
|
|
value: "{{ .Values.postgresql.postgresqlDatabase }}"
|
|
- name: POSTGRES_USER
|
|
value: "{{ .Values.postgresql.postgresqlUsername }}"
|
|
- name: POSTGRES_PORT
|
|
value: "5432"
|
|
- name: POSTGRES_HOSTNAME
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: dbcreds
|
|
key: plainhost
|
|
- name: PGPASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: dbcreds
|
|
key: postgresql-password
|
|
volumeMounts:
|
|
- name: initdbdata
|
|
mountPath: "/initdbdata"
|
|
command: ["/bin/sh", "-c"]
|
|
args:
|
|
- >
|
|
echo "Waiting for DB to be ready...";
|
|
DBREADY=0;
|
|
for i in {1..10};
|
|
do pg_isready -t 5 -h $POSTGRES_HOSTNAME -d $POSTGRES_DATABASE -U $POSTGRES_USER -p $POSTGRES_PORT;
|
|
if [ $? -eq 0 ];
|
|
then
|
|
echo "DB is ready!";
|
|
DBREADY=1;
|
|
break;
|
|
else
|
|
echo "DB not ready yet.";
|
|
fi;
|
|
echo "Waiting...";
|
|
sleep 5;
|
|
done;
|
|
if [ $DBREADY -eq 1 ];
|
|
then
|
|
psql -h $POSTGRES_HOSTNAME -d $POSTGRES_DATABASE -U $POSTGRES_USER -p $POSTGRES_PORT -q -c 'SELECT * FROM public.guacamole_user';
|
|
if [ $? -eq 0 ];
|
|
then
|
|
echo "DB already initialized. Skipping...";
|
|
else
|
|
echo "Initializing DB's schema...";
|
|
psql -h $POSTGRES_HOSTNAME -d $POSTGRES_DATABASE -U $POSTGRES_USER -p $POSTGRES_PORT -a -w -f /initdbdata/initdb.sql;
|
|
if [ $? -eq 0 ];
|
|
then
|
|
echo "DB's schema initialized successfully!";
|
|
exit 0;
|
|
else
|
|
echo "DB's schema failed to initialize.";
|
|
exit 1;
|
|
fi;
|
|
fi;
|
|
else
|
|
echo "DB failed to start.";
|
|
fi;
|
|
|
|
# Until they release an image with the updated driver, we need to manually replace it.
|
|
# https://issues.apache.org/jira/browse/GUACAMOLE-1433
|
|
# https://github.com/apache/guacamole-client/pull/655
|
|
# Both 3-temp-hach and 4-temp-hack will be removed on the next image release
|
|
3-temp-hack:
|
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
|
securityContext:
|
|
runAsUser: 1001
|
|
runAsGroup: 1001
|
|
volumeMounts:
|
|
- name: temphack
|
|
mountPath: "/opt/guacamole/postgresql-hack"
|
|
command: ["/bin/sh", "-c"]
|
|
args:
|
|
- >
|
|
echo "Checing postgresql driver version...";
|
|
if [ -e /opt/guacamole/postgresql/postgresql-42.2.24.jre7.jar ];
|
|
then
|
|
echo "Version found is correct.";
|
|
exit 0;
|
|
else
|
|
echo "Old version found. Will try to download a known-to-work version.";
|
|
echo "Downloading (postgresql-42.2.24.jre7.jar)...";
|
|
curl -L "https://jdbc.postgresql.org/download/postgresql-42.2.24.jre7.jar" > "/opt/guacamole/postgresql-hack/postgresql-42.2.24.jre7.jar";
|
|
if [ -e /opt/guacamole/postgresql-hack/postgresql-42.2.24.jre7.jar ];
|
|
then
|
|
echo "Downloaded successfully!";
|
|
cp -r /opt/guacamole/postgresql/* /opt/guacamole/postgresql-hack/;
|
|
if [ -e /opt/guacamole/postgresql-hack/postgresql-9.4-1201.jdbc41.jar ];
|
|
then
|
|
echo "Removing old version... (postgresql-9.4-1201.jdbc41.jar)";
|
|
rm "/opt/guacamole/postgresql-hack/postgresql-9.4-1201.jdbc41.jar";
|
|
if [ $? -eq 0 ];
|
|
then
|
|
echo "Removed successfully!";
|
|
else
|
|
echo "Failed to remove.";
|
|
exit 1;
|
|
fi;
|
|
fi;
|
|
else
|
|
echo "Failed to download.";
|
|
exit 1;
|
|
fi;
|
|
fi;
|
|
4-temp-hack:
|
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
|
securityContext:
|
|
runAsUser: 1001
|
|
runAsGroup: 1001
|
|
volumeMounts:
|
|
- name: temphack
|
|
mountPath: "/opt/guacamole/postgresql-hack"
|
|
- name: temphackalso
|
|
mountPath: "/opt/guacamole/postgresql"
|
|
command: ["/bin/sh", "-c"]
|
|
args:
|
|
- >
|
|
echo "Copying postgres driver into the final destination.";
|
|
cp -r /opt/guacamole/postgresql-hack/* /opt/guacamole/postgresql/;
|
|
if [ -e /opt/guacamole/postgresql/postgresql-42.2.24.jre7.jar ];
|
|
then
|
|
echo "Driver copied successfully!";
|
|
else
|
|
echo "Failed to copy the driver";
|
|
fi;
|