Kubernetes 如何在将新映像推送到docker注册表时自动将其部署到k8s群集?

Kubernetes 如何在将新映像推送到docker注册表时自动将其部署到k8s群集?,kubernetes,dockerhub,continuous-delivery,Kubernetes,Dockerhub,Continuous Delivery,我已经将dockerhub配置为在GitHub中出现新标签时,使用标签latest和dev-构建一个新映像。我不知道如何配置Tekton或任何其他云本机工具,以便在注册中心提供新映像时自动部署它们 以下是我的k8s配置: apiVersion: v1 kind: List items: - apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-app-ingress spec:

我已经将dockerhub配置为在GitHub中出现新标签时,使用标签
latest
dev-
构建一个新映像。我不知道如何配置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
简言之,答案是: 或者使用触发器设置从dockerhub()到tekton的webhook

或者(取决于您的安全性,以及您的群集是否可以从www访问)

在新图像检测时轮询dockerhub并触发tekton。 (在k8s中,这可以通过许多不同的方式完成,如简单即时服务、定时cronjob等)

所以,你可以选择推或拉


我会问“为什么不直接从你的git回购中触发?”

最后,我探讨了一下。它可以处理新映像的出现并将它们部署到集群中。

谢谢您的回答。我不想从git repo触发,因为我在任何情况下都会使用docker hub来存储我的图像,它可以自行触发git repo,因此我只需要配置这些图像自动部署。如果您想要这样的解决方案,我建议使用ArgoCD,它在定制方面更成熟、更灵活,更多的使用和令人敬畏的用户界面。我是它的忠实粉丝。