Skip to content

Commit

Permalink
In-progress Kube
Browse files Browse the repository at this point in the history
  • Loading branch information
doctorpangloss committed Feb 27, 2021
1 parent 983e607 commit 9b23e14
Show file tree
Hide file tree
Showing 74 changed files with 2,635 additions and 351 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Expand Up @@ -32,7 +32,7 @@ cards/out

*.egg-info
__pycache__/
dist/
python/dist/

.ipynb_checkpoints/
dump/
Expand Down
2 changes: 1 addition & 1 deletion buildSrc/src/main/groovy/UnityTask.groovy
Expand Up @@ -22,7 +22,7 @@ class UnityTask extends AbstractExecTask<UnityTask> {

@Override
Task configure(Closure closure) {
dependsOn += ':unityclient:generateSwaggerCsharp'
dependsOn += ':spellsource-protos:generateProto'
unity3d = project.gradle.sharedServices.registerIfAbsent("unity3d", BuildService) {
maxParallelUsages = 1
}
Expand Down
3 changes: 0 additions & 3 deletions docker/root/etc/service/jaegeragent/run

This file was deleted.

4 changes: 0 additions & 4 deletions docker/root/etc/service/java/run

This file was deleted.

5 changes: 3 additions & 2 deletions gradle.properties
Expand Up @@ -6,12 +6,13 @@ jacksonVersion=2.11.3
jacksonDatabindVersion=2.11.3
spellsourceVersion=0.8.89
jaegerVersion=1.5.0
vertxVersion=4.0.0
vertxVersion=4.0.2
junitVersion=5.6.2
shadowPluginVersion=6.1.0
guavaVersion=26.0-jre
keycloakVersion=12.0.1
databasesandlifeVersion=14.0.0
micrometerVersion=1.6.2
jmhVersion=1.25
testcontainersVersion=1.15.1
testcontainersVersion=1.15.1
rmeePluginsVersion=1.1.20200614081240
3 changes: 1 addition & 2 deletions quasar-core/src/main/resources/META-INF/suspendable-supers
Expand Up @@ -12,9 +12,8 @@ co.paralleluniverse.concurrent.util.ConcurrentSkipListPriorityQueue.clone()Lco/p
co.paralleluniverse.concurrent.util.DelayQueue.poll(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Delayed;
co.paralleluniverse.concurrent.util.DelayQueue.take()Ljava/util/concurrent/Delayed;
co.paralleluniverse.concurrent.util.SingleConsumerNonblockingProducerDelayQueue.poll()Ljava/util/concurrent/Delayed;
co.paralleluniverse.concurrent.util.SingleConsumerNonblockingProducerDelayQueue.poll(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Delayed;
co.paralleluniverse.concurrent.util.SingleConsumerNonblockingProducerQueue.poll()Ljava/lang/Object;
co.paralleluniverse.concurrent.util.SingleConsumerNonblockingProducerQueue.poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
co.paralleluniverse.concurrent.util.SingleConsumerNonblockingProducerQueue.take()Ljava/lang/Object;
co.paralleluniverse.fibers.DropwizardFibersMonitor$1.getValue()Ljava/util/Map;
co.paralleluniverse.fibers.io.AsyncChannelGroup$1.initialValue(Lco/paralleluniverse/fibers/FiberScheduler;)Lco/paralleluniverse/fibers/io/AsyncChannelGroup;
co.paralleluniverse.io.serialization.Serialization$1.initialValue()Lco/paralleluniverse/io/serialization/Serialization;
Expand Down
3 changes: 2 additions & 1 deletion settings.gradle
Expand Up @@ -21,4 +21,5 @@ include 'www'
include 'python'
include 'spellsource-server'
include 'spellsource-client'
include 'spellsource-game-benchmarks'
include 'spellsource-game-benchmarks'
include 'spellsource-server-deployment'
2 changes: 2 additions & 0 deletions spellsource-common/build.gradle
Expand Up @@ -8,10 +8,12 @@ apply plugin: 'maven'
group 'com.hiddenswitch'

dependencies {
compileOnly project(":quasar-core")
api "io.vertx:vertx-core:$vertxVersion"
api 'org.slf4j:slf4j-api:1.7.22'
api 'com.google.guava:guava:26.0-jre'
api 'org.jetbrains:annotations:16.0.2'
api 'com.fasterxml.jackson.core:jackson-databind:2.10.2'
api "io.jaegertracing:jaeger-client:$jaegerVersion"
implementation "io.github.classgraph:classgraph:$classgraphVersion"
}
@@ -1,4 +1,4 @@
package com.hiddenswitch.spellsource.common;
package com.hiddenswitch.diagnostics;

import co.paralleluniverse.fibers.Fiber;
import com.google.common.base.Throwables;
Expand All @@ -19,21 +19,30 @@
import java.util.HashMap;
import java.util.Map;

public interface Tracing {
Logger LOGGER = LoggerFactory.getLogger(Tracing.class);
public class Tracing {
private static Logger LOGGER = LoggerFactory.getLogger(Tracing.class);

public static synchronized Tracer tracing(Vertx vertx) {
if (!GlobalTracer.isRegistered()) {
var tracer = initialize("spellsource");
GlobalTracer.registerIfAbsent(tracer);
}

static void initializeGlobal(Vertx vertx) {
GlobalTracer.registerIfAbsent(initialize("spellsource"));
vertx.exceptionHandler(Tracing::error);
Fiber.setDefaultUncaughtExceptionHandler((a, b) -> error(b));
try {
Fiber.setDefaultUncaughtExceptionHandler((a, b) -> error(b));
} catch (NoClassDefFoundError compileOnlyDependency) {
}
return GlobalTracer.get();
}

static void error(Throwable throwable, Span span) {
error(throwable, span, true);
}

static void error(Throwable throwable, Span span, boolean finish) {
public static void error(Throwable throwable, Span span, boolean finish) {
if (span instanceof NoopSpan || span == null) {
LOGGER.error("An exception was reported to the tracer");
LOGGER.error(throwable.getMessage(), throwable);
return;
}
Expand All @@ -50,7 +59,7 @@ static void error(Throwable throwable, Span span, boolean finish) {
}
}

static void error(Throwable throwable) {
public static void error(Throwable throwable) {
error(throwable, GlobalTracer.get().activeSpan(), true);
}

Expand Down
22 changes: 19 additions & 3 deletions spellsource-containers/build.gradle
Expand Up @@ -24,20 +24,36 @@ dependencies {
}

task createPostgresImage(type: DockerBuildImage) {
dependsOn += [tasks.processResources]
inputDir.set(new File("$project.projectDir/src/main/resources/docker/postgres"))
quiet.set(true)
images.set(["doctorpangloss/postgres:latest"])
}

task createKeycloakImage(type: DockerBuildImage) {
task createKeycloakStandaloneImage(type: DockerBuildImage) {
dependsOn += [tasks.processResources]
inputDir.set(new File("$project.projectDir/src/main/resources/docker/keycloak"))
dockerFile.set(new File("$project.projectDir/src/main/resources/docker/keycloak/Dockerfile.standalone"))
quiet.set(true)
images.set(["doctorpangloss/keycloak:latest"])
images.set(["doctorpangloss/keycloak-standalone:latest"])
}

task createKeycloakClusteredImage(type: DockerBuildImage) {
dependsOn += [tasks.processResources]
inputDir.set(new File("$project.projectDir/src/main/resources/docker/keycloak"))
dockerFile.set(new File("$project.projectDir/src/main/resources/docker/keycloak/Dockerfile"))
quiet.set(true)
images.set(["doctorpangloss/keycloak-clustered:latest"])
}

task pushKeycloakClusteredImage(type: DockerPushImage) {
dependsOn += [createKeycloakClusteredImage]
images.set(createKeycloakClusteredImage.images.get())
}

compileJava {
// you won't really be able to use the postgres image unless you build it
dependsOn += [createPostgresImage, createKeycloakImage]
dependsOn += [tasks.createPostgresImage, tasks.createKeycloakStandaloneImage, tasks.createKeycloakClusteredImage]
options.warnings = false
}

Expand Down
Expand Up @@ -26,7 +26,7 @@ public class KeycloakContainer extends GenericContainer<KeycloakContainer> {
* Create a KeycloakContainer by passing the full docker image name
*/
public KeycloakContainer() {
super("doctorpangloss/keycloak:latest");
super("doctorpangloss/keycloak-standalone:latest");
withExposedPorts(KEYCLOAK_PORT_HTTP);
withEnv("LANGUAGE", "en_US.UTF-8");
withEnv("LANG", "en_US.UTF-8");
Expand Down
@@ -1,2 +1,4 @@
FROM quay.io/keycloak/keycloak:12.0.1
COPY keycloak-scrypt.jar /opt/jboss/keycloak/standalone/deployments/
FROM docker.io/bitnami/keycloak:12.0.3
COPY keycloak-scrypt.jar /opt/bitnami/keycloak/standalone/deployments/
COPY libkeycloak.sh /opt/bitnami/scripts/libkeycloak.sh
COPY keycloak-env.sh /opt/bitnami/scripts/keycloak-env.sh
@@ -0,0 +1,2 @@
FROM quay.io/keycloak/keycloak:12.0.3
COPY keycloak-scrypt.jar /opt/jboss/keycloak/standalone/deployments/
@@ -0,0 +1,157 @@
#!/bin/bash
#
# Environment configuration for keycloak

# The values for all environment variables will be set in the below order of precedence
# 1. Custom environment variables defined below after Bitnami defaults
# 2. Constants defined in this file (environment variables with no default), i.e. BITNAMI_ROOT_DIR
# 3. Environment variables overridden via external files using *_FILE variables (see below)
# 4. Environment variables set externally (i.e. current Bash context/Dockerfile/userdata)

# Load logging library
. /opt/bitnami/scripts/liblog.sh

export BITNAMI_ROOT_DIR="/opt/bitnami"
export BITNAMI_VOLUME_DIR="/bitnami"

# Logging configuration
export MODULE="${MODULE:-keycloak}"
export BITNAMI_DEBUG="${BITNAMI_DEBUG:-false}"

# By setting an environment variable matching *_FILE to a file path, the prefixed environment
# variable will be overridden with the value specified in that file
keycloak_env_vars=(
KEYCLOAK_MOUNTED_CONF_DIR
KEYCLOAK_MANAGEMENT_USER
KEYCLOAK_MANAGEMENT_PASSWORD
KEYCLOAK_ADMIN_USER
KEYCLOAK_ADMIN_PASSWORD
KEYCLOAK_HTTP_PORT
KEYCLOAK_HTTPS_PORT
KEYCLOAK_BIND_ADDRESS
KEYCLOAK_INIT_MAX_RETRIES
KEYCLOAK_CACHE_OWNERS_COUNT
KEYCLOAK_AUTH_CACHE_OWNERS_COUNT
KEYCLOAK_JGROUPS_DISCOVERY_PROTOCOL
KEYCLOAK_JGROUPS_DISCOVERY_PROPERTIES
KEYCLOAK_JGROUPS_TRANSPORT_STACK
KEYCLOAK_EXTRA_ARGS
KEYCLOAK_ENABLE_STATISTICS
KEYCLOAK_ENABLE_TLS
KEYCLOAK_TLS_TRUSTSTORE_FILE
KEYCLOAK_TLS_TRUSTSTORE_PASSWORD
KEYCLOAK_TLS_KEYSTORE_FILE
KEYCLOAK_TLS_KEYSTORE_PASSWORD
KEYCLOAK_LOG_LEVEL
KEYCLOAK_ROOT_LOG_LEVEL
KEYCLOAK_PROXY_ADDRESS_FORWARDING
KEYCLOAK_CREATE_ADMIN_USER
KEYCLOAK_DATABASE_HOST
KEYCLOAK_DATABASE_PORT
KEYCLOAK_DATABASE_USER
KEYCLOAK_DATABASE_NAME
KEYCLOAK_DATABASE_PASSWORD
KEYCLOAK_DATABASE_SCHEMA
KEYCLOAK_DAEMON_USER
KEYCLOAK_DAEMON_GROUP
KEYCLOAK_USER
KEYCLOAK_PASSWORD
CACHE_OWNERS_COUNT
CACHE_OWNERS_AUTH_SESSIONS_COUNT
JGROUPS_DISCOVERY_PROTOCOL
JGROUPS_DISCOVERY_PROPERTIES
JGROUPS_TRANSPORT_STACK
PROXY_ADDRESS_FORWARDING
DB_ADDR
DB_PORT
DB_USER
DB_DATABASE
DB_PASSWORD
DB_SCHEMA
)
for env_var in "${keycloak_env_vars[@]}"; do
file_env_var="${env_var}_FILE"
if [[ -n "${!file_env_var:-}" ]]; then
if [[ -r "${!file_env_var:-}" ]]; then
export "${env_var}=$(< "${!file_env_var}")"
unset "${file_env_var}"
else
warn "Skipping export of '${env_var}'. '${!file_env_var:-}' is not readable."
fi
fi
done
unset keycloak_env_vars

# Paths
export BITNAMI_VOLUME_DIR="/bitnami"
export JAVA_HOME="/opt/bitnami/java"
export KEYCLOAK_BASE_DIR="/opt/bitnami/keycloak"
export KEYCLOAK_BIN_DIR="$KEYCLOAK_BASE_DIR/bin"
export KEYCLOAK_STANDALONE_DIR="$KEYCLOAK_BASE_DIR/standalone"
export KEYCLOAK_LOG_DIR="$KEYCLOAK_STANDALONE_DIR/log"
export KEYCLOAK_TMP_DIR="$KEYCLOAK_STANDALONE_DIR/tmp"
export KEYCLOAK_DOMAIN_CONF_DIR="$KEYCLOAK_BASE_DIR/domain/configuration"
export KEYCLOAK_DOMAIN_TMP_DIR="$KEYCLOAK_BASE_DIR/domain/tmp"
export KEYCLOAK_DATA_DIR="$KEYCLOAK_STANDALONE_DIR/data"
export KEYCLOAK_DEPLOYMENTS_DIR="$KEYCLOAK_STANDALONE_DIR/deployments"
export WILDFLY_BASE_DIR="/opt/bitnami/wildfly"
export KEYCLOAK_VOLUME_DIR="/bitnami/keycloak"
export KEYCLOAK_CONF_DIR="$KEYCLOAK_STANDALONE_DIR/configuration"
export KEYCLOAK_MOUNTED_CONF_DIR="${KEYCLOAK_MOUNTED_CONF_DIR:-${KEYCLOAK_VOLUME_DIR}/configuration}"
export KEYCLOAK_INITSCRIPTS_DIR="/docker-entrypoint-initdb.d"
export KEYCLOAK_CONF_FILE="standalone-ha.xml"
export KEYCLOAK_DEFAULT_CONF_FILE="standalone-ha-default.xml"

# Keycloak configuration
export KEYCLOAK_MANAGEMENT_USER="${KEYCLOAK_MANAGEMENT_USER:-manager}"
export KEYCLOAK_MANAGEMENT_PASSWORD="${KEYCLOAK_MANAGEMENT_PASSWORD:-bitnami1}"
KEYCLOAK_ADMIN_USER="${KEYCLOAK_ADMIN_USER:-"${KEYCLOAK_USER:-}"}"
export KEYCLOAK_ADMIN_USER="${KEYCLOAK_ADMIN_USER:-user}"
KEYCLOAK_ADMIN_PASSWORD="${KEYCLOAK_ADMIN_PASSWORD:-"${KEYCLOAK_PASSWORD:-}"}"
export KEYCLOAK_ADMIN_PASSWORD="${KEYCLOAK_ADMIN_PASSWORD:-bitnami}"
export KEYCLOAK_HTTP_PORT="${KEYCLOAK_HTTP_PORT:-8080}"
export KEYCLOAK_HTTPS_PORT="${KEYCLOAK_HTTPS_PORT:-8443}"
export KEYCLOAK_BIND_ADDRESS="${KEYCLOAK_BIND_ADDRESS:-$(hostname --fqdn)}"
export KEYCLOAK_INIT_MAX_RETRIES="${KEYCLOAK_INIT_MAX_RETRIES:-10}"
KEYCLOAK_CACHE_OWNERS_COUNT="${KEYCLOAK_CACHE_OWNERS_COUNT:-"${CACHE_OWNERS_COUNT:-}"}"
export KEYCLOAK_CACHE_OWNERS_COUNT="${KEYCLOAK_CACHE_OWNERS_COUNT:-1}"
KEYCLOAK_AUTH_CACHE_OWNERS_COUNT="${KEYCLOAK_AUTH_CACHE_OWNERS_COUNT:-"${CACHE_OWNERS_AUTH_SESSIONS_COUNT:-}"}"
export KEYCLOAK_AUTH_CACHE_OWNERS_COUNT="${KEYCLOAK_AUTH_CACHE_OWNERS_COUNT:-1}"
KEYCLOAK_JGROUPS_DISCOVERY_PROTOCOL="${KEYCLOAK_JGROUPS_DISCOVERY_PROTOCOL:-"${JGROUPS_DISCOVERY_PROTOCOL:-}"}"
export KEYCLOAK_JGROUPS_DISCOVERY_PROTOCOL="${KEYCLOAK_JGROUPS_DISCOVERY_PROTOCOL:-}"
KEYCLOAK_JGROUPS_DISCOVERY_PROPERTIES="${KEYCLOAK_JGROUPS_DISCOVERY_PROPERTIES:-"${JGROUPS_DISCOVERY_PROPERTIES:-}"}"
export KEYCLOAK_JGROUPS_DISCOVERY_PROPERTIES="${KEYCLOAK_JGROUPS_DISCOVERY_PROPERTIES:-}"
KEYCLOAK_JGROUPS_TRANSPORT_STACK="${KEYCLOAK_JGROUPS_TRANSPORT_STACK:-"${JGROUPS_TRANSPORT_STACK:-}"}"
export KEYCLOAK_JGROUPS_TRANSPORT_STACK="${KEYCLOAK_JGROUPS_TRANSPORT_STACK:-tcp}"
export KEYCLOAK_EXTRA_ARGS="${KEYCLOAK_EXTRA_ARGS:-}"
export KEYCLOAK_ENABLE_STATISTICS="${KEYCLOAK_ENABLE_STATISTICS:-false}"
export KEYCLOAK_ENABLE_TLS="${KEYCLOAK_ENABLE_TLS:-false}"
export KEYCLOAK_TLS_TRUSTSTORE_FILE="${KEYCLOAK_TLS_TRUSTSTORE_FILE:-}"
export KEYCLOAK_TLS_TRUSTSTORE_PASSWORD="${KEYCLOAK_TLS_TRUSTSTORE_PASSWORD:-}"
export KEYCLOAK_TLS_KEYSTORE_FILE="${KEYCLOAK_TLS_KEYSTORE_FILE:-}"
export KEYCLOAK_TLS_KEYSTORE_PASSWORD="${KEYCLOAK_TLS_KEYSTORE_PASSWORD:-}"
export KEYCLOAK_LOG_LEVEL="${KEYCLOAK_LOG_LEVEL:-INFO}"
export KEYCLOAK_ROOT_LOG_LEVEL="${KEYCLOAK_ROOT_LOG_LEVEL:-INFO}"
KEYCLOAK_PROXY_ADDRESS_FORWARDING="${KEYCLOAK_PROXY_ADDRESS_FORWARDING:-"${PROXY_ADDRESS_FORWARDING:-}"}"
export KEYCLOAK_PROXY_ADDRESS_FORWARDING="${KEYCLOAK_PROXY_ADDRESS_FORWARDING:-false}"
export KEYCLOAK_CREATE_ADMIN_USER="${KEYCLOAK_CREATE_ADMIN_USER:-true}"
KEYCLOAK_DATABASE_HOST="${KEYCLOAK_DATABASE_HOST:-"${DB_ADDR:-}"}"
export KEYCLOAK_DATABASE_HOST="${KEYCLOAK_DATABASE_HOST:-postgresql}"
KEYCLOAK_DATABASE_PORT="${KEYCLOAK_DATABASE_PORT:-"${DB_PORT:-}"}"
export KEYCLOAK_DATABASE_PORT="${KEYCLOAK_DATABASE_PORT:-5432}"
KEYCLOAK_DATABASE_USER="${KEYCLOAK_DATABASE_USER:-"${DB_USER:-}"}"
export KEYCLOAK_DATABASE_USER="${KEYCLOAK_DATABASE_USER:-bn_keycloak}"
KEYCLOAK_DATABASE_NAME="${KEYCLOAK_DATABASE_NAME:-"${DB_DATABASE:-}"}"
export KEYCLOAK_DATABASE_NAME="${KEYCLOAK_DATABASE_NAME:-bitnami_keycloak}"
KEYCLOAK_DATABASE_PASSWORD="${KEYCLOAK_DATABASE_PASSWORD:-"${DB_PASSWORD:-}"}"
export KEYCLOAK_DATABASE_PASSWORD="${KEYCLOAK_DATABASE_PASSWORD:-}"
KEYCLOAK_DATABASE_SCHEMA="${KEYCLOAK_DATABASE_SCHEMA:-"${DB_SCHEMA:-}"}"
# if this image is ever designed to support mariadb/mysql in addition to postgres, the default
# schema name should be dbo for those databases
export KEYCLOAK_DATABASE_SCHEMA="${KEYCLOAK_DATABASE_SCHEMA:-public}"

# System users (when running with a privileged user)
export KEYCLOAK_DAEMON_USER="${KEYCLOAK_DAEMON_USER:-keycloak}"
export KEYCLOAK_DAEMON_GROUP="${KEYCLOAK_DAEMON_GROUP:-keycloak}"

# Custom environment variables may be defined below

0 comments on commit 9b23e14

Please sign in to comment.