From 35110927d6e703a4f7ac42745b77e234b13d2ff4 Mon Sep 17 00:00:00 2001 From: jianglai Date: Thu, 12 Jul 2018 12:28:13 -0700 Subject: [PATCH] Add configs for production GCP proxy This also introduces a production canary environment, similar to sandbox canary. The docker tags are changed to "live" and "sandbox" respectively, to reflect the fact that different images may be used for prod and sandbox. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=204343530 --- java/google/registry/proxy/ProxyConfig.java | 1 + java/google/registry/proxy/ProxyModule.java | 2 +- .../proxy-config-production-canary.yaml | 1 + .../proxy-deployment-production-canary.yaml | 51 +++++++++++++++++++ .../proxy-deployment-production.yaml | 51 +++++++++++++++++++ 5 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 java/google/registry/proxy/config/proxy-config-production-canary.yaml create mode 100644 java/google/registry/proxy/kubernetes/proxy-deployment-production-canary.yaml create mode 100644 java/google/registry/proxy/kubernetes/proxy-deployment-production.yaml diff --git a/java/google/registry/proxy/ProxyConfig.java b/java/google/registry/proxy/ProxyConfig.java index 11213cef8..ceecad627 100644 --- a/java/google/registry/proxy/ProxyConfig.java +++ b/java/google/registry/proxy/ProxyConfig.java @@ -25,6 +25,7 @@ public class ProxyConfig { enum Environment { PRODUCTION, + PRODUCTION_CANARY, SANDBOX, SANDBOX_CANARY, ALPHA, diff --git a/java/google/registry/proxy/ProxyModule.java b/java/google/registry/proxy/ProxyModule.java index aa478b148..c4f1c8aae 100644 --- a/java/google/registry/proxy/ProxyModule.java +++ b/java/google/registry/proxy/ProxyModule.java @@ -141,7 +141,7 @@ public class ProxyModule { throw e; } checkArgument( - !log || env != Environment.PRODUCTION, + !log || (env != Environment.PRODUCTION && env != Environment.PRODUCTION_CANARY), "Logging cannot be enabled for production environment"); configureLogging(); return this; diff --git a/java/google/registry/proxy/config/proxy-config-production-canary.yaml b/java/google/registry/proxy/config/proxy-config-production-canary.yaml new file mode 100644 index 000000000..ea71687e3 --- /dev/null +++ b/java/google/registry/proxy/config/proxy-config-production-canary.yaml @@ -0,0 +1 @@ +# Add environment-specific proxy configuration here. diff --git a/java/google/registry/proxy/kubernetes/proxy-deployment-production-canary.yaml b/java/google/registry/proxy/kubernetes/proxy-deployment-production-canary.yaml new file mode 100644 index 000000000..922d6a5fa --- /dev/null +++ b/java/google/registry/proxy/kubernetes/proxy-deployment-production-canary.yaml @@ -0,0 +1,51 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: default + name: proxy-deployment-canary + labels: + app: proxy-canary +spec: + replicas: 3 + selector: + matchLabels: + app: proxy-canary + template: + metadata: + labels: + app: proxy-canary + spec: + containers: + - name: proxy-canary + image: gcr.io/GCP_PROJECT/IMAGE_NAME:bazel + ports: + - containerPort: 30000 + name: health-check + - containerPort: 30001 + name: whois + - containerPort: 30002 + name: epp + readinessProbe: + tcpSocket: + port: health-check + initialDelaySeconds: 5 + periodSeconds: 10 + livenessProbe: + tcpSocket: + port: health-check + initialDelaySeconds: 15 + periodSeconds: 20 + imagePullPolicy: Always + args: ["--env", "production_canary"] + env: + - name: POD_ID + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: NAMESPACE_ID + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: CONTAINER_NAME + value: proxy-canary + diff --git a/java/google/registry/proxy/kubernetes/proxy-deployment-production.yaml b/java/google/registry/proxy/kubernetes/proxy-deployment-production.yaml new file mode 100644 index 000000000..084b4f174 --- /dev/null +++ b/java/google/registry/proxy/kubernetes/proxy-deployment-production.yaml @@ -0,0 +1,51 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: default + name: proxy-deployment + labels: + app: proxy +spec: + replicas: 3 + selector: + matchLabels: + app: proxy + template: + metadata: + labels: + app: proxy + spec: + containers: + - name: proxy + image: gcr.io/GCP_PROJECT/IMAGE_NAME:bazel + ports: + - containerPort: 30000 + name: health-check + - containerPort: 30001 + name: whois + - containerPort: 30002 + name: epp + readinessProbe: + tcpSocket: + port: health-check + initialDelaySeconds: 5 + periodSeconds: 10 + livenessProbe: + tcpSocket: + port: health-check + initialDelaySeconds: 15 + periodSeconds: 20 + imagePullPolicy: Always + args: ["--env", "production"] + env: + - name: POD_ID + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: NAMESPACE_ID + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: CONTAINER_NAME + value: proxy +