首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在推送到docker注册表的同时自动部署新镜像到k8s集群?

如何在推送到docker注册表的同时自动部署新镜像到k8s集群?
EN

Stack Overflow用户
提问于 2021-01-16 04:29:24
回答 2查看 83关注 0票数 1

我已经配置了dockerhub,当新的标签<version>出现在GitHub中时,用标签latestdev-<version>构建一个新的镜像。我不知道如何配置Tekton或任何其他云原生工具,以便在注册表中提供新镜像时自动部署它们。

下面是我的k8s配置:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-03 13:55:04

最后,我探索了keel.sh。它可以处理新镜像的出现,并将它们部署到集群中。

票数 0
EN

Stack Overflow用户

发布于 2021-01-16 06:30:43

简单的答案是:要么使用触发器设置一个从dockerhub (https://docs.docker.com/docker-hub/webhooks/)到tekton的webhook。

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

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

因此,您可以选择push或pull。;)

我会问“为什么不直接从你的git repo触发呢?”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65743140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档