buildscripts: xDS Kubernetes Interop tests buildscript
diff --git a/buildscripts/xds-k8s/cloudbuild.yaml b/buildscripts/xds-k8s/cloudbuild.yaml
new file mode 100644
index 0000000..03c5748
--- /dev/null
+++ b/buildscripts/xds-k8s/cloudbuild.yaml
@@ -0,0 +1,22 @@
+steps:
+- name: 'gcr.io/cloud-builders/docker'
+ args:
+ - 'build'
+ - '--tag=${_SERVER_IMAGE_NAME}:${COMMIT_SHA}'
+ - '--file=test-server.Dockerfile'
+ - '.'
+
+- name: 'gcr.io/cloud-builders/docker'
+ args:
+ - 'build'
+ - '--tag=${_CLIENT_IMAGE_NAME}:${COMMIT_SHA}'
+ - '--file=test-client.Dockerfile'
+ - '.'
+
+substitutions:
+ _SERVER_IMAGE_NAME: gcr.io/grpc-testing/xds-interop/java-server
+ _CLIENT_IMAGE_NAME: gcr.io/grpc-testing/xds-interop/java-client
+
+images:
+ - '${_SERVER_IMAGE_NAME}:${COMMIT_SHA}'
+ - '${_CLIENT_IMAGE_NAME}:${COMMIT_SHA}'
diff --git a/buildscripts/xds-k8s/logging-debug.properties b/buildscripts/xds-k8s/logging-debug.properties
new file mode 100644
index 0000000..8b0e327
--- /dev/null
+++ b/buildscripts/xds-k8s/logging-debug.properties
@@ -0,0 +1,7 @@
+handlers=java.util.logging.ConsoleHandler
+io.grpc.ChannelLogger.level=FINEST
+io.grpc.level=FINEST
+io.netty.level=FINEST
+java.util.logging.ConsoleHandler.level=ALL
+java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
+java.util.logging.SimpleFormatter.format=[%1$tF %1$tT.%1$tL %1tZ] [%4$-7s] [%3$s] %5$s %6$s %n
diff --git a/buildscripts/xds-k8s/logging-json.properties b/buildscripts/xds-k8s/logging-json.properties
new file mode 100644
index 0000000..62ca955
--- /dev/null
+++ b/buildscripts/xds-k8s/logging-json.properties
@@ -0,0 +1,8 @@
+handlers=java.util.logging.ConsoleHandler
+java.util.logging.ConsoleHandler.level=FINEST
+java.util.logging.ConsoleHandler.formatter=io.github.devatherock.json.formatter.JSONFormatter
+io.github.devatherock.json.formatter.JSONFormatter.key_timestamp=time
+io.github.devatherock.json.formatter.JSONFormatter.key_log_level=severity
+io.github.devatherock.json.formatter.JSONFormatter.use_slf4j_level_names=true
+io.grpc.ChannelLogger.level=FINEST
+io.grpc.xds.level=FINEST
diff --git a/buildscripts/xds-k8s/logging.properties b/buildscripts/xds-k8s/logging.properties
new file mode 100644
index 0000000..d7759dc
--- /dev/null
+++ b/buildscripts/xds-k8s/logging.properties
@@ -0,0 +1,6 @@
+handlers=java.util.logging.ConsoleHandler
+io.grpc.ChannelLogger.level=FINEST
+io.grpc.xds.level=FINEST
+java.util.logging.ConsoleHandler.level=FINEST
+java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
+java.util.logging.SimpleFormatter.format=[%1$tF %1$tT.%1$tL %1tZ] [%4$-7s] [%3$s] %5$s %6$s %n
diff --git a/buildscripts/xds-k8s/test-client.Dockerfile b/buildscripts/xds-k8s/test-client.Dockerfile
new file mode 100644
index 0000000..220ca03
--- /dev/null
+++ b/buildscripts/xds-k8s/test-client.Dockerfile
@@ -0,0 +1,15 @@
+# Build runtime image.
+FROM openjdk:11.0.9.1-jdk
+
+ENV APP_DIR=/usr/src/app
+WORKDIR $APP_DIR
+
+# Install the app
+COPY grpc-interop-testing/ $APP_DIR/
+
+# Copy all logging profiles, use json logging by default
+COPY logging*.properties $APP_DIR/
+ENV JAVA_OPTS="-Djava.util.logging.config.file=$APP_DIR/logging-json.properties"
+
+# Client
+ENTRYPOINT ["bin/xds-test-client"]
diff --git a/buildscripts/xds-k8s/test-server.Dockerfile b/buildscripts/xds-k8s/test-server.Dockerfile
new file mode 100644
index 0000000..86f8434
--- /dev/null
+++ b/buildscripts/xds-k8s/test-server.Dockerfile
@@ -0,0 +1,15 @@
+# Build runtime image.
+FROM openjdk:11.0.9.1-jdk
+
+ENV APP_DIR=/usr/src/app
+WORKDIR $APP_DIR
+
+# Install the app
+COPY grpc-interop-testing/ $APP_DIR/
+
+# Copy all logging profiles, use json logging by default
+COPY logging*.properties $APP_DIR/
+ENV JAVA_OPTS="-Djava.util.logging.config.file=$APP_DIR/logging-json.properties"
+
+# Server
+ENTRYPOINT ["bin/xds-test-server"]