当前位置:网站首页>Cross cluster deployment of helm applications using karmada
Cross cluster deployment of helm applications using karmada
2022-06-28 18:50:00 【Huawei cloud developer Alliance】
Abstract : With the help of Karmada Native API The ability to support ,Karmada Can use Flux Make it easy Helm Cross cluster deployment of applications .
This article is shared from Huawei cloud community 《 Use Karmada Realization Helm Cross cluster deployment of applications 【 Cloud native open source 】》, author : Huawei cloud's native open source team .
background
By using Kubernetes Native API And provide advanced scheduling function ,Karmada It has implemented the... In the multi cluster scenario Kubernetes resources ( Include CRD) Distribution and management of . However, the current multi cluster application is often not a single resource form , Use Helm The use scenario of packaging applications is also very common .
With the help of Karmada Native API The ability to support ,Karmada Can use Flux Make it easy Helm Cross cluster deployment of applications .
Deploy Karmada
To deploy Karmada, You can refer to the community installation documentation (https://github.com/karmada-io/karmada/blob/master/docs/installation/installation.md). If you want to experience it quickly Karmada, We propose to adopt hack/local-up-karmada.sh Construct a Karmada Development environment of .
Deploy Flux
stay Karmada In control surface , You need to install Flux Of CRD, But there is no need to install Flux The controller is based on CRD Created CR object , They are considered resource templates , Not specific resource instances . be based on Karmada Of work API, They will be encapsulated as a work Object to the member cluster , Finally, the members in the cluster Flux The controller is tuned .
kubectl apply -k github.com/fluxcd/flux2/manifests/crds?ref=main --kubeconfig ~/.kube/karmada.configIn a member cluster , You can install the complete... Based on the following command Flux Components .
flux install --kubeconfig ~/.kube/members.config --context member1
flux install --kubeconfig ~/.kube/members.config --context member2You can refer to the documentation here (https://fluxcd.io/docs/installation/) For more detailed installation Flux The details of the .
Tips : If you want to manage all your clusters based on HelmRelease Application , You need to install... In all your member clusters Flux.
Helm release distribution
Ready for work , Next, we will use a podinfo As an example, it demonstrates how to complete Helm chart distribution .
1. stay Karmada Define a in the control plane Flux Of HelmRepository CR Object and a HelmRelease CR object . They will be treated as resource templates .
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: HelmRepository
metadata:
name: podinfo
spec:
interval: 1m
url: https://stefanprodan.github.io/podinfo ---
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: podinfo2. Define a Karmada Of PropagationPolicy Object to distribute their resource instances to the member cluster :
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
name: helm-repo
spec:
resourceSelectors:
- apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: HelmRepository
name: podinfo
placement:
clusterAffinity:
clusterNames:
- member1
- member2---
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
- member2The above configuration will make Flux The resource object of is distributed to the member cluster member1 and member2 in .
3. Submit the above objects to Karmada-apiserver:
kubectl apply -f ../helm/ --kubeconfig ~/.kube/karmada.configYou will get the following output :
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 created4. Switch to the member cluster to verify whether the application is successfully distributed
helm --kubeconfig ~/.kube/members.config --kube-context member1 listYou will get the following output :

be based on Karmada Of PropagationPolicy, You have the flexibility to Helm The application is published to the cluster you expect .
Customize for a specific cluster Helm application
The above example shows how the same Helm Application distribution to Karmada Multiple clusters in . Besides , You can still use it Karmada Of OverridePolicy Customize for a specific cluster Helm application . for example , The above applications include a Pod copy , If you just want to change member1 The applications in the cluster contain Pod replications , You can refer to the following OverridePolicy Strategy .
1. Define a Karmada Of OverridePolicy object .
apiVersion: policy.karmada.io/v1alpha1
kind: OverridePolicy
metadata:
name: example-override
namespace: default
spec:
resourceSelectors:
- apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
name: podinfo
overrideRules:
- targetCluster:
clusterNames:
- member1
overriders:
plaintext:
- path: "/spec/values"
operator: add
value:
replicaCount: 22. Submit the above objects to Karmada-apiserver:
kubectl apply -f example-override.yaml --kubeconfig ~/.kube/karmada.configYou will get the following output :
overridepolicy.policy.karmada.io/example-override created3. stay Karmada After applying the above strategy in the control plane , You'll find that member1 Members in the cluster Pod The number of instances has been changed to 2, but member2 Those in the cluster remain the same .
kubectl --kubeconfig ~/.kube/members.config --context member1 get poYou will get the following output :
NAME READY STATUS RESTARTS AGE
podinfo-68979685bc-6wz6s 1/1 Running 0 6m28s
podinfo-68979685bc-dz9f6 1/1 Running 0 7m42sReference documents :
karmada/working-with-flux.md at master · karmada-io/karmada · GitHub
attach :Karmada Community technology exchange address
add to Karmada Community assistant wechat k8s2222 Enter the community communication group , and Maintainer Zero distance .
Project address :
GitHub - karmada-io/karmada: Open, Multi-Cloud, Multi-Cluster Kubernetes Orchestration
Slack Address :https://slack.cncf.io/
Click to follow , The first time to learn about Huawei's new cloud technology ~
边栏推荐
猜你喜欢

匿名函数变量问题

use. NETCORE's own background job, which simply simulates producers and consumers' processing of request response data in and out of the queue

C# 41. int与string互转

模块化操作

POI excel conversion tool

PHP使用栈解决迷宫问题

About Significance Tests

进阶高级-业务事务设计 开发入门

MindSpore系列一加载图像分类数据集

声网 VQA:将实时互动中未知的视频画质用户主观体验变可知
随机推荐
Graphic system - 2 View drawing
C# 41. int与string互转
Lumiprobe ProteOrange 蛋白质凝胶染料说明书
OpenHarmony—内核对象事件之源码详解
Concept and code implementation of heap
1 goal, 3 fields, 6 factors and 9 links of digital transformation
Object tracking using tracker in opencv
SqlTransaction
向上转型和向下转型
Memory leak
Shell unknown rollup 1
【Unity3D】发射(RayCast)物理射线(Ray)
百度时间因子添加
内存泄露
Shell script batch modify file directory permissions
中金财富开户安全吗?开过中金财富的讲一下
微软独家付费功能,也被完美解锁了
注意!PMP紧急缓考今天就截止了!
Voice network VQA: make the user's subjective experience of unknown video quality in real-time interaction known
独立站卖家如何高效管理复杂的Facebook主页?