Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1cab68e385 | ||
|
|
07e4fa8abd | ||
|
|
77b86c78a4 | ||
|
|
e4c701864a | ||
|
|
0275f28490 | ||
|
|
300c3dd578 | ||
|
|
fb81870803 | ||
|
|
bb6a61a313 | ||
|
|
976d917a57 | ||
|
|
7e13cc2ca8 | ||
|
|
704296df4e | ||
|
|
65244e3b8d |
20
README.md
20
README.md
@@ -20,12 +20,11 @@ Flux v2 is constructed with the [GitOps Toolkit](#gitops-toolkit), a
|
|||||||
set of composable APIs and specialized tools for building Continuous
|
set of composable APIs and specialized tools for building Continuous
|
||||||
Delivery on top of Kubernetes.
|
Delivery on top of Kubernetes.
|
||||||
|
|
||||||
## `flux` installation
|
## Flux installation
|
||||||
|
|
||||||
With Homebrew:
|
With Homebrew:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
brew tap fluxcd/tap
|
|
||||||
brew install fluxcd/tap/flux
|
brew install fluxcd/tap/flux
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -88,7 +87,8 @@ guides](https://toolkit.fluxcd.io/dev-guides/source-watcher/).
|
|||||||
|
|
||||||
## Community
|
## Community
|
||||||
|
|
||||||
The Flux project is always looking for new contributors and there are a multitude of ways to get involved. Depending on what you want to do, some of the following bits might be your first steps:
|
The Flux project is always looking for new contributors and there are a multitude of ways to get involved.
|
||||||
|
Depending on what you want to do, some of the following bits might be your first steps:
|
||||||
|
|
||||||
- Join our upcoming dev meetings ([meeting access and agenda](https://docs.google.com/document/d/1l_M0om0qUEN_NNiGgpqJ2tvsF2iioHkaARDeh6b70B0/view))
|
- Join our upcoming dev meetings ([meeting access and agenda](https://docs.google.com/document/d/1l_M0om0qUEN_NNiGgpqJ2tvsF2iioHkaARDeh6b70B0/view))
|
||||||
- Talk to us in the #flux channel on [CNCF Slack](https://slack.cncf.io/)
|
- Talk to us in the #flux channel on [CNCF Slack](https://slack.cncf.io/)
|
||||||
@@ -97,15 +97,19 @@ The Flux project is always looking for new contributors and there are a multitud
|
|||||||
- To be part of the conversation about Flux's development, [join the flux-dev mailing list](https://lists.cncf.io/g/cncf-flux-dev).
|
- To be part of the conversation about Flux's development, [join the flux-dev mailing list](https://lists.cncf.io/g/cncf-flux-dev).
|
||||||
- Check out [how to contribute](CONTRIBUTING.md) to the project
|
- Check out [how to contribute](CONTRIBUTING.md) to the project
|
||||||
|
|
||||||
## Featured Talks
|
### Featured Talks
|
||||||
- 19 Oct 2020 - [The Power of GitOps with Flux & GitOps Toolkit - Part 1](https://youtu.be/0v5bjysXTL8)
|
|
||||||
|
- 28 Oct 2020 - [The Kubelist Podcast: Flux with Michael Bridgen](https://www.heavybit.com/library/podcasts/the-kubelist-podcast/ep-5-flux-with-michael-bridgen-of-weaveworks/)
|
||||||
|
- 19 Oct 2020 - [The Power of GitOps with Flux & GitOps Toolkit - Part 1 with Leigh Capili](https://youtu.be/0v5bjysXTL8)
|
||||||
- 12 Oct 2020 - [Rawkode Live: Introduction to GitOps Toolkit with Stefan Prodan](https://youtu.be/HqTzuOBP0eY)
|
- 12 Oct 2020 - [Rawkode Live: Introduction to GitOps Toolkit with Stefan Prodan](https://youtu.be/HqTzuOBP0eY)
|
||||||
- 4 Sep 2020 - [KubeCon/CloudNativeCon Europe: The road to Flux v2 and Progressive Delivery with Stefan Prodan & Hidde Beydals](https://youtu.be/8v94nUkXsxU)
|
- 4 Sep 2020 - [KubeCon Europe: The road to Flux v2 and Progressive Delivery with Stefan Prodan & Hidde Beydals](https://youtu.be/8v94nUkXsxU)
|
||||||
- 25 June 2020 - [Cloud Native Nordics: Introduction to GitOps & GitOps Toolkit with Alexis Richardson & Stefan Prodan](https://youtu.be/qQBtSkgl7tI)
|
- 25 June 2020 - [Cloud Native Nordics: Introduction to GitOps & GitOps Toolkit with Alexis Richardson & Stefan Prodan](https://youtu.be/qQBtSkgl7tI)
|
||||||
- 7 May 2020 - [GitOps Days - Community Special: GitOps Toolkit Experimentation with Stefan Prodan](https://youtu.be/WHzxunv4DKk?t=6521)
|
- 7 May 2020 - [GitOps Days - Community Special: GitOps Toolkit Experimentation with Stefan Prodan](https://youtu.be/WHzxunv4DKk?t=6521)
|
||||||
|
|
||||||
### Upcoming Meetups
|
### Upcoming Events
|
||||||
- 2 Nov 2020 - [The Power of GitOps with Flux & GitOps Toolkit - Part 2](https://www.meetup.com/GitOps-Community/events/273934676/)
|
|
||||||
|
- 2 Nov 2020 - [The Power of GitOps with Flux & GitOps Toolkit - Part 2 with Leigh Capili](https://www.meetup.com/GitOps-Community/events/273934676/)
|
||||||
- 12-13 Nov 2020 - [GitOps Days EMEA](https://www.gitopsdays.com/) with talks and workshops on migrating to Flux v2 and Helm Controller
|
- 12-13 Nov 2020 - [GitOps Days EMEA](https://www.gitopsdays.com/) with talks and workshops on migrating to Flux v2 and Helm Controller
|
||||||
|
- 19 Nov 2020 - [KubeCon NA: Progressive Delivery Techniques with Flagger and Flux v2 with Stefan Prodan](https://kccncna20.sched.com/event/1b04f8408b49976b843a5d0019cb8112)
|
||||||
|
|
||||||
We are looking forward to seeing you with us!
|
We are looking forward to seeing you with us!
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ flux bootstrap github \
|
|||||||
|
|
||||||
Example output:
|
Example output:
|
||||||
|
|
||||||
```text
|
```console
|
||||||
$ flux bootstrap github --owner=gitopsrun --repository=fleet-infra --path=staging-cluster --team=devs
|
$ flux bootstrap github --owner=gitopsrun --repository=fleet-infra --path=staging-cluster --team=devs
|
||||||
► connecting to github.com
|
► connecting to github.com
|
||||||
✔ repository created
|
✔ repository created
|
||||||
@@ -122,6 +122,7 @@ $ flux bootstrap github --owner=gitopsrun --repository=fleet-infra --path=stagin
|
|||||||
► installing components in flux-system namespace
|
► installing components in flux-system namespace
|
||||||
deployment "source-controller" successfully rolled out
|
deployment "source-controller" successfully rolled out
|
||||||
deployment "kustomize-controller" successfully rolled out
|
deployment "kustomize-controller" successfully rolled out
|
||||||
|
deployment "helm-controller" successfully rolled out
|
||||||
deployment "notification-controller" successfully rolled out
|
deployment "notification-controller" successfully rolled out
|
||||||
✔ install completed
|
✔ install completed
|
||||||
► configuring deploy key
|
► configuring deploy key
|
||||||
@@ -213,11 +214,11 @@ In about 30s the synchronization should start:
|
|||||||
|
|
||||||
```console
|
```console
|
||||||
$ watch flux get kustomizations
|
$ watch flux get kustomizations
|
||||||
NAME REVISION SUSPENDED READY MESSAGE
|
NAME READY MESSAGE
|
||||||
flux-system main/6eea299fe9997c8561b826b67950afaf9a476cf8 False True Applied revision: main/6eea299fe9997c8561b826b67950afaf9a476cf8
|
flux-system True Applied revision: main/6eea299fe9997c8561b826b67950afaf9a476cf8
|
||||||
webapp-backend False False dependency 'flux-system/webapp-common' is not ready
|
webapp-backend False dependency 'flux-system/webapp-common' is not ready
|
||||||
webapp-common master/7411da595c25183daba255068814b83843fe3395 False True Applied revision: master/7411da595c25183daba255068814b83843fe3395
|
webapp-common True Applied revision: master/7411da595c25183daba255068814b83843fe3395
|
||||||
webapp-frontend False False dependency 'flux-system/webapp-backend' is not ready
|
webapp-frontend False dependency 'flux-system/webapp-backend' is not ready
|
||||||
```
|
```
|
||||||
|
|
||||||
When the synchronization finishes you can check that the webapp services are running:
|
When the synchronization finishes you can check that the webapp services are running:
|
||||||
|
|||||||
315
docs/guides/flux-v1-migration.md
Normal file
315
docs/guides/flux-v1-migration.md
Normal file
@@ -0,0 +1,315 @@
|
|||||||
|
# Migrate from Flux v1 to v2
|
||||||
|
|
||||||
|
This guide walks you through migrating from Flux v1 to v2.
|
||||||
|
Read the [FAQ](../faq/index.md) to find out what differences are between v1 and v2.
|
||||||
|
|
||||||
|
!!! info "Automated image updates"
|
||||||
|
The image automation feature is under development in Flux v2.
|
||||||
|
Please consult the [roadmap](../roadmap/index.md) for more details.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
You will need a Kubernetes cluster version **1.16** or newer
|
||||||
|
and kubectl version **1.18** or newer.
|
||||||
|
|
||||||
|
### Install Flux v2 CLI
|
||||||
|
|
||||||
|
With Homebrew:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
brew install fluxcd/tap/flux
|
||||||
|
```
|
||||||
|
|
||||||
|
With Bash:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl -s https://toolkit.fluxcd.io/install.sh | sudo bash
|
||||||
|
|
||||||
|
# enable completions in ~/.bash_profile
|
||||||
|
. <(flux completion bash)
|
||||||
|
```
|
||||||
|
|
||||||
|
Command-line completion for `zsh`, `fish`, and `powershell`
|
||||||
|
are also supported with their own sub-commands.
|
||||||
|
|
||||||
|
Binaries for macOS, Windows and Linux AMD64/ARM are available for download on the
|
||||||
|
[release page](https://github.com/fluxcd/flux2/releases).
|
||||||
|
|
||||||
|
Verify that your cluster satisfies the prerequisites with:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
flux check --pre
|
||||||
|
```
|
||||||
|
|
||||||
|
## GitOps migration
|
||||||
|
|
||||||
|
Flux v2 offers an installation procedure that is declarative first
|
||||||
|
and disaster resilient.
|
||||||
|
|
||||||
|
Using the `flux bootstrap` command you can install Flux on a
|
||||||
|
Kubernetes cluster and configure it to manage itself from a Git
|
||||||
|
repository. The Git repository created during bootstrap can be used
|
||||||
|
to define the state of your fleet of Kubernetes clusters.
|
||||||
|
|
||||||
|
For a detailed walk-through of the bootstrap procedure please see the [installation guide](installation.md).
|
||||||
|
|
||||||
|
After you've installed Flux v2 on your cluster using bootstrap,
|
||||||
|
you can delete the Flux v1 from your clusters and move the manifests from the
|
||||||
|
Flux v1 repository to the bootstrap one.
|
||||||
|
|
||||||
|
## In-place migration
|
||||||
|
|
||||||
|
!!! warning
|
||||||
|
For production use we recommend using the **bootstrap** procedure,
|
||||||
|
but if you wish to install Flux v2 in the
|
||||||
|
same way as Flux v1 then follow along.
|
||||||
|
|
||||||
|
### Flux read-only mode
|
||||||
|
|
||||||
|
Assuming you've installed Flux v1 to sync a directory with plain YAMLs from a private Git repo:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# create namespace
|
||||||
|
kubectl create ns flux
|
||||||
|
|
||||||
|
# deploy Flux v1
|
||||||
|
fluxctl install \
|
||||||
|
--git-url=git@github.com:org/app \
|
||||||
|
--git-branch=main \
|
||||||
|
--git-path=./deploy \
|
||||||
|
--git-readonly \
|
||||||
|
--namespace=flux | kubectl apply -f -
|
||||||
|
|
||||||
|
# print deploy key
|
||||||
|
fluxctl identity --k8s-fwd-ns flux
|
||||||
|
|
||||||
|
# trigger sync
|
||||||
|
fluxctl sync --k8s-fwd-ns flux
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! hint "Uninstall Flux v1"
|
||||||
|
Before you proceed, scale the Flux v1 deployment to zero
|
||||||
|
or delete its namespace and RBAC.
|
||||||
|
|
||||||
|
If there are YAML files in your `deploy` dir that are not meant to be
|
||||||
|
applied on the cluster, you can exclude them by placing a `.sourceignore` in your repo root:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ cat .sourceignore
|
||||||
|
# exclude all
|
||||||
|
/*
|
||||||
|
# include deploy dir
|
||||||
|
!/deploy
|
||||||
|
# exclude files from deploy dir
|
||||||
|
/deploy/**/eksctl.yaml
|
||||||
|
/deploy/**/charts
|
||||||
|
```
|
||||||
|
|
||||||
|
Install Flux v2 in the `flux-system` namespace:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ flux install \
|
||||||
|
--arch=amd64 \
|
||||||
|
--network-policy=true \
|
||||||
|
--watch-all-namespaces=true \
|
||||||
|
--namespace=flux-systen
|
||||||
|
✚ generating manifests
|
||||||
|
✔ manifests build completed
|
||||||
|
► installing components in flux-system namespace
|
||||||
|
✔ install completed
|
||||||
|
◎ verifying installation
|
||||||
|
✔ source-controller ready
|
||||||
|
✔ kustomize-controller ready
|
||||||
|
✔ helm-controller ready
|
||||||
|
✔ notification-controller ready
|
||||||
|
✔ install finished
|
||||||
|
```
|
||||||
|
|
||||||
|
Register your Git repository and add the deploy key with read-only access:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ flux create source git app \
|
||||||
|
--url=ssh://git@github.com/org/app \
|
||||||
|
--branch=main \
|
||||||
|
--interval=1m
|
||||||
|
► generating deploy key pair
|
||||||
|
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp2x9ghVmv1zD...
|
||||||
|
Have you added the deploy key to your repository: y
|
||||||
|
► collecting preferred public key from SSH server
|
||||||
|
✔ collected public key from SSH server:
|
||||||
|
github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A...
|
||||||
|
► applying secret with keys
|
||||||
|
✔ authentication configured
|
||||||
|
✚ generating GitRepository source
|
||||||
|
► applying GitRepository source
|
||||||
|
✔ GitRepository source created
|
||||||
|
◎ waiting for GitRepository source reconciliation
|
||||||
|
✔ GitRepository source reconciliation completed
|
||||||
|
✔ fetched revision: main/5302d04c2ab8f0579500747efa0fe7abc72c8f9b
|
||||||
|
```
|
||||||
|
|
||||||
|
Configure the reconciliation of the `deploy` dir on your cluster:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ flux create kustomization app \
|
||||||
|
--source=app \
|
||||||
|
--path="./deploy" \
|
||||||
|
--prune=true \
|
||||||
|
--interval=10m
|
||||||
|
✚ generating Kustomization
|
||||||
|
► applying Kustomization
|
||||||
|
✔ Kustomization created
|
||||||
|
◎ waiting for Kustomization reconciliation
|
||||||
|
✔ Kustomization app is ready
|
||||||
|
✔ applied revision main/5302d04c2ab8f0579500747efa0fe7abc72c8f9b
|
||||||
|
```
|
||||||
|
|
||||||
|
If your repository contains secrets encrypted with Mozilla SOPS, please read this [guide](mozilla-sops.md).
|
||||||
|
|
||||||
|
Pull changes from Git and apply them immediately:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
flux reconcile kustomization app --with-source
|
||||||
|
```
|
||||||
|
|
||||||
|
List all Kubernetes objects reconciled by `app`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
kubectl get all --all-namespaces \
|
||||||
|
-l=kustomize.toolkit.fluxcd.io/name=app \
|
||||||
|
-l=kustomize.toolkit.fluxcd.io/namespace=flux-system
|
||||||
|
```
|
||||||
|
|
||||||
|
### Flux with Kustomize
|
||||||
|
|
||||||
|
Assuming you've installed Flux v1 to sync a Kustomize overlay from an HTTPS Git repository:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
fluxctl install \
|
||||||
|
--git-url=https://github.com/org/app \
|
||||||
|
--git-branch=main \
|
||||||
|
--manifest-generation \
|
||||||
|
--namespace=flux | kubectl apply -f -
|
||||||
|
```
|
||||||
|
|
||||||
|
With the following `.flux.yaml` in the root dir:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
version: 1
|
||||||
|
patchUpdated:
|
||||||
|
generators:
|
||||||
|
- command: kustomize build ./overlays/prod
|
||||||
|
patchFile: flux-patch.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! hint "Uninstall Flux v1"
|
||||||
|
Before you proceed, delete the Flux v1 namespace
|
||||||
|
and remove the `.flux.yaml` from your repo.
|
||||||
|
|
||||||
|
Install Flux v2 in the `flux-system` namespace:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
flux install
|
||||||
|
```
|
||||||
|
|
||||||
|
Register the Git repository using a personal access token:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
flux create source git app \
|
||||||
|
--url=https://github.com/org/app \
|
||||||
|
--branch=main \
|
||||||
|
--username=git \
|
||||||
|
--password=token \
|
||||||
|
--interval=1m
|
||||||
|
```
|
||||||
|
|
||||||
|
Configure the reconciliation of the `prod` overlay on your cluster:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
flux create kustomization app \
|
||||||
|
--source=app \
|
||||||
|
--path="./overlays/prod" \
|
||||||
|
--prune=true \
|
||||||
|
--interval=10m
|
||||||
|
```
|
||||||
|
|
||||||
|
Check the status of the Kustomization reconciliation:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ flux get kustomizations app
|
||||||
|
NAME REVISION SUSPENDED READY
|
||||||
|
app main/5302d04c2ab8f0579500747efa0fe7abc72c8f9b False True
|
||||||
|
```
|
||||||
|
|
||||||
|
### Flux with Slack notifications
|
||||||
|
|
||||||
|
Assuming you've configured Flux v1 to send notifications to Slack with FluxCloud.
|
||||||
|
|
||||||
|
With Flux v2, create an alert provider for a Slack channel:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
flux create alert-provider slack \
|
||||||
|
--type=slack \
|
||||||
|
--channel=general \
|
||||||
|
--address=https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK
|
||||||
|
```
|
||||||
|
|
||||||
|
And configure notifications for the `app` reconciliation events:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
flux create alert app \
|
||||||
|
--provider-ref=slack \
|
||||||
|
--event-severity=info \
|
||||||
|
--event-source=GitRepository/app \
|
||||||
|
--event-source=Kustomization/app
|
||||||
|
```
|
||||||
|
|
||||||
|
For more details, read the guides on how to configure
|
||||||
|
[notifications](notifications.md) and [webhooks](webhook-receivers.md).
|
||||||
|
|
||||||
|
### Flux debugging
|
||||||
|
|
||||||
|
Check the status of Git operations:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ kubectl -n flux-system get gitrepositories
|
||||||
|
NAME READY MESSAGE
|
||||||
|
app True Fetched revision: main/5302d04c2ab8f0579500747efa0fe7abc72c8f9b
|
||||||
|
test False SSH handshake failed: unable to authenticate, attempted methods [none publickey]
|
||||||
|
```
|
||||||
|
|
||||||
|
Check the status of the cluster reconciliation with kubectl:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ kubectl -n flux-system get kustomizations
|
||||||
|
NAME READY STATUS
|
||||||
|
app True Applied revision: main/5302d04c2ab8f0579500747efa0fe7abc72c8f9
|
||||||
|
test False The Service 'backend' is invalid: spec.type: Unsupported value: 'Ingress'
|
||||||
|
```
|
||||||
|
|
||||||
|
Suspend a reconciliation:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ flux suspend kustomization app
|
||||||
|
► suspending kustomization app in flux-system namespace
|
||||||
|
✔ kustomization suspended
|
||||||
|
```
|
||||||
|
|
||||||
|
Check the status with kubectl:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ kubectl -n flux-system get kustomization app
|
||||||
|
NAME READY STATUS
|
||||||
|
app False Kustomization is suspended, skipping reconciliation
|
||||||
|
```
|
||||||
|
|
||||||
|
Resume a reconciliation:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ flux resume kustomization app
|
||||||
|
► resuming Kustomization app in flux-system namespace
|
||||||
|
✔ Kustomization resumed
|
||||||
|
◎ waiting for Kustomization reconciliation
|
||||||
|
✔ Kustomization reconciliation completed
|
||||||
|
✔ applied revision main/5302d04c2ab8f0579500747efa0fe7abc72c8f9b
|
||||||
|
```
|
||||||
@@ -67,7 +67,7 @@ flux bootstrap <GIT-PROVIDER> \
|
|||||||
and `--arch=arm64` for ARMv8 64-bit container images.
|
and `--arch=arm64` for ARMv8 64-bit container images.
|
||||||
|
|
||||||
If you wish to install a specific version, use the Flux
|
If you wish to install a specific version, use the Flux
|
||||||
[release tag](https://github.com/fluxcd/flux2/releases) e.g. `--version=v0.0.14`.
|
[release tag](https://github.com/fluxcd/flux2/releases) e.g. `--version=v0.2.0`.
|
||||||
|
|
||||||
With `--path` you can configure the directory which will be used to reconcile the target cluster.
|
With `--path` you can configure the directory which will be used to reconcile the target cluster.
|
||||||
To control multiple clusters from the same Git repository, you have to set a unique path per
|
To control multiple clusters from the same Git repository, you have to set a unique path per
|
||||||
@@ -76,9 +76,9 @@ cluster e.g. `staging-cluster` and `production-cluster`:
|
|||||||
```sh
|
```sh
|
||||||
├── staging-cluster # <- path=staging-cluster
|
├── staging-cluster # <- path=staging-cluster
|
||||||
│ └── flux-system # <- namespace dir generated by bootstrap
|
│ └── flux-system # <- namespace dir generated by bootstrap
|
||||||
│ ├── toolkit-components.yaml
|
│ ├── gotk-components.yaml
|
||||||
│ ├── toolkit-kustomization.yaml
|
│ ├── gotk-sync.yaml
|
||||||
│ └── toolkit-source.yaml
|
│ └── kustomization.yaml
|
||||||
└── production-cluster # <- path=production-cluster
|
└── production-cluster # <- path=production-cluster
|
||||||
└── flux-system
|
└── flux-system
|
||||||
```
|
```
|
||||||
@@ -213,16 +213,16 @@ Generate the Flux manifests with:
|
|||||||
```sh
|
```sh
|
||||||
flux install --version=latest \
|
flux install --version=latest \
|
||||||
--arch=amd64 \ # on ARM64/AARCH64 clusters use --arch=arm64
|
--arch=amd64 \ # on ARM64/AARCH64 clusters use --arch=arm64
|
||||||
--export > ./my-cluster/flux-system/toolkit-components.yaml
|
--export > ./my-cluster/flux-system/gotk-components.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
If your cluster must pull images from a private container registry, first you should pull
|
If your cluster must pull images from a private container registry, first you should pull
|
||||||
the toolkit images from GitHub Container Registry and push them to your registry, for example:
|
the toolkit images from GitHub Container Registry and push them to your registry, for example:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker pull ghcr.io/fluxcd/source-controller:v0.0.14
|
docker pull ghcr.io/fluxcd/source-controller:v0.2.0
|
||||||
docker tag ghcr.io/fluxcd/source-controller:v0.0.14 registry.internal/fluxcd/source-controller:v0.0.14
|
docker tag ghcr.io/fluxcd/source-controller:v0.2.0 registry.internal/fluxcd/source-controller:v0.2.0
|
||||||
docker push registry.internal/fluxcd/source-controller:v0.0.14
|
docker push registry.internal/fluxcd/source-controller:v0.2.0
|
||||||
```
|
```
|
||||||
|
|
||||||
Create the pull secret in the `flux-system` namespace:
|
Create the pull secret in the `flux-system` namespace:
|
||||||
@@ -241,19 +241,19 @@ Set your registry domain, and the pull secret when generating the manifests:
|
|||||||
flux install --version=latest \
|
flux install --version=latest \
|
||||||
--registry=registry.internal/fluxcd \
|
--registry=registry.internal/fluxcd \
|
||||||
--image-pull-secret=regcred \
|
--image-pull-secret=regcred \
|
||||||
--export > ./my-cluster/flux-system/toolkit-components.yaml
|
--export > ./my-cluster/flux-system/gotk-components.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
Commit and push the manifest to the master branch:
|
Commit and push the manifest to the master branch:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git add -A && git commit -m "add toolkit manifests" && git push
|
git add -A && git commit -m "add components" && git push
|
||||||
```
|
```
|
||||||
|
|
||||||
Apply the manifests on your cluster:
|
Apply the manifests on your cluster:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
kubectl apply -f ./my-cluster/flux-system/toolkit-components.yaml
|
kubectl apply -f ./my-cluster/flux-system/gotk-components.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
Verify that the controllers have started:
|
Verify that the controllers have started:
|
||||||
@@ -297,25 +297,27 @@ flux create kustomization flux-system \
|
|||||||
--interval=10m
|
--interval=10m
|
||||||
```
|
```
|
||||||
|
|
||||||
Export both objects, commit and push the manifests to Git:
|
Export both objects, generate a `kustomization.yaml`, commit and push the manifests to Git:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
flux export source git flux-system \
|
flux export source git flux-system \
|
||||||
> ./my-cluster/flux-system/toolkit-source.yaml
|
> ./my-cluster/flux-system/gotk-sync.yaml
|
||||||
|
|
||||||
flux export kustomization flux-system \
|
flux export kustomization flux-system \
|
||||||
> ./my-cluster/flux-system/toolkit-kustomization.yaml
|
>> ./my-cluster/flux-system/gotk-sync.yaml
|
||||||
|
|
||||||
git add -A && git commit -m "add toolkit reconciliation" && git push
|
cd ./my-cluster/flux-system && kustomize create --autodetect
|
||||||
|
|
||||||
|
git add -A && git commit -m "add sync manifests" && git push
|
||||||
```
|
```
|
||||||
|
|
||||||
To upgrade the toolkit to a newer version, run the install command and commit the changes:
|
To upgrade the Flux components to a newer version, run the install command and commit the changes:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
flux install --version=latest \
|
flux install --version=latest \
|
||||||
--export > ./my-cluster/flux-system/toolkit-components.yaml
|
--export > ./my-cluster/flux-system/gotk-components.yaml
|
||||||
|
|
||||||
git add -A && git commit -m "update toolkit" && git push
|
git add -A && git commit -m "update flux" && git push
|
||||||
```
|
```
|
||||||
|
|
||||||
The source-controller will pull the changes on the cluster, then the kustomize-controller
|
The source-controller will pull the changes on the cluster, then the kustomize-controller
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ guides](https://toolkit.fluxcd.io/dev-guides/source-watcher/).
|
|||||||
|
|
||||||
Components:
|
Components:
|
||||||
|
|
||||||
- [Flux CLI](https://github.com/fluxcd/flux2)
|
|
||||||
- [Source Controller](components/source/controller.md)
|
- [Source Controller](components/source/controller.md)
|
||||||
- [GitRepository CRD](components/source/gitrepositories.md)
|
- [GitRepository CRD](components/source/gitrepositories.md)
|
||||||
- [HelmRepository CRD](components/source/helmrepositories.md)
|
- [HelmRepository CRD](components/source/helmrepositories.md)
|
||||||
@@ -63,26 +62,35 @@ Components:
|
|||||||
## Get Started
|
## Get Started
|
||||||
|
|
||||||
!!!hint "Get started with Flux v2!"
|
!!!hint "Get started with Flux v2!"
|
||||||
Following this [guide](get-started/index.md) will just take a couple of minutes to complete: After installing the `flux` binary and running a couple of very simple commands, you will have a GitOps workflow setup which involves a staging and a production cluster.
|
Following this [guide](get-started/index.md) will just take a couple of minutes to complete:
|
||||||
|
After installing the `flux` CLI and running a couple of very simple commands,
|
||||||
|
you will have a GitOps workflow setup which involves a staging and a production cluster.
|
||||||
|
|
||||||
## Community
|
## Community
|
||||||
|
|
||||||
The Flux project is always looking for new contributors and there are a multitude of ways to get involved. Depending on what you want to do, some of the following bits might be your first steps:
|
The Flux project is always looking for new contributors and there are a multitude of ways to get involved.
|
||||||
|
Depending on what you want to do, some of the following bits might be your first steps:
|
||||||
|
|
||||||
- Join our upcoming dev meetings ([meeting access and agenda](https://docs.google.com/document/d/1l_M0om0qUEN_NNiGgpqJ2tvsF2iioHkaARDeh6b70B0/view))
|
- Join our upcoming dev meetings ([meeting access and agenda](https://docs.google.com/document/d/1l_M0om0qUEN_NNiGgpqJ2tvsF2iioHkaARDeh6b70B0/view))
|
||||||
|
- Ask questions and add suggestions in our [GitOps Toolkit Discussions](https://github.com/fluxcd/toolkit/discussions)
|
||||||
- Talk to us in the #flux channel on [CNCF Slack](https://slack.cncf.io/)
|
- Talk to us in the #flux channel on [CNCF Slack](https://slack.cncf.io/)
|
||||||
- Join the [planning discussions](https://github.com/fluxcd/flux2/discussions)
|
- Join the [planning discussions](https://github.com/fluxcd/flux2/discussions)
|
||||||
- And if you are completely new to Flux v2 and the GitOps Toolkit, take a look at our [Get Started guide](get-started/index.md) and give us feedback
|
- And if you are completely new to Flux v2 and the GitOps Toolkit, take a look at our [Get Started guide](get-started/index.md) and give us feedback
|
||||||
- Check out [how to contribute](contributing/index.md) to the project
|
- Check out [how to contribute](contributing/index.md) to the project
|
||||||
|
|
||||||
## Featured Talks
|
### Featured Talks
|
||||||
|
|
||||||
|
- 28 Oct 2020 - [The Kubelist Podcast: Flux with Michael Bridgen](https://www.heavybit.com/library/podcasts/the-kubelist-podcast/ep-5-flux-with-michael-bridgen-of-weaveworks/)
|
||||||
|
- 19 Oct 2020 - [The Power of GitOps with Flux & GitOps Toolkit - Part 1 with Leigh Capili](https://youtu.be/0v5bjysXTL8)
|
||||||
- 12 Oct 2020 - [Rawkode Live: Introduction to GitOps Toolkit with Stefan Prodan](https://youtu.be/HqTzuOBP0eY)
|
- 12 Oct 2020 - [Rawkode Live: Introduction to GitOps Toolkit with Stefan Prodan](https://youtu.be/HqTzuOBP0eY)
|
||||||
- 4 Sep 2020 - [KubeCon/CloudNativeCon Europe: The road to Flux v2 and Progressive Delivery with Stefan Prodan & Hidde Beydals](https://youtu.be/8v94nUkXsxU)
|
- 4 Sep 2020 - [KubeCon Europe: The road to Flux v2 and Progressive Delivery with Stefan Prodan & Hidde Beydals](https://youtu.be/8v94nUkXsxU)
|
||||||
- 25 June 2020 - [Cloud Native Nordics: Introduction to GitOps & GitOps Toolkit with Alexis Richardson & Stefan Prodan](https://youtu.be/qQBtSkgl7tI)
|
- 25 June 2020 - [Cloud Native Nordics: Introduction to GitOps & GitOps Toolkit with Alexis Richardson & Stefan Prodan](https://youtu.be/qQBtSkgl7tI)
|
||||||
- 7 May 2020 - [GitOps Days - Community Special: GitOps Toolkit Experimentation with Stefan Prodan](https://youtu.be/WHzxunv4DKk?t=6521)
|
- 7 May 2020 - [GitOps Days - Community Special: GitOps Toolkit Experimentation with Stefan Prodan](https://youtu.be/WHzxunv4DKk?t=6521)
|
||||||
|
|
||||||
### Upcoming Meetups
|
### Upcoming Events
|
||||||
- 19 Oct 2020 - [The Power of GitOps with Flux & GitOps Toolkit - Part 1](https://www.meetup.com/GitOps-Community/events/273640196/)
|
|
||||||
- 2 Nov 2020 - [The Power of GitOps with Flux & GitOps Toolkit - Part 2](https://www.meetup.com/GitOps-Community/events/273934676/)
|
- 2 Nov 2020 - [The Power of GitOps with Flux & GitOps Toolkit - Part 2 with Leigh Capili](https://www.meetup.com/GitOps-Community/events/273934676/)
|
||||||
|
- 12-13 Nov 2020 - [GitOps Days EMEA](https://www.gitopsdays.com/) with talks and workshops on migrating to Flux v2 and Helm Controller
|
||||||
|
- 19 Nov 2020 - [KubeCon NA: Progressive Delivery Techniques with Flagger and Flux v2 with Stefan Prodan](https://kccncna20.sched.com/event/1b04f8408b49976b843a5d0019cb8112)
|
||||||
|
|
||||||
We are looking forward to seeing you with us!
|
We are looking forward to seeing you with us!
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ All of the above will constitute "Flux v2".
|
|||||||
|
|
||||||
### Flux read-only feature parity
|
### Flux read-only feature parity
|
||||||
|
|
||||||
[= 90% "90%"]
|
[= 100% "100%"]
|
||||||
|
|
||||||
This would be the first stepping stone: we want Flux v2 to be on-par with today's Flux in
|
This would be the first stepping stone: we want Flux v2 to be on-par with today's Flux in
|
||||||
[read-only mode](https://github.com/fluxcd/flux/blob/master/docs/faq.md#can-i-run-flux-with-readonly-git-access)
|
[read-only mode](https://github.com/fluxcd/flux/blob/master/docs/faq.md#can-i-run-flux-with-readonly-git-access)
|
||||||
@@ -20,8 +20,8 @@ and [FluxCloud](https://github.com/justinbarrick/fluxcloud) notifications.
|
|||||||
|
|
||||||
Goals
|
Goals
|
||||||
|
|
||||||
- Offer a migration guide for those that are using Flux in read-only mode to synchronize plain manifests
|
- <span class="check-bullet">:material-check-bold:</span> [Offer a migration guide for those that are using Flux in read-only mode to synchronize plain manifests](https://toolkit.fluxcd.io/guides/flux-v1-migration/)
|
||||||
- Offer a migration guide for those that are using Flux in read-only mode to synchronize Kustomize overlays
|
- <span class="check-bullet">:material-check-bold:</span> [Offer a migration guide for those that are using Flux in read-only mode to synchronize Kustomize overlays](https://toolkit.fluxcd.io/guides/flux-v1-migration/)
|
||||||
- <span class="check-bullet">:material-check-bold:</span> [Offer a dedicated component for forwarding events to external messaging platforms](https://toolkit.fluxcd.io/guides/notifications/)
|
- <span class="check-bullet">:material-check-bold:</span> [Offer a dedicated component for forwarding events to external messaging platforms](https://toolkit.fluxcd.io/guides/notifications/)
|
||||||
|
|
||||||
Non-Goals
|
Non-Goals
|
||||||
@@ -38,7 +38,7 @@ Tasks
|
|||||||
- [x] <span style="color:grey">Implement a notification controller for Slack, MS Teams, Discord, Rocket</span>
|
- [x] <span style="color:grey">Implement a notification controller for Slack, MS Teams, Discord, Rocket</span>
|
||||||
- [x] <span style="color:grey">Implement Prometheus metrics in source and kustomize controllers</span>
|
- [x] <span style="color:grey">Implement Prometheus metrics in source and kustomize controllers</span>
|
||||||
- [x] <span style="color:grey">Review the git source and kustomize APIs</span>
|
- [x] <span style="color:grey">Review the git source and kustomize APIs</span>
|
||||||
- [ ] Create a migration guide for `flux.yaml` kustomize users
|
- [x] <span style="color:grey">Create a migration guide for `flux.yaml` kustomize users</span>
|
||||||
- [x] <span style="color:grey">Include support for SOPS</span>
|
- [x] <span style="color:grey">Include support for SOPS</span>
|
||||||
|
|
||||||
### Flux image update feature parity
|
### Flux image update feature parity
|
||||||
@@ -91,5 +91,5 @@ Tasks
|
|||||||
- [x] <span style="color:grey">Implement conditional remediation on (failed) Helm actions</span>
|
- [x] <span style="color:grey">Implement conditional remediation on (failed) Helm actions</span>
|
||||||
- [x] <span style="color:grey">Implement support for Helm charts from Git</span>
|
- [x] <span style="color:grey">Implement support for Helm charts from Git</span>
|
||||||
- [x] <span style="color:grey">Implement support for referring to an alternative chart values file</span>
|
- [x] <span style="color:grey">Implement support for referring to an alternative chart values file</span>
|
||||||
- [ ] Stabilize API
|
- [x] <span style="color:grey">Stabilize API</span>
|
||||||
- [ ] Create a migration guide for Helm Operator users
|
- [ ] Create a migration guide for Helm Operator users
|
||||||
|
|||||||
2
go.mod
2
go.mod
@@ -12,7 +12,7 @@ require (
|
|||||||
github.com/fluxcd/pkg/runtime v0.1.2
|
github.com/fluxcd/pkg/runtime v0.1.2
|
||||||
github.com/fluxcd/pkg/ssh v0.0.5
|
github.com/fluxcd/pkg/ssh v0.0.5
|
||||||
github.com/fluxcd/pkg/untar v0.0.5
|
github.com/fluxcd/pkg/untar v0.0.5
|
||||||
github.com/fluxcd/source-controller/api v0.2.0
|
github.com/fluxcd/source-controller/api v0.2.1
|
||||||
github.com/manifoldco/promptui v0.7.0
|
github.com/manifoldco/promptui v0.7.0
|
||||||
github.com/olekukonko/tablewriter v0.0.4
|
github.com/olekukonko/tablewriter v0.0.4
|
||||||
github.com/spf13/cobra v1.0.0
|
github.com/spf13/cobra v1.0.0
|
||||||
|
|||||||
4
go.sum
4
go.sum
@@ -131,8 +131,8 @@ github.com/fluxcd/pkg/ssh v0.0.5 h1:rnbFZ7voy2JBlUfMbfyqArX2FYaLNpDhccGFC3qW83A=
|
|||||||
github.com/fluxcd/pkg/ssh v0.0.5/go.mod h1:7jXPdXZpc0ttMNz2kD9QuMi3RNn/e0DOFbj0Tij/+Hs=
|
github.com/fluxcd/pkg/ssh v0.0.5/go.mod h1:7jXPdXZpc0ttMNz2kD9QuMi3RNn/e0DOFbj0Tij/+Hs=
|
||||||
github.com/fluxcd/pkg/untar v0.0.5 h1:UGI3Ch1UIEIaqQvMicmImL1s9npQa64DJ/ozqHKB7gk=
|
github.com/fluxcd/pkg/untar v0.0.5 h1:UGI3Ch1UIEIaqQvMicmImL1s9npQa64DJ/ozqHKB7gk=
|
||||||
github.com/fluxcd/pkg/untar v0.0.5/go.mod h1:O6V9+rtl8c1mHBafgqFlJN6zkF1HS5SSYn7RpQJ/nfw=
|
github.com/fluxcd/pkg/untar v0.0.5/go.mod h1:O6V9+rtl8c1mHBafgqFlJN6zkF1HS5SSYn7RpQJ/nfw=
|
||||||
github.com/fluxcd/source-controller/api v0.2.0 h1:a+N8+kLDH24lN2hp3klIFGuET3uMhhBWTM9qKdIRhM8=
|
github.com/fluxcd/source-controller/api v0.2.1 h1:CK2vpnEHa1nB1cqc3dAuO+hL6HGcSnh2xGmQfzmGef4=
|
||||||
github.com/fluxcd/source-controller/api v0.2.0/go.mod h1:1ac/vj49YVPKF+xBHTo/9pfFj64TcLc1RLaxi4MwVEM=
|
github.com/fluxcd/source-controller/api v0.2.1/go.mod h1:1ac/vj49YVPKF+xBHTo/9pfFj64TcLc1RLaxi4MwVEM=
|
||||||
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ=
|
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ=
|
||||||
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
|
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ Binaries for macOS and Linux AMD64 are available for download on the
|
|||||||
To install the latest release run:
|
To install the latest release run:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -s https://raw.githubusercontent.com/fluxcd/flux2/master/install/flux.sh | sudo bash
|
curl -s https://raw.githubusercontent.com/fluxcd/flux2/main/install/flux.sh | sudo bash
|
||||||
```
|
```
|
||||||
|
|
||||||
The install script does the following:
|
The install script does the following:
|
||||||
@@ -27,10 +27,10 @@ Clone the repository:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/fluxcd/flux2
|
git clone https://github.com/fluxcd/flux2
|
||||||
cd toolkit
|
cd flux2
|
||||||
```
|
```
|
||||||
|
|
||||||
Build the `flux` binary (requires go >= 1.14):
|
Build the `flux` binary (requires go >= 1.15):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make build
|
make build
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ download() {
|
|||||||
|
|
||||||
# Download hash from Github URL
|
# Download hash from Github URL
|
||||||
download_hash() {
|
download_hash() {
|
||||||
HASH_URL="https://github.com/${GITHUB_REPO}/releases/download/v${VERSION_FLUX}/toolkit_${VERSION_FLUX}_checksums.txt"
|
HASH_URL="https://github.com/${GITHUB_REPO}/releases/download/v${VERSION_FLUX}/flux2_${VERSION_FLUX}_checksums.txt"
|
||||||
info "Downloading hash ${HASH_URL}"
|
info "Downloading hash ${HASH_URL}"
|
||||||
download "${TMP_HASH}" "${HASH_URL}"
|
download "${TMP_HASH}" "${HASH_URL}"
|
||||||
HASH_EXPECTED=$(grep " flux_${VERSION_FLUX}_${OS}_${ARCH}.tar.gz$" "${TMP_HASH}")
|
HASH_EXPECTED=$(grep " flux_${VERSION_FLUX}_${OS}_${ARCH}.tar.gz$" "${TMP_HASH}")
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
resources:
|
resources:
|
||||||
- https://github.com/fluxcd/source-controller/archive/v0.2.0.zip//source-controller-0.2.0/config/crd
|
- https://github.com/fluxcd/source-controller/archive/v0.2.1.zip//source-controller-0.2.1/config/crd
|
||||||
- https://github.com/fluxcd/source-controller/archive/v0.2.0.zip//source-controller-0.2.0/config/manager
|
- https://github.com/fluxcd/source-controller/archive/v0.2.1.zip//source-controller-0.2.1/config/manager
|
||||||
patchesJson6902:
|
patchesJson6902:
|
||||||
- target:
|
- target:
|
||||||
group: apps
|
group: apps
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ nav:
|
|||||||
- Monitoring with Prometheus: guides/monitoring.md
|
- Monitoring with Prometheus: guides/monitoring.md
|
||||||
- Sealed Secrets: guides/sealed-secrets.md
|
- Sealed Secrets: guides/sealed-secrets.md
|
||||||
- Mozilla SOPS: guides/mozilla-sops.md
|
- Mozilla SOPS: guides/mozilla-sops.md
|
||||||
|
- Migrate from Flux v1 to v2: guides/flux-v1-migration.md
|
||||||
- Toolkit Components:
|
- Toolkit Components:
|
||||||
- Source Controller:
|
- Source Controller:
|
||||||
- Overview: components/source/controller.md
|
- Overview: components/source/controller.md
|
||||||
@@ -140,8 +141,8 @@ nav:
|
|||||||
- Reconcile source helm: cmd/flux_reconcile_source_helm.md
|
- Reconcile source helm: cmd/flux_reconcile_source_helm.md
|
||||||
- Reconcile source bucket: cmd/flux_reconcile_source_bucket.md
|
- Reconcile source bucket: cmd/flux_reconcile_source_bucket.md
|
||||||
- Uninstall: cmd/flux_uninstall.md
|
- Uninstall: cmd/flux_uninstall.md
|
||||||
- Roadmap: roadmap/index.md
|
|
||||||
- Contributing: contributing/index.md
|
|
||||||
- Dev Guides:
|
- Dev Guides:
|
||||||
- Watching for source changes: dev-guides/source-watcher.md
|
- Watching for source changes: dev-guides/source-watcher.md
|
||||||
|
- Roadmap: roadmap/index.md
|
||||||
|
- Contributing: contributing/index.md
|
||||||
- FAQ: faq/index.md
|
- FAQ: faq/index.md
|
||||||
|
|||||||
Reference in New Issue
Block a user