From fb3a434f95fefd315cd63b90a57a4e8904e43602 Mon Sep 17 00:00:00 2001 From: Stefan Prodan Date: Thu, 22 Apr 2021 20:10:32 +0300 Subject: [PATCH 1/2] Update image automation guide to v1alpha2 APIs Signed-off-by: Stefan Prodan --- docs/guides/image-update.md | 90 +++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 43 deletions(-) diff --git a/docs/guides/image-update.md b/docs/guides/image-update.md index dfad8eeb..6cc399ef 100644 --- a/docs/guides/image-update.md +++ b/docs/guides/image-update.md @@ -138,7 +138,7 @@ flux create image repository podinfo \ The above command generates the following manifest: ```yaml -apiVersion: image.toolkit.fluxcd.io/v1alpha1 +apiVersion: image.toolkit.fluxcd.io/v1alpha2 kind: ImageRepository metadata: name: podinfo @@ -177,7 +177,7 @@ flux create image policy podinfo \ The above command generates the following manifest: ```yaml -apiVersion: image.toolkit.fluxcd.io/v1alpha1 +apiVersion: image.toolkit.fluxcd.io/v1alpha2 kind: ImagePolicy metadata: name: podinfo @@ -258,23 +258,27 @@ flux create image update flux-system \ The above command generates the following manifest: ```yaml -apiVersion: image.toolkit.fluxcd.io/v1alpha1 +apiVersion: image.toolkit.fluxcd.io/v1alpha2 kind: ImageUpdateAutomation metadata: name: flux-system namespace: flux-system spec: - checkout: - branch: main - gitRepositoryRef: - name: flux-system - commit: - authorEmail: fluxcdbot@users.noreply.github.com - authorName: fluxcdbot - messageTemplate: '{{range .Updated.Images}}{{println .}}{{end}}' interval: 1m0s - push: - branch: main + sourceRef: + kind: GitRepository + name: flux-system + git: + checkout: + ref: + branch: main + commit: + author: + email: fluxcdbot@users.noreply.github.com + name: fluxcdbot + messageTemplate: '{{range .Updated.Images}}{{println .}}{{end}}' + push: + branch: main update: path: ./clusters/my-cluster strategy: Setters @@ -387,21 +391,20 @@ images: ## Push updates to a different branch -With `.spec.push.branch` you can configure Flux to push the image updates to different branch +With `.spec.git.push.branch` you can configure Flux to push the image updates to different branch than the one used for checkout. If the specified branch doesn't exist, Flux will create it for you. ```yaml -apiVersion: image.toolkit.fluxcd.io/v1alpha1 kind: ImageUpdateAutomation metadata: name: flux-system -spec: - checkout: - branch: main - gitRepositoryRef: - name: flux-system - push: - branch: image-updates +spec: + git: + checkout: + ref: + branch: main + push: + branch: flux-image-updates ``` You can use CI automation e.g. GitHub Actions such as @@ -412,39 +415,40 @@ This way you can manually approve the image updates before they are applied on y ## Configure the commit message -The `.spec.commit.messageTemplate` field is a string which is used as a template for the commit message. +The `.spec.git.commit.messageTemplate` field is a string which is used as a template for the commit message. The message template is a [Go text template](https://golang.org/pkg/text/template/) that lets you range over the objects and images e.g.: ```yaml -apiVersion: image.toolkit.fluxcd.io/v1alpha1 kind: ImageUpdateAutomation metadata: name: flux-system spec: - commit: - messageTemplate: | - Automated image update + git: + commit: + messageTemplate: | + Automated image update - Automation name: {{ .AutomationObject }} + Automation name: {{ .AutomationObject }} - Files: - {{ range $filename, $_ := .Updated.Files -}} - - {{ $filename }} - {{ end -}} + Files: + {{ range $filename, $_ := .Updated.Files -}} + - {{ $filename }} + {{ end -}} - Objects: - {{ range $resource, $_ := .Updated.Objects -}} - - {{ $resource.Kind }} {{ $resource.Name }} - {{ end -}} + Objects: + {{ range $resource, $_ := .Updated.Objects -}} + - {{ $resource.Kind }} {{ $resource.Name }} + {{ end -}} - Images: - {{ range .Updated.Images -}} - - {{.}} - {{ end -}} - authorEmail: flux@example.com - authorName: flux + Images: + {{ range .Updated.Images -}} + - {{.}} + {{ end -}} + author: + email: fluxcdbot@users.noreply.github.com + name: fluxcdbot ``` ## Trigger image updates with webhooks @@ -884,7 +888,7 @@ Create a directory in your control repository and save this `kustomization.yaml` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: -- git@github.com/fluxcd/flux2//manifests/integrations/registry-credentials-sync/azure +- https://github.com/fluxcd/flux2/manifests/integrations/registry-credentials-sync/azure?ref=main patchesStrategicMerge: - config-patches.yaml ``` From 0fbcfded57391f09ed4c297a54765aa1835af03c Mon Sep 17 00:00:00 2001 From: Stefan Prodan Date: Thu, 22 Apr 2021 20:14:40 +0300 Subject: [PATCH 2/2] Update image automation migration guide to v1alpha2 APIs Signed-off-by: Stefan Prodan --- docs/guides/flux-v1-automation-migration.md | 52 +++++++-------------- docs/guides/sortable-image-tags.md | 8 ++-- 2 files changed, 20 insertions(+), 40 deletions(-) diff --git a/docs/guides/flux-v1-automation-migration.md b/docs/guides/flux-v1-automation-migration.md index 386f0192..7a8d6200 100644 --- a/docs/guides/flux-v1-automation-migration.md +++ b/docs/guides/flux-v1-automation-migration.md @@ -287,20 +287,24 @@ $ flux create image update my-app-auto \ --export > ./$AUTO_PATH/my-app-auto.yaml $ cat my-app-auto.yaml --- -apiVersion: image.toolkit.fluxcd.io/v1alpha1 +apiVersion: image.toolkit.fluxcd.io/v1alpha2 kind: ImageUpdateAutomation metadata: name: my-app-auto namespace: flux-system spec: - checkout: - branch: main - gitRepositoryRef: - name: flux-system - commit: - authorEmail: fluxbot@example.com - authorName: FluxBot interval: 5m0s + sourceRef: + kind: GitRepository + name: flux-system + git: + checkout: + ref: + branch: main + commit: + author: + email: fluxbot@example.com + name: FluxBot ``` #### Commit and check that the automation object works @@ -357,14 +361,8 @@ metadata: annotations: fluxcd.io/automated: "true" fluxcd.io/tag.app: semver:^5.0 - selector: - matchLabels: - app: podinfo spec: template: - metadata: - labels: - app: podinfo spec: containers: - name: app @@ -395,14 +393,8 @@ metadata: annotations: fluxcd.io/automated: "true" fluxcd.io/tag.app: semver:^5.0 - selector: - matchLabels: - app: podinfo spec: template: - metadata: - labels: - app: podinfo spec: containers: - name: app @@ -420,7 +412,7 @@ $ flux create image repository podinfo-image \ --export > ./$AUTO_PATH/podinfo-image.yaml $ cat ./$AUTO_PATH/podinfo-image.yaml --- -apiVersion: image.toolkit.fluxcd.io/v1alpha1 +apiVersion: image.toolkit.fluxcd.io/v1alpha2 kind: ImageRepository metadata: name: podinfo-image @@ -525,7 +517,7 @@ Say you want to filter for only images that are from `main` branch, and pick the `ImagePolicy` would look like this: ```yaml -apiVersion: image.toolkit.fluxcd.io/v1alpha1 +apiVersion: image.toolkit.fluxcd.io/v1alpha2 kind: ImagePolicy metadata: name: my-app-policy @@ -569,7 +561,7 @@ example, you might put a target environment as well as the version in your image Then you would use an `ImagePolicy` similar to this one: ```yaml -apiVersion: image.toolkit.fluxcd.io/v1alpha1 +apiVersion: image.toolkit.fluxcd.io/v1alpha2 kind: ImagePolicy metadata: name: my-app-policy @@ -600,7 +592,7 @@ $ flux create image policy my-app-policy \ --export > ./$AUTO_PATH/my-app-policy.yaml $ cat ./$AUTO_PATH/my-app-policy.yaml --- -apiVersion: image.toolkit.fluxcd.io/v1alpha1 +apiVersion: image.toolkit.fluxcd.io/v1alpha2 kind: ImagePolicy metadata: name: my-app-policy @@ -659,14 +651,8 @@ metadata: annotations: fluxcd.io/automated: "true" fluxcd.io/tag.app: semver:^5.0 # <-- `.app` here - selector: - matchLabels: - app: podinfo spec: template: - metadata: - labels: - app: podinfo spec: containers: - name: app # <-- targets `app` here @@ -685,14 +671,8 @@ kind: Deployment metadata: namespace: default name: my-app - selector: - matchLabels: - app: podinfo spec: template: - metadata: - labels: - app: podinfo spec: containers: - name: app diff --git a/docs/guides/sortable-image-tags.md b/docs/guides/sortable-image-tags.md index 5ee56acc..49f78761 100644 --- a/docs/guides/sortable-image-tags.md +++ b/docs/guides/sortable-image-tags.md @@ -114,8 +114,8 @@ built from that branch. Here is an example that filters for only images built from `main` branch, and selects the most recent according the timestamp (created with `date +%s`): -``` -apiVersion: image.toolkit.fluxcd.io/v1alpha1 +```yaml +apiVersion: image.toolkit.fluxcd.io/v1alpha2 kind: ImagePolicy metadata: name: image-repo-policy @@ -133,8 +133,8 @@ spec: If you don't care about the branch, that part can be a wildcard in the pattern: -``` -apiVersion: image.toolkit.fluxcd.io/v1alpha1 +```yaml +apiVersion: image.toolkit.fluxcd.io/v1alpha2 kind: ImagePolicy metadata: name: image-repo-policy