0

我已经从 Flux V1 升级到 V2。一切都很顺利,但我似乎无法ImageUpdateAutomation正常工作。Flux 知道我有要更新的图像,但它不会更改deployment.yaml清单中的容器图像并将更改提交到 Github。我的日志中没有错误,所以我不知道下一步该做什么。

我有一个看起来像这样的文件结构:

├── README.md
├── staging
│   ├── api
│   │   ├── deployment.yaml
│   │   ├── automation.yaml
│   │   └── service.yaml
│   ├── app
│   │   ├── deployment.yaml
│   │   ├── automation.yaml
│   │   └── service.yaml
│   ├── flux-system
│   │   ├── gotk-components.yaml
│   │   ├── gotk-sync.yaml
│   │   └── kustomization.yaml
│   ├── image_update_automation.yaml

staging/api/automation.yaml的很直截了当:

---
apiVersion: image.toolkit.fluxcd.io/v1beta1
kind: ImageRepository
metadata:
  name: api
  namespace: flux-system
spec:
  image: xxx/api
  interval: 1m0s
  secretRef:
    name: dockerhub

---
apiVersion: image.toolkit.fluxcd.io/v1beta1
kind: ImagePolicy
metadata:
  name: api
  namespace: flux-system
spec:
  imageRepositoryRef:
    name: api
  policy:
    semver:
      range: ">=1.0.0"

staging/image_update_automation.yaml看起来像这样:

---
apiVersion: image.toolkit.fluxcd.io/v1beta1
kind: ImageUpdateAutomation
metadata:
  name: flux-system
  namespace: flux-system
spec:
  git:
    checkout:
      ref:
        branch: master
    commit:
      author:
        email: fluxcdbot@users.noreply.github.com
        name: fluxcdbot
      messageTemplate: '{{range .Updated.Images}}{{println .}}{{end}}'
    push:
      branch: master
  interval: 1m0s
  sourceRef:
    kind: GitRepository
    name: flux-system
  update:
    path: ./staging
    strategy: Setters

这里一切似乎都很好:

❯ flux get image repository
NAME    READY   MESSAGE                         LAST SCAN                   SUSPENDED
api True    successful scan, found 23 tags  2021-07-28T17:11:02-06:00   False
app True    successful scan, found 18 tags  2021-07-28T17:11:02-06:00   False

❯ flux get image policy
NAME    READY   MESSAGE                                                             LATEST IMAGE
api True    Latest image tag for 'xxx/api' resolved to: 1.0.1   xxx/api:1.0.1
app True    Latest image tag for 'xxx/app' resolved to: 3.2.1   xxx/app:3.2.1

正如您从策略输出中看到的,LATEST IMAGEapi 是 1.0.1,但是当我查看我的应用程序和 api 的当前版本时,它们还没有更新。

kubectl get deployment api -n xxx -o json | jq '.spec.template.spec.containers[0].image'
"xxx/api:0.1.5"

对此的任何建议将不胜感激。

4

1 回答 1

2

我的问题是我没有在部署 yaml 中的图像声明后添加评论。更多细节。老实说,我很惊讶这不是注释而不是评论。

    spec:
      containers:
        - image: docker.io/xxx/api:0.1.5 # {"$imagepolicy": "flux-system:api"}

于 2021-07-30T19:05:44.520 回答