Конфигурирование различной конфигурации модуля для разных сред (Kubernetes + Google Cloud или Minikube) - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть (контейнерная) веб-служба, которая общается с внешней службой CloudSQL в Google Cloud.Я использовал шаблон коляски, в котором контейнер Google Cloud SQL Proxy находится рядом с веб-службой и аутентифицирует + прокси-серверы для внешней службы CloudSQL.Это отлично работает.Давайте назовем это Deployment «deploy-api» с контейнерами «api» + «pg-proxy»

Проблема возникает, когда я хочу развернуть приложение в моем локальном кластере мини-кубов, который должен иметь другую конфигурацию из-заслужба общается с локальным сервером Postgres на моем компьютере.Если я развертываю "deploy-api" как есть на minikube, он пытается запустить контейнер "pg-proxy", который запирает и весь модуль входит в цикл сбоя.Есть ли способ для меня выборочно НЕ развертывать контейнер "pg-proxy" без двух определений для Pod, например, используя селекторы / метки?Я не хочу перемещать контейнер pg-proxy в собственное развертывание.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-api
  namespace: ${MY_ENV}
  labels:
    app: api
    env: ${MY_ENV}
spec:
  replicas: ${REPLICAS}
  selector:
    matchLabels:
      app: api
      env: ${MY_ENV}
  template:
    metadata:
      labels:
        app: api
        env: ${MY_ENV}
    spec:
      containers:
      - name: pg-proxy
        ports:
        - containerPort: 5432
        image: gcr.io/cloudsql-docker/gce-proxy:1.11
        command: ["/cloud_sql_proxy",
          "-instances=<redacted>:${MY_ENV}-app=tcp:5432",
          "-credential_file=/secrets/cloudsql/${MY_ENV}-sql-credentials.json"]
        securityContext:
          runAsUser: 2  # non-root user
          allowPrivilegeEscalation: false
        volumeMounts:
          - name: ${MY_ENV}-cloudsql-instance-credentials
            mountPath: /secrets/cloudsql
            readOnly: true
      - name: api
        image: ${DOCKER_IMAGE_PREFIX}api:${TAG}
        imagePullPolicy: ${PULL_POLICY}
        ports:
        - containerPort: 50051
      volumes:
        - name: ${MY_ENV}-cloudsql-instance-credentials
          secret:
            secretName: ${MY_ENV}-cloudsql-instance-credentials

1 Ответ

0 голосов
/ 21 сентября 2018

В сырых кубернетах имеется ввиду?Нет.

Но я настоятельно рекомендую вам использовать Helm для развертывания ваших приложений.С помощью helm вы можете легко адаптировать манифест на основе переменных, предоставленных для каждой среды (или значений по умолчанию).Например, с переменной postgresql.proxy.enabled: true в настройках по умолчанию и

{{- if .Values.postgresql.proxy.enabled }}
- name: pg-proxy
...
{{- end }}

в шаблоне рулевого управления вы можете полностью отключить этот блок в dev env, установив значение false.

...