From 173dfbfc8adf67286e22e1f5daadf984d5fcbf3d Mon Sep 17 00:00:00 2001 From: Syed Mushtaq Ahmed Date: Wed, 13 Oct 2021 15:51:24 -0400 Subject: [PATCH] deploy: Update quay deployment manifests for py3 canary (PROJQUAY-2373) (#902) This change adds the Deployment and Service resources required to canary python3 in quay.io --- deploy/openshift/quay-app.yaml | 234 +++++++++++++++++++++++++++++++-- 1 file changed, 221 insertions(+), 13 deletions(-) diff --git a/deploy/openshift/quay-app.yaml b/deploy/openshift/quay-app.yaml index 71b1af8a4..9c3305414 100644 --- a/deploy/openshift/quay-app.yaml +++ b/deploy/openshift/quay-app.yaml @@ -70,19 +70,6 @@ objects: targetPort: ${{CLUSTERIP_METRICS_SERVICE_TARGET_PORT}} selector: ${{QUAY_APP_COMPONENT_LABEL_KEY}}: ${{QUAY_APP_COMPONENT_LABEL_VALUE}} -- apiVersion: v1 - kind: Service - metadata: - name: prometheus-proxy-loadbalancer - spec: - type: LoadBalancer - ports: - - name: prometheus-proxy-loadbalancer - protocol: TCP - port: 3000 - targetPort: 3000 - selector: - app: prometheus - apiVersion: v1 kind: Service metadata: @@ -104,6 +91,63 @@ objects: type: LoadBalancer selector: ${{QUAY_APP_COMPONENT_LABEL_KEY}}: ${{QUAY_APP_COMPONENT_LABEL_VALUE}} + +- apiVersion: v1 + kind: Service + metadata: + name: quay-py3-canary-clusterip-service + labels: + ${{QUAY_APP_COMPONENT_LABEL_KEY}}: ${{QUAY_APP_PY3_CANARY_COMPONENT_LABEL_VALUE}} + spec: + type: ClusterIP + ports: + - protocol: TCP + name: clusterip + port: ${{CLUSTERIP_SERVICE_PORT}} + targetPort: ${{CLUSTERIP_SERVICE_TARGET_PORT}} + - protocol: TCP + name: metrics + port: ${{CLUSTERIP_METRICS_SERVICE_PORT}} + targetPort: ${{CLUSTERIP_METRICS_SERVICE_TARGET_PORT}} + selector: + ${{QUAY_APP_COMPONENT_LABEL_KEY}}: ${{QUAY_APP_PY3_CANARY_COMPONENT_LABEL_VALUE}} + +- apiVersion: v1 + kind: Service + metadata: + name: quay-py3-canary-load-balancer-proxy-protocol-service + annotations: + service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: ${AWS_LOAD_BALANCER_CONNECTION_IDLE_TIMEOUT} + service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: '*' + spec: + ports: + - name: http + protocol: TCP + port: ${{LOADBALANCER_SERVICE_HTTP_PORT}} + targetPort: ${{LOADBALANCER_SERVICE_PROXY_TARGET_HTTP_PORT}} + - name: https + protocol: TCP + port: ${{LOADBALANCER_SERVICE_PORT}} + targetPort: ${{LOADBALANCER_SERVICE_PROXY_TARGET_PORT}} + loadBalancerIP: + type: LoadBalancer + selector: + ${{QUAY_APP_COMPONENT_LABEL_KEY}}: ${{QUAY_APP_PY3_CANARY_COMPONENT_LABEL_VALUE}} + +- apiVersion: v1 + kind: Service + metadata: + name: prometheus-proxy-loadbalancer + spec: + type: LoadBalancer + ports: + - name: prometheus-proxy-loadbalancer + protocol: TCP + port: 3000 + targetPort: 3000 + selector: + app: prometheus + - apiVersion: apps/v1 kind: Deployment metadata: @@ -249,6 +293,7 @@ objects: value: ${QUAY_WORKER_MULTIPLIER_REGISTRY} - name: WORKER_CONNECTION_COUNT_REGISTRY value: ${QUAY_WORKER_CONNECTION_COUNT_REGISTRY} + - apiVersion: apps/v1 kind: Deployment metadata: @@ -394,6 +439,153 @@ objects: value: ${QUAY_WORKER_MULTIPLIER_REGISTRY} - name: WORKER_CONNECTION_COUNT_REGISTRY value: ${QUAY_WORKER_CONNECTION_COUNT_REGISTRY} + +- apiVersion: apps/v1 + kind: Deployment + metadata: + name: quay-app-py3-canary + labels: + ${{QUAY_APP_COMPONENT_LABEL_KEY}}: ${{QUAY_APP_PY3_CANARY_COMPONENT_LABEL_VALUE}} + spec: + replicas: ${{QUAY_APP_PY3_CANARY_DEPLOYMENT_REPLICAS}} + minReadySeconds: ${{QUAY_APP_DEPLOYMENT_MIN_READY_SECONDS}} + progressDeadlineSeconds: ${{QUAY_APP_DEPLOYMENT_PROGRESS_DEADLINE_SECONDS}} + revisionHistoryLimit: ${{QUAY_APP_DEPLOYMENT_REVISION_HISTORY_LIMITS}} + strategy: + type: ${{QUAY_APP_DEPLOYMENT_STRATEGY_TYPE}} + rollingUpdate: + maxUnavailable: ${{QUAY_APP_DEPLOYMENT_MAX_UNAVAILABLE}} + maxSurge: ${{QUAY_APP_DEPLOYMENT_MAX_SURGE}} + selector: + matchLabels: + ${{QUAY_APP_COMPONENT_LABEL_KEY}}: ${{QUAY_APP_PY3_CANARY_COMPONENT_LABEL_VALUE}} + template: + metadata: + labels: + ${{QUAY_APP_COMPONENT_LABEL_KEY}}: ${{QUAY_APP_PY3_CANARY_COMPONENT_LABEL_VALUE}} + annotations: + ${{QUAY_APP_COMPONENT_ANNOTATIONS_KEY}}: ${{QUAY_APP_COMPONENT_ANNOTATIONS_VALUE}} + spec: + volumes: + - name: configvolume + secret: + secretName: ${{QUAY_APP_PY3_CANARY_CONFIG_SECRET}} + serviceAccountName: ${{NAME}} + containers: + - name: syslog-cloudwatch-bridge + image: ${SYSLOG_IMAGE}:${SYSLOG_IMAGE_TAG} + ports: + - containerPort: ${{SYSLOG_PORT}} + protocol: UDP + name: syslog-udp-port + - containerPort: ${{SYSLOG_PORT}} + protocol: TCP + name: syslog-tcp-port + env: + - name: STREAM_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: TICKER_TIME + value: ${TICKER_TIME} + - name: PORT + value: ${SYSLOG_PORT} + - name: AWS_REGION + valueFrom: + secretKeyRef: + name: ${{CLOUDWATCH_SECRET}} + key: AWS_REGION + - name: AWS_ACCESS_KEY_ID + valueFrom: + secretKeyRef: + name: ${{CLOUDWATCH_SECRET}} + key: AWS_ACCESS_KEY_ID + - name: AWS_SECRET_ACCESS_KEY + valueFrom: + secretKeyRef: + name: ${{CLOUDWATCH_SECRET}} + key: AWS_SECRET_ACCESS_KEY + - name: LOG_GROUP_NAME + valueFrom: + secretKeyRef: + name: ${{CLOUDWATCH_SECRET}} + key: LOG_GROUP_NAME + resources: + limits: + cpu: ${{QUAY_SYSLOG_CPU_LIMIT}} + memory: ${{QUAY_SYSLOG_MEMORY_LIMIT}} + requests: + cpu: ${{QUAY_SYSLOG_CPU_REQUEST}} + memory: ${{QUAY_SYSLOG_MEMORY_REQUEST}} + readinessProbe: + tcpSocket: + port: ${{SYSLOG_PORT}} + initialDelaySeconds: ${{QUAY_SYSLOG_READINESS_PROBE_INITIAL_DELAY_SECONDS}} + periodSeconds: ${{QUAY_SYSLOG_READINESS_PROBE_PERIOD_SECONDS}} + timeoutSeconds: ${{QUAY_SYSLOG_READINESS_PROBE_TIMEOUT_SECONDS}} + livenessProbe: + tcpSocket: + port: ${{SYSLOG_PORT}} + initialDelaySeconds: ${{QUAY_SYSLOG_LIVENESS_PROBE_INITIAL_DELAY_SECONDS}} + periodSeconds: ${{QUAY_SYSLOG_LIVENESS_PROBE_PERIOD_SECONDS}} + timeoutSeconds: ${{QUAY_SYSLOG_LIVENESS_PROBE_TIMEOUT_SECONDS}} + - name: quay-app-py3-canary + image: ${IMAGE_PY3_CANARY}:${IMAGE_TAG_PY3_CANARY} + imagePullPolicy: ${{IMAGE_PULL_POLICY}} + command: + - /quay-registry/quay-entrypoint.sh + - ${{QUAY_ENTRYPOINT}} + ports: + - containerPort: 8443 + volumeMounts: + - name: configvolume + mountPath: /conf/stack + livenessProbe: + exec: + command: + - curl + - -k + - https://localhost:8443/health/instance + initialDelaySeconds: ${{QUAY_APP_LIVENESS_PROBE_INITIAL_DELAY_SECONDS}} + periodSeconds: ${{QUAY_APP_LIVENESS_PROBE_PERIOD_SECONDS}} + timeoutSeconds: ${{QUAY_APP_LIVENESS_PROBE_TIMEOUT_SECONDS}} + readinessProbe: + exec: + command: + - curl + - -k + - https://localhost:8443/health/endtoend + initialDelaySeconds: ${{QUAY_APP_READINESS_PROBE_INITIAL_DELAY_SECONDS}} + periodSeconds: ${{QUAY_APP_READINESS_PROBE_PERIOD_SECONDS}} + timeoutSeconds: ${{QUAY_APP_READINESS_PROBE_TIMEOUT_SECONDS}} + resources: + limits: + cpu: ${{QUAY_APP_CPU_LIMIT}} + memory: ${{QUAY_APP_MEMORY_LIMIT}} + requests: + cpu: ${{QUAY_APP_CPU_REQUEST}} + memory: ${{QUAY_APP_MEMORY_REQUEST}} + env: + - name: QE_K8S_NAMESPACE + value: ${{QUAY_APP_DEPLOYMENT_NAMESPACE}} + - name: QE_K8S_CONFIG_SECRET + value: ${{QUAY_APP_CONFIG_SECRET}} + - name: DEBUGLOG + value: ${DEBUGLOG} + - name: SYSLOG_SERVER + value: ${{SYSLOG_SERVER}} + - name: SYSLOG_PORT + value: ${SYSLOG_PORT} + - name: SYSLOG_PROTO + value: ${{SYSLOG_PROTO}} + - name: QUAY_LOGGING + value: ${{QUAY_LOGGING}} + - name: WORKER_MULTIPLIER_REGISTRY + value: ${QUAY_WORKER_MULTIPLIER_REGISTRY} + - name: WORKER_CONNECTION_COUNT_REGISTRY + value: ${QUAY_WORKER_CONNECTION_COUNT_REGISTRY} + parameters: - name: NAME value: "quay" @@ -407,6 +599,10 @@ parameters: value: "" displayName: quay blue-deployment image description: quay blue-deployment docker image. Defaults to quay.io/app-sre/quay. + - name: IMAGE_PY3_CANARY + value: "" + displayName: quay image + description: quay docker image. Defaults to quay.io/app-sre/quay. - name: IMAGE_TAG value: "latest" displayName: quay version @@ -415,6 +611,10 @@ parameters: value: "latest" displayName: quay version description: quay version which defaults to latest + - name: IMAGE_TAG_PY3_CANARY + value: "latest" + displayName: quay version + description: quay version which defaults to latest - name: QUAY_ENTRYPOINT value: "registry-nomigrate" displayName: quay container entrypoint @@ -437,6 +637,9 @@ parameters: - name: QUAY_APP_COMPONENT_LABEL_VALUE value: "app" displayName: quay app selector label value + - name: QUAY_APP_PY3_CANARY_COMPONENT_LABEL_VALUE + value: "app-py3-canary" + displayName: quay app selector label value - name: LOADBALANCER_SERVICE_PORT value: "443" displayName: loadbalancer service port @@ -458,11 +661,16 @@ parameters: - name: QUAY_APP_CONFIG_SECRET_BLUE value: "quay-config-secret" displayName: quay app blue-deployment config secret + - name: QUAY_APP_PY3_CANARY_CONFIG_SECRET + value: "quay-config-secret" + displayName: quay app blue-deployment config secret - name: QUAY_APP_DEPLOYMENT_REPLICAS value: "1" displayName: quay app deployment replicas - name: QUAY_APP_DEPLOYMENT_REPLICAS_BLUE value: "0" + - name: QUAY_APP_PY3_CANARY_DEPLOYMENT_REPLICAS + value: "0" displayName: quay app blue deployment replicas - name: QUAY_APP_DEPLOYMENT_NAMESPACE value: "quay"