Как я могу проверить безопасность моего приложения во время обновления развертывания? - PullRequest
0 голосов
/ 08 декабря 2018

Я не знаю, что тестировать или как тестировать, чтобы убедиться, что мое приложение не переходит в неисправимое состояние при обновлении развертываний (выкатываются новые версии).Я понимаю, что развертывание Kubernetes обеспечивает непрерывное обновление, что означает, что старый модуль не будет убит, пока новый модуль не будет готов.Но я все равно предположил бы, что при переходе будут потеряны запросы gRPC.В любом случае, я мог бы это проверить?

1 Ответ

0 голосов
/ 08 декабря 2018

Чтобы сделать обновление образа развертывания полным доказательством и с 0 временем простоя, вам нужно две вещи в файле развертывания readiness probe и rollingUpdate Стратегия.

readiness probe - это проверка, которую делает Kubernetesчтобы убедиться, что ваш модуль готов к отправке трафика на него.Пока он не готов, Kubernetes не будет использовать ваш стручок.Легко!В нашем случае это выглядит так:

readinessProbe:
  httpGet:
    path: /
    port: 80
  initialDelaySeconds: 5
  periodSeconds: 5
  successThreshold: 1

Мы в основном говорим Kubernetes отправлять http-запрос get на путь / каждые пять секунд, и если он успешен, отметьте модуль как готовый и начните отправлять трафик.

Другая вещь, которую вы должны знать, это RollingUpdate strategy, она выглядит следующим образом:

strategy:
  type: RollingUpdate
  rollingUpdate:
    maxUnavailable: 0
    maxSurge: 1

В основном это говорит Kubernetes, что при развертывании должно быть ноль недоступных модулей (maxUnavailable: 0) и должен быть один новый модуль за раз (maxSurge: 1).

Таким образом, ваш развертывание должно выглядеть следующим образом:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: myapp-deployment
spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
      maxSurge: 1
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp-container
        image: prafull/myapp:1
        imagePullPolicy: Always
        ports:
          - containerPort: 80
            protocol: TCP
        readinessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 5
          successThreshold: 1    

Если вы теперь обновите свой образ с помощью kubectl apply -f deployment.yamlдля ваших запросов не будет простоев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...