docs/work-with-flux
Signed-off-by: learner0810 <zhongjun.li@daocloud.io>
This commit is contained in:
parent
bad8959132
commit
26810bcbc5
|
@ -0,0 +1,213 @@
|
||||||
|
# Use flux support helm chart propagation
|
||||||
|
|
||||||
|
[Flux](https://github.com/fluxcd/flux) is most useful when used as a deployment tool at the end of a Continuous Delivery pipeline. Flux will make sure that your new container images and config changes are propagated to the cluster.
|
||||||
|
|
||||||
|
## Start up Karmada clusters
|
||||||
|
You just need to clone Karmada repo, and run the following script in Karmada directory.
|
||||||
|
|
||||||
|
```
|
||||||
|
hack/local-up-karmada.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## Start up flux
|
||||||
|
|
||||||
|
```
|
||||||
|
curl -s https://fluxcd.io/install.sh | sudo bash
|
||||||
|
```
|
||||||
|
|
||||||
|
Install the toolkit controllers in the flux-system namespace:
|
||||||
|
|
||||||
|
```
|
||||||
|
flux install
|
||||||
|
```
|
||||||
|
|
||||||
|
tips:
|
||||||
|
|
||||||
|
1. The flux tool is installed on each cluster,Using flux Install requires scientific surfing
|
||||||
|
|
||||||
|
2. If flux is successfully installed, you can see the following Pod
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@10-6-201-150 ~]# kubectl get pod -n flux-system
|
||||||
|
NAME READY STATUS RESTARTS AGE
|
||||||
|
helm-controller-55896d6ccf-dlf8b 1/1 Running 0 15d
|
||||||
|
kustomize-controller-76795877c9-mbrsk 1/1 Running 0 15d
|
||||||
|
notification-controller-7ccfbfbb98-lpgjl 1/1 Running 0 15d
|
||||||
|
source-controller-6b8d9cb5cc-7dbcb 1/1 Running 0 15d
|
||||||
|
```
|
||||||
|
|
||||||
|
## helm chart propagation
|
||||||
|
|
||||||
|
1. Define a HelmRepository source
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: source.toolkit.fluxcd.io/v1beta1
|
||||||
|
kind: HelmRepository
|
||||||
|
metadata:
|
||||||
|
name: podinfo
|
||||||
|
spec:
|
||||||
|
interval: 1m
|
||||||
|
url: https://stefanprodan.github.io/podinfo
|
||||||
|
---
|
||||||
|
apiVersion: policy.karmada.io/v1alpha1
|
||||||
|
kind: PropagationPolicy
|
||||||
|
metadata:
|
||||||
|
name: helm-repo
|
||||||
|
spec:
|
||||||
|
resourceSelectors:
|
||||||
|
- apiVersion: source.toolkit.fluxcd.io/v1beta1
|
||||||
|
kind: HelmRepository
|
||||||
|
name: podinfo
|
||||||
|
placement:
|
||||||
|
clusterAffinity:
|
||||||
|
clusterNames:
|
||||||
|
- member1
|
||||||
|
- member2
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Define a HelmRelease source
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2beta1
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: podinfo
|
||||||
|
spec:
|
||||||
|
interval: 5m
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: podinfo
|
||||||
|
version: 5.0.3
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: podinfo
|
||||||
|
---
|
||||||
|
apiVersion: policy.karmada.io/v1alpha1
|
||||||
|
kind: PropagationPolicy
|
||||||
|
metadata:
|
||||||
|
name: helm-release
|
||||||
|
spec:
|
||||||
|
resourceSelectors:
|
||||||
|
- apiVersion: helm.toolkit.fluxcd.io/v2beta1
|
||||||
|
kind: HelmRelease
|
||||||
|
name: podinfo
|
||||||
|
placement:
|
||||||
|
clusterAffinity:
|
||||||
|
clusterNames:
|
||||||
|
- member1
|
||||||
|
- member2
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Apply those YAML to karmada-apiserver
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@10-6-201-150 helm]# kubectl apply -f ../helm/
|
||||||
|
helmrelease.helm.toolkit.fluxcd.io/podinfo created
|
||||||
|
helmrepository.source.toolkit.fluxcd.io/podinfo created
|
||||||
|
propagationpolicy.policy.karmada.io/helm-release created
|
||||||
|
propagationpolicy.policy.karmada.io/helm-repo created
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Switch to the distributed cluster
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@10-6-201-150 ~]# kubectl config use-context member2
|
||||||
|
Switched to context "member2".
|
||||||
|
[root@10-6-201-150 ~]# kubectl get pod
|
||||||
|
NAME READY STATUS RESTARTS AGE
|
||||||
|
podinfo-78c475b77-94x54 1/1 Running 0 104s
|
||||||
|
[root@10-6-201-150 ~]# helm list -A
|
||||||
|
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
|
||||||
|
podinfo default 1 2022-05-21 07:14:50.73460681 +0000 UTC deployed podinfo-5.0.3 5.0.3
|
||||||
|
[root@10-6-201-150 ~]#
|
||||||
|
```
|
||||||
|
|
||||||
|
## kustomize propagation
|
||||||
|
|
||||||
|
1. Define a Git repository source
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: source.toolkit.fluxcd.io/v1beta1
|
||||||
|
kind: GitRepository
|
||||||
|
metadata:
|
||||||
|
name: podinfo
|
||||||
|
spec:
|
||||||
|
interval: 1m
|
||||||
|
url: https://github.com/stefanprodan/podinfo
|
||||||
|
ref:
|
||||||
|
branch: master
|
||||||
|
---
|
||||||
|
apiVersion: policy.karmada.io/v1alpha1
|
||||||
|
kind: PropagationPolicy
|
||||||
|
metadata:
|
||||||
|
name: kust-git
|
||||||
|
spec:
|
||||||
|
resourceSelectors:
|
||||||
|
- apiVersion: source.toolkit.fluxcd.io/v1beta1
|
||||||
|
kind: GitRepository
|
||||||
|
name: podinfo
|
||||||
|
placement:
|
||||||
|
clusterAffinity:
|
||||||
|
clusterNames:
|
||||||
|
- member1
|
||||||
|
- member2
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Define a kustomization
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
|
||||||
|
kind: Kustomization
|
||||||
|
metadata:
|
||||||
|
name: podinfo-dev
|
||||||
|
spec:
|
||||||
|
interval: 5m
|
||||||
|
path: "./deploy/overlays/dev/"
|
||||||
|
prune: true
|
||||||
|
sourceRef:
|
||||||
|
kind: GitRepository
|
||||||
|
name: podinfo
|
||||||
|
validation: client
|
||||||
|
timeout: 80s
|
||||||
|
---
|
||||||
|
apiVersion: policy.karmada.io/v1alpha1
|
||||||
|
kind: PropagationPolicy
|
||||||
|
metadata:
|
||||||
|
name: kust-release
|
||||||
|
spec:
|
||||||
|
resourceSelectors:
|
||||||
|
- apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
|
||||||
|
kind: Kustomization
|
||||||
|
name: podinfo-dev
|
||||||
|
placement:
|
||||||
|
clusterAffinity:
|
||||||
|
clusterNames:
|
||||||
|
- member1
|
||||||
|
- member2
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Apply those YAML to karmada-apiserver
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@10-6-201-150 flux]# kubectl apply -f kust/
|
||||||
|
gitrepository.source.toolkit.fluxcd.io/podinfo created
|
||||||
|
kustomization.kustomize.toolkit.fluxcd.io/podinfo-dev created
|
||||||
|
propagationpolicy.policy.karmada.io/kust-git created
|
||||||
|
propagationpolicy.policy.karmada.io/kust-release created
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Switch to the distributed cluster
|
||||||
|
|
||||||
|
```
|
||||||
|
[root@10-6-201-150 ~]# kubectl get pod -n dev
|
||||||
|
NAME READY STATUS RESTARTS AGE
|
||||||
|
backend-69c7655cb-rbtrq 1/1 Running 0 15s
|
||||||
|
cache-bdff5c8dc-mmnbm 1/1 Running 0 15s
|
||||||
|
frontend-7f98bf6f85-dw4vq 1/1 Running 0 15s
|
||||||
|
```
|
||||||
|
|
||||||
|
## Reference
|
||||||
|
- https://fluxcd.io
|
||||||
|
- https://github.com/fluxcd/flux
|
||||||
|
- https://github.com/fluxcd/helm-operator
|
||||||
|
- https://github.com/fluxcd/kustomize-controller
|
Loading…
Reference in New Issue