我已将 dockerhub 配置为构建带有标签 latest
和 dev-<version>
的新映像,因为新标签 <version>
出现在 GitHub 中。我不知道如何配置 Tekton 或任何其他云原生工具,以便在新映像在注册表中可用时自动部署。
这是我的 k8s 配置:
apiVersion: v1
kind: List
items:
- apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-app-service
port:
number: 80
- apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
ports:
- port: 80
targetPort: 8000
selector:
app: my-app
type: LoadBalancer
- apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-local-deployment
labels:
app: my-app
type: web
spec:
replicas: 2
minReadySeconds: 15
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
imagePullSecrets:
- name: regcred
containers:
- name: backend
image: zuber93/my-app:dev-latest
imagePullPolicy: IfNotPresent
envFrom:
- secretRef:
name: my-app-local-secret
ports:
- containerPort: 8000
readinessProbe:
httpGet:
path: /flvby
port: 8000
initialDelaySeconds: 10
periodSeconds: 5
- name: celery
image: zuber93/my-app:dev-latest
imagePullPolicy: IfNotPresent
workingDir: /code
command: [ "/code/run/celery.sh" ]
envFrom:
- secretRef:
name: my-app-local-secret
- name: redis
image: redis:latest
imagePullPolicy: IfNotPresent
答案 0 :(得分:1)
简短的回答是: 使用触发器设置从 dockerhub (https://docs.docker.com/docker-hub/webhooks/) 到 tekton 的 webhook。
或者(取决于您的安全性以及您的集群是否可以从 www 访问)
轮询 dockerhub 并在检测到新图像时触发 tekton。 (这可以通过很多不同的方式来完成,简单的即时服务,k8s 中的定时任务等)
所以,你选择推还是拉。 ;)
我会问“为什么不直接从你的 git repo 触发?”
答案 1 :(得分:0)
最后,我探索了 keel.sh。它可以处理新图像的出现并将它们部署到集群中。