AWS EKS Deployment обновляет существующее развертывание - PullRequest
0 голосов
/ 26 февраля 2020

Я работаю над EKS AWS и застрял, потому что, когда мне захочется снова развернуть тот же код после некоторых изменений, я должен удалить предыдущее развертывание и создать обратно с новым образом, после извлечения нового образа в ECR. (kubectl delete abcproj. json), который уничтожает старые модули (балансировщик нагрузки) и создает новые, в результате чего всегда дают мне новый внешний IP. Я хочу предотвратить эту проблему и не могу найти правильное решение на inte rnet.

Заранее спасибо!

1 Ответ

0 голосов
/ 26 февраля 2020

С точки зрения Kubernetes вы можете попытаться сделать следующее:

  • Создать развертывание
  • Создать отдельный тип объекта службы LoadBalancer который будет указывать на ваше приложение
  • Протестируйте его
  • Создайте новое развертывание вместо старого
  • Протестируйте его снова

Пример с YAML s:

Создание развертывания

Ниже приведен пример развертывания приложения hello:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello
spec:
  selector:
    matchLabels:
      app: hello
      version: 1.0.0
  replicas: 1
  template:
    metadata:
      labels:
        app: hello
        version: 1.0.0
    spec:
      containers:
      - name: hello
        image: "gcr.io/google-samples/hello-app:1.0"
        env:
        - name: "PORT"
          value: "50001"

Взгляните на определенные c части matchLabels.

Создайте тип объекта службы LoadBalancer, который будет указывать на ваше приложение

Ниже приведен пример службы, которая предоставит доступ к приложению приветствия:

apiVersion: v1
kind: Service
metadata:
  name: hello-service
spec:
  selector:
    app: hello
  ports:
    - port: 50001
      targetPort: 50001
  type: LoadBalancer

Возьмите еще раз c посмотрите на selector. Он будет соответствовать пакетам по метке app со значением hello.

Вы можете обратиться к официальной документации: ЗДЕСЬ!

Проверьте это

Примените оба определения YAML и дождитесь назначения ExternalIP. После этого проверьте, работает ли приложение.

Вывод веб-браузера со старой версией приложения:

Hello, world!
Version: 1.0.0
Hostname: hello-549db57dfd-g746m

Создание нового развертывания вместо старого

На этом шаге вы можете попробовать:

  • запустите kubectl apply -f DEPLOYMENT.yaml в новой версии, чтобы применить различия
  • , попробуйте сначала удалить Deployment и создать новый вместо старого.

На этом шаге не удаляйте существующий LoadBalancer.

. Используя приведенный выше пример Deployment, мы можем смоделировать изменение версии вашего изображения, изменив the:

        image: "gcr.io/google-samples/hello-app:1.0"

to:

        image: "gcr.io/google-samples/hello-app:2.0"

После этого вы можете применить его или заново создать развертывание.

LoadBalancer не должен был менять IP-адрес, поскольку он не воссоздается.

Протестируйте снова

Вывод веб-браузера с новой версией приложения:

Hello, world!
Version: 2.0.0
Hostname: hello-84d554cbdf-rbwgx

Дайте мне знать, помогло ли вам это решение.

...