
# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# [START gke_k8s_grpc_deployment_deployment_whereami_grpc]
apiVersion: apps/v1
kind: Deployment
metadata:
  name: whereami-grpc
  labels:
    app: whereami-grpc
spec:
  replicas: 3
  selector:
    matchLabels:
      app: whereami-grpc
  template:
    metadata:
      labels:
        app: whereami-grpc
        version: v1
    spec:
      serviceAccountName: whereami-grpc
      securityContext:
        fsGroup: 1000
        runAsGroup: 1000
        runAsNonRoot: true
        runAsUser: 1000
      containers:
      - name: whereami
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            drop:
              - all
          privileged: false
          readOnlyRootFilesystem: true
        image: us-docker.pkg.dev/google-samples/containers/gke/whereami:v1.2.24
        resources:
          requests:
            memory: "512Mi"
            cpu: "250m"
          limits:
            memory: "512Mi"
            cpu: "250m"
        ports:
          - name: grpc
            containerPort: 9090
          - name: http
            containerPort: 8000 # prom metrics
        readinessProbe:
          grpc:
            port: 9090
          initialDelaySeconds: 10
        livenessProbe:
          grpc:
            port: 9090
          initialDelaySeconds: 10
        env:
          - name: NODE_NAME
            valueFrom:
              fieldRef:
                fieldPath: spec.nodeName
          - name: POD_NAMESPACE
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace
          - name: POD_IP
            valueFrom:
              fieldRef:
                fieldPath: status.podIP
          - name: POD_SERVICE_ACCOUNT
            valueFrom:
              fieldRef:
                fieldPath: spec.serviceAccountName
          - name: BACKEND_ENABLED
            valueFrom:
              configMapKeyRef:
                name: whereami-grpc
                key: BACKEND_ENABLED
          - name: BACKEND_SERVICE
            valueFrom:
              configMapKeyRef:
                name: whereami-grpc
                key: BACKEND_SERVICE
          - name: METADATA
            valueFrom:
              configMapKeyRef:
                name: whereami-grpc
                key: METADATA
          - name: ECHO_HEADERS
            valueFrom:
              configMapKeyRef:
                name: whereami-grpc
                key: ECHO_HEADERS
          - name: GRPC_ENABLED
            valueFrom:
              configMapKeyRef:
                name: whereami-grpc
                key: GRPC_ENABLED
          - name: TRACE_SAMPLING_RATIO
            valueFrom:
              configMapKeyRef:
                name: whereami-grpc
                key: TRACE_SAMPLING_RATIO
          - name: HOST
            valueFrom:
              configMapKeyRef:
                name: whereami-grpc
                key: HOST
# [END gke_k8s_grpc_deployment_deployment_whereami_grpc]
---
