open-cluster-management-io / ocm Goto Github PK
View Code? Open in Web Editor NEWCore components in the OCM project. Report here if you found any issues in OCM.
Home Page: https://open-cluster-management.io
License: Apache License 2.0
Core components in the OCM project. Report here if you found any issues in OCM.
Home Page: https://open-cluster-management.io
License: Apache License 2.0
add managed-serviceaccount addon deploy scenario.
refer https://github.com/open-cluster-management-io/managed-serviceaccount
If i want to apply a deployment to cluster a and b, do I have to create two ManifestWorks to apply the deployment to cluster a and cluster b? If i want to update the workload, do I have to update all the ManifestWorks about the workload?
OCM now has some development guide, like the Architecture and Concepts in website https://open-cluster-management.io/concepts/architecture/
Also some development guides in each repo.
The feedback we receive from users who want to contribute is that:
A better development guide could help to improve the user experience.
Create this issue to further discuss this topic.
More ideas and suggestions are welcomed to comment on this issue.
Subtask of #33
Currently clusteradm install hub-addon
uses YAML manifests hosted in the clusteradm
repo to deploy hub addon components. This is undesirable for maintainability. With the new https://github.com/open-cluster-management-io/helm-charts repo, the hub-addon command should be updated to deploy helm charts from this repo directly.
Related issue:
The scenario encountered in production environment is that:
Hub cluster HA solution proposal architecture is shown below:
Of course, OCM resources such as manifest works deployed in managed clusters should save meta data in annotaions or somewhere else.
Whether this solution is feasible ?
I am learning OCM recently, the feature is nice. We are interested in using OCM in our project to support multi-cluster communication. During my experiments and troubleshooting, I found it is difficult to understand the underlying meaning of error messages, and look for fixes of the issues. Luckily the contributors and developers of OCM are very knowledgeable and helpful, on the other hand, if there is well-documented troubleshooting guide, there will be time saving for developers and providing smoother user experience.
we should have a handbook to tell user how to develop an addon using addon-framework.
/assign @yue9944882
/assign @zhiweiyin318
Is anyone working on submariner addon for OCM?
I'm interested in submariner
right now, maybe I can help contribute.
When a user install the cluster-proxy, managed-serviceaccount and cluster-gateway addons. The managed cluster addon resources are automatically created on the registered clusters. If the addons are deployed to cluster foo and bar. Is it possible to disable or delete the addons for cluster bar? Currently, when deleting those managed cluster addon on cluster bar namespace, they will come back.
$ kubectl get managedclusteraddon -n $NSC1
NAME AVAILABLE DEGRADED PROGRESSING
cluster-gateway True
cluster-proxy True
managed-serviceaccount True
$ kubectl -n $NSC1 delete managedclusteraddon cluster-gateway
managedclusteraddon.addon.open-cluster-management.io "cluster-gateway" deleted
$ kubectl get managedclusteraddon -n $NSC1
NAME AVAILABLE DEGRADED PROGRESSING
cluster-gateway True
cluster-proxy True
managed-serviceaccount True
Discovered by @yitiangf
CC @qiujian16
现在有没有企业已经在使用OCM,有生产环境的实践吗?谢谢
add cluster-proxy addon deploy scenario.
refer https://github.com/open-cluster-management-io/cluster-proxy
In https://open-cluster-management.io/scenarios/extend-multicluster-scheduling-capabilities/ ,we talked about how to calculate and normalize the score for AddOnPlacementScore, it's better to provide a normalize library to do it.
Ref: open-cluster-management-io/open-cluster-management-io.github.io#280 (comment)
we should have a solution scenario to describe how user can run argocd on OCM and to multiple cluster gitops.
/assign @elgnay
We should have solution scenarios to describe:
we should describe a solution scenario on enabling istio with ocm to do multicluster service mesh
/assign @morvencao
The requirement comes from open-cluster-management-io/placement#51 (comment) when implementing placement extensible scheduling.
In placement status, need to add new placement condition type and reason for configuration error and schedule failure.
The document in Chinese is not done yet and this issue is used to track the process.
If you're interested in translation work, please make a [work-in-process] PR and note this issue in that PR.
This will help others know which part of the document translation is ongoing.
Subtask of #33
We now have some user scenarios under https://open-cluster-management.io/scenarios/ , which may not be enough.
And we have below feedback from users, which can help improve the user scenarios
Create this issue to further discuss this topic.
More ideas and suggestions are welcomed to comment on this issue.
Subtasks:
I want to create work like deployment
by using K8s API but not a WorkManifest
with template in it, just like what kubefedV2, karmada or clusternet does. Is it possible?
By following this instruction: https://open-cluster-management.io/getting-started/quick-start/#setup-a-local-kind-environment, two Kind clusters were started. In the Hub cluster, the following error can be observed in the cluter-manager pod:
I0216 23:45:37.432366 1 event.go:282] Event(v1.ObjectReference{Kind:"Namespace", Namespace:"open-cluster-management", Name:"open-cluster-management", UID:"", APIVersion:"v1", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'CustomResourceDefinitionUpdated' Updated CustomResourceDefinition.apiextensions.k8s.io/addonplacementscores.cluster.open-cluster-management.io because it changed
E0217 09:19:01.780126 1 base_controller.go:251] "CRDMigrationController" controller failed to sync "cluster-manager", err: unsupport install mode:
I0217 09:19:01.780137 1 clustermanager_status_controller.go:62] Reconciling ClusterManager "cluster-manager"
I0217 09:19:01.780160 1 certrotation_controller.go:157] Reconciling ClusterManager "cluster-manager"
I0217 09:19:01.818821 1 event.go:282] Event(v1.ObjectReference{Kind:"Namespace", Namespace:"open-cluster-management", Name:"open-cluster-management", UID:"", APIVersion:"v1", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'CustomResourceDefinitionUpdated' Updated CustomResourceDefinition.apiextensions.k8s.io/clustermanagementaddons.addon.open-cluster-management.io because it changed
And on the Hub cluster this happened while accepting cluster joining requests:
> ~ /usr/local/bin/clusteradm accept --clusters cluster1
Error: no CSR to approve for cluster cluster1
Env is on rhel 8.5 + kind + podman
Could you pls provide some suggestions?
clusteradm proxy
subcommand is depending on two addon: cluster-proxy-addon
and managed-serviceaccount
.
It should return an error when those two components are not installed.
Currently you can use ClusterAPI
to spin up new kubernetes clusters. It has different provider implementations, however. most of them (I didn't checked all) provides CA secrets to access managed cluster. Having this, and having OCM in admin/hub cluster, it would be useful to automatically install klusterjet
agent of any new cluster and join them to the hub.
We need to enhance the clusterset deletion policy.
Like:
When clusterset deleted:
I been experimenting with the managed-serviceaccount project from OCM and found it to be incredibly useful
for my usecase I leverage the managed-serviceaccount controller to create on-demand serviceaccount than use ManifestWork to create role/rolebinding on managedcluster to grant my serviceaccount RBAC permission.
the managed-serviceaccount and the manifestwork is short lived and is deleted when my workflow is done, but sometime i found that my workflow exit prematurely and the cleanup is not explicitly performed by my workflow (i know its my own problem but...)
it would be nice if the managed-serviceaccount resource can have a expiration time so that after expiration the managed-serviceaccount is deleted automatically
Subtask of #33
Subtask of #33
https://github.com/JiahaoWei-RH/resource-usage-collect provides an implementation example for extensible placement scheduling. Consider move it to placement.
I suggest selector or clusterSelector as a part of resources to match multi-cluster for applications rather than standalone placement object.The implementation of Placement and ManagedClusterSets may be not flexible.
Here are some reasons.
We are using the following pattern to setup logs in many repo currently:
pflag.CommandLine.SetNormalizeFunc(utilflag.WordSepNormalizeFunc)
pflag.CommandLine.AddGoFlagSet(goflag.CommandLine)
logs.InitLogs()
defer logs.FlushLogs()
But it seems klog
part has been missed in the latest version:
➜ helloworld git:(f3917ca) ✗ ./helloworld controller --help
Start the addon controller
Usage:
addon controller [flags]
Flags:
--config string Location of the master configuration file to run from.
-h, --help help for controller
--kubeconfig string Location of the master configuration file to run from.
--listen string The ip:port to serve on.
--namespace string Namespace where the controller is running. Auto-detected if run in cluster.
--terminate-on-files stringArray A list of files. If one of them changes, the process will terminate.
The above process, it should have some klog
flag such as --v
.
The reason for this issue may be in the latest version component-base
, it using a customized FlagsSet:
A way to solve this issue could be:
pflag.CommandLine.SetNormalizeFunc(utilflag.WordSepNormalizeFunc)
pflag.CommandLine.AddGoFlagSet(goflag.CommandLine)
logs.AddFlags(pflag.CommandLine) // Use this line to add default FlagSet into component-base.
logs.InitLogs()
defer logs.FlushLogs()
This issue serves as a notice that the similarly named open-cluster-management is planning to move to a new GitHub organization in order to remove naming confusion with open-cluster-management-io
. The owners of open-cluster-management
have agreed to move and have started preparations. We expect the move to be completed by mid 2022 and will keep this issue up to date with any new developments.
Here are all places we replying on bitnami
repos:
https://github.com/search?q=org%3Aopen-cluster-management-io+bitnami&type=code
We should remove all dependencies later.
After deploy klusterlet
, we found open-cluster-management-agent-addon
is created but yet we had not installed any addons.
We think the related code is: https://github.com/stolostron/registration-operator/blob/99db7a66e63e1c96b585b4aa22ad923e198c1028/pkg/operators/klusterlet/controllers/klusterletcontroller/klusterlet_controller.go#L339
So if it possible only create this ns if addons exists?
The current OCM and ArgoCD integration is primary push model, which means the ArgoCD controller on the hub cluster needs to directly communicate with the target managed clusters. This approach does not use OCM's hub and spoke cluster post registration secured communication channel.
We are proposing implementing an ArgoCD integration pull model that leverages the OCM registration, placement and manifestwork APIs. We will introduce a new CRD call the MulticlusterApplicationSet that will evaluate cluster placements and create manifestwork wrapping ArgoCD application template to the target clusters. Once the ArgoCD application template lands on the target clusters, the ArgoCD controller will evaluate the template and deploy the application.
It's a common practice to organize the community into working groups.
For OCM it's the same, organized into a set of working groups could improve the experience when users want to join and contribute, as well as the community development.
Create this issue to further discuss this topic.
More ideas and suggestions are welcomed to comment on this issue.
It's better to have test coverage to improve our code quality.
There are several things we could do:
I suggest to add DeleteOption in Managedcluster for implementing following functions:
The demand was encountered in production environment.
Please Consider whether it is reasonable, thanks.
By introducing a new version of clusterset api (v1beta2), we can change the migration path as below.
Release 0.9.0
Release 0.10.0
upgrade clusterset api to v1beta2 for each component
Other clusterset consumers (external consumers) must upgrade to clusterset api v1beta2
Release 0.11.0
Release 0.12.0
Thanks to Min Kim's excellent work, there is now a centralize OCM repo containing OCM related Helm charts: https://github.com/open-cluster-management-io/helm-charts
So far there are only some addon Helm charts. We should have Helm charts for core components (cluster manager, klusterlet) as well as some other addon charts (app, grc).
This enhancement is related to #40
, according to the example, I have created ManagedClusterSet, also created placement, and PlacementDecision also got the corresponding result, but I don't know how to use placement and PlacementDecision, I created manifestwork under the namespace corresponding to ManagedClusterSet , there is no response on the corresponding cluster. The same is true for creating a workload 。Can someone tell me, how can I use ManagedClusterSet and placement?
proposal is here open-cluster-management-io/enhancements#58
story:
/assign @skeeey
It will be interesting to run ocm control plane in stand alone mode. It will involve integrating apiserver/controller/etcd in one single binary. We should also disable unused APIs on apiserver (e.g. nodes, pods etc.). We can start with a prototype and check how kcp does this.
cc @yue9944882 @ycyaoxdu
/kind feature
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.