Получение полностью_qualified_digest в yaml для развертывания - PullRequest
0 голосов
/ 31 марта 2019

У нас есть кластер GKE с 4 развертываниями / модулями, которые необходимо обновлять при развертывании нового кода. Я знаю, что лучше всего развертывать образ с последним дайджестом для изображений, которые мы развертываем, но мне интересно, знает ли кто-нибудь о лучшем способе обновления файла yaml с помощью этого дайджеста, отличного от его обновления вручную. Я могу получить full_qualified_digest используя:

gcloud container images describe gcr.io/xxxx/uwsgi

Это действительно отстойно - каждый раз, когда мы внедряем, приходится вручную обновлять файлы yaml с помощью последнего хеша дайджеста. Если кто-то знает лучший способ, я бы с удовольствием это услышал.

Примечание: сейчас 2019 год, и Kubernetes должен иметь возможность получить дайджест-форму хеша / самую последнюю версию без необходимости ее явного определения.

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    io.kompose.service: uwsgi
  name: uwsgi
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  minReadySeconds: 5
  template:
    metadata:
      labels:
        io.kompose.service: uwsgi
    spec:
      containers:
      - env:
        - name: GOOGLE_APPLICATION_CREDENTIALS
          value: certs/gcp.json
        - name: ENV
          value: prod
        image: gcr.io/xxxx/uwsgi:latest <------ needs to be fully_qualified_digest
        name: uwsgi
        ports:
        - containerPort: 9040
        readinessProbe:
          httpGet:
            path: /health/
            port: 9040
          initialDelaySeconds: 5
          timeoutSeconds: 1
          periodSeconds: 15
        livenessProbe:
          httpGet:
            path: /health/
            port: 9040
          initialDelaySeconds: 60
          timeoutSeconds: 1
          periodSeconds: 15
        resources:
          requests:
            memory: "1000Mi"
            cpu: "1800m"
          limits:
            memory: "1200Mi"
            cpu: "2000m"
      hostname: uwsgi
      restartPolicy: Always
      terminationGracePeriodSeconds: 60
status: {}

1 Ответ

2 голосов
/ 01 апреля 2019

Существует целый ряд инструментов, которые будут следить за вашим репозиторием Docker и обновлять информацию при появлении нового образа.Наиболее часто используемым является, вероятно, https://github.com/weaveworks/flux/.. Сам Kubernetes не предоставляет эту функцию, поскольку он потенциально может быть не сходящимся.

Тем не менее, вы можете использовать :latest вспецификация стручка просто отлично.Причиной этого является то, что Kubernetes не будет знать, как перезапускать ваши модули при изменении изображения (также проблемы с кэшированием, но вы можете избежать проблем с политикой извлечения изображений в спецификации).Если вы на самом деле не хотите автоматического развертывания новых образов, то у вас все в порядке.

...