diff --git a/README.md b/README.md index f0256ebb..b19f9b3f 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ runtime for Flux v2. The APIs comprise Kubernetes custom resources, which can be created and updated by a cluster user, or by other automation tooling. -![overview](docs/_files/gitops-toolkit.png) +![overview](https://fluxcd.io/img/diagrams/gitops-toolkit.png) You can use the toolkit to extend Flux, or to build your own systems for continuous delivery -- see [the developer diff --git a/docs/_files/gitops-toolkit.png b/docs/_files/gitops-toolkit.png deleted file mode 100644 index cc5447b6..00000000 Binary files a/docs/_files/gitops-toolkit.png and /dev/null differ diff --git a/docs/_redirects b/docs/_redirects deleted file mode 100644 index 4860a76c..00000000 --- a/docs/_redirects +++ /dev/null @@ -1,18 +0,0 @@ -# individual rules -/core-concepts https://fluxcd.io/flux/concepts 301! -/contributing https://fluxcd.io/contributing 301! -/install.sh https://fluxcd.io/install.sh 301! - -# refer to https://github.com/fluxcd/flux2/discussions/367 -/dev-guides/* https://fluxcd.io/flux/gitops-toolkit/:splat 301! - - -# this is how things looked in the navbar anyway..? -/guides/faq-migration https://fluxcd.io/flux/migration/faq-migration 301! -/guides/flux-v1-automation-migration https://fluxcd.io/flux/migration/flux-v1-automation-migration 301! -/guides/flux-v1-migration https://fluxcd.io/flux/migration/flux-v1-migration 301! -/guides/helm-operator-migration https://fluxcd.io/flux/migration/helm-operator-migration 301! - - -# catch all -/* https://fluxcd.io/flux/:splat 301! diff --git a/docs/internal/diagrams.md b/docs/internal/diagrams.md deleted file mode 100644 index 138768cd..00000000 --- a/docs/internal/diagrams.md +++ /dev/null @@ -1,83 +0,0 @@ -# Flux Diagrams - -## Cluster sync from Git - -```mermaid -sequenceDiagram - actor me - participant git as Git

repository - participant sc as Flux

source-controller - participant kc as Flux

kustomize-controller - participant kube as Kubernetes

api-server - participant nc as Flux

notification-controller - me->>git: 1. git push - sc->>git: 2. git pull - sc->>sc: 3. build artifact for revision - sc->>kube: 4. update status for revision - sc-->>nc: 5. emit events - kube->>kc: 6. notify about new revision - kc->>sc: 7. fetch artifact for revision - kc->>kc: 8. build manifests to objects - kc-->>kc: 9. decrypt secrets - kc->>kube: 10. validate objects - kc->>kube: 11. apply objects - kc-->>kube: 12. delete objects - kc-->>kube: 13. wait for readiness - kc->>kube: 14. update status for revision - kc-->>nc: 15. emit events - nc-->>me: 16. send alerts for revision -``` - -## Helm release upgrade from Git - -```mermaid -sequenceDiagram - actor me - participant git as Git

repository - participant sc as Flux

source-controller - participant hc as Flux

helm-controller - participant kube as Kubernetes

api-server - participant nc as Flux

notification-controller - me->>git: 1. git push - sc->>git: 2. git pull - sc->>sc: 3. build chart for revision - sc->>kube: 4. update chart status - sc-->>nc: 5. emit events - kube->>hc: 6. notify about new revision - hc->>sc: 7. fetch chart - hc->>kube: 8. get values - hc->>hc: 9. render and customize manifests - hc-->>kube: 10. apply CRDs - hc->>kube: 11. upgrade release - hc-->>kube: 12. run tests - hc-->>kube: 13. wait for readiness - hc->>kube: 14. update status - hc-->>nc: 15. emit events - nc-->>me: 16. send alerts -``` - -## Image update to Git - -```mermaid -sequenceDiagram - actor me - participant oci as Image

repository - participant irc as Flux

image-reflector-controller - participant iac as Flux

image-automation-controller - participant kube as Kubernetes

api-server - participant nc as Flux

notification-controller - participant git as Git

repository - me->>oci: 1. docker push - irc->>oci: 2. list tags - irc->>irc: 3. match tags to policies - irc->>kube: 4. update status - irc-->>nc: 5. emit events - kube->>iac: 6. notify about new tags - iac->>git: 7. git clone - iac->>iac: 8. patch manifests with new tags - iac->>git: 9. git push - iac->>kube: 10. update status - iac-->>nc: 11. emit events - nc-->>me: 12. send alerts -``` - diff --git a/docs/internal/release.md b/docs/internal/release.md deleted file mode 100644 index 6fa08f03..00000000 --- a/docs/internal/release.md +++ /dev/null @@ -1,139 +0,0 @@ -# Flux release procedure - -The Flux Go modules and the GitOps Toolkit controllers are released by following the [semver](https://semver.org) conventions. - -Repositories subject to semver releases: - -1. [fluxcd/pkg](https://github.com/fluxcd/pkg) - - modules: `apis/meta`, `runtime`, various utilities - - dependencies: `k8s.io/*`, `sigs.k8s.io/controller-runtime` -1. [fluxcd/source-controller](https://github.com/fluxcd/source-controller) - - modules: `api` - - dependencies: `github.com/fluxcd/pkg/*` -1. [fluxcd/kustomize-controller](https://github.com/fluxcd/kustomize-controller) - - modules: `api` - - dependencies: `github.com/fluxcd/source-controller/api`, `github.com/fluxcd/pkg/*` -1. [fluxcd/helm-controller](https://github.com/fluxcd/helm-controller) - - modules: `api` - - dependencies: `github.com/fluxcd/source-controller/api`, `github.com/fluxcd/pkg/*` -1. [fluxcd/image-reflector-controller](https://github.com/fluxcd/image-reflector-controller) - - modules: `api` - - dependencies: `github.com/fluxcd/pkg/*` -1. [fluxcd/image-automation-controller](https://github.com/fluxcd/image-automation-controller) - - modules: `api` - - dependencies: `github.com/fluxcd/source-controller/api`, `github.com/fluxcd/image-reflector-controller/api`, `github.com/fluxcd/pkg/*` -1. [fluxcd/notification-controller](https://github.com/fluxcd/notification-controller) - - modules: `api` - - dependencies: `github.com/fluxcd/pkg/*` -1. [fluxcd/flux2](https://github.com/fluxcd/flux2) - - modules: `manifestgen` - - dependencies: `github.com/fluxcd/source-controller/api`, `github.com/fluxcd/kustomize-controller/api`, `github.com/fluxcd/helm-controller/api`, `github.com/fluxcd/image-reflector-controller/api`, `github.com/fluxcd/image-automation-controller/api`, `github.com/fluxcd/notification-controller/api`, `github.com/fluxcd/pkg/*` -1. [fluxcd/terraform-provider-flux](https://github.com/fluxcd/terraform-provider-flux) - - dependencies: `github.com/fluxcd/flux2/pkg/manifestgen` - -## Release procedure - -### Go packages - -The Go packages in [fluxcd/pkg](https://github.com/fluxcd/pkg) are dedicated modules, -each module has its own set of dependencies and release cycle. - -Release procedure for a package: - -1. Checkout the `main` branch and pull changes from remote. -1. Run `make release- VER=`. - -### Controllers - -A toolkit controller has a dedicated module for its API, the API module -has its own set of dependencies. - -Release procedure for a controller and its API: - -1. Checkout the `main` branch and pull changes from remote. -1. Create a `api/` tag and push it to remote. -1. Create a new branch from `main` i.e. `release-`. This - will function as your release preparation branch. -1. Update the `github.com/fluxcd/-controller/api` version in `go.mod` -1. Add an entry to the `CHANGELOG.md` for the new release and change the - `newTag` value in ` config/manager/kustomization.yaml` to that of the - semver release you are going to make. Commit and push your changes. -1. Create a PR for your release branch and get it merged into `main`. -1. Create a `` tag for the merge commit in `main` and - push it to remote. -1. Confirm CI builds and releases the newly tagged version. - -### Flux - -Release procedure for Flux: - -1. Checkout the `main` branch and pull changes from remote. -1. Create a `` tag form `main` and push it to remote. -1. Confirm CI builds and releases the newly tagged version. - -## Upgrade Kubernetes modules - -Flux has the following Kubernetes dependencies: - -- `k8s.io/api` -- `k8s.io/apiextensions-apiserver` -- `k8s.io/apimachinery` -- `k8s.io/cli-runtime` -- `k8s.io/client-go` -- `sigs.k8s.io/controller-runtime` - -**Note** that all `k8s.io/*` packages must have the same version in `go.mod` e.g.: - -``` - k8s.io/api v0.20.2 - k8s.io/apiextensions-apiserver v0.20.2 - k8s.io/apimachinery v0.20.2 - k8s.io/cli-runtime v0.20.2 - k8s.io/client-go v0.20.2 -``` - -The specialised reconcilers depend on: - -- kustomize-controller: `sigs.k8s.io/kustomize/api` -- image-automation-controller: `sigs.k8s.io/kustomize/kyaml` -- helm-controller: `helm.sh/helm/v3` - -**Note** that the `k8s.io/*` version must be compatible with both `kustomize/api` and `helm/v3`. -If there is a breaking change in `client-go` we have to wait for Kustomize and Helm to upgrade first. - -### Upgrade procedure: - -`fluxcd/pkg`: - -1. Update the `k8s.io/*` version in `pkg/apis/meta/go.mod` -1. Release the `apis/meta` package -1. Update `apis/meta` version in `pkg/runtime/go.mod` -1. Update the `k8s.io/*` version in `pkg/runtime/go.mod` -1. Update `sigs.k8s.io/controller-runtime` version in `pkg/runtime/go.mod` -1. Release the `runtime` package - -`fluxcd/source-controller`: - -1. Update the `github.com/fluxcd/pkg/apis/meta` version in `source-controller/api/go.mod` and `source-controller/go.mod` -1. Update the `k8s.io/*` version in `source-controller/api/go.mod` and `source-controller/go.mod` -1. Update the `sigs.k8s.io/controller-runtime` version in `source-controller/api/go.mod` and `source-controller/go.mod` -1. Update the `github.com/fluxcd/pkg/runtime` version in `source-controller/go.mod` -1. Release the `api` package - -`fluxcd/-controller`: - -1. Update the `github.com/fluxcd/source-controller/api` version in `-controller/api/go.mod` and `-controller/go.mod` -1. Update the `github.com/fluxcd/pkg/apis/meta` version in `-controller/api/go.mod` and `-controller/go.mod` -1. Update the `k8s.io/*` version in `-controller/api/go.mod` and `-controller/go.mod` -1. Update the `github.com/fluxcd/pkg/runtime` version in `-controller/go.mod` -1. Release the `api` package - -`fluxcd/flux2`: - -1. Update the `github.com/fluxcd/*-controller/api` version in `flux2/go.mod` (automated with [GitHub Actions](../../.github/workflows/update.yaml)) -1. Update the `github.com/fluxcd/pkg/*` version in `flux2/go.mod` -1. Update the `k8s.io/*` and `github.com/fluxcd/pkg/runtime` version in `flux2/go.mod` - -`fluxcd/terraform-provider-flux`: - -1. Update the `github.com/fluxcd/flux2` version in `terraform-provider-flux/go.mod` (automated with [GitHub Actions](https://github.com/fluxcd/terraform-provider-flux/blob/main/.github/workflows/update.yaml))