Я использую kubectl apply
для обновления моих модулей Kubernetes:
kubectl apply -f /my-app/service.yaml
kubectl apply -f /my-app/deployment.yaml
Ниже мой сервис.yaml:
apiVersion: v1
kind: Service
metadata:
name: my-app
labels:
run: my-app
spec:
type: NodePort
selector:
run: my-app
ports:
- protocol: TCP
port: 9000
nodePort: 30769
Ниже мой развертывание. Yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
selector:
matchLabels:
run: my-app
replicas: 2
template:
metadata:
labels:
run: my-app
spec:
containers:
- name: my-app
image: dockerhubaccount/my-app-img:latest
ports:
- containerPort: 9000
protocol: TCP
imagePullSecrets:
- name: my-app-img-credentials
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
Это отлично работает в первый раз, но при последующих запусках мои модули не обновляются.
Я прочитал предложенный обходной путь на https://github.com/kubernetes/kubernetes/issues/33664, который:
kubectl patch deployment my-app -p "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"date\":\"`date +'%s'`\"}}}}}"
Мне удалось выполнить указанную выше команду, но она не решила проблему для меня.
Я знаю, что могу запускать обновления модуля, вручную изменяя тег изображения с «последнего»к другому тегу, но я хочу убедиться, что получаю последнее изображение, не проверяя Docker Hub.
Любая помощь будет принята с благодарностью.