自动下载 kubernetes 的映像



我创建了这个非常基本的应用程序(myapp.yml(:

apiVersion: v1
kind: Service
metadata:
name: myapp
labels:
app: myapp
spec:
type: LoadBalancer
ports:
- port: 5035
targetPort: 5035
protocol: TCP
name: http
selector:
app: myapp
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
labels:
app: myapp
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: monapp
image: xxxxxxx.container-registry.ovh.net/private/myimage
ports:
- containerPort: 5035
imagePullSecrets:
- name: regcred

当我想更新我的应用程序时,我会在存储库上推送一个新映像。

我命令 kubernetes 在 pods 上下载这个新映像,我运行:

kubectl rollout restart deployment/myapp-deployment

有没有办法让 kubernetes 自动检测存储库中存在的新版本映像并自动更新 pod,而无需启动 kubectl 部署?

谢谢

Kubernetes 本身没有此功能。您可以使用 Skaffold,它会自动构建映像,将其推送到映像注册表并更新相应的 pod/控制器。它甚至可以监视代码更改,并在使用 skaffold dev 命令保存更改后立即重建映像。这只需要添加一个简单的skaffold.yaml,该图像指定注册表上的映像和Kubernetes清单的路径。入门指南中详细介绍了此工作流。

编辑:您可以使用gitlab对其进行配置,如下所示:

services:
- docker:dind
stages:
- build
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
DOCKER_HOST: tcp://docker:2375
build:
image:
name: gcr.io/k8s-skaffold/skaffold:latest
stage: build
before_script:
- docker info
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- skaffold run
only:
- master

最新更新