├── .github └── workflows │ └── release.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── GOVERNANCE.md ├── LICENSE ├── MAINTAINERS.md ├── README.md └── charts ├── katalyst ├── .helmignore ├── README.md └── charts │ ├── agent │ ├── .helmignore │ ├── Chart.yaml │ ├── templates │ │ ├── _helpers.tpl │ │ ├── daemonset.yaml │ │ └── rbac.yaml │ └── values.yaml │ ├── colocation-orm │ ├── .helmignore │ ├── Chart.lock │ ├── Chart.yaml │ ├── charts │ │ ├── katalyst-agent-0.5.0.tgz │ │ ├── katalyst-controller-0.5.0.tgz │ │ ├── katalyst-metric-0.5.0.tgz │ │ ├── katalyst-scheduler-0.5.0.tgz │ │ └── katalyst-webhook-0.5.0.tgz │ ├── crds │ │ ├── autoscaling.katalyst.kubewharf.io_katalystverticalpodautoscalers.yaml │ │ ├── autoscaling.katalyst.kubewharf.io_verticalpodautoscalerrecommendations.yaml │ │ ├── config.katalyst.kubewharf.io_adminqosconfigurations.yaml │ │ ├── config.katalyst.kubewharf.io_customnodeconfigs.yaml │ │ ├── config.katalyst.kubewharf.io_katalystcustomconfigs.yaml │ │ ├── node.katalyst.kubewharf.io_customnoderesources.yaml │ │ └── workload.katalyst.kubewharf.io_serviceprofiledescriptors.yaml │ └── values.yaml │ ├── colocation │ ├── .helmignore │ ├── Chart.lock │ ├── Chart.yaml │ ├── charts │ │ ├── katalyst-agent-0.5.0.tgz │ │ ├── katalyst-controller-0.5.0.tgz │ │ ├── katalyst-metric-0.5.0.tgz │ │ ├── katalyst-scheduler-0.5.0.tgz │ │ └── katalyst-webhook-0.5.0.tgz │ ├── crds │ │ ├── autoscaling.katalyst.kubewharf.io_katalystverticalpodautoscalers.yaml │ │ ├── autoscaling.katalyst.kubewharf.io_verticalpodautoscalerrecommendations.yaml │ │ ├── config.katalyst.kubewharf.io_adminqosconfigurations.yaml │ │ ├── config.katalyst.kubewharf.io_customnodeconfigs.yaml │ │ ├── config.katalyst.kubewharf.io_katalystcustomconfigs.yaml │ │ ├── node.katalyst.kubewharf.io_customnoderesources.yaml │ │ └── workload.katalyst.kubewharf.io_serviceprofiledescriptors.yaml │ └── values.yaml │ ├── controller │ ├── .helmignore │ ├── Chart.yaml │ ├── templates │ │ ├── _helpers.tpl │ │ ├── deployment.yaml │ │ └── rbac.yaml │ └── values.yaml │ ├── metric │ ├── .helmignore │ ├── Chart.yaml │ ├── templates │ │ ├── _helpers.tpl │ │ ├── apiservice.yaml │ │ ├── deployment.yaml │ │ ├── rbac.yaml │ │ └── service.yaml │ └── values.yaml │ ├── overcommit │ ├── .helmignore │ ├── Chart.lock │ ├── Chart.yaml │ ├── charts │ │ ├── katalyst-agent-0.5.0.tgz │ │ ├── katalyst-controller-0.5.0.tgz │ │ ├── katalyst-scheduler-0.5.0.tgz │ │ └── katalyst-webhook-0.5.0.tgz │ ├── crds │ │ ├── node.katalyst.kubewharf.io_customnoderesources.yaml │ │ └── overcommit.katalyst.kubewharf.io_nodeovercommitconfigs.yaml │ └── values.yaml │ ├── resource-recommend │ ├── .helmignore │ ├── Chart.lock │ ├── Chart.yaml │ ├── charts │ │ └── katalyst-controller-0.5.12.tgz │ ├── crds │ │ └── recommendation.katalyst.kubewharf.io_resourcerecommends.yaml │ └── values.yaml │ ├── scheduler │ ├── .helmignore │ ├── Chart.yaml │ ├── templates │ │ ├── _helpers.tpl │ │ ├── configmap.yaml │ │ ├── deployment.yaml │ │ └── rbac.yaml │ └── values.yaml │ ├── tidal-colocation │ ├── .helmignore │ ├── Chart.lock │ ├── Chart.yaml │ ├── charts │ │ └── katalyst-controller-0.5.0.tgz │ ├── crds │ │ └── tide.katalyst.kubewharf.io_tidenodepools.yaml │ └── values.yaml │ └── webhook │ ├── .helmignore │ ├── Chart.yaml │ ├── keys │ ├── ca.crt │ ├── ca.key │ ├── tls.crt │ └── tls.key │ ├── templates │ ├── _helpers.tpl │ ├── deployment.yaml │ ├── hpa.yaml │ ├── rbac.yaml │ ├── secret.yaml │ ├── service.yaml │ └── webhookconfiguration.yaml │ └── values.yaml └── malachite ├── Chart.yaml ├── README.md ├── templates ├── _helpers.tpl └── daemonset.yaml └── values.yaml /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release Charts 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | release: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout 13 | uses: actions/checkout@v2 14 | with: 15 | fetch-depth: 0 16 | 17 | - name: Configure Git 18 | run: | 19 | git config user.name "$GITHUB_ACTOR" 20 | git config user.email "$GITHUB_ACTOR@users.noreply.github.com" 21 | 22 | - name: Install Helm 23 | uses: azure/setup-helm@v3 24 | with: 25 | version: v3.10.0 26 | 27 | - name: Run chart-releaser 28 | uses: helm/chart-releaser-action@v1.6.0 29 | env: 30 | CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" 31 | 32 | - name: Run chart-releaser on katalyst subcharts 33 | uses: helm/chart-releaser-action@v1.6.0 34 | with: 35 | charts_dir: charts/katalyst/charts 36 | skip_existing: true 37 | env: 38 | CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" 39 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled binaries and deployment files 2 | /bin/ 3 | hack/tools/bin 4 | 5 | # Binaries for programs and plugins 6 | *.exe 7 | *.dll 8 | *.so 9 | *.dylib 10 | 11 | # Test binary, build with `go test -c` 12 | *.test 13 | 14 | # Output of the go coverage tool, specifically when used with LiteIDE 15 | *.out 16 | 17 | # OSX leaves these everywhere on SMB shares 18 | ._* 19 | 20 | # OSX trash 21 | .DS_Store 22 | 23 | # Eclipse files 24 | .classpath 25 | .project 26 | .settings/** 27 | 28 | # Files generated by JetBrains IDEs, e.g. IntelliJ IDEA 29 | .idea/ 30 | *.iml 31 | 32 | # Vscode files 33 | .vscode 34 | 35 | # Emacs save files 36 | *~ 37 | \#*\# 38 | .\#* 39 | 40 | # Vim-related files 41 | [._]*.s[a-w][a-z] 42 | [._]s[a-w][a-z] 43 | *.un~ 44 | Session.vim 45 | .netrwhist 46 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # ByteDance Contributor Code of Conduct 2 | 3 | Our Pledge 4 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. 5 | 6 | Our Standards 7 | Example of behavior that contributes to creating a positive environment include: 8 | - Using welcoming and inclusive language 9 | - Being respectful of differing viewpoints and experiences 10 | - Gracefully accepting constructive criticism 11 | - Focusing on what is best for the community 12 | - Showing empathy towards other community members 13 | 14 | Examples of unacceptable behavior by participants include: 15 | - The use of serialized language or imagery and unwelcome sexual attention or advances 16 | - Trolling, insulting/derogatory comments, and personal or political attacks 17 | - Public or private harassment 18 | - Publishing others’ private information, such as a physical or electronic address, without explicit permission 19 | - Other conduct which could reasonably be considered inappropriate in a professional setting 20 | 21 | Our Responsibilities 22 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 23 | 24 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 25 | 26 | Scope 27 | This Code of Conduct applies within all project spaces, and it also applies when an individual is representing the project or its community in public spaces. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 28 | 29 | Enforcement 30 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at kubewharf.conduct@bytedance.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 31 | 32 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership. 33 | 34 | Attribution 35 | This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 36 | 37 | For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq -------------------------------------------------------------------------------- /GOVERNANCE.md: -------------------------------------------------------------------------------- 1 | # Kubewharf 2 | 3 | The governance model adopted in Kubewharf is influenced by many CNCF projects. 4 | 5 | ## Principles 6 | 7 | - **Open**: Kubewharf is open source community. See (TODO: add Contributor License Agreement). 8 | - **Welcoming and respectful**: See [Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). 9 | - **Transparent and accessible**: Work and collaboration should be done in public. 10 | - **Merit**: Ideas and contributions are accepted according to their technical merit 11 | and alignment with project objectives, scope and design principles. 12 | 13 | ## Code of Conduct 14 | 15 | The Kubewharf [Code of Conduct](CODE_OF_CONDUCT.md) is aligned with the CNCF Code of Conduct. 16 | 17 | ## Community MemberShip 18 | 19 | See community membership (TODO: add community membership). 20 | 21 | ## Decision-making process 22 | 23 | Decisions are made based on consensus between maintainers. 24 | Proposals and ideas can either be submitted for agreement via a GitHub issue or PR, 25 | or by sending an email to (TODO: register an email for the org). 26 | 27 | In general, we prefer that technical issues and maintainer membership are amicably worked out between the persons involved. 28 | If a dispute cannot be decided independently, get a third-party maintainer (e.g. a mutual contact with some background 29 | on the issue, but not involved in the conflict) to intercede and the final decision will be made. 30 | Decision-making process should be transparent to adhere to the principles of Kubewharf project. 31 | 32 | ## Credits 33 | 34 | Some contents in these documents have been borrowed from [OpenYurt](https://github.com/openyurtio/openyurt/blob/master/GOVERNANCE.md), 35 | [BFE](https://github.com/bfenetworks/bfe/blob/develop/GOVERNANCE.md), [CoreDNS](https://github.com/coredns/coredns/blob/master/GOVERNANCE.md) 36 | and [Kubernetes governance](https://github.com/kubernetes/community/blob/master/governance.md) projects. -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /MAINTAINERS.md: -------------------------------------------------------------------------------- 1 | # The Kubewharf-charts Maintainers 2 | 3 | This file lists the maintainers of the Kubewharf charts project. 4 | The responsibilities of maintainers are listed in the [GOVERNANCE.md](GOVERNANCE.md) file. 5 | 6 | ## Project Maintainers 7 | | Name | GitHub ID | Affiliation | 8 | |--------------------------------------------------|-----------------------------------------------------|-------------| 9 | | [Wei Shao](mailto:shaowei.wayne@bytedance.com) | [waynepeking348](https://github.com/waynepeking348) | ByteDance | 10 | | [Mingmeng Luo](mailto:luomingmeng@bytedance.com) | [luomingmeng](https://github.com/luomingmeng) | ByteDance | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Kubewharf Helm Charts 2 | 3 | Kubewharf Charts is collection of charts for http://kubewharf.io/ projects. 4 | 5 | ## Usage 6 | 7 | [Helm](https://helm.sh) must be installed to use the charts. 8 | Please refer to Helm's [documentation](https://helm.sh/docs/) to get started. Once Helm is set up properly, add the repo as follows: 9 | 10 | ``` 11 | helm repo add kubewharf https://kubewharf.github.io/charts 12 | ``` 13 | 14 | You can then run `helm search repo kubewharf` to see the charts. You can also learn the detailed usage of these charts from their own **README.md**. -------------------------------------------------------------------------------- /charts/katalyst/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *.orig 18 | *~ 19 | # Various IDEs 20 | .project 21 | .idea/ 22 | *.tmproj 23 | .vscode/ 24 | -------------------------------------------------------------------------------- /charts/katalyst/README.md: -------------------------------------------------------------------------------- 1 | # Katalyst Helm Charts 2 | 3 | Katalyst Helm Charts is for user to deploy katalyst system on their kubernetes cluster by `helm install`. 4 | 5 | ## Getting Started 6 | 7 | We support two options to deploy katalyst system: 8 | 9 | ### Option.1 Install Katalyst Components All in One 10 | 11 | ```console 12 | helm install katalyst -n katalyst-system --create-namespace kubewharf/katalyst 13 | ``` 14 | 15 | ### Option.2 Install Katalyst Components Standalone 16 | 17 | **Install Katalyst-agent** 18 | 19 | ```console 20 | helm install katalyst-agent -n katalyst-system --create-namespace kubewharf/katalyst-agent 21 | ``` 22 | 23 | **Install Katalyst-controller** 24 | 25 | ```console 26 | helm install katalyst-controller -n katalyst-system --create-namespace kubewharf/katalyst-controller 27 | ``` 28 | 29 | **Install Katalyst-metric** 30 | 31 | ```console 32 | helm install katalyst-metric -n katalyst-system --create-namespace kubewharf/katalyst-metric 33 | ``` 34 | 35 | **Install Katalyst-scheduler** 36 | 37 | ```console 38 | helm install katalyst-scheduler -n katalyst-system --create-namespace kubewharf/katalyst-scheduler 39 | ``` 40 | 41 | **Install Katalyst-webhook** 42 | 43 | ```console 44 | helm install katalyst-webhook -n katalyst-system --create-namespace kubewharf/katalyst-webhook 45 | ``` 46 | -------------------------------------------------------------------------------- /charts/katalyst/charts/agent/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *.orig 18 | *~ 19 | # Various IDEs 20 | .project 21 | .idea/ 22 | *.tmproj 23 | .vscode/ 24 | -------------------------------------------------------------------------------- /charts/katalyst/charts/agent/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: katalyst-agent 3 | description: A Helm chart for Katalyst-agent 4 | 5 | # A chart can be either an 'application' or a 'library' chart. 6 | # 7 | # Application charts are a collection of templates that can be packaged into versioned archives 8 | # to be deployed. 9 | # 10 | # Library charts provide useful utilities or functions for the chart developer. They're included as 11 | # a dependency of application charts to inject those utilities and functions into the rendering 12 | # pipeline. Library charts do not define any templates and therefore cannot be deployed. 13 | type: application 14 | 15 | # This is the chart version. This version number should be incremented each time you make changes 16 | # to the chart and its templates, including the app version. 17 | # Versions are expected to follow Semantic Versioning (https://semver.org/) 18 | version: 0.5.0 19 | 20 | # This is the version number of the application being deployed. This version number should be 21 | # incremented each time you make changes to the application. Versions are not expected to 22 | # follow Semantic Versioning. They should reflect the version the application is using. 23 | # It is recommended to use it with quotes. 24 | appVersion: "v0.5.0" 25 | -------------------------------------------------------------------------------- /charts/katalyst/charts/agent/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* 2 | Expand the name of the chart. 3 | */}} 4 | {{- define "katalyst-agent.name" -}} 5 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} 6 | {{- end }} 7 | 8 | {{/* 9 | Create a default fully qualified app name. 10 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 11 | If release name contains chart name it will be used as a full name. 12 | */}} 13 | {{- define "katalyst-agent.fullname" -}} 14 | {{- if .Values.fullnameOverride }} 15 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} 16 | {{- else }} 17 | {{- $name := default .Chart.Name .Values.nameOverride }} 18 | {{- if (contains $name .Release.Name) }} 19 | {{- .Release.Name | trunc 63 | trimSuffix "-" }} 20 | {{- else }} 21 | {{- if (contains .Release.Name $name) }} 22 | {{- $name | trunc 63 | trimSuffix "-" }} 23 | {{- else }} 24 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} 25 | {{- end }} 26 | {{- end }} 27 | {{- end }} 28 | {{- end }} 29 | 30 | {{/* 31 | Create chart name and version as used by the chart label. 32 | */}} 33 | {{- define "katalyst-agent.chart" -}} 34 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} 35 | {{- end }} 36 | 37 | {{/* 38 | Common labels 39 | */}} 40 | {{- define "katalyst-agent.labels" -}} 41 | helm.sh/chart: {{ include "katalyst-agent.chart" . }} 42 | {{ include "katalyst-agent.selectorLabels" . }} 43 | {{- if .Chart.AppVersion }} 44 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 45 | {{- end }} 46 | app.kubernetes.io/managed-by: {{ .Release.Service }} 47 | {{- end }} 48 | 49 | {{/* 50 | Selector labels 51 | */}} 52 | {{- define "katalyst-agent.selectorLabels" -}} 53 | app.kubernetes.io/name: {{ include "katalyst-agent.name" . }} 54 | app.kubernetes.io/instance: {{ .Release.Name }} 55 | {{- end }} 56 | 57 | {{/* 58 | Create the name of the service account to use 59 | */}} 60 | {{- define "katalyst-agent.serviceAccountName" -}} 61 | {{- if .Values.serviceAccount.create }} 62 | {{- default (include "katalyst-agent.fullname" .) .Values.serviceAccount.name }} 63 | {{- else }} 64 | {{- default "default" .Values.serviceAccount.name }} 65 | {{- end }} 66 | {{- end }} -------------------------------------------------------------------------------- /charts/katalyst/charts/agent/templates/daemonset.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: DaemonSet 3 | metadata: 4 | name: {{ include "katalyst-agent.fullname" . }} 5 | labels: 6 | {{- include "katalyst-agent.labels" . | nindent 4 }} 7 | app: "katalyst-agent" 8 | spec: 9 | selector: 10 | matchLabels: 11 | {{- include "katalyst-agent.selectorLabels" . | nindent 6 }} 12 | app: "katalyst-agent" 13 | minReadySeconds: 10 14 | updateStrategy: 15 | type: RollingUpdate 16 | rollingUpdate: 17 | maxUnavailable: 20% 18 | template: 19 | metadata: 20 | {{- with .Values.podAnnotations }} 21 | annotations: 22 | {{- toYaml . | nindent 8 }} 23 | {{- end }} 24 | labels: 25 | {{- include "katalyst-agent.selectorLabels" . | nindent 8 }} 26 | app: "katalyst-agent" 27 | spec: 28 | {{- with .Values.imagePullSecrets }} 29 | imagePullSecrets: 30 | {{- toYaml . | nindent 8 }} 31 | {{- end }} 32 | serviceAccountName: {{ include "katalyst-agent.serviceAccountName" . }} 33 | containers: 34 | - name: {{ .Chart.Name }} 35 | command: 36 | - {{ default "katalyst-agent" .Values.customCommand }} 37 | args: 38 | - --plugin-registration-dir={{ .Values.hostMountPaths.katalystLibDir }}/plugin-socks 39 | - --checkpoint-manager-directory={{ .Values.hostMountPaths.katalystLibDir }}/plugin-checkpoint 40 | - --locking-file={{ index .Values.customArgs "locking-file" | default ( printf "/tmp/%s_lock" (include "katalyst-agent.fullname" . | replace "-" "_") ) }} 41 | - --node-name=$(MY_NODE_NAME) 42 | - --node-address=$(MY_NODE_ADDRESS) 43 | {{- range $key, $value := .Values.customArgs }} 44 | - --{{ $key }}={{ $value }} 45 | {{- end }} 46 | env: 47 | - name: MY_NODE_NAME 48 | valueFrom: 49 | fieldRef: 50 | apiVersion: v1 51 | fieldPath: spec.nodeName 52 | - name: MY_NODE_ADDRESS 53 | valueFrom: 54 | fieldRef: 55 | fieldPath: status.hostIP 56 | image: "{{ .Values.global.image.registry | default .Values.image.registry }}/{{ .Values.global.image.repository | default .Values.image.repository }}:{{ .Values.global.image.tag | default .Values.image.tag | default .Chart.AppVersion }}" 57 | imagePullPolicy: {{ .Values.global.image.pullPolicy | default .Values.image.pullPolicy }} 58 | ports: 59 | - name: metrics 60 | containerPort: {{ (index .Values.customArgs "generic-endpoint" | default 9316) }} 61 | protocol: TCP 62 | livenessProbe: 63 | httpGet: 64 | path: /healthz 65 | port: metrics 66 | resources: 67 | {{- toYaml .Values.resources | nindent 12 }} 68 | volumeMounts: 69 | - mountPath: {{ .Values.hostMountPaths.kubeletLibDir }} 70 | name: host-kubelet-lib-dir 71 | - mountPath: {{ .Values.hostMountPaths.runtimeSocketDir }} 72 | name: host-runtime-socket-dir 73 | readOnly: true 74 | - mountPath: {{ .Values.hostMountPaths.katalystLibDir }} 75 | name: host-katalyst-lib-dir 76 | - mountPath: /sys 77 | name: host-sys-dir 78 | readOnly: true 79 | - mountPath: /tmp 80 | name: host-tmp-dir 81 | {{- if and (index .Values.customArgs "orm-work-mode") (eq (index .Values.customArgs "orm-work-mode") "nri") }} 82 | - mountPath: /var/run/nri 83 | name: host-nri-dir 84 | {{- end }} 85 | {{- with .Values.nodeSelector }} 86 | nodeSelector: 87 | {{- toYaml . | nindent 8 }} 88 | {{- end }} 89 | {{- with .Values.affinity }} 90 | affinity: 91 | {{- toYaml . | nindent 8 }} 92 | {{- end }} 93 | {{- with .Values.tolerations }} 94 | tolerations: 95 | {{- toYaml . | nindent 8 }} 96 | {{- end }} 97 | priorityClassName: system-node-critical 98 | restartPolicy: Always 99 | hostNetwork: true 100 | volumes: 101 | - hostPath: 102 | path: {{ .Values.hostMountPaths.kubeletLibDir }} 103 | type: "" 104 | name: host-kubelet-lib-dir 105 | - hostPath: 106 | path: {{ .Values.hostMountPaths.katalystLibDir }} 107 | type: DirectoryOrCreate 108 | name: host-katalyst-lib-dir 109 | - hostPath: 110 | path: {{ .Values.hostMountPaths.runtimeSocketDir }} 111 | type: "" 112 | name: host-runtime-socket-dir 113 | - hostPath: 114 | path: /sys 115 | type: "" 116 | name: host-sys-dir 117 | - hostPath: 118 | path: /tmp 119 | type: "" 120 | name: host-tmp-dir 121 | {{- if and (index .Values.customArgs "orm-work-mode") (eq (index .Values.customArgs "orm-work-mode") "nri") }} 122 | - hostPath: 123 | path: /var/run/nri 124 | type: DirectoryOrCreate 125 | name: host-nri-dir 126 | {{- end }} 127 | 128 | -------------------------------------------------------------------------------- /charts/katalyst/charts/agent/templates/rbac.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRole 4 | metadata: 5 | name: {{ include "katalyst-agent.serviceAccountName" . }} 6 | rules: 7 | - apiGroups: 8 | - node.katalyst.kubewharf.io 9 | resources: 10 | - customnoderesources 11 | - customnoderesources/status 12 | verbs: 13 | - get 14 | - list 15 | - watch 16 | - patch 17 | - create 18 | - apiGroups: 19 | - config.katalyst.kubewharf.io 20 | resources: 21 | - "*" 22 | verbs: 23 | - get 24 | - list 25 | - apiGroups: 26 | - "" 27 | resources: 28 | - pods/eviction 29 | verbs: 30 | - create 31 | - apiGroups: 32 | - "" 33 | resources: 34 | - nodes 35 | verbs: 36 | - get 37 | - patch 38 | - apiGroups: 39 | - "" 40 | resources: 41 | - nodes/proxy 42 | verbs: 43 | - get 44 | - apiGroups: 45 | - "" 46 | resources: 47 | - pods 48 | verbs: 49 | - create 50 | - delete 51 | - patch 52 | - update 53 | - get 54 | - apiGroups: 55 | - "*" 56 | resources: 57 | - events 58 | verbs: 59 | - create 60 | - patch 61 | - get 62 | 63 | --- 64 | apiVersion: rbac.authorization.k8s.io/v1 65 | kind: ClusterRoleBinding 66 | metadata: 67 | name: {{ include "katalyst-agent.serviceAccountName" . }} 68 | roleRef: 69 | apiGroup: rbac.authorization.k8s.io 70 | kind: ClusterRole 71 | name: {{ include "katalyst-agent.serviceAccountName" . }} 72 | subjects: 73 | - kind: ServiceAccount 74 | name: {{ include "katalyst-agent.serviceAccountName" . }} 75 | namespace: {{ .Release.Namespace }} 76 | 77 | --- 78 | apiVersion: v1 79 | kind: ServiceAccount 80 | metadata: 81 | name: {{ include "katalyst-agent.serviceAccountName" . }} 82 | labels: 83 | {{- include "katalyst-agent.labels" . | nindent 4 }} 84 | {{- with .Values.serviceAccount.annotations }} 85 | annotations: 86 | {{- toYaml . | nindent 4 }} 87 | {{- end }} 88 | {{- end }} 89 | -------------------------------------------------------------------------------- /charts/katalyst/charts/agent/values.yaml: -------------------------------------------------------------------------------- 1 | 2 | global: 3 | image: {} 4 | 5 | image: 6 | registry: docker.io 7 | repository: kubewharf/katalyst-agent 8 | pullPolicy: IfNotPresent 9 | # Overrides the image tag whose default is the chart appVersion. 10 | tag: "" 11 | 12 | imagePullSecrets: [] 13 | nameOverride: "" 14 | fullnameOverride: "" 15 | 16 | serviceAccount: 17 | # Specifies whether a service account should be created 18 | create: true 19 | # Annotations to add to the service account 20 | annotations: {} 21 | name: katalyst-agent 22 | 23 | podAnnotations: 24 | "katalyst.kubewharf.io/qos_level": system_cores 25 | 26 | resources: {} 27 | 28 | nodeSelector: {} 29 | 30 | tolerations: 31 | - effect: NoSchedule 32 | operator: Exists 33 | 34 | affinity: {} 35 | 36 | customCommand: {} 37 | 38 | customArgs: 39 | agents: "*" 40 | eviction-plugins: "*" 41 | enable-reclaim: true 42 | cpu-resource-plugin-advisor: true 43 | enable-cpu-pressure-eviction: true 44 | pod-resources-server-endpoint: "/var/lib/kubelet/pod-resources/kubelet.sock" 45 | enable-kubelet-secure-port: true 46 | 47 | 48 | hostMountPaths: 49 | kubeletLibDir: /var/lib/kubelet 50 | runtimeSocketDir: /run/containerd 51 | katalystLibDir: /var/lib/katalyst 52 | 53 | -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation-orm/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *.orig 18 | *~ 19 | # Various IDEs 20 | .project 21 | .idea/ 22 | *.tmproj 23 | .vscode/ 24 | -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation-orm/Chart.lock: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: katalyst-webhook 3 | repository: file://../webhook 4 | version: 0.5.0 5 | - name: katalyst-controller 6 | repository: file://../controller 7 | version: 0.5.0 8 | - name: katalyst-metric 9 | repository: file://../metric 10 | version: 0.5.0 11 | - name: katalyst-scheduler 12 | repository: file://../scheduler 13 | version: 0.5.0 14 | - name: katalyst-agent 15 | repository: file://../agent 16 | version: 0.5.0 17 | digest: sha256:5cad53c88876515db3c663e83e11a2513560c2fb630e7cc8742efe8511c4779d 18 | generated: "2024-05-07T11:23:49.524534+08:00" 19 | -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation-orm/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: katalyst-colocation-orm 3 | description: A Helm chart for Katalyst colocation 4 | 5 | # A chart can be either an 'application' or a 'library' chart. 6 | # 7 | # Application charts are a collection of templates that can be packaged into versioned archives 8 | # to be deployed. 9 | # 10 | # Library charts provide useful utilities or functions for the chart developer. They're included as 11 | # a dependency of application charts to inject those utilities and functions into the rendering 12 | # pipeline. Library charts do not define any templates and therefore cannot be deployed. 13 | type: application 14 | 15 | # This is the chart version. This version number should be incremented each time you make changes 16 | # to the chart and its templates, including the app version. 17 | # Versions are expected to follow Semantic Versioning (https://semver.org/) 18 | version: 0.5.0 19 | 20 | # This is the version number of the application being deployed. This version number should be 21 | # incremented each time you make changes to the application. Versions are not expected to 22 | # follow Semantic Versioning. They should reflect the version the application is using. 23 | # It is recommended to use it with quotes. 24 | appVersion: "v0.5.0" 25 | 26 | dependencies: 27 | - name: katalyst-webhook 28 | version: 0.5.0 29 | repository: "file://../webhook" 30 | - name: katalyst-controller 31 | version: 0.5.0 32 | repository: "file://../controller" 33 | - name: katalyst-metric 34 | version: 0.5.0 35 | repository: "file://../metric" 36 | - name: katalyst-scheduler 37 | version: 0.5.0 38 | repository: "file://../scheduler" 39 | - name: katalyst-agent 40 | version: 0.5.0 41 | repository: "file://../agent" -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation-orm/charts/katalyst-agent-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/colocation-orm/charts/katalyst-agent-0.5.0.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation-orm/charts/katalyst-controller-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/colocation-orm/charts/katalyst-controller-0.5.0.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation-orm/charts/katalyst-metric-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/colocation-orm/charts/katalyst-metric-0.5.0.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation-orm/charts/katalyst-scheduler-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/colocation-orm/charts/katalyst-scheduler-0.5.0.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation-orm/charts/katalyst-webhook-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/colocation-orm/charts/katalyst-webhook-0.5.0.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation-orm/crds/config.katalyst.kubewharf.io_customnodeconfigs.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: apiextensions.k8s.io/v1 3 | kind: CustomResourceDefinition 4 | metadata: 5 | annotations: 6 | controller-gen.kubebuilder.io/version: v0.9.0 7 | creationTimestamp: null 8 | name: customnodeconfigs.config.katalyst.kubewharf.io 9 | spec: 10 | group: config.katalyst.kubewharf.io 11 | names: 12 | kind: CustomNodeConfig 13 | listKind: CustomNodeConfigList 14 | plural: customnodeconfigs 15 | shortNames: 16 | - cnc 17 | singular: customnodeconfig 18 | scope: Cluster 19 | versions: 20 | - name: v1alpha1 21 | schema: 22 | openAPIV3Schema: 23 | description: CustomNodeConfig is the Schema for the customnodeconfigs API 24 | properties: 25 | apiVersion: 26 | description: 'APIVersion defines the versioned schema of this representation 27 | of an object. Servers should convert recognized schemas to the latest 28 | internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 29 | type: string 30 | kind: 31 | description: 'Kind is a string value representing the REST resource this 32 | object represents. Servers may infer this from the endpoint the client 33 | submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 34 | type: string 35 | metadata: 36 | type: object 37 | spec: 38 | type: object 39 | status: 40 | description: CustomNodeConfigStatus defines the desired state of KatalystCustomConfig 41 | properties: 42 | katalystCustomConfigList: 43 | description: KatalystCustomConfigList contains a list of target custom 44 | config 45 | items: 46 | description: TargetConfig current hash for specific gvk config object 47 | properties: 48 | configName: 49 | description: ConfigName name of target config 50 | type: string 51 | configNamespace: 52 | description: ConfigNamespace namespace of target config 53 | type: string 54 | configType: 55 | description: ConfigType gvr of target config 56 | properties: 57 | group: 58 | type: string 59 | resource: 60 | type: string 61 | version: 62 | type: string 63 | required: 64 | - group 65 | - resource 66 | - version 67 | type: object 68 | hash: 69 | description: Hash is current hash value of target config. The 70 | agent will first check whether the local config hash and the 71 | target config hash are equal, only if not, it will try to 72 | update the local config from the remote. 73 | type: string 74 | required: 75 | - configName 76 | - configNamespace 77 | - configType 78 | - hash 79 | type: object 80 | type: array 81 | serviceProfileConfigList: 82 | description: ServiceProfileConfigList contains a list of target service 83 | Profile config 84 | items: 85 | description: TargetConfig current hash for specific gvk config object 86 | properties: 87 | configName: 88 | description: ConfigName name of target config 89 | type: string 90 | configNamespace: 91 | description: ConfigNamespace namespace of target config 92 | type: string 93 | configType: 94 | description: ConfigType gvr of target config 95 | properties: 96 | group: 97 | type: string 98 | resource: 99 | type: string 100 | version: 101 | type: string 102 | required: 103 | - group 104 | - resource 105 | - version 106 | type: object 107 | hash: 108 | description: Hash is current hash value of target config. The 109 | agent will first check whether the local config hash and the 110 | target config hash are equal, only if not, it will try to 111 | update the local config from the remote. 112 | type: string 113 | required: 114 | - configName 115 | - configNamespace 116 | - configType 117 | - hash 118 | type: object 119 | type: array 120 | type: object 121 | type: object 122 | served: true 123 | storage: true 124 | subresources: 125 | status: {} 126 | -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation-orm/crds/config.katalyst.kubewharf.io_katalystcustomconfigs.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: apiextensions.k8s.io/v1 3 | kind: CustomResourceDefinition 4 | metadata: 5 | annotations: 6 | controller-gen.kubebuilder.io/version: v0.9.0 7 | creationTimestamp: null 8 | name: katalystcustomconfigs.config.katalyst.kubewharf.io 9 | spec: 10 | group: config.katalyst.kubewharf.io 11 | names: 12 | kind: KatalystCustomConfig 13 | listKind: KatalystCustomConfigList 14 | plural: katalystcustomconfigs 15 | shortNames: 16 | - kcc 17 | singular: katalystcustomconfig 18 | scope: Namespaced 19 | versions: 20 | - additionalPrinterColumns: 21 | - jsonPath: .spec.targetType.group 22 | name: GROUP 23 | type: string 24 | - jsonPath: .spec.targetType.resource 25 | name: RESOURCE 26 | type: string 27 | - jsonPath: .spec.targetType.version 28 | name: VERSION 29 | type: string 30 | - jsonPath: .metadata.generation 31 | name: GENERATION 32 | type: integer 33 | - jsonPath: .status.observedGeneration 34 | name: OBSERVED 35 | type: integer 36 | - jsonPath: .status.invalidTargetConfigList 37 | name: INVALID 38 | type: string 39 | - jsonPath: .status.conditions[?(@.type=="Valid")].status 40 | name: VALID 41 | type: string 42 | - jsonPath: .status.conditions[?(@.type=="Valid")].reason 43 | name: REASON 44 | type: string 45 | - jsonPath: .status.conditions[?(@.type=="Valid")].message 46 | name: MESSAGE 47 | type: string 48 | name: v1alpha1 49 | schema: 50 | openAPIV3Schema: 51 | description: KatalystCustomConfig is the Schema for the custom configuration 52 | API in katalyst 53 | properties: 54 | apiVersion: 55 | description: 'APIVersion defines the versioned schema of this representation 56 | of an object. Servers should convert recognized schemas to the latest 57 | internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 58 | type: string 59 | kind: 60 | description: 'Kind is a string value representing the REST resource this 61 | object represents. Servers may infer this from the endpoint the client 62 | submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 63 | type: string 64 | metadata: 65 | type: object 66 | spec: 67 | description: KatalystCustomConfigSpec defines the desired state of KatalystCustomConfig 68 | properties: 69 | disableRevisionHistory: 70 | default: true 71 | description: whether disable revisionHistory for the KatalystCustomConfig 72 | resource 73 | type: boolean 74 | nodeLabelSelectorAllowedKeyList: 75 | description: the keys list allowed in node selector to select which 76 | nodes will be effected by the KatalystCustomConfig resource, and 77 | the priority will be used when one node match two KatalystCustomConfig 78 | resource at the same time, the higher priority one will be considered. 79 | If not set, node label selector is not allowed to use. 80 | items: 81 | description: PriorityNodeLabelSelectorAllowedKeyList defines the 82 | priority and its allowed key list 83 | properties: 84 | keyList: 85 | description: KeyList is allowed to use in node selector in the 86 | Priority 87 | items: 88 | type: string 89 | type: array 90 | priority: 91 | description: Priority is the priority of configurations 92 | format: int32 93 | type: integer 94 | required: 95 | - keyList 96 | - priority 97 | type: object 98 | type: array 99 | targetType: 100 | description: the GVR of target config type 101 | properties: 102 | group: 103 | type: string 104 | resource: 105 | type: string 106 | version: 107 | type: string 108 | required: 109 | - group 110 | - resource 111 | - version 112 | type: object 113 | required: 114 | - targetType 115 | type: object 116 | status: 117 | description: KatalystCustomConfigStatus defines the observed state of 118 | KatalystCustomConfig 119 | properties: 120 | conditions: 121 | description: Represents the latest available observations of a KatalystCustomConfig's 122 | current state. 123 | items: 124 | properties: 125 | lastTransitionTime: 126 | description: Last time the condition transit from one status 127 | to another. 128 | format: date-time 129 | type: string 130 | message: 131 | description: message is a human-readable explanation containing 132 | details about the transition 133 | type: string 134 | reason: 135 | description: reason is the reason for the condition's last transition. 136 | type: string 137 | status: 138 | description: Status of the condition, one of True, False, Unknown. 139 | type: string 140 | type: 141 | description: Type of KatalystCustomConfig condition 142 | type: string 143 | required: 144 | - status 145 | - type 146 | type: object 147 | type: array 148 | invalidTargetConfigList: 149 | description: InvalidTargetConfigList is a name list of invalid Config 150 | items: 151 | type: string 152 | type: array 153 | observedGeneration: 154 | description: ObservedGeneration is the generation as observed by the 155 | controller consuming the KatalystCustomConfig. 156 | format: int64 157 | type: integer 158 | type: object 159 | type: object 160 | served: true 161 | storage: true 162 | subresources: 163 | status: {} 164 | -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation-orm/crds/workload.katalyst.kubewharf.io_serviceprofiledescriptors.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: apiextensions.k8s.io/v1 3 | kind: CustomResourceDefinition 4 | metadata: 5 | annotations: 6 | controller-gen.kubebuilder.io/version: v0.9.0 7 | creationTimestamp: null 8 | name: serviceprofiledescriptors.workload.katalyst.kubewharf.io 9 | spec: 10 | group: workload.katalyst.kubewharf.io 11 | names: 12 | kind: ServiceProfileDescriptor 13 | listKind: ServiceProfileDescriptorList 14 | plural: serviceprofiledescriptors 15 | shortNames: 16 | - spd 17 | singular: serviceprofiledescriptor 18 | scope: Namespaced 19 | versions: 20 | - name: v1alpha1 21 | schema: 22 | openAPIV3Schema: 23 | description: ServiceProfileDescriptor captures information about a VPA object 24 | properties: 25 | apiVersion: 26 | description: 'APIVersion defines the versioned schema of this representation 27 | of an object. Servers should convert recognized schemas to the latest 28 | internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 29 | type: string 30 | kind: 31 | description: 'Kind is a string value representing the REST resource this 32 | object represents. Servers may infer this from the endpoint the client 33 | submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 34 | type: string 35 | metadata: 36 | type: object 37 | spec: 38 | description: Spec defines the behavior of a ServiceProfileDescriptor. 39 | properties: 40 | baselineRatio: 41 | description: BaselineRatio marks off a bunch of instances, and skip 42 | adjusting Knobs for them; those instances are defined as baselines, 43 | and can be compared with other (experimental/production) instances 44 | to demonstrate the benefits. if BaselineRatio not set, it means 45 | we should take all instances as production instances. 46 | maximum: 1 47 | minimum: 0 48 | type: number 49 | businessIndicator: 50 | description: if multiple BusinessIndicator are defined, it means that 51 | we should try to satisfy all of those indicator targets 52 | items: 53 | description: "ServiceBusinessIndicatorSpec defines workload profiling 54 | in business level, such as rpc-latency, success-rate, service-health-score 55 | and so on, and general control-flow works as below \n - according 56 | to workload states, user defines several key indicates - user-system 57 | calculate and update observed values in status - sysadvisor (in-tree 58 | katalyst) decides system-indicator offset according to business-indicator 59 | - sysadvisor (along with reporter and qrm) to perform resources 60 | and controlKnob actions" 61 | properties: 62 | indicators: 63 | items: 64 | properties: 65 | indicatorLevel: 66 | description: IndicatorLevelName defines several levels 67 | for each indicator, and we will always try to keep the 68 | actual indicator in acceptable intervals instead of 69 | as an accurate value. Those intervals are marked by 70 | IndicatorLevelName. 71 | type: string 72 | value: 73 | type: number 74 | required: 75 | - indicatorLevel 76 | - value 77 | type: object 78 | type: array 79 | name: 80 | description: Name is used to define the business-related profiling 81 | indicator for the workload, e.g. rpc-latency, success-rate, 82 | service-health-score and so on. Users can use it as an expended 83 | way, and customize sysadvisor to adapter with it. 84 | type: string 85 | required: 86 | - name 87 | type: object 88 | type: array 89 | systemIndicator: 90 | description: if multiple SystemIndicator are defined, it means that 91 | we should try to satisfy all of those indicator targets 92 | items: 93 | description: "ServiceSystemIndicatorSpec defines workload profiling 94 | in system level, such as cpu_sched_wait、cpi、mbw ... and so on, 95 | and sysadvisor (along with reporter and qrm) will try to perform 96 | resources and controlKnob actions \n System-target indicator (along 97 | with its values in each level) could be difficult to pre-define, 98 | and it may have strong correlations with both workload characters 99 | and node environments, so we suggest users to run offline analysis 100 | pipelines to get those stats." 101 | properties: 102 | indicators: 103 | items: 104 | properties: 105 | indicatorLevel: 106 | description: IndicatorLevelName defines several levels 107 | for each indicator, and we will always try to keep the 108 | actual indicator in acceptable intervals instead of 109 | as an accurate value. Those intervals are marked by 110 | IndicatorLevelName. 111 | type: string 112 | value: 113 | type: number 114 | required: 115 | - indicatorLevel 116 | - value 117 | type: object 118 | type: array 119 | name: 120 | description: Name is used to define the system-related profiling 121 | indicator for the workload, e.g. cpu_sched_wait、cpi、mbw ... 122 | and so on. Users can use it as an expended way, and customize 123 | sysadvisor to adapter with it. 124 | type: string 125 | required: 126 | - name 127 | type: object 128 | type: array 129 | targetRef: 130 | description: TargetRef points to the controller managing the set of 131 | pods for the spd-controller to control - e.g. Deployment, StatefulSet. 132 | SPD should have one-to-one mapping relationships with workload. 133 | properties: 134 | apiVersion: 135 | description: API version of the referent 136 | type: string 137 | kind: 138 | description: Kind of the referent 139 | type: string 140 | name: 141 | description: Name of the referent 142 | type: string 143 | required: 144 | - kind 145 | - name 146 | type: object 147 | required: 148 | - targetRef 149 | type: object 150 | status: 151 | description: Status represents the concrete samples of ServiceProfileData 152 | with multiple resources. 153 | properties: 154 | aggMetrics: 155 | items: 156 | description: AggPodMetrics records the aggregated metrics based. 157 | properties: 158 | aggregator: 159 | description: Aggregator indicates how the metrics data in Items 160 | are calculated, i.e. defines the aggregation functions. 161 | enum: 162 | - avg 163 | - max 164 | type: string 165 | items: 166 | items: 167 | description: PodMetrics sets resource usage metrics of a pod. 168 | properties: 169 | apiVersion: 170 | description: 'APIVersion defines the versioned schema 171 | of this representation of an object. Servers should 172 | convert recognized schemas to the latest internal value, 173 | and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 174 | type: string 175 | containers: 176 | description: Metrics for all containers are collected 177 | within the same time window. 178 | items: 179 | description: ContainerMetrics sets resource usage metrics 180 | of a container. 181 | properties: 182 | name: 183 | description: Container name corresponding to the 184 | one from pod.spec.containers. 185 | type: string 186 | usage: 187 | additionalProperties: 188 | anyOf: 189 | - type: integer 190 | - type: string 191 | pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 192 | x-kubernetes-int-or-string: true 193 | description: The memory usage is the memory working 194 | set. 195 | type: object 196 | required: 197 | - name 198 | - usage 199 | type: object 200 | type: array 201 | kind: 202 | description: 'Kind is a string value representing the 203 | REST resource this object represents. Servers may infer 204 | this from the endpoint the client submits requests to. 205 | Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 206 | type: string 207 | metadata: 208 | description: 'Standard object''s metadata. More info: 209 | https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' 210 | type: object 211 | timestamp: 212 | description: The following fields define time interval 213 | from which metrics were collected from the interval 214 | [Timestamp-Window, Timestamp]. 215 | format: date-time 216 | type: string 217 | window: 218 | type: string 219 | required: 220 | - containers 221 | - timestamp 222 | - window 223 | type: object 224 | type: array 225 | required: 226 | - aggregator 227 | type: object 228 | type: array 229 | businessStatus: 230 | items: 231 | description: ServiceBusinessIndicatorStatus is connected with ServiceBusinessIndicatorSpec 232 | with Name to indicate the observed info for this workload (as 233 | for this indicator). 234 | properties: 235 | current: 236 | description: Current indicates the current observed value for 237 | this business indicator 238 | type: number 239 | name: 240 | type: string 241 | required: 242 | - name 243 | type: object 244 | type: array 245 | type: object 246 | type: object 247 | served: true 248 | storage: true 249 | subresources: 250 | status: {} 251 | -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation-orm/values.yaml: -------------------------------------------------------------------------------- 1 | global: 2 | # Overrides all components' image by global image 3 | image: {} 4 | 5 | # Overrides katalyst-agent values 6 | katalyst-agent: 7 | enabled: true 8 | 9 | image: 10 | registry: docker.io 11 | repository: kubewharf/katalyst-agent 12 | pullPolicy: IfNotPresent 13 | # Overrides the image tag whose default is the chart appVersion. 14 | tag: "" 15 | 16 | imagePullSecrets: [ ] 17 | nameOverride: "" 18 | fullnameOverride: "" 19 | 20 | serviceAccount: 21 | # Specifies whether a service account should be created 22 | create: true 23 | # Annotations to add to the service account 24 | annotations: { } 25 | name: katalyst-agent 26 | 27 | podAnnotations: 28 | "katalyst.kubewharf.io/qos_level": system_cores 29 | 30 | resources: { } 31 | 32 | nodeSelector: { } 33 | 34 | tolerations: 35 | - effect: NoSchedule 36 | operator: Exists 37 | 38 | affinity: { } 39 | 40 | customCommand: { } 41 | 42 | customArgs: 43 | agents: "*" 44 | eviction-plugins: "*" 45 | enable-reclaim: true 46 | cpu-resource-plugin-advisor: true 47 | enable-cpu-pressure-eviction: true 48 | memory-resource-plugin-advisor: true 49 | enable-report-topology-policy: true 50 | qrm-socket-dirs: "/var/lib/katalyst/plugin-socks" # qrm plugins registry to orm 51 | pod-resources-server-endpoint: "/var/lib/katalyst/pod-resources/kubelet.sock" # kubelet reporter get pod resources from orm 52 | orm-kubelet-pod-resources-endpoints: "/var/lib/kubelet/pod-resources/kubelet.sock" 53 | orm-devices-provider: "kubelet" # orm get devices resources from kubelet 54 | topology-policy-name: "none" # none / best-effort / restricted / single-numa-node / numeric supported 55 | orm-resource-names-map: "resource.katalyst.kubewharf.io/reclaimed_millicpu=cpu,resource.katalyst.kubewharf.io/reclaimed_memory=memory" 56 | enable-kubelet-secure-port: true 57 | 58 | hostMountPaths: 59 | kubeletLibDir: /var/lib/kubelet 60 | runtimeSocketDir: /run/containerd 61 | katalystLibDir: /var/lib/katalyst 62 | 63 | katalyst-controller: {} 64 | 65 | katalyst-webhook: {} 66 | 67 | katalyst-scheduler: {} 68 | 69 | katalyst-metric: {} -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *.orig 18 | *~ 19 | # Various IDEs 20 | .project 21 | .idea/ 22 | *.tmproj 23 | .vscode/ 24 | -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation/Chart.lock: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: katalyst-webhook 3 | repository: file://../webhook 4 | version: 0.5.0 5 | - name: katalyst-controller 6 | repository: file://../controller 7 | version: 0.5.0 8 | - name: katalyst-metric 9 | repository: file://../metric 10 | version: 0.5.0 11 | - name: katalyst-scheduler 12 | repository: file://../scheduler 13 | version: 0.5.0 14 | - name: katalyst-agent 15 | repository: file://../agent 16 | version: 0.5.0 17 | digest: sha256:5cad53c88876515db3c663e83e11a2513560c2fb630e7cc8742efe8511c4779d 18 | generated: "2024-04-29T12:09:26.430653+08:00" 19 | -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: katalyst-colocation 3 | description: A Helm chart for Katalyst colocation 4 | 5 | # A chart can be either an 'application' or a 'library' chart. 6 | # 7 | # Application charts are a collection of templates that can be packaged into versioned archives 8 | # to be deployed. 9 | # 10 | # Library charts provide useful utilities or functions for the chart developer. They're included as 11 | # a dependency of application charts to inject those utilities and functions into the rendering 12 | # pipeline. Library charts do not define any templates and therefore cannot be deployed. 13 | type: application 14 | 15 | # This is the chart version. This version number should be incremented each time you make changes 16 | # to the chart and its templates, including the app version. 17 | # Versions are expected to follow Semantic Versioning (https://semver.org/) 18 | version: 0.5.0 19 | 20 | # This is the version number of the application being deployed. This version number should be 21 | # incremented each time you make changes to the application. Versions are not expected to 22 | # follow Semantic Versioning. They should reflect the version the application is using. 23 | # It is recommended to use it with quotes. 24 | appVersion: "v0.5.0" 25 | 26 | dependencies: 27 | - name: katalyst-webhook 28 | version: 0.5.0 29 | repository: "file://../webhook" 30 | - name: katalyst-controller 31 | version: 0.5.0 32 | repository: "file://../controller" 33 | - name: katalyst-metric 34 | version: 0.5.0 35 | repository: "file://../metric" 36 | - name: katalyst-scheduler 37 | version: 0.5.0 38 | repository: "file://../scheduler" 39 | - name: katalyst-agent 40 | version: 0.5.0 41 | repository: "file://../agent" 42 | -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation/charts/katalyst-agent-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/colocation/charts/katalyst-agent-0.5.0.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation/charts/katalyst-controller-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/colocation/charts/katalyst-controller-0.5.0.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation/charts/katalyst-metric-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/colocation/charts/katalyst-metric-0.5.0.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation/charts/katalyst-scheduler-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/colocation/charts/katalyst-scheduler-0.5.0.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation/charts/katalyst-webhook-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/colocation/charts/katalyst-webhook-0.5.0.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation/crds/config.katalyst.kubewharf.io_customnodeconfigs.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: apiextensions.k8s.io/v1 3 | kind: CustomResourceDefinition 4 | metadata: 5 | annotations: 6 | controller-gen.kubebuilder.io/version: v0.9.0 7 | creationTimestamp: null 8 | name: customnodeconfigs.config.katalyst.kubewharf.io 9 | spec: 10 | group: config.katalyst.kubewharf.io 11 | names: 12 | kind: CustomNodeConfig 13 | listKind: CustomNodeConfigList 14 | plural: customnodeconfigs 15 | shortNames: 16 | - cnc 17 | singular: customnodeconfig 18 | scope: Cluster 19 | versions: 20 | - name: v1alpha1 21 | schema: 22 | openAPIV3Schema: 23 | description: CustomNodeConfig is the Schema for the customnodeconfigs API 24 | properties: 25 | apiVersion: 26 | description: 'APIVersion defines the versioned schema of this representation 27 | of an object. Servers should convert recognized schemas to the latest 28 | internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 29 | type: string 30 | kind: 31 | description: 'Kind is a string value representing the REST resource this 32 | object represents. Servers may infer this from the endpoint the client 33 | submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 34 | type: string 35 | metadata: 36 | type: object 37 | spec: 38 | type: object 39 | status: 40 | description: CustomNodeConfigStatus defines the desired state of KatalystCustomConfig 41 | properties: 42 | katalystCustomConfigList: 43 | description: KatalystCustomConfigList contains a list of target custom 44 | config 45 | items: 46 | description: TargetConfig current hash for specific gvk config object 47 | properties: 48 | configName: 49 | description: ConfigName name of target config 50 | type: string 51 | configNamespace: 52 | description: ConfigNamespace namespace of target config 53 | type: string 54 | configType: 55 | description: ConfigType gvr of target config 56 | properties: 57 | group: 58 | type: string 59 | resource: 60 | type: string 61 | version: 62 | type: string 63 | required: 64 | - group 65 | - resource 66 | - version 67 | type: object 68 | hash: 69 | description: Hash is current hash value of target config. The 70 | agent will first check whether the local config hash and the 71 | target config hash are equal, only if not, it will try to 72 | update the local config from the remote. 73 | type: string 74 | required: 75 | - configName 76 | - configNamespace 77 | - configType 78 | - hash 79 | type: object 80 | type: array 81 | serviceProfileConfigList: 82 | description: ServiceProfileConfigList contains a list of target service 83 | Profile config 84 | items: 85 | description: TargetConfig current hash for specific gvk config object 86 | properties: 87 | configName: 88 | description: ConfigName name of target config 89 | type: string 90 | configNamespace: 91 | description: ConfigNamespace namespace of target config 92 | type: string 93 | configType: 94 | description: ConfigType gvr of target config 95 | properties: 96 | group: 97 | type: string 98 | resource: 99 | type: string 100 | version: 101 | type: string 102 | required: 103 | - group 104 | - resource 105 | - version 106 | type: object 107 | hash: 108 | description: Hash is current hash value of target config. The 109 | agent will first check whether the local config hash and the 110 | target config hash are equal, only if not, it will try to 111 | update the local config from the remote. 112 | type: string 113 | required: 114 | - configName 115 | - configNamespace 116 | - configType 117 | - hash 118 | type: object 119 | type: array 120 | type: object 121 | type: object 122 | served: true 123 | storage: true 124 | subresources: 125 | status: {} 126 | -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation/crds/config.katalyst.kubewharf.io_katalystcustomconfigs.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: apiextensions.k8s.io/v1 3 | kind: CustomResourceDefinition 4 | metadata: 5 | annotations: 6 | controller-gen.kubebuilder.io/version: v0.9.0 7 | creationTimestamp: null 8 | name: katalystcustomconfigs.config.katalyst.kubewharf.io 9 | spec: 10 | group: config.katalyst.kubewharf.io 11 | names: 12 | kind: KatalystCustomConfig 13 | listKind: KatalystCustomConfigList 14 | plural: katalystcustomconfigs 15 | shortNames: 16 | - kcc 17 | singular: katalystcustomconfig 18 | scope: Namespaced 19 | versions: 20 | - additionalPrinterColumns: 21 | - jsonPath: .spec.targetType.group 22 | name: GROUP 23 | type: string 24 | - jsonPath: .spec.targetType.resource 25 | name: RESOURCE 26 | type: string 27 | - jsonPath: .spec.targetType.version 28 | name: VERSION 29 | type: string 30 | - jsonPath: .metadata.generation 31 | name: GENERATION 32 | type: integer 33 | - jsonPath: .status.observedGeneration 34 | name: OBSERVED 35 | type: integer 36 | - jsonPath: .status.invalidTargetConfigList 37 | name: INVALID 38 | type: string 39 | - jsonPath: .status.conditions[?(@.type=="Valid")].status 40 | name: VALID 41 | type: string 42 | - jsonPath: .status.conditions[?(@.type=="Valid")].reason 43 | name: REASON 44 | type: string 45 | - jsonPath: .status.conditions[?(@.type=="Valid")].message 46 | name: MESSAGE 47 | type: string 48 | name: v1alpha1 49 | schema: 50 | openAPIV3Schema: 51 | description: KatalystCustomConfig is the Schema for the custom configuration 52 | API in katalyst 53 | properties: 54 | apiVersion: 55 | description: 'APIVersion defines the versioned schema of this representation 56 | of an object. Servers should convert recognized schemas to the latest 57 | internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 58 | type: string 59 | kind: 60 | description: 'Kind is a string value representing the REST resource this 61 | object represents. Servers may infer this from the endpoint the client 62 | submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 63 | type: string 64 | metadata: 65 | type: object 66 | spec: 67 | description: KatalystCustomConfigSpec defines the desired state of KatalystCustomConfig 68 | properties: 69 | disableRevisionHistory: 70 | default: true 71 | description: whether disable revisionHistory for the KatalystCustomConfig 72 | resource 73 | type: boolean 74 | nodeLabelSelectorAllowedKeyList: 75 | description: the keys list allowed in node selector to select which 76 | nodes will be effected by the KatalystCustomConfig resource, and 77 | the priority will be used when one node match two KatalystCustomConfig 78 | resource at the same time, the higher priority one will be considered. 79 | If not set, node label selector is not allowed to use. 80 | items: 81 | description: PriorityNodeLabelSelectorAllowedKeyList defines the 82 | priority and its allowed key list 83 | properties: 84 | keyList: 85 | description: KeyList is allowed to use in node selector in the 86 | Priority 87 | items: 88 | type: string 89 | type: array 90 | priority: 91 | description: Priority is the priority of configurations 92 | format: int32 93 | type: integer 94 | required: 95 | - keyList 96 | - priority 97 | type: object 98 | type: array 99 | targetType: 100 | description: the GVR of target config type 101 | properties: 102 | group: 103 | type: string 104 | resource: 105 | type: string 106 | version: 107 | type: string 108 | required: 109 | - group 110 | - resource 111 | - version 112 | type: object 113 | required: 114 | - targetType 115 | type: object 116 | status: 117 | description: KatalystCustomConfigStatus defines the observed state of 118 | KatalystCustomConfig 119 | properties: 120 | conditions: 121 | description: Represents the latest available observations of a KatalystCustomConfig's 122 | current state. 123 | items: 124 | properties: 125 | lastTransitionTime: 126 | description: Last time the condition transit from one status 127 | to another. 128 | format: date-time 129 | type: string 130 | message: 131 | description: message is a human-readable explanation containing 132 | details about the transition 133 | type: string 134 | reason: 135 | description: reason is the reason for the condition's last transition. 136 | type: string 137 | status: 138 | description: Status of the condition, one of True, False, Unknown. 139 | type: string 140 | type: 141 | description: Type of KatalystCustomConfig condition 142 | type: string 143 | required: 144 | - status 145 | - type 146 | type: object 147 | type: array 148 | invalidTargetConfigList: 149 | description: InvalidTargetConfigList is a name list of invalid Config 150 | items: 151 | type: string 152 | type: array 153 | observedGeneration: 154 | description: ObservedGeneration is the generation as observed by the 155 | controller consuming the KatalystCustomConfig. 156 | format: int64 157 | type: integer 158 | type: object 159 | type: object 160 | served: true 161 | storage: true 162 | subresources: 163 | status: {} 164 | -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation/crds/node.katalyst.kubewharf.io_customnoderesources.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: apiextensions.k8s.io/v1 3 | kind: CustomResourceDefinition 4 | metadata: 5 | annotations: 6 | controller-gen.kubebuilder.io/version: v0.9.0 7 | creationTimestamp: null 8 | name: customnoderesources.node.katalyst.kubewharf.io 9 | spec: 10 | group: node.katalyst.kubewharf.io 11 | names: 12 | kind: CustomNodeResource 13 | listKind: CustomNodeResourceList 14 | plural: customnoderesources 15 | shortNames: 16 | - kcnr 17 | singular: customnoderesource 18 | scope: Cluster 19 | versions: 20 | - name: v1alpha1 21 | schema: 22 | openAPIV3Schema: 23 | description: CustomNodeResource captures information about a custom defined 24 | node resource CustomNodeResource objects are non-namespaced. 25 | properties: 26 | apiVersion: 27 | description: 'APIVersion defines the versioned schema of this representation 28 | of an object. Servers should convert recognized schemas to the latest 29 | internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 30 | type: string 31 | kind: 32 | description: 'Kind is a string value representing the REST resource this 33 | object represents. Servers may infer this from the endpoint the client 34 | submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 35 | type: string 36 | metadata: 37 | type: object 38 | spec: 39 | description: Spec defines the behavior of a CustomNodeResource. 40 | properties: 41 | nodeResourceProperties: 42 | items: 43 | properties: 44 | propertyName: 45 | description: property name 46 | type: string 47 | propertyQuantity: 48 | anyOf: 49 | - type: integer 50 | - type: string 51 | description: values of the quantity-types property 52 | pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 53 | x-kubernetes-int-or-string: true 54 | propertyValues: 55 | description: values of the specific property 56 | items: 57 | type: string 58 | type: array 59 | required: 60 | - propertyName 61 | type: object 62 | type: array 63 | taints: 64 | description: customized taint for katalyst, which may affect partial 65 | tasks 66 | items: 67 | properties: 68 | effect: 69 | description: Required. The effect of the taint on pods that 70 | do not tolerate the taint. Valid effects are NoScheduleForReclaimedTasks. 71 | type: string 72 | key: 73 | description: Required. The taint key to be applied to a node. 74 | type: string 75 | value: 76 | description: Required. The taint value corresponding to the 77 | taint key. 78 | type: string 79 | type: object 80 | type: array 81 | type: object 82 | status: 83 | description: Status represents the current information about a CustomNodeResource. 84 | This data may not be up-to-date. 85 | properties: 86 | conditions: 87 | description: Conditions is an array of current observed cnr conditions. 88 | items: 89 | description: CNRCondition contains condition information for a cnr. 90 | properties: 91 | lastHeartbeatTime: 92 | description: Last time we got an update on a given condition. 93 | format: date-time 94 | type: string 95 | message: 96 | description: Human-readable message indicating details about 97 | last transition. 98 | type: string 99 | reason: 100 | description: (brief) reason for the condition's last transition. 101 | type: string 102 | status: 103 | description: Status of the condition, one of True, False, Unknown. 104 | type: string 105 | type: 106 | description: Type is the type of the condition. 107 | type: string 108 | required: 109 | - status 110 | - type 111 | type: object 112 | type: array 113 | resources: 114 | description: Resources defines the numeric quantities in this node; 115 | for instance reclaimed resources for this node 116 | properties: 117 | allocatable: 118 | additionalProperties: 119 | anyOf: 120 | - type: integer 121 | - type: string 122 | pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 123 | x-kubernetes-int-or-string: true 124 | description: ResourceList is a set of (resource name, quantity) 125 | pairs. 126 | type: object 127 | capacity: 128 | additionalProperties: 129 | anyOf: 130 | - type: integer 131 | - type: string 132 | pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 133 | x-kubernetes-int-or-string: true 134 | description: ResourceList is a set of (resource name, quantity) 135 | pairs. 136 | type: object 137 | type: object 138 | topologyPolicy: 139 | default: none 140 | description: TopologyPolicy indicates placement policy for scheduler 141 | or other centralized components to follow. this policy (including 142 | topology scope) is defined in topology-manager, katalyst is responsible 143 | to parse the policy, and transform to TopologyPolicy here. 144 | type: string 145 | topologyZone: 146 | items: 147 | properties: 148 | allocations: 149 | items: 150 | properties: 151 | consumer: 152 | type: string 153 | requests: 154 | additionalProperties: 155 | anyOf: 156 | - type: integer 157 | - type: string 158 | pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 159 | x-kubernetes-int-or-string: true 160 | description: ResourceList is a set of (resource name, 161 | quantity) pairs. 162 | type: object 163 | required: 164 | - consumer 165 | type: object 166 | type: array 167 | attributes: 168 | items: 169 | description: Attribute records the resource-specified info 170 | with name-value pairs 171 | properties: 172 | name: 173 | type: string 174 | value: 175 | type: string 176 | required: 177 | - name 178 | - value 179 | type: object 180 | type: array 181 | children: 182 | description: 'Children represents the ownerships between multiple 183 | TopologyZone; for instance, - a TopologyZone with type TopologyTypeSocket 184 | may have multiple childed TopologyZone with type TopologyTypeNuma 185 | to reflect the physical connections for a node - a TopologyZone 186 | with type `nic` may have multiple childed TopologyZone with 187 | type `vf` to reflect the `physical and virtual` relations 188 | between devices todo: in order to bypass the lacked functionality 189 | of recursive structure definition, we need to skip validation 190 | of this field for now; will re-add this validation logic if 191 | the community supports $ref, for more information, please 192 | refer to https://github.com/kubernetes/kubernetes/issues/62872' 193 | x-kubernetes-preserve-unknown-fields: true 194 | name: 195 | description: Name represents the name for the given type for 196 | resource; for instance, - disk-for-log, disk-for-storage may 197 | have different usage or attributes, so we need separate structure 198 | to distinguish them. 199 | type: string 200 | resources: 201 | description: Resources defines the numeric quantities in this 202 | TopologyZone; for instance, - a TopologyZone with type TopologyTypeGPU 203 | may have both gpu and gpu-memory - a TopologyZone with type 204 | TopologyTypeNIC may have both ingress and egress bandwidth 205 | properties: 206 | allocatable: 207 | additionalProperties: 208 | anyOf: 209 | - type: integer 210 | - type: string 211 | pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 212 | x-kubernetes-int-or-string: true 213 | description: ResourceList is a set of (resource name, quantity) 214 | pairs. 215 | type: object 216 | capacity: 217 | additionalProperties: 218 | anyOf: 219 | - type: integer 220 | - type: string 221 | pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 222 | x-kubernetes-int-or-string: true 223 | description: ResourceList is a set of (resource name, quantity) 224 | pairs. 225 | type: object 226 | type: object 227 | siblings: 228 | description: Siblings represents the relationship between TopologyZones 229 | at the same level; for instance, the distance between NUMA 230 | nodes. 231 | items: 232 | description: Sibling describes the relationship between two 233 | Zones. 234 | properties: 235 | attributes: 236 | description: Attributes are the attributes of the relationship 237 | between two Zones. For instance, the distance between 238 | tow NUMA nodes, the connection type between two GPUs, 239 | etc. 240 | items: 241 | description: Attribute records the resource-specified 242 | info with name-value pairs 243 | properties: 244 | name: 245 | type: string 246 | value: 247 | type: string 248 | required: 249 | - name 250 | - value 251 | type: object 252 | type: array 253 | name: 254 | description: Name represents the name of this Sibling. 255 | type: string 256 | type: 257 | description: Type represents the type of this Sibling. 258 | For instance, Socket, Numa, GPU, NIC, Disk and so on. 259 | type: string 260 | required: 261 | - name 262 | - type 263 | type: object 264 | type: array 265 | type: 266 | description: Type represents which kind of resource this TopologyZone 267 | is for; for instance, Socket, Numa, GPU, NIC, Disk and so 268 | on. 269 | type: string 270 | required: 271 | - name 272 | - type 273 | type: object 274 | type: array 275 | required: 276 | - topologyPolicy 277 | type: object 278 | type: object 279 | served: true 280 | storage: true 281 | subresources: 282 | status: {} 283 | -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation/crds/workload.katalyst.kubewharf.io_serviceprofiledescriptors.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: apiextensions.k8s.io/v1 3 | kind: CustomResourceDefinition 4 | metadata: 5 | annotations: 6 | controller-gen.kubebuilder.io/version: v0.9.0 7 | creationTimestamp: null 8 | name: serviceprofiledescriptors.workload.katalyst.kubewharf.io 9 | spec: 10 | group: workload.katalyst.kubewharf.io 11 | names: 12 | kind: ServiceProfileDescriptor 13 | listKind: ServiceProfileDescriptorList 14 | plural: serviceprofiledescriptors 15 | shortNames: 16 | - spd 17 | singular: serviceprofiledescriptor 18 | scope: Namespaced 19 | versions: 20 | - name: v1alpha1 21 | schema: 22 | openAPIV3Schema: 23 | description: ServiceProfileDescriptor captures information about a VPA object 24 | properties: 25 | apiVersion: 26 | description: 'APIVersion defines the versioned schema of this representation 27 | of an object. Servers should convert recognized schemas to the latest 28 | internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 29 | type: string 30 | kind: 31 | description: 'Kind is a string value representing the REST resource this 32 | object represents. Servers may infer this from the endpoint the client 33 | submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 34 | type: string 35 | metadata: 36 | type: object 37 | spec: 38 | description: Spec defines the behavior of a ServiceProfileDescriptor. 39 | properties: 40 | baselineRatio: 41 | description: BaselineRatio marks off a bunch of instances, and skip 42 | adjusting Knobs for them; those instances are defined as baselines, 43 | and can be compared with other (experimental/production) instances 44 | to demonstrate the benefits. if BaselineRatio not set, it means 45 | we should take all instances as production instances. 46 | maximum: 1 47 | minimum: 0 48 | type: number 49 | businessIndicator: 50 | description: if multiple BusinessIndicator are defined, it means that 51 | we should try to satisfy all of those indicator targets 52 | items: 53 | description: "ServiceBusinessIndicatorSpec defines workload profiling 54 | in business level, such as rpc-latency, success-rate, service-health-score 55 | and so on, and general control-flow works as below \n - according 56 | to workload states, user defines several key indicates - user-system 57 | calculate and update observed values in status - sysadvisor (in-tree 58 | katalyst) decides system-indicator offset according to business-indicator 59 | - sysadvisor (along with reporter and qrm) to perform resources 60 | and controlKnob actions" 61 | properties: 62 | indicators: 63 | items: 64 | properties: 65 | indicatorLevel: 66 | description: IndicatorLevelName defines several levels 67 | for each indicator, and we will always try to keep the 68 | actual indicator in acceptable intervals instead of 69 | as an accurate value. Those intervals are marked by 70 | IndicatorLevelName. 71 | type: string 72 | value: 73 | type: number 74 | required: 75 | - indicatorLevel 76 | - value 77 | type: object 78 | type: array 79 | name: 80 | description: Name is used to define the business-related profiling 81 | indicator for the workload, e.g. rpc-latency, success-rate, 82 | service-health-score and so on. Users can use it as an expended 83 | way, and customize sysadvisor to adapter with it. 84 | type: string 85 | required: 86 | - name 87 | type: object 88 | type: array 89 | systemIndicator: 90 | description: if multiple SystemIndicator are defined, it means that 91 | we should try to satisfy all of those indicator targets 92 | items: 93 | description: "ServiceSystemIndicatorSpec defines workload profiling 94 | in system level, such as cpu_sched_wait、cpi、mbw ... and so on, 95 | and sysadvisor (along with reporter and qrm) will try to perform 96 | resources and controlKnob actions \n System-target indicator (along 97 | with its values in each level) could be difficult to pre-define, 98 | and it may have strong correlations with both workload characters 99 | and node environments, so we suggest users to run offline analysis 100 | pipelines to get those stats." 101 | properties: 102 | indicators: 103 | items: 104 | properties: 105 | indicatorLevel: 106 | description: IndicatorLevelName defines several levels 107 | for each indicator, and we will always try to keep the 108 | actual indicator in acceptable intervals instead of 109 | as an accurate value. Those intervals are marked by 110 | IndicatorLevelName. 111 | type: string 112 | value: 113 | type: number 114 | required: 115 | - indicatorLevel 116 | - value 117 | type: object 118 | type: array 119 | name: 120 | description: Name is used to define the system-related profiling 121 | indicator for the workload, e.g. cpu_sched_wait、cpi、mbw ... 122 | and so on. Users can use it as an expended way, and customize 123 | sysadvisor to adapter with it. 124 | type: string 125 | required: 126 | - name 127 | type: object 128 | type: array 129 | targetRef: 130 | description: TargetRef points to the controller managing the set of 131 | pods for the spd-controller to control - e.g. Deployment, StatefulSet. 132 | SPD should have one-to-one mapping relationships with workload. 133 | properties: 134 | apiVersion: 135 | description: API version of the referent 136 | type: string 137 | kind: 138 | description: Kind of the referent 139 | type: string 140 | name: 141 | description: Name of the referent 142 | type: string 143 | required: 144 | - kind 145 | - name 146 | type: object 147 | required: 148 | - targetRef 149 | type: object 150 | status: 151 | description: Status represents the concrete samples of ServiceProfileData 152 | with multiple resources. 153 | properties: 154 | aggMetrics: 155 | items: 156 | description: AggPodMetrics records the aggregated metrics based. 157 | properties: 158 | aggregator: 159 | description: Aggregator indicates how the metrics data in Items 160 | are calculated, i.e. defines the aggregation functions. 161 | enum: 162 | - avg 163 | - max 164 | type: string 165 | items: 166 | items: 167 | description: PodMetrics sets resource usage metrics of a pod. 168 | properties: 169 | apiVersion: 170 | description: 'APIVersion defines the versioned schema 171 | of this representation of an object. Servers should 172 | convert recognized schemas to the latest internal value, 173 | and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 174 | type: string 175 | containers: 176 | description: Metrics for all containers are collected 177 | within the same time window. 178 | items: 179 | description: ContainerMetrics sets resource usage metrics 180 | of a container. 181 | properties: 182 | name: 183 | description: Container name corresponding to the 184 | one from pod.spec.containers. 185 | type: string 186 | usage: 187 | additionalProperties: 188 | anyOf: 189 | - type: integer 190 | - type: string 191 | pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 192 | x-kubernetes-int-or-string: true 193 | description: The memory usage is the memory working 194 | set. 195 | type: object 196 | required: 197 | - name 198 | - usage 199 | type: object 200 | type: array 201 | kind: 202 | description: 'Kind is a string value representing the 203 | REST resource this object represents. Servers may infer 204 | this from the endpoint the client submits requests to. 205 | Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 206 | type: string 207 | metadata: 208 | description: 'Standard object''s metadata. More info: 209 | https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' 210 | type: object 211 | timestamp: 212 | description: The following fields define time interval 213 | from which metrics were collected from the interval 214 | [Timestamp-Window, Timestamp]. 215 | format: date-time 216 | type: string 217 | window: 218 | type: string 219 | required: 220 | - containers 221 | - timestamp 222 | - window 223 | type: object 224 | type: array 225 | required: 226 | - aggregator 227 | type: object 228 | type: array 229 | businessStatus: 230 | items: 231 | description: ServiceBusinessIndicatorStatus is connected with ServiceBusinessIndicatorSpec 232 | with Name to indicate the observed info for this workload (as 233 | for this indicator). 234 | properties: 235 | current: 236 | description: Current indicates the current observed value for 237 | this business indicator 238 | type: number 239 | name: 240 | type: string 241 | required: 242 | - name 243 | type: object 244 | type: array 245 | type: object 246 | type: object 247 | served: true 248 | storage: true 249 | subresources: 250 | status: {} 251 | -------------------------------------------------------------------------------- /charts/katalyst/charts/colocation/values.yaml: -------------------------------------------------------------------------------- 1 | 2 | global: 3 | # Overrides all components' image by global image 4 | image: {} 5 | 6 | katalyst-agent: {} 7 | 8 | katalyst-controller: {} 9 | 10 | katalyst-webhook: {} 11 | 12 | katalyst-scheduler: {} 13 | 14 | katalyst-metric: {} -------------------------------------------------------------------------------- /charts/katalyst/charts/controller/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *.orig 18 | *~ 19 | # Various IDEs 20 | .project 21 | .idea/ 22 | *.tmproj 23 | .vscode/ 24 | -------------------------------------------------------------------------------- /charts/katalyst/charts/controller/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: katalyst-controller 3 | description: A Helm chart for Katalyst-controller 4 | 5 | # A chart can be either an 'application' or a 'library' chart. 6 | # 7 | # Application charts are a collection of templates that can be packaged into versioned archives 8 | # to be deployed. 9 | # 10 | # Library charts provide useful utilities or functions for the chart developer. They're included as 11 | # a dependency of application charts to inject those utilities and functions into the rendering 12 | # pipeline. Library charts do not define any templates and therefore cannot be deployed. 13 | type: application 14 | 15 | # This is the chart version. This version number should be incremented each time you make changes 16 | # to the chart and its templates, including the app version. 17 | # Versions are expected to follow Semantic Versioning (https://semver.org/) 18 | version: 0.5.12 19 | 20 | # This is the version number of the application being deployed. This version number should be 21 | # incremented each time you make changes to the application. Versions are not expected to 22 | # follow Semantic Versioning. They should reflect the version the application is using. 23 | # It is recommended to use it with quotes. 24 | appVersion: "v0.5.12" 25 | -------------------------------------------------------------------------------- /charts/katalyst/charts/controller/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* 2 | Expand the name of the chart. 3 | */}} 4 | {{- define "katalyst-controller.name" -}} 5 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} 6 | {{- end }} 7 | 8 | {{/* 9 | Create a default fully qualified app name. 10 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 11 | If release name contains chart name it will be used as a full name. 12 | */}} 13 | {{- define "katalyst-controller.fullname" -}} 14 | {{- if .Values.fullnameOverride }} 15 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} 16 | {{- else }} 17 | {{- $name := default .Chart.Name .Values.nameOverride }} 18 | {{- if (contains $name .Release.Name) }} 19 | {{- .Release.Name | trunc 63 | trimSuffix "-" }} 20 | {{- else }} 21 | {{- if (contains .Release.Name $name) }} 22 | {{- $name | trunc 63 | trimSuffix "-" }} 23 | {{- else }} 24 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} 25 | {{- end }} 26 | {{- end }} 27 | {{- end }} 28 | {{- end }} 29 | 30 | {{/* 31 | Create chart name and version as used by the chart label. 32 | */}} 33 | {{- define "katalyst-controller.chart" -}} 34 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} 35 | {{- end }} 36 | 37 | {{/* 38 | Common labels 39 | */}} 40 | {{- define "katalyst-controller.labels" -}} 41 | helm.sh/chart: {{ include "katalyst-controller.chart" . }} 42 | {{ include "katalyst-controller.selectorLabels" . }} 43 | {{- if .Chart.AppVersion }} 44 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 45 | {{- end }} 46 | app.kubernetes.io/managed-by: {{ .Release.Service }} 47 | {{- end }} 48 | 49 | {{/* 50 | Selector labels 51 | */}} 52 | {{- define "katalyst-controller.selectorLabels" -}} 53 | app.kubernetes.io/name: {{ include "katalyst-controller.name" . }} 54 | app.kubernetes.io/instance: {{ .Release.Name }} 55 | {{- end }} 56 | 57 | {{/* 58 | Create the name of the service account to use 59 | */}} 60 | {{- define "katalyst-controller.serviceAccountName" -}} 61 | {{- if .Values.serviceAccount.create }} 62 | {{- default (include "katalyst-controller.fullname" .) .Values.serviceAccount.name }} 63 | {{- else }} 64 | {{- default "default" .Values.serviceAccount.name }} 65 | {{- end }} 66 | {{- end }} -------------------------------------------------------------------------------- /charts/katalyst/charts/controller/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ include "katalyst-controller.fullname" . }} 5 | labels: 6 | {{- include "katalyst-controller.labels" . | nindent 4 }} 7 | app: "katalyst-controller" 8 | spec: 9 | replicas: {{ .Values.replicaCount }} 10 | selector: 11 | matchLabels: 12 | {{- include "katalyst-controller.selectorLabels" . | nindent 6 }} 13 | app: "katalyst-controller" 14 | template: 15 | metadata: 16 | {{- with .Values.podAnnotations }} 17 | annotations: 18 | {{- toYaml . | nindent 8 }} 19 | {{- end }} 20 | labels: 21 | {{- include "katalyst-controller.selectorLabels" . | nindent 8 }} 22 | app: "katalyst-controller" 23 | spec: 24 | {{- with .Values.imagePullSecrets }} 25 | imagePullSecrets: 26 | {{- toYaml . | nindent 8 }} 27 | {{- end }} 28 | restartPolicy: Always 29 | serviceAccountName: {{ include "katalyst-controller.serviceAccountName" . }} 30 | terminationGracePeriodSeconds: 30 31 | containers: 32 | - name: {{ .Chart.Name }} 33 | command: 34 | - {{ default "katalyst-controller" .Values.customCommand }} 35 | args: 36 | {{- if (index .Values.customArgs "leader-elect" | default true ) }} 37 | - --leader-elect-resource-name={{ index .Values.customArgs "leader-elect-resource-name" | default (include "katalyst-controller.fullname" .)}} 38 | - --leader-elect-resource-namespace={{ index .Values.customArgs "leader-elect-resource-namespace" | default .Release.Namespace }} 39 | {{- end }} 40 | {{- range $key, $value := .Values.customArgs }} 41 | - --{{ $key }}={{ $value }} 42 | {{- end }} 43 | image: "{{ .Values.global.image.registry | default .Values.image.registry }}/{{ .Values.global.image.repository | default .Values.image.repository }}:{{ .Values.global.image.tag | default .Values.image.tag | default .Chart.AppVersion }}" 44 | imagePullPolicy: {{ .Values.global.image.pullPolicy | default .Values.image.pullPolicy }} 45 | ports: 46 | - name: metrics 47 | containerPort: {{ (index .Values.customArgs "generic-endpoint" | default 9316) }} 48 | protocol: TCP 49 | livenessProbe: 50 | httpGet: 51 | path: /healthz 52 | port: metrics 53 | resources: 54 | {{- toYaml .Values.resources | nindent 12 }} 55 | hostNetwork: {{ .Values.hostNetwork | default false }} 56 | {{- with .Values.nodeSelector }} 57 | nodeSelector: 58 | {{- toYaml . | nindent 8 }} 59 | {{- end }} 60 | {{- with .Values.affinity }} 61 | affinity: 62 | {{- toYaml . | nindent 8 }} 63 | {{- end }} 64 | {{- with .Values.tolerations }} 65 | tolerations: 66 | {{- toYaml . | nindent 8 }} 67 | {{- end }} 68 | -------------------------------------------------------------------------------- /charts/katalyst/charts/controller/templates/rbac.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRole 4 | metadata: 5 | name: {{ include "katalyst-controller.serviceAccountName" . }} 6 | rules: 7 | - apiGroups: 8 | - node.katalyst.kubewharf.io 9 | resources: 10 | - customnoderesources 11 | - customnoderesources/status 12 | verbs: 13 | - get 14 | - list 15 | - watch 16 | - patch 17 | - create 18 | - delete 19 | - apiGroups: 20 | - config.katalyst.kubewharf.io 21 | - autoscaling.katalyst.kubewharf.io 22 | - workload.katalyst.kubewharf.io 23 | - overcommit.katalyst.kubewharf.io 24 | - tide.katalyst.kubewharf.io 25 | - recommendation.katalyst.kubewharf.io 26 | resources: 27 | - "*" 28 | verbs: 29 | - get 30 | - list 31 | - watch 32 | - patch 33 | - create 34 | - delete 35 | - update 36 | - apiGroups: 37 | - apps 38 | resources: 39 | - '*' 40 | verbs: 41 | - get 42 | - list 43 | - watch 44 | - apiGroups: 45 | - apps 46 | resources: 47 | - deployments 48 | - statefulsets 49 | verbs: 50 | - get 51 | - list 52 | - watch 53 | - patch 54 | - update 55 | - apiGroups: 56 | - "" 57 | resources: 58 | - nodes 59 | verbs: 60 | - get 61 | - list 62 | - watch 63 | - patch 64 | - update 65 | - apiGroups: 66 | - "" 67 | resources: 68 | - events 69 | verbs: 70 | - create 71 | - apiGroups: 72 | - "" 73 | resources: 74 | - pods 75 | verbs: 76 | - get 77 | - list 78 | - watch 79 | - patch 80 | - update 81 | - delete 82 | - apiGroups: 83 | - "coordination.k8s.io" 84 | resources: 85 | - leases 86 | verbs: 87 | - create 88 | - get 89 | - update 90 | 91 | --- 92 | apiVersion: rbac.authorization.k8s.io/v1 93 | kind: ClusterRoleBinding 94 | metadata: 95 | name: {{ include "katalyst-controller.serviceAccountName" . }} 96 | roleRef: 97 | apiGroup: rbac.authorization.k8s.io 98 | kind: ClusterRole 99 | name: {{ include "katalyst-controller.serviceAccountName" . }} 100 | subjects: 101 | - kind: ServiceAccount 102 | name: {{ include "katalyst-controller.serviceAccountName" . }} 103 | namespace: {{ .Release.Namespace }} 104 | 105 | --- 106 | apiVersion: v1 107 | kind: ServiceAccount 108 | metadata: 109 | name: {{ include "katalyst-controller.serviceAccountName" . }} 110 | labels: 111 | {{- include "katalyst-controller.labels" . | nindent 4 }} 112 | {{- with .Values.serviceAccount.annotations }} 113 | annotations: 114 | {{- toYaml . | nindent 4 }} 115 | {{- end }} 116 | {{- end }} 117 | -------------------------------------------------------------------------------- /charts/katalyst/charts/controller/values.yaml: -------------------------------------------------------------------------------- 1 | 2 | global: 3 | image: {} 4 | 5 | replicaCount: 2 6 | 7 | image: 8 | registry: docker.io 9 | repository: kubewharf/katalyst-controller 10 | pullPolicy: IfNotPresent 11 | # Overrides the image tag whose default is the chart appVersion. 12 | tag: "" 13 | 14 | imagePullSecrets: [] 15 | nameOverride: "" 16 | fullnameOverride: "" 17 | 18 | serviceAccount: 19 | # Specifies whether a service account should be created 20 | create: true 21 | # Annotations to add to the service account 22 | annotations: {} 23 | # The name of the service account to use. 24 | # If not set and create is true, a name is generated using the fullname template 25 | name: katalyst-controller 26 | 27 | podAnnotations: {} 28 | 29 | resources: {} 30 | 31 | nodeSelector: {} 32 | 33 | tolerations: [] 34 | 35 | affinity: {} 36 | 37 | hostNetwork: false 38 | 39 | customCommand: {} 40 | 41 | customArgs: 42 | controllers: "vpa,kcc,spd,lifecycle,monitor,overcommit,tide,resourcerecommender" 43 | dry-run: false 44 | leader-elect: true 45 | healthz-enabled: true 46 | v: 2 47 | -------------------------------------------------------------------------------- /charts/katalyst/charts/metric/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *.orig 18 | *~ 19 | # Various IDEs 20 | .project 21 | .idea/ 22 | *.tmproj 23 | .vscode/ 24 | -------------------------------------------------------------------------------- /charts/katalyst/charts/metric/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: katalyst-metric 3 | description: A Helm chart for Katalyst-metric 4 | 5 | # A chart can be either an 'application' or a 'library' chart. 6 | # 7 | # Application charts are a collection of templates that can be packaged into versioned archives 8 | # to be deployed. 9 | # 10 | # Library charts provide useful utilities or functions for the chart developer. They're included as 11 | # a dependency of application charts to inject those utilities and functions into the rendering 12 | # pipeline. Library charts do not define any templates and therefore cannot be deployed. 13 | type: application 14 | 15 | # This is the chart version. This version number should be incremented each time you make changes 16 | # to the chart and its templates, including the app version. 17 | # Versions are expected to follow Semantic Versioning (https://semver.org/) 18 | version: 0.5.0 19 | 20 | # This is the version number of the application being deployed. This version number should be 21 | # incremented each time you make changes to the application. Versions are not expected to 22 | # follow Semantic Versioning. They should reflect the version the application is using. 23 | # It is recommended to use it with quotes. 24 | appVersion: "v0.5.0" 25 | -------------------------------------------------------------------------------- /charts/katalyst/charts/metric/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* 2 | Expand the name of the chart. 3 | */}} 4 | {{- define "katalyst-metric.name" -}} 5 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} 6 | {{- end }} 7 | 8 | {{/* 9 | Create a default fully qualified app name. 10 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 11 | If release name contains chart name it will be used as a full name. 12 | */}} 13 | {{- define "katalyst-metric.fullname" -}} 14 | {{- if .Values.fullnameOverride }} 15 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} 16 | {{- else }} 17 | {{- $name := default .Chart.Name .Values.nameOverride }} 18 | {{- if (contains $name .Release.Name) }} 19 | {{- .Release.Name | trunc 63 | trimSuffix "-" }} 20 | {{- else }} 21 | {{- if (contains .Release.Name $name) }} 22 | {{- $name | trunc 63 | trimSuffix "-" }} 23 | {{- else }} 24 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} 25 | {{- end }} 26 | {{- end }} 27 | {{- end }} 28 | {{- end }} 29 | 30 | {{/* 31 | Create chart name and version as used by the chart label. 32 | */}} 33 | {{- define "katalyst-metric.chart" -}} 34 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} 35 | {{- end }} 36 | 37 | {{/* 38 | Common labels 39 | */}} 40 | {{- define "katalyst-metric.labels" -}} 41 | helm.sh/chart: {{ include "katalyst-metric.chart" . }} 42 | {{ include "katalyst-metric.selectorLabels" . }} 43 | {{- if .Chart.AppVersion }} 44 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 45 | {{- end }} 46 | app.kubernetes.io/managed-by: {{ .Release.Service }} 47 | {{- end }} 48 | 49 | {{/* 50 | Selector labels 51 | */}} 52 | {{- define "katalyst-metric.selectorLabels" -}} 53 | app.kubernetes.io/name: {{ include "katalyst-metric.name" . }} 54 | app.kubernetes.io/instance: {{ .Release.Name }} 55 | {{- end }} 56 | 57 | {{/* 58 | Create the name of the service account to use 59 | */}} 60 | {{- define "katalyst-metric.serviceAccountName" -}} 61 | {{- if .Values.serviceAccount.create }} 62 | {{- default (include "katalyst-metric.fullname" .) .Values.serviceAccount.name }} 63 | {{- else }} 64 | {{- default "default" .Values.serviceAccount.name }} 65 | {{- end }} 66 | {{- end }} 67 | -------------------------------------------------------------------------------- /charts/katalyst/charts/metric/templates/apiservice.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apiregistration.k8s.io/v1 2 | kind: APIService 3 | metadata: 4 | labels: 5 | {{- include "katalyst-metric.labels" . | nindent 4 }} 6 | name: v1beta1.custom.metrics.k8s.io 7 | spec: 8 | group: custom.metrics.k8s.io 9 | groupPriorityMinimum: 100 10 | insecureSkipTLSVerify: true 11 | service: 12 | name: {{ include "katalyst-metric.fullname" . }} 13 | namespace: {{ .Release.Namespace }} 14 | version: v1beta1 15 | versionPriority: 100 16 | 17 | --- 18 | apiVersion: apiregistration.k8s.io/v1 19 | kind: APIService 20 | metadata: 21 | labels: 22 | {{- include "katalyst-metric.labels" . | nindent 4 }} 23 | name: v1beta1.external.metrics.k8s.io 24 | spec: 25 | group: external.metrics.k8s.io 26 | groupPriorityMinimum: 100 27 | insecureSkipTLSVerify: true 28 | service: 29 | name: {{ include "katalyst-metric.fullname" . }} 30 | namespace: {{ .Release.Namespace }} 31 | version: v1beta1 32 | versionPriority: 100 -------------------------------------------------------------------------------- /charts/katalyst/charts/metric/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ include "katalyst-metric.fullname" . }} 5 | labels: 6 | {{- include "katalyst-metric.labels" . | nindent 4 }} 7 | app: "katalyst-metric" 8 | spec: 9 | replicas: {{ .Values.replicaCount }} 10 | selector: 11 | matchLabels: 12 | {{- include "katalyst-metric.selectorLabels" . | nindent 6 }} 13 | app: "katalyst-metric" 14 | template: 15 | metadata: 16 | {{- with .Values.podAnnotations }} 17 | annotations: 18 | {{- toYaml . | nindent 8 }} 19 | {{- end }} 20 | labels: 21 | {{- include "katalyst-metric.selectorLabels" . | nindent 8 }} 22 | app: "katalyst-metric" 23 | spec: 24 | {{- with .Values.imagePullSecrets }} 25 | imagePullSecrets: 26 | {{- toYaml . | nindent 8 }} 27 | {{- end }} 28 | serviceAccountName: {{ include "katalyst-metric.serviceAccountName" . }} 29 | containers: 30 | - name: {{ .Chart.Name }} 31 | command: 32 | - {{ default "katalyst-metric" .Values.customCommand }} 33 | args: 34 | {{- if (index .Values.customArgs "leader-elect" | default true ) }} 35 | - --leader-elect-resource-name={{ index .Values.customArgs "leader-elect-resource-name" | default (include "katalyst-metric.fullname" .)}} 36 | - --leader-elect-resource-namespace={{ index .Values.customArgs "leader-elect-resource-namespace" | default .Release.Namespace }} 37 | {{- end }} 38 | {{- range $key, $value := .Values.customArgs }} 39 | - --{{ $key }}={{ $value }} 40 | {{- end }} 41 | image: "{{ .Values.global.image.registry | default .Values.image.registry }}/{{ .Values.global.image.repository | default .Values.image.repository }}:{{ .Values.global.image.tag | default .Values.image.tag | default .Chart.AppVersion }}" 42 | imagePullPolicy: {{ .Values.global.image.pullPolicy | default .Values.image.pullPolicy }} 43 | ports: 44 | - name: {{ .Values.service.targetPortName }} 45 | containerPort: {{ .Values.service.port }} 46 | protocol: TCP 47 | - name: metrics 48 | containerPort: {{ (index .Values.customArgs "generic-endpoint" | default 9316) }} 49 | protocol: TCP 50 | livenessProbe: 51 | httpGet: 52 | path: /healthz 53 | port: metrics 54 | readinessProbe: 55 | httpGet: 56 | path: /healthz 57 | port: metrics 58 | resources: 59 | {{- toYaml .Values.resources | nindent 12 }} 60 | {{- with .Values.nodeSelector }} 61 | nodeSelector: 62 | {{- toYaml . | nindent 8 }} 63 | {{- end }} 64 | {{- with .Values.affinity }} 65 | affinity: 66 | {{- toYaml . | nindent 8 }} 67 | {{- end }} 68 | {{- with .Values.tolerations }} 69 | tolerations: 70 | {{- toYaml . | nindent 8 }} 71 | {{- end }} 72 | -------------------------------------------------------------------------------- /charts/katalyst/charts/metric/templates/rbac.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRole 4 | metadata: 5 | labels: 6 | {{- include "katalyst-metric.labels" . | nindent 4 }} 7 | name: {{ include "katalyst-metric.serviceAccountName" . }} 8 | rules: 9 | - apiGroups: 10 | - "*" 11 | resources: 12 | - "*" 13 | verbs: 14 | - "*" 15 | 16 | --- 17 | apiVersion: rbac.authorization.k8s.io/v1 18 | kind: ClusterRoleBinding 19 | metadata: 20 | labels: 21 | {{- include "katalyst-metric.labels" . | nindent 4 }} 22 | name: {{ include "katalyst-metric.serviceAccountName" . }} 23 | roleRef: 24 | apiGroup: rbac.authorization.k8s.io 25 | kind: ClusterRole 26 | name: {{ include "katalyst-metric.serviceAccountName" . }} 27 | subjects: 28 | - kind: ServiceAccount 29 | name: {{ include "katalyst-metric.serviceAccountName" . }} 30 | namespace: {{ .Release.Namespace }} 31 | 32 | --- 33 | apiVersion: rbac.authorization.k8s.io/v1 34 | kind: RoleBinding 35 | metadata: 36 | labels: 37 | {{- include "katalyst-metric.labels" . | nindent 4 }} 38 | name: {{ include "katalyst-metric.serviceAccountName" . }}:system:auth-reader 39 | namespace: "kube-system" 40 | roleRef: 41 | apiGroup: rbac.authorization.k8s.io 42 | kind: Role 43 | name: extension-apiserver-authentication-reader 44 | subjects: 45 | - kind: ServiceAccount 46 | name: {{ include "katalyst-metric.serviceAccountName" . }} 47 | namespace: {{ .Release.Namespace }} 48 | 49 | --- 50 | apiVersion: rbac.authorization.k8s.io/v1 51 | kind: ClusterRoleBinding 52 | metadata: 53 | labels: 54 | {{- include "katalyst-metric.labels" . | nindent 4 }} 55 | name: {{ include "katalyst-metric.serviceAccountName" . }}:system:auth-delegator 56 | roleRef: 57 | apiGroup: rbac.authorization.k8s.io 58 | kind: ClusterRole 59 | name: system:auth-delegator 60 | subjects: 61 | - kind: ServiceAccount 62 | name: {{ include "katalyst-metric.serviceAccountName" . }} 63 | namespace: {{ .Release.Namespace }} 64 | 65 | --- 66 | apiVersion: v1 67 | kind: ServiceAccount 68 | metadata: 69 | name: {{ include "katalyst-metric.serviceAccountName" . }} 70 | labels: 71 | {{- include "katalyst-metric.labels" . | nindent 4 }} 72 | {{- with .Values.serviceAccount.annotations }} 73 | annotations: 74 | {{- toYaml . | nindent 4 }} 75 | {{- end }} 76 | 77 | {{- end }} 78 | 79 | --- 80 | apiVersion: rbac.authorization.k8s.io/v1 81 | kind: ClusterRole 82 | metadata: 83 | name: katalyst-metric-view 84 | rules: 85 | - apiGroups: 86 | - "custom.metrics.k8s.io" 87 | resources: 88 | - "*" 89 | verbs: ["get", "watch", "list"] 90 | - apiGroups: 91 | - "external.metrics.k8s.io" 92 | resources: 93 | - "*" 94 | verbs: ["get", "watch", "list"] 95 | 96 | --- 97 | apiVersion: rbac.authorization.k8s.io/v1 98 | kind: ClusterRoleBinding 99 | metadata: 100 | name: katalyst-metric-view-binding 101 | subjects: 102 | - kind: User 103 | name: kubernetes 104 | apiGroup: rbac.authorization.k8s.io 105 | roleRef: 106 | apiGroup: rbac.authorization.k8s.io 107 | kind: ClusterRole 108 | name: katalyst-metric-view -------------------------------------------------------------------------------- /charts/katalyst/charts/metric/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ include "katalyst-metric.fullname" . }} 5 | labels: 6 | {{- include "katalyst-metric.labels" . | nindent 4 }} 7 | spec: 8 | type: {{ .Values.service.type }} 9 | ports: 10 | - port: {{ .Values.service.port }} 11 | targetPort: {{ .Values.service.targetPortName }} 12 | protocol: TCP 13 | name: http 14 | selector: 15 | {{- include "katalyst-metric.selectorLabels" . | nindent 4 }} 16 | -------------------------------------------------------------------------------- /charts/katalyst/charts/metric/values.yaml: -------------------------------------------------------------------------------- 1 | 2 | global: 3 | image: {} 4 | 5 | replicaCount: 1 6 | 7 | image: 8 | registry: docker.io 9 | repository: kubewharf/katalyst-metric 10 | pullPolicy: IfNotPresent 11 | # Overrides the image tag whose default is the chart appVersion. 12 | tag: "" 13 | 14 | imagePullSecrets: [] 15 | nameOverride: "" 16 | fullnameOverride: "" 17 | 18 | serviceAccount: 19 | # Specifies whether a service account should be created 20 | create: true 21 | # Annotations to add to the service account 22 | annotations: {} 23 | # The name of the service account to use. 24 | # If not set and create is true, a name is generated using the fullname template 25 | name: katalyst-metric 26 | 27 | podAnnotations: {} 28 | 29 | service: 30 | type: ClusterIP 31 | port: 443 32 | targetPortName: custom-metric 33 | 34 | resources: {} 35 | 36 | nodeSelector: {} 37 | 38 | tolerations: [] 39 | 40 | affinity: {} 41 | 42 | customCommand: {} 43 | 44 | customArgs: 45 | collector-pod-selector: "app=katalyst-agent" -------------------------------------------------------------------------------- /charts/katalyst/charts/overcommit/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *.orig 18 | *~ 19 | # Various IDEs 20 | .project 21 | .idea/ 22 | *.tmproj 23 | .vscode/ 24 | -------------------------------------------------------------------------------- /charts/katalyst/charts/overcommit/Chart.lock: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: katalyst-webhook 3 | repository: file://../webhook 4 | version: 0.5.0 5 | - name: katalyst-controller 6 | repository: file://../controller 7 | version: 0.5.0 8 | - name: katalyst-agent 9 | repository: file://../agent 10 | version: 0.5.0 11 | - name: katalyst-scheduler 12 | repository: file://../scheduler 13 | version: 0.5.0 14 | digest: sha256:dfbfe1ffc6e560bbed6ce62c133026cf03abfa5c18668c8485a6846f52be558e 15 | generated: "2024-04-29T15:20:56.974959+08:00" 16 | -------------------------------------------------------------------------------- /charts/katalyst/charts/overcommit/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: katalyst-overcommit 3 | description: A Helm chart for Katalyst overcommit 4 | 5 | # A chart can be either an 'application' or a 'library' chart. 6 | # 7 | # Application charts are a collection of templates that can be packaged into versioned archives 8 | # to be deployed. 9 | # 10 | # Library charts provide useful utilities or functions for the chart developer. They're included as 11 | # a dependency of application charts to inject those utilities and functions into the rendering 12 | # pipeline. Library charts do not define any templates and therefore cannot be deployed. 13 | type: application 14 | 15 | # This is the chart version. This version number should be incremented each time you make changes 16 | # to the chart and its templates, including the app version. 17 | # Versions are expected to follow Semantic Versioning (https://semver.org/) 18 | version: 0.5.0 19 | 20 | # This is the version number of the application being deployed. This version number should be 21 | # incremented each time you make changes to the application. Versions are not expected to 22 | # follow Semantic Versioning. They should reflect the version the application is using. 23 | # It is recommended to use it with quotes. 24 | appVersion: "v0.5.0" 25 | 26 | dependencies: 27 | - name: katalyst-webhook 28 | version: 0.5.0 29 | repository: "file://../webhook" 30 | - name: katalyst-controller 31 | version: 0.5.0 32 | repository: "file://../controller" 33 | - name: katalyst-agent 34 | version: 0.5.0 35 | repository: "file://../agent" 36 | - name: katalyst-scheduler 37 | version: 0.5.0 38 | repository: "file://../scheduler" 39 | -------------------------------------------------------------------------------- /charts/katalyst/charts/overcommit/charts/katalyst-agent-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/overcommit/charts/katalyst-agent-0.5.0.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/overcommit/charts/katalyst-controller-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/overcommit/charts/katalyst-controller-0.5.0.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/overcommit/charts/katalyst-scheduler-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/overcommit/charts/katalyst-scheduler-0.5.0.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/overcommit/charts/katalyst-webhook-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/overcommit/charts/katalyst-webhook-0.5.0.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/overcommit/crds/node.katalyst.kubewharf.io_customnoderesources.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: apiextensions.k8s.io/v1 3 | kind: CustomResourceDefinition 4 | metadata: 5 | annotations: 6 | controller-gen.kubebuilder.io/version: v0.9.0 7 | creationTimestamp: null 8 | name: customnoderesources.node.katalyst.kubewharf.io 9 | spec: 10 | group: node.katalyst.kubewharf.io 11 | names: 12 | kind: CustomNodeResource 13 | listKind: CustomNodeResourceList 14 | plural: customnoderesources 15 | shortNames: 16 | - kcnr 17 | singular: customnoderesource 18 | scope: Cluster 19 | versions: 20 | - name: v1alpha1 21 | schema: 22 | openAPIV3Schema: 23 | description: CustomNodeResource captures information about a custom defined 24 | node resource CustomNodeResource objects are non-namespaced. 25 | properties: 26 | apiVersion: 27 | description: 'APIVersion defines the versioned schema of this representation 28 | of an object. Servers should convert recognized schemas to the latest 29 | internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 30 | type: string 31 | kind: 32 | description: 'Kind is a string value representing the REST resource this 33 | object represents. Servers may infer this from the endpoint the client 34 | submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 35 | type: string 36 | metadata: 37 | type: object 38 | spec: 39 | description: Spec defines the behavior of a CustomNodeResource. 40 | properties: 41 | nodeResourceProperties: 42 | items: 43 | properties: 44 | propertyName: 45 | description: property name 46 | type: string 47 | propertyQuantity: 48 | anyOf: 49 | - type: integer 50 | - type: string 51 | description: values of the quantity-types property 52 | pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 53 | x-kubernetes-int-or-string: true 54 | propertyValues: 55 | description: values of the specific property 56 | items: 57 | type: string 58 | type: array 59 | required: 60 | - propertyName 61 | type: object 62 | type: array 63 | taints: 64 | description: customized taint for katalyst, which may affect partial 65 | tasks 66 | items: 67 | properties: 68 | effect: 69 | description: Required. The effect of the taint on pods that 70 | do not tolerate the taint. Valid effects are NoScheduleForReclaimedTasks. 71 | type: string 72 | key: 73 | description: Required. The taint key to be applied to a node. 74 | type: string 75 | value: 76 | description: Required. The taint value corresponding to the 77 | taint key. 78 | type: string 79 | type: object 80 | type: array 81 | type: object 82 | status: 83 | description: Status represents the current information about a CustomNodeResource. 84 | This data may not be up-to-date. 85 | properties: 86 | conditions: 87 | description: Conditions is an array of current observed cnr conditions. 88 | items: 89 | description: CNRCondition contains condition information for a cnr. 90 | properties: 91 | lastHeartbeatTime: 92 | description: Last time we got an update on a given condition. 93 | format: date-time 94 | type: string 95 | message: 96 | description: Human-readable message indicating details about 97 | last transition. 98 | type: string 99 | reason: 100 | description: (brief) reason for the condition's last transition. 101 | type: string 102 | status: 103 | description: Status of the condition, one of True, False, Unknown. 104 | type: string 105 | type: 106 | description: Type is the type of the condition. 107 | type: string 108 | required: 109 | - status 110 | - type 111 | type: object 112 | type: array 113 | resources: 114 | description: Resources defines the numeric quantities in this node; 115 | for instance reclaimed resources for this node 116 | properties: 117 | allocatable: 118 | additionalProperties: 119 | anyOf: 120 | - type: integer 121 | - type: string 122 | pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 123 | x-kubernetes-int-or-string: true 124 | description: ResourceList is a set of (resource name, quantity) 125 | pairs. 126 | type: object 127 | capacity: 128 | additionalProperties: 129 | anyOf: 130 | - type: integer 131 | - type: string 132 | pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 133 | x-kubernetes-int-or-string: true 134 | description: ResourceList is a set of (resource name, quantity) 135 | pairs. 136 | type: object 137 | type: object 138 | topologyPolicy: 139 | default: none 140 | description: TopologyPolicy indicates placement policy for scheduler 141 | or other centralized components to follow. this policy (including 142 | topology scope) is defined in topology-manager, katalyst is responsible 143 | to parse the policy, and transform to TopologyPolicy here. 144 | type: string 145 | topologyZone: 146 | items: 147 | properties: 148 | allocations: 149 | items: 150 | properties: 151 | consumer: 152 | type: string 153 | requests: 154 | additionalProperties: 155 | anyOf: 156 | - type: integer 157 | - type: string 158 | pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 159 | x-kubernetes-int-or-string: true 160 | description: ResourceList is a set of (resource name, 161 | quantity) pairs. 162 | type: object 163 | required: 164 | - consumer 165 | type: object 166 | type: array 167 | attributes: 168 | items: 169 | description: Attribute records the resource-specified info 170 | with name-value pairs 171 | properties: 172 | name: 173 | type: string 174 | value: 175 | type: string 176 | required: 177 | - name 178 | - value 179 | type: object 180 | type: array 181 | children: 182 | description: 'Children represents the ownerships between multiple 183 | TopologyZone; for instance, - a TopologyZone with type TopologyTypeSocket 184 | may have multiple childed TopologyZone with type TopologyTypeNuma 185 | to reflect the physical connections for a node - a TopologyZone 186 | with type `nic` may have multiple childed TopologyZone with 187 | type `vf` to reflect the `physical and virtual` relations 188 | between devices todo: in order to bypass the lacked functionality 189 | of recursive structure definition, we need to skip validation 190 | of this field for now; will re-add this validation logic if 191 | the community supports $ref, for more information, please 192 | refer to https://github.com/kubernetes/kubernetes/issues/62872' 193 | x-kubernetes-preserve-unknown-fields: true 194 | name: 195 | description: Name represents the name for the given type for 196 | resource; for instance, - disk-for-log, disk-for-storage may 197 | have different usage or attributes, so we need separate structure 198 | to distinguish them. 199 | type: string 200 | resources: 201 | description: Resources defines the numeric quantities in this 202 | TopologyZone; for instance, - a TopologyZone with type TopologyTypeGPU 203 | may have both gpu and gpu-memory - a TopologyZone with type 204 | TopologyTypeNIC may have both ingress and egress bandwidth 205 | properties: 206 | allocatable: 207 | additionalProperties: 208 | anyOf: 209 | - type: integer 210 | - type: string 211 | pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 212 | x-kubernetes-int-or-string: true 213 | description: ResourceList is a set of (resource name, quantity) 214 | pairs. 215 | type: object 216 | capacity: 217 | additionalProperties: 218 | anyOf: 219 | - type: integer 220 | - type: string 221 | pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 222 | x-kubernetes-int-or-string: true 223 | description: ResourceList is a set of (resource name, quantity) 224 | pairs. 225 | type: object 226 | type: object 227 | siblings: 228 | description: Siblings represents the relationship between TopologyZones 229 | at the same level; for instance, the distance between NUMA 230 | nodes. 231 | items: 232 | description: Sibling describes the relationship between two 233 | Zones. 234 | properties: 235 | attributes: 236 | description: Attributes are the attributes of the relationship 237 | between two Zones. For instance, the distance between 238 | tow NUMA nodes, the connection type between two GPUs, 239 | etc. 240 | items: 241 | description: Attribute records the resource-specified 242 | info with name-value pairs 243 | properties: 244 | name: 245 | type: string 246 | value: 247 | type: string 248 | required: 249 | - name 250 | - value 251 | type: object 252 | type: array 253 | name: 254 | description: Name represents the name of this Sibling. 255 | type: string 256 | type: 257 | description: Type represents the type of this Sibling. 258 | For instance, Socket, Numa, GPU, NIC, Disk and so on. 259 | type: string 260 | required: 261 | - name 262 | - type 263 | type: object 264 | type: array 265 | type: 266 | description: Type represents which kind of resource this TopologyZone 267 | is for; for instance, Socket, Numa, GPU, NIC, Disk and so 268 | on. 269 | type: string 270 | required: 271 | - name 272 | - type 273 | type: object 274 | type: array 275 | required: 276 | - topologyPolicy 277 | type: object 278 | type: object 279 | served: true 280 | storage: true 281 | subresources: 282 | status: {} 283 | -------------------------------------------------------------------------------- /charts/katalyst/charts/overcommit/crds/overcommit.katalyst.kubewharf.io_nodeovercommitconfigs.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: apiextensions.k8s.io/v1 3 | kind: CustomResourceDefinition 4 | metadata: 5 | annotations: 6 | controller-gen.kubebuilder.io/version: v0.9.0 7 | creationTimestamp: null 8 | name: nodeovercommitconfigs.overcommit.katalyst.kubewharf.io 9 | spec: 10 | group: overcommit.katalyst.kubewharf.io 11 | names: 12 | kind: NodeOvercommitConfig 13 | listKind: NodeOvercommitConfigList 14 | plural: nodeovercommitconfigs 15 | shortNames: 16 | - noc 17 | singular: nodeovercommitconfig 18 | scope: Cluster 19 | versions: 20 | - additionalPrinterColumns: 21 | - jsonPath: .spec.resourceOvercommitRatio 22 | name: OVERCOMMITRATIO 23 | type: string 24 | - jsonPath: .spec.nodeOvercommitSelectorVal 25 | name: SELECTOR 26 | type: string 27 | name: v1alpha1 28 | schema: 29 | openAPIV3Schema: 30 | description: NodeOvercommitConfig is the Schema for the nodeovercommitconfigs 31 | API 32 | properties: 33 | apiVersion: 34 | description: 'APIVersion defines the versioned schema of this representation 35 | of an object. Servers should convert recognized schemas to the latest 36 | internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 37 | type: string 38 | kind: 39 | description: 'Kind is a string value representing the REST resource this 40 | object represents. Servers may infer this from the endpoint the client 41 | submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 42 | type: string 43 | metadata: 44 | type: object 45 | spec: 46 | description: NodeOvercommitConfigSpec is a description of a NodeOvercommitConfig 47 | properties: 48 | nodeOvercommitSelectorVal: 49 | description: NodeOvercommitSelectorVal is the value of node label 50 | selector with key consts.NodeOvercommitSelectorKey, it decides whether 51 | to update Nodes if the Node matches the selector 'consts.NodeOvercommitSelectorKey=NodeOvercommitSelectorVal' 52 | type: string 53 | resourceOvercommitRatio: 54 | additionalProperties: 55 | type: string 56 | description: ResourceOvercommitRatio describes the resource overcommit 57 | ratio that needs to inject into Node.Annotations cpu,memory are 58 | supported. 59 | type: object 60 | type: object 61 | status: 62 | properties: 63 | matchedNodeList: 64 | description: NodeList which the nodeOvercommitConfig rules matched 65 | items: 66 | type: string 67 | type: array 68 | type: object 69 | type: object 70 | served: true 71 | storage: true 72 | subresources: 73 | status: {} 74 | -------------------------------------------------------------------------------- /charts/katalyst/charts/overcommit/values.yaml: -------------------------------------------------------------------------------- 1 | # Overrides katalyst-webhook values 2 | katalyst-webhook: 3 | enabled: true 4 | 5 | fullnameOverride: katalyst-webhook 6 | 7 | replicaCount: 1 8 | 9 | image: 10 | registry: docker.io 11 | repository: kubewharf/katalyst-webhook 12 | pullPolicy: IfNotPresent 13 | tag: "" 14 | 15 | podAnnotations: 16 | prometheus.io/scrape: "true" 17 | prometheus.io/path: "/metrics" 18 | prometheus.io/port: "9316" 19 | 20 | customArgs: 21 | webhooks: "node,lifecycle,-vpa,-pod" 22 | 23 | # Overrides katalyst-controller values 24 | katalyst-controller: 25 | enabled: true 26 | 27 | fullnameOverride: katalyst-controller 28 | 29 | replicaCount: 1 30 | 31 | image: 32 | registry: docker.io 33 | repository: kubewharf/katalyst-controller 34 | pullPolicy: IfNotPresent 35 | tag: "" 36 | 37 | customArgs: 38 | controllers: "overcommit,-vpa,-kcc,-spd,-lifecycle" 39 | dry-run: false 40 | leader-elect: true 41 | healthz-enabled: true 42 | v: 2 43 | cnc-lifecycle-enabled: false 44 | 45 | 46 | # Overrides katalyst-agent values 47 | katalyst-agent: 48 | enabled: true 49 | 50 | image: 51 | registry: docker.io 52 | repository: kubewharf/katalyst-agent 53 | pullPolicy: IfNotPresent 54 | # Overrides the image tag whose default is the chart appVersion. 55 | tag: "" 56 | 57 | imagePullSecrets: [ ] 58 | nameOverride: "" 59 | fullnameOverride: "" 60 | 61 | serviceAccount: 62 | # Specifies whether a service account should be created 63 | create: true 64 | # Annotations to add to the service account 65 | annotations: { } 66 | name: katalyst-agent 67 | 68 | podAnnotations: 69 | "katalyst.kubewharf.io/qos_level": system_cores 70 | 71 | resources: { } 72 | 73 | nodeSelector: { } 74 | 75 | tolerations: 76 | - effect: NoSchedule 77 | operator: Exists 78 | 79 | affinity: { } 80 | 81 | customCommand: { } 82 | 83 | customArgs: 84 | agents: "katalyst-agent-reporter,katalyst-agent-advisor" 85 | sysadvisor-plugins: "overcommit_aware" 86 | realtime-overcommit-sync-period: "10s" 87 | realtime-overcommit-CPU-targetload: 0.6 88 | realtime-overcommit-mem-targetload: 0.6 89 | realtime-overcommit-estimated-cpuload: 0.4 90 | realtime-overcommit-estimated-memload: 0.6 91 | CPU-metrics-to-gather: "cpu.usage.container" 92 | memory-metrics-to-gather: "mem.rss.container" 93 | enable-kubelet-secure-port: true 94 | 95 | hostMountPaths: 96 | kubeletLibDir: /var/lib/kubelet 97 | runtimeSocketDir: /run/containerd 98 | katalystLibDir: /var/lib/katalyst 99 | 100 | 101 | # Overrides katalyst-scheduler values 102 | katalyst-scheduler: 103 | enabled: true 104 | 105 | replicaCount: 2 106 | 107 | image: 108 | registry: docker.io 109 | repository: kubewharf/katalyst-scheduler 110 | pullPolicy: IfNotPresent 111 | # Overrides the image tag whose default is the chart appVersion. 112 | tag: "" 113 | 114 | imagePullSecrets: [ ] 115 | nameOverride: "" 116 | fullnameOverride: "" 117 | 118 | serviceAccount: 119 | # Specifies whether a service account should be created 120 | create: true 121 | # Annotations to add to the service account 122 | annotations: { } 123 | # The name of the service account to use. 124 | # If not set and create is true, a name is generated using the fullname template 125 | name: katalyst-scheduler 126 | 127 | podAnnotations: { } 128 | 129 | resources: { } 130 | 131 | nodeSelector: { } 132 | 133 | tolerations: [ ] 134 | 135 | affinity: { } 136 | 137 | customCommand: { } 138 | 139 | customArgs: { } 140 | 141 | leaderElection: 142 | leaderElect: true 143 | 144 | schedulerPolicy: 145 | scoringStrategy: 146 | type: LeastAllocated 147 | 148 | schedulerName: katalyst-scheduler 149 | -------------------------------------------------------------------------------- /charts/katalyst/charts/resource-recommend/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *.orig 18 | *~ 19 | # Various IDEs 20 | .project 21 | .idea/ 22 | *.tmproj 23 | .vscode/ 24 | -------------------------------------------------------------------------------- /charts/katalyst/charts/resource-recommend/Chart.lock: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: katalyst-controller 3 | repository: file://../controller 4 | version: 0.5.12 5 | digest: sha256:7c2477c06e5dc60c6d9c3198d6d44e9406055e98a3e8b3c135b8ab18dc7c4b55 6 | generated: "2024-10-30T17:02:50.631845+08:00" 7 | -------------------------------------------------------------------------------- /charts/katalyst/charts/resource-recommend/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: katalyst-resource-recommend 3 | description: A Helm chart for Katalyst resource recommend 4 | 5 | # A chart can be either an 'application' or a 'library' chart. 6 | # 7 | # Application charts are a collection of templates that can be packaged into versioned archives 8 | # to be deployed. 9 | # 10 | # Library charts provide useful utilities or functions for the chart developer. They're included as 11 | # a dependency of application charts to inject those utilities and functions into the rendering 12 | # pipeline. Library charts do not define any templates and therefore cannot be deployed. 13 | type: application 14 | 15 | # This is the chart version. This version number should be incremented each time you make changes 16 | # to the chart and its templates, including the app version. 17 | # Versions are expected to follow Semantic Versioning (https://semver.org/) 18 | version: 0.5.0 19 | 20 | # This is the version number of the application being deployed. This version number should be 21 | # incremented each time you make changes to the application. Versions are not expected to 22 | # follow Semantic Versioning. They should reflect the version the application is using. 23 | # It is recommended to use it with quotes. 24 | appVersion: "v0.5.0" 25 | 26 | dependencies: 27 | - name: katalyst-controller 28 | version: 0.5.12 29 | repository: "file://../controller" 30 | -------------------------------------------------------------------------------- /charts/katalyst/charts/resource-recommend/charts/katalyst-controller-0.5.12.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/resource-recommend/charts/katalyst-controller-0.5.12.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/resource-recommend/values.yaml: -------------------------------------------------------------------------------- 1 | # Overrides katalyst-controller values 2 | katalyst-controller: 3 | enabled: true 4 | 5 | fullnameOverride: katalyst-controller 6 | 7 | replicaCount: 1 8 | 9 | image: 10 | registry: docker.io 11 | repository: kubewharf/katalyst-controller 12 | pullPolicy: IfNotPresent 13 | tag: "" 14 | 15 | customArgs: 16 | controllers: "resourcerecommender" 17 | dry-run: false 18 | leader-elect: true 19 | healthz-enabled: true 20 | resourcerecommend-prometheus-address: http://your-prom-address # visit more info at gokatalyst.io 21 | dynamic-resources: deployments.v1.apps 22 | v: 2 23 | -------------------------------------------------------------------------------- /charts/katalyst/charts/scheduler/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *.orig 18 | *~ 19 | # Various IDEs 20 | .project 21 | .idea/ 22 | *.tmproj 23 | .vscode/ 24 | -------------------------------------------------------------------------------- /charts/katalyst/charts/scheduler/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: katalyst-scheduler 3 | description: A Helm chart for Katalyst-scheduler 4 | 5 | # A chart can be either an 'application' or a 'library' chart. 6 | # 7 | # Application charts are a collection of templates that can be packaged into versioned archives 8 | # to be deployed. 9 | # 10 | # Library charts provide useful utilities or functions for the chart developer. They're included as 11 | # a dependency of application charts to inject those utilities and functions into the rendering 12 | # pipeline. Library charts do not define any templates and therefore cannot be deployed. 13 | type: application 14 | 15 | # This is the chart version. This version number should be incremented each time you make changes 16 | # to the chart and its templates, including the app version. 17 | # Versions are expected to follow Semantic Versioning (https://semver.org/) 18 | version: 0.5.0 19 | 20 | # This is the version number of the application being deployed. This version number should be 21 | # incremented each time you make changes to the application. Versions are not expected to 22 | # follow Semantic Versioning. They should reflect the version the application is using. 23 | # It is recommended to use it with quotes. 24 | appVersion: "v0.5.0" 25 | -------------------------------------------------------------------------------- /charts/katalyst/charts/scheduler/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* 2 | Expand the name of the chart. 3 | */}} 4 | {{- define "katalyst-scheduler.name" -}} 5 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} 6 | {{- end }} 7 | 8 | {{/* 9 | Create a default fully qualified app name. 10 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 11 | If release name contains chart name it will be used as a full name. 12 | */}} 13 | {{- define "katalyst-scheduler.fullname" -}} 14 | {{- if .Values.fullnameOverride }} 15 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} 16 | {{- else }} 17 | {{- $name := default .Chart.Name .Values.nameOverride }} 18 | {{- if (contains $name .Release.Name) }} 19 | {{- .Release.Name | trunc 63 | trimSuffix "-" }} 20 | {{- else }} 21 | {{- if (contains .Release.Name $name) }} 22 | {{- $name | trunc 63 | trimSuffix "-" }} 23 | {{- else }} 24 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} 25 | {{- end }} 26 | {{- end }} 27 | {{- end }} 28 | {{- end }} 29 | 30 | {{/* 31 | Create chart name and version as used by the chart label. 32 | */}} 33 | {{- define "katalyst-scheduler.chart" -}} 34 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} 35 | {{- end }} 36 | 37 | {{/* 38 | Common labels 39 | */}} 40 | {{- define "katalyst-scheduler.labels" -}} 41 | helm.sh/chart: {{ include "katalyst-scheduler.chart" . }} 42 | {{ include "katalyst-scheduler.selectorLabels" . }} 43 | {{- if .Chart.AppVersion }} 44 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 45 | {{- end }} 46 | app.kubernetes.io/managed-by: {{ .Release.Service }} 47 | {{- end }} 48 | 49 | {{/* 50 | Selector labels 51 | */}} 52 | {{- define "katalyst-scheduler.selectorLabels" -}} 53 | app.kubernetes.io/name: {{ include "katalyst-scheduler.name" . }} 54 | app.kubernetes.io/instance: {{ .Release.Name }} 55 | {{- end }} 56 | 57 | {{/* 58 | Create the name of the service account to use 59 | */}} 60 | {{- define "katalyst-scheduler.serviceAccountName" -}} 61 | {{- if .Values.serviceAccount.create }} 62 | {{- default (include "katalyst-scheduler.fullname" .) .Values.serviceAccount.name }} 63 | {{- else }} 64 | {{- default "default" .Values.serviceAccount.name }} 65 | {{- end }} 66 | {{- end }} 67 | -------------------------------------------------------------------------------- /charts/katalyst/charts/scheduler/templates/configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | data: 3 | scheduler-config.yaml: |- 4 | apiVersion: kubescheduler.config.k8s.io/v1beta3 5 | kind: KubeSchedulerConfiguration 6 | {{- if .Values.leaderElection.leaderElect }} 7 | leaderElection: 8 | leaderElect: true 9 | resourceLock: {{ default "leases" .Values.leaderElection.resourceLock }} 10 | resourceName: {{ default (include "katalyst-scheduler.fullname" .) .Values.leaderElection.resourceName}} 11 | resourceNamespace: {{ default .Release.Namespace .Values.leaderElection.resourceNamespace}} 12 | {{- end }} 13 | profiles: 14 | - schedulerName: {{ .Values.schedulerName }} 15 | plugins: 16 | preFilter: 17 | enabled: 18 | - name: QoSAwareNodeResourcesFit 19 | - name: NodeOvercommitment 20 | filter: 21 | enabled: 22 | - name: QoSAwareNodeResourcesFit 23 | - name: NodeOvercommitment 24 | score: 25 | enabled: 26 | - name: QoSAwareNodeResourcesFit 27 | weight: 1 28 | - name: QoSAwareNodeResourcesBalancedAllocation 29 | weight: 1 30 | disabled: 31 | - name: NodeResourcesFit 32 | - name: NodeResourcesBalancedAllocation 33 | reserve: 34 | enabled: 35 | - name: QoSAwareNodeResourcesFit 36 | - name: NodeOvercommitment 37 | pluginConfig: 38 | - name: NodeResourcesFit 39 | args: 40 | ignoredResourceGroups: 41 | - resource.katalyst.kubewharf.io 42 | - name: QoSAwareNodeResourcesFit 43 | args: 44 | scoringStrategy: 45 | type: {{ .Values.schedulerPolicy.scoringStrategy.type | default "LeastAllocated" }} 46 | {{- with .Values.schedulerPolicy.scoringStrategy.requestedToCapacityRatioParam }} 47 | requestedToCapacityRatioParam: 48 | {{- toYaml . | nindent 18 }} 49 | {{- end }} 50 | {{- with .Values.schedulerPolicy.scoringStrategy.reclaimedRequestedToCapacityRatio }} 51 | reclaimedRequestedToCapacityRatio: 52 | {{- toYaml . | nindent 18 }} 53 | {{- end }} 54 | resources: 55 | - name: cpu 56 | weight: 1 57 | - name: memory 58 | weight: 1 59 | reclaimedResources: 60 | - name: "resource.katalyst.kubewharf.io/reclaimed_millicpu" 61 | weight: 1 62 | - name: "resource.katalyst.kubewharf.io/reclaimed_memory" 63 | weight: 1 64 | - name: QoSAwareNodeResourcesBalancedAllocation 65 | args: 66 | resources: 67 | - name: cpu 68 | weight: 1 69 | - name: memory 70 | weight: 1 71 | reclaimedResources: 72 | - name: "resource.katalyst.kubewharf.io/reclaimed_millicpu" 73 | weight: 1 74 | - name: "resource.katalyst.kubewharf.io/reclaimed_memory" 75 | weight: 1 76 | kind: ConfigMap 77 | metadata: 78 | name: katalyst-scheduler-config -------------------------------------------------------------------------------- /charts/katalyst/charts/scheduler/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ include "katalyst-scheduler.fullname" . }} 5 | labels: 6 | {{- include "katalyst-scheduler.labels" . | nindent 4 }} 7 | app: "katalyst-scheduler" 8 | spec: 9 | replicas: {{ .Values.replicaCount }} 10 | selector: 11 | matchLabels: 12 | {{- include "katalyst-scheduler.selectorLabels" . | nindent 6 }} 13 | app: "katalyst-scheduler" 14 | template: 15 | metadata: 16 | {{- with .Values.podAnnotations }} 17 | annotations: 18 | {{- toYaml . | nindent 8 }} 19 | {{- end }} 20 | labels: 21 | {{- include "katalyst-scheduler.selectorLabels" . | nindent 8 }} 22 | app: "katalyst-scheduler" 23 | spec: 24 | {{- with .Values.imagePullSecrets }} 25 | imagePullSecrets: 26 | {{- toYaml . | nindent 8 }} 27 | {{- end }} 28 | restartPolicy: Always 29 | serviceAccountName: {{ include "katalyst-scheduler.serviceAccountName" . }} 30 | containers: 31 | - name: {{ .Chart.Name }} 32 | command: 33 | - {{ default "katalyst-scheduler" .Values.customCommand }} 34 | args: 35 | - --config=/etc/kubernetes/scheduler/scheduler-config.yaml 36 | {{- range $key, $value := .Values.customArgs }} 37 | - --{{ $key }}={{ $value }} 38 | {{- end }} 39 | image: "{{ .Values.global.image.registry | default .Values.image.registry }}/{{ .Values.global.image.repository | default .Values.image.repository }}:{{ .Values.global.image.tag | default .Values.image.tag | default .Chart.AppVersion }}" 40 | imagePullPolicy: {{ .Values.global.image.pullPolicy | default .Values.image.pullPolicy }} 41 | livenessProbe: 42 | httpGet: 43 | path: /healthz 44 | port: 10259 45 | scheme: HTTPS 46 | initialDelaySeconds: 15 47 | readinessProbe: 48 | httpGet: 49 | path: /healthz 50 | port: 10259 51 | scheme: HTTPS 52 | resources: 53 | {{- toYaml .Values.resources | nindent 12 }} 54 | volumeMounts: 55 | - mountPath: /etc/kubernetes/scheduler 56 | name: scheduler-config 57 | {{- with .Values.nodeSelector }} 58 | nodeSelector: 59 | {{- toYaml . | nindent 8 }} 60 | {{- end }} 61 | {{- with .Values.affinity }} 62 | affinity: 63 | {{- toYaml . | nindent 8 }} 64 | {{- end }} 65 | {{- with .Values.tolerations }} 66 | tolerations: 67 | {{- toYaml . | nindent 8 }} 68 | {{- end }} 69 | volumes: 70 | - configMap: 71 | defaultMode: 420 72 | name: katalyst-scheduler-config 73 | name: scheduler-config 74 | -------------------------------------------------------------------------------- /charts/katalyst/charts/scheduler/templates/rbac.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRole 4 | metadata: 5 | name: {{ include "katalyst-scheduler.serviceAccountName" . }} 6 | rules: 7 | - apiGroups: 8 | - "" 9 | resources: 10 | - pods 11 | - pods/status 12 | - nodes 13 | - namespaces 14 | verbs: 15 | - list 16 | - watch 17 | - get 18 | - patch 19 | - apiGroups: 20 | - "" 21 | resources: 22 | - pods/binding 23 | verbs: 24 | - create 25 | - apiGroups: 26 | - "" 27 | resources: 28 | - configmaps 29 | - endpoints 30 | - events 31 | verbs: 32 | - get 33 | - list 34 | - watch 35 | - update 36 | - create 37 | - patch 38 | - apiGroups: 39 | - coordination.k8s.io 40 | resources: 41 | - leases 42 | verbs: 43 | - create 44 | - get 45 | - update 46 | - apiGroups: 47 | - storage.k8s.io 48 | resources: 49 | - storageclasses 50 | - csistoragecapacities 51 | - csinodes 52 | - csidrivers 53 | verbs: 54 | - list 55 | - watch 56 | - get 57 | - apiGroups: 58 | - "" 59 | resources: 60 | - replicationcontrollers 61 | - persistentvolumes 62 | - persistentvolumeclaims 63 | - services 64 | verbs: 65 | - list 66 | - watch 67 | - get 68 | - apiGroups: 69 | - apps 70 | resources: 71 | - statefulsets 72 | - replicasets 73 | verbs: 74 | - list 75 | - watch 76 | - get 77 | - apiGroups: 78 | - policy 79 | resources: 80 | - poddisruptionbudgets 81 | verbs: 82 | - list 83 | - watch 84 | - get 85 | - apiGroups: 86 | - "*" 87 | resources: 88 | - events 89 | verbs: 90 | - list 91 | - watch 92 | - get 93 | - patch 94 | - create 95 | - apiGroups: 96 | - node.katalyst.kubewharf.io 97 | resources: 98 | - customnoderesources 99 | verbs: 100 | - list 101 | - watch 102 | - get 103 | - patch 104 | - apiGroups: 105 | - authorization.k8s.io 106 | resources: 107 | - subjectaccessreviews 108 | verbs: 109 | - get 110 | - list 111 | - watch 112 | - patch 113 | - create 114 | 115 | --- 116 | apiVersion: rbac.authorization.k8s.io/v1 117 | kind: ClusterRoleBinding 118 | metadata: 119 | name: {{ include "katalyst-scheduler.serviceAccountName" . }} 120 | roleRef: 121 | apiGroup: rbac.authorization.k8s.io 122 | kind: ClusterRole 123 | name: {{ include "katalyst-scheduler.serviceAccountName" . }} 124 | subjects: 125 | - kind: ServiceAccount 126 | name: {{ include "katalyst-scheduler.serviceAccountName" . }} 127 | namespace: {{ .Release.Namespace }} 128 | 129 | --- 130 | apiVersion: rbac.authorization.k8s.io/v1 131 | kind: RoleBinding 132 | metadata: 133 | labels: 134 | {{- include "katalyst-scheduler.labels" . | nindent 4 }} 135 | name: {{ include "katalyst-scheduler.serviceAccountName" . }}:system:auth-reader 136 | namespace: "kube-system" 137 | roleRef: 138 | apiGroup: rbac.authorization.k8s.io 139 | kind: Role 140 | name: extension-apiserver-authentication-reader 141 | subjects: 142 | - kind: ServiceAccount 143 | name: {{ include "katalyst-scheduler.serviceAccountName" . }} 144 | namespace: {{ .Release.Namespace }} 145 | 146 | --- 147 | apiVersion: rbac.authorization.k8s.io/v1 148 | kind: ClusterRoleBinding 149 | metadata: 150 | labels: 151 | {{- include "katalyst-scheduler.labels" . | nindent 4 }} 152 | name: {{ include "katalyst-scheduler.serviceAccountName" . }}:system:auth-delegator 153 | roleRef: 154 | apiGroup: rbac.authorization.k8s.io 155 | kind: ClusterRole 156 | name: system:auth-delegator 157 | subjects: 158 | - kind: ServiceAccount 159 | name: {{ include "katalyst-scheduler.serviceAccountName" . }} 160 | namespace: {{ .Release.Namespace }} 161 | 162 | --- 163 | apiVersion: v1 164 | kind: ServiceAccount 165 | metadata: 166 | name: {{ include "katalyst-scheduler.serviceAccountName" . }} 167 | labels: 168 | {{- include "katalyst-scheduler.labels" . | nindent 4 }} 169 | {{- with .Values.serviceAccount.annotations }} 170 | annotations: 171 | {{- toYaml . | nindent 4 }} 172 | {{- end }} 173 | {{- end }} 174 | -------------------------------------------------------------------------------- /charts/katalyst/charts/scheduler/values.yaml: -------------------------------------------------------------------------------- 1 | 2 | global: 3 | image: {} 4 | 5 | replicaCount: 2 6 | 7 | image: 8 | registry: docker.io 9 | repository: kubewharf/katalyst-scheduler 10 | pullPolicy: IfNotPresent 11 | # Overrides the image tag whose default is the chart appVersion. 12 | tag: "" 13 | 14 | imagePullSecrets: [] 15 | nameOverride: "" 16 | fullnameOverride: "" 17 | 18 | serviceAccount: 19 | # Specifies whether a service account should be created 20 | create: true 21 | # Annotations to add to the service account 22 | annotations: {} 23 | # The name of the service account to use. 24 | # If not set and create is true, a name is generated using the fullname template 25 | name: katalyst-scheduler 26 | 27 | podAnnotations: {} 28 | 29 | resources: {} 30 | 31 | nodeSelector: {} 32 | 33 | tolerations: [] 34 | 35 | affinity: {} 36 | 37 | customCommand: {} 38 | 39 | customArgs: {} 40 | 41 | leaderElection: 42 | leaderElect: true 43 | 44 | schedulerPolicy: 45 | scoringStrategy: 46 | type: LeastAllocated 47 | 48 | schedulerName: katalyst-scheduler 49 | -------------------------------------------------------------------------------- /charts/katalyst/charts/tidal-colocation/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *.orig 18 | *~ 19 | # Various IDEs 20 | .project 21 | .idea/ 22 | *.tmproj 23 | .vscode/ 24 | -------------------------------------------------------------------------------- /charts/katalyst/charts/tidal-colocation/Chart.lock: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: katalyst-controller 3 | repository: file://../controller 4 | version: 0.5.0 5 | digest: sha256:f7322de93630d010efe7d844750e4f0012ead78048dea7ef587c4f815f4288b6 6 | generated: "2024-04-29T12:05:02.326607+08:00" 7 | -------------------------------------------------------------------------------- /charts/katalyst/charts/tidal-colocation/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: katalyst-tidal-colocation 3 | description: A Helm chart for Katalyst tidal colocation 4 | 5 | # A chart can be either an 'application' or a 'library' chart. 6 | # 7 | # Application charts are a collection of templates that can be packaged into versioned archives 8 | # to be deployed. 9 | # 10 | # Library charts provide useful utilities or functions for the chart developer. They're included as 11 | # a dependency of application charts to inject those utilities and functions into the rendering 12 | # pipeline. Library charts do not define any templates and therefore cannot be deployed. 13 | type: application 14 | 15 | # This is the chart version. This version number should be incremented each time you make changes 16 | # to the chart and its templates, including the app version. 17 | # Versions are expected to follow Semantic Versioning (https://semver.org/) 18 | version: 0.5.0 19 | 20 | # This is the version number of the application being deployed. This version number should be 21 | # incremented each time you make changes to the application. Versions are not expected to 22 | # follow Semantic Versioning. They should reflect the version the application is using. 23 | # It is recommended to use it with quotes. 24 | appVersion: "v0.5.0" 25 | 26 | dependencies: 27 | - name: katalyst-controller 28 | version: 0.5.0 29 | repository: "file://../controller" 30 | -------------------------------------------------------------------------------- /charts/katalyst/charts/tidal-colocation/charts/katalyst-controller-0.5.0.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kubewharf/charts/8dd4c09ce2cd4099afcd8ffbfabeba77400e211b/charts/katalyst/charts/tidal-colocation/charts/katalyst-controller-0.5.0.tgz -------------------------------------------------------------------------------- /charts/katalyst/charts/tidal-colocation/crds/tide.katalyst.kubewharf.io_tidenodepools.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: apiextensions.k8s.io/v1 3 | kind: CustomResourceDefinition 4 | metadata: 5 | annotations: 6 | controller-gen.kubebuilder.io/version: v0.9.0 7 | creationTimestamp: null 8 | name: tidenodepools.tide.katalyst.kubewharf.io 9 | spec: 10 | group: tide.katalyst.kubewharf.io 11 | names: 12 | kind: TideNodePool 13 | listKind: TideNodePoolList 14 | plural: tidenodepools 15 | shortNames: 16 | - tnp 17 | singular: tidenodepool 18 | scope: Cluster 19 | versions: 20 | - name: v1alpha1 21 | schema: 22 | openAPIV3Schema: 23 | description: TideNodePool is the Schema for the tidenodepools API 24 | properties: 25 | apiVersion: 26 | description: 'APIVersion defines the versioned schema of this representation 27 | of an object. Servers should convert recognized schemas to the latest 28 | internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 29 | type: string 30 | kind: 31 | description: 'Kind is a string value representing the REST resource this 32 | object represents. Servers may infer this from the endpoint the client 33 | submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 34 | type: string 35 | metadata: 36 | type: object 37 | spec: 38 | description: TideNodePoolSpec defines the desired state of TideNodePool 39 | properties: 40 | evictStrategy: 41 | description: 'INSERT ADDITIONAL SPEC FIELDS - desired state of cluster 42 | Important: Run "make" to regenerate code after modifying this file' 43 | properties: 44 | type: 45 | type: string 46 | watermark: 47 | properties: 48 | evictOfflinePodTaint: 49 | properties: 50 | effect: 51 | type: string 52 | key: 53 | type: string 54 | value: 55 | type: string 56 | required: 57 | - key 58 | - value 59 | type: object 60 | evictOnlinePodTaint: 61 | properties: 62 | effect: 63 | type: string 64 | key: 65 | type: string 66 | value: 67 | type: string 68 | required: 69 | - key 70 | - value 71 | type: object 72 | type: object 73 | required: 74 | - type 75 | type: object 76 | nodeConfigs: 77 | properties: 78 | nodeSelector: 79 | additionalProperties: 80 | type: string 81 | type: object 82 | offlineLabel: 83 | properties: 84 | key: 85 | type: string 86 | value: 87 | type: string 88 | required: 89 | - key 90 | - value 91 | type: object 92 | onlineLabel: 93 | properties: 94 | key: 95 | type: string 96 | value: 97 | type: string 98 | required: 99 | - key 100 | - value 101 | type: object 102 | reserve: 103 | properties: 104 | offline: 105 | anyOf: 106 | - type: integer 107 | - type: string 108 | x-kubernetes-int-or-string: true 109 | online: 110 | anyOf: 111 | - type: integer 112 | - type: string 113 | x-kubernetes-int-or-string: true 114 | type: object 115 | tideLabel: 116 | properties: 117 | key: 118 | type: string 119 | value: 120 | type: string 121 | required: 122 | - key 123 | - value 124 | type: object 125 | type: object 126 | required: 127 | - nodeConfigs 128 | type: object 129 | status: 130 | description: TideNodePoolStatus defines the observed state of TideNodePool 131 | properties: 132 | reserveNodes: 133 | description: 'INSERT ADDITIONAL STATUS FIELD - define observed state 134 | of cluster Important: Run "make" to regenerate code after modifying 135 | this file' 136 | properties: 137 | offlineNodes: 138 | items: 139 | type: string 140 | type: array 141 | onlineNodes: 142 | items: 143 | type: string 144 | type: array 145 | type: object 146 | tideNodes: 147 | properties: 148 | nodes: 149 | items: 150 | type: string 151 | type: array 152 | type: object 153 | type: object 154 | type: object 155 | served: true 156 | storage: true 157 | subresources: 158 | status: {} 159 | -------------------------------------------------------------------------------- /charts/katalyst/charts/tidal-colocation/values.yaml: -------------------------------------------------------------------------------- 1 | # Overrides katalyst-controller values 2 | katalyst-controller: 3 | enabled: true 4 | 5 | fullnameOverride: katalyst-controller 6 | 7 | replicaCount: 1 8 | 9 | image: 10 | registry: docker.io 11 | repository: kubewharf/katalyst-controller 12 | pullPolicy: IfNotPresent 13 | tag: "" 14 | 15 | customArgs: 16 | controllers: "tide" 17 | dry-run: false 18 | leader-elect: true 19 | healthz-enabled: true 20 | v: 2 21 | -------------------------------------------------------------------------------- /charts/katalyst/charts/webhook/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *.orig 18 | *~ 19 | # Various IDEs 20 | .project 21 | .idea/ 22 | *.tmproj 23 | .vscode/ 24 | -------------------------------------------------------------------------------- /charts/katalyst/charts/webhook/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: katalyst-webhook 3 | description: A Helm chart for Katalyst-webhook 4 | 5 | # A chart can be either an 'application' or a 'library' chart. 6 | # 7 | # Application charts are a collection of templates that can be packaged into versioned archives 8 | # to be deployed. 9 | # 10 | # Library charts provide useful utilities or functions for the chart developer. They're included as 11 | # a dependency of application charts to inject those utilities and functions into the rendering 12 | # pipeline. Library charts do not define any templates and therefore cannot be deployed. 13 | type: application 14 | 15 | # This is the chart version. This version number should be incremented each time you make changes 16 | # to the chart and its templates, including the app version. 17 | # Versions are expected to follow Semantic Versioning (https://semver.org/) 18 | version: 0.5.0 19 | 20 | # This is the version number of the application being deployed. This version number should be 21 | # incremented each time you make changes to the application. Versions are not expected to 22 | # follow Semantic Versioning. They should reflect the version the application is using. 23 | # It is recommended to use it with quotes. 24 | appVersion: "v0.5.0" 25 | -------------------------------------------------------------------------------- /charts/katalyst/charts/webhook/keys/ca.crt: -------------------------------------------------------------------------------- 1 | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4akNDQWRxZ0F3SUJBZ0lRVFNDZzVoclQ0ZlRVY0lXamZLaVVlakFOQmdrcWhraUc5dzBCQVFzRkFEQVQKTVJFd0R3WURWUVFERXdocllYUmhiSGx6ZERBZUZ3MHlNakV5TVRrd016TXlNVFJhRncwek1qRXlNVFl3TXpNeQpNVFJhTUJNeEVUQVBCZ05WQkFNVENHdGhkR0ZzZVhOME1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBCk1JSUJDZ0tDQVFFQXNUbjVqNE5CS1RkcjhubW1XRkJBK1VhVEJSQWNYTHcrT1pYam9JWXpLZ2lsSFV5SmZJdUIKTjBmT0gxUWdYS2U0MzBva1UyUHpzazlVWWNMN3cxTmFRbmRydDNITkgwbVZqRlRDdzliWExneXF5OWtjWVpYbAp3UUcwYi9hb2owNVFCTHBoRlk4ZHlOYTNsZUZ0UFh2OEhMQjRjTzJTU1VZZCs4MmdZYlVJZWJjcWRKdVhjZ1o5CjR4SEZsREk4QVErZlZ4WEgvVHZvMnNLalNob2t2dThFSE16SlBSQm92Q3A4enFhU3hTY3dNOHVZeDcyVlROcnoKUXBFTnNTU3o3RmFQZjlpYjVGUE9HbkhFVTg4MXZoeDhncDZxeW5Ebzd5NUZaQlY3MDMwM1ppM2Vra0hTZ1YzdApYa05Wd29BbDlQZ3ZzQks5VHlMMFFSMHlnZUE2cUpRSWlRSURBUUFCbzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DCkFxUXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0VHQ0NzR0FRVUZCd01DTUE4R0ExVWRFd0VCL3dRRk1BTUIKQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFBcFBCQzEvODIvejVmVm1CclFEMzNyWkhVc3BoOEp1WlVaaApsb3k4VktvcjBiSkt0OWVjb1BrdzVFRTdhQk5wVUlic1RlMWp6Si9FY3lUTmo2cjJaempuS3V2c3NyQS9YWFhtClpIMllSMWRxQ0tWWUdSSWN3RG5WZkFWY2JLbkJmSnZieHBqL3NKL0l0MzRTYnI3MTZTSmhhMW1WS0w1QURTaHUKdlNQNVoxYnVibHdxZFdzWUJHR0N4YWF3M21wc2p3TEpkNkx5S2o5dkhvSFhXaThXdEQ2UWVXNGRlYUMvV0p3OApJSFBtYlA5K3VkcEpnNzZEeWhENEdhTkFUbk5vMEpDbXRhUWdnUDlubDZtWE45bzhuMlc0TGpxQlFwNHd2TERpCnhJVU5QMldDdEtkWnp6MjQyM2JBRVdSNDEzdSs3TjZ5d25oTGNwV2c5MmlCM0d4bzd1TT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= -------------------------------------------------------------------------------- /charts/katalyst/charts/webhook/keys/ca.key: -------------------------------------------------------------------------------- 1 | LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBdUJsUEhBb3ViSHRqRGw4YStGMWszYlV5a0lUNmo4Yjc1WmJaQ0pORmhCN1pMR0VjCk5RaUw5aDJVdlB4aXFKU0xFeUZ3VGhoUWZjQ0xXVVFaQ1FXcGkyZ1Nsb3NnQVJlRks4bTAyN2E1OExjbEgxdVQKWDhPOWMyazZ4T0FJVHlNQS9YRE12RzZyNUk0MHBSdXROY1dIb1J2eThobzVXUFBSVzhKYWNOUUJUbi81VzY5SApOSk9ybjZYMmlVSXlBOXNNZmIwUE5nQ1BIYW5qbkhVSGVuQ004RG9tbmNlQnZUeXlNTmFhUEFSOTh2RmMyTFZ5CkdXZS9DRXEvK0hJSmVDZXZTSjRGcE55dWpWcGlpMzhmRTFxUHFQNWFtUlZMYVJ6eUFuanAyTW1ZUlNWUG1CVEIKNS9NTjR3V2UvaFdaSnYwcDJVSFRGUU5HSXUxdmYyOHhDVXBjeFFJREFRQUJBb0lCQUduUzRvNlRxNnZnSVVpWgprcjlCc0VGaGJ2ZHorVE84aGYrcmZvWlhZWlpZeFMybGhMbFhlRnk1RkU2dUpXZ1NPdjk4TVRveTc5SFpaRUNqCnpHQkxTUEpCbUszQXUxemxVRCtqYXJzQmhsREFkaTVZVFphMnhhZ1p6Ulp1VVZoc0hwMlF3Wjl2WG8rNnpyZzUKK0k3NFJNWnZjbStJYzM2V2FMbitOazYxRHlzM21nemNTbVVGbnArcFhLUEljSHAvSVlOOXVxb0F2Z0J3WTlBKwo2NzBTRTJrQm5DMmRMTmtRcFY2ajlqR3NTSkhUSjUrQUxrRkJ3Z2UvZWcrMEVuUVk5M3RXaFZUYkRUaC8yVXdqCllGcUNQS3FiU3d3TlRoMUI1aW9VUllLdDdmSGdRZmRodVAwV25lc3pyUERSNlhLVTRBUWZScDVaT0QrN0RHS2gKc0o0aVR1RUNnWUVBOExYclZ3V3lJRFZBcjBLL2dpeUx2MzU1R251cTNHbUpFZ3ZlcDQ2U1lHOWNqcDJwK2pqUgpmMnY5ZVhrNzErR0VuZXZXdTVYbGFYUGZXVy9zbmhGVzZwTVdtblR0ZVRMa2EwVGgxSysweVZ2QzBueitqYTlPCmlSOGNtQlFCWnB4MzA0U2JLMFZKNnFPQnhtclZUVG5pVzRIVmVQbTFuZUhLbURBeStTZ0RWdmNDZ1lFQXc4cmEKVjF0bnNLeGt3b201WndjWkxtMC91bVdxdVNvM3V6ZUZSdjdiRW1OQjZoaG9KNFc5a2dUOUZZWUsyVXF5K1djaQp5cm95L3JJbGVlUjJuaTBxbTVTbS8rZDI4UEI0a0N5MGxRdWRXcExmZ21mc21DU1R1a3hnRXNTWWRVbjg0bVE4Ckdha2g5K2hiMVVobVZnSGlGalF6UUV6R2tvQ2NYdmFpa0VickR5TUNnWUJiZmVvYnc1QjI2WWJTbHQ1UHpqcTMKNkl5RFltb0pLUnZ1ZmhCOVE1V2pqZkJ5VEw4azJwL1dmT2QxV24xQ2l2ZHJSdzd4Y2dJbTJPSVdEcEt6YWdmTgpWV2NNQWxHWTlaMFlvSy90dFhOVDdjclpVcVUybVdHU2dQN1BWeHRKTTBQZ1k5RE8yNkZDekM4eGliM1ZncURsCkF5NXVzd3N6SFhWeDd6QVF3QUswOVFLQmdGNXc3cmpNZ2t1YUhGQXFGcUEzc0ZIUXFMakVhWUUvZC9wNllYTkoKWTJxUExqQTQ3YVNDd2xvNHhjc29DUHVmS0kxY3prOXpXVDI1dUpIL1BhZzJxU0s2cFlNeXB4QzVMYTU5b2UxeQoyTWZqcUtSQ2RNRStnM09OZTVvUjhtaEE5QlpQdXgyMWs0ajlMNjdGYVhkN0dROFV4dFB4TktkZUdnOUVjRTJmCnA2cDVBb0dBT0lzVDliY0lLZVpwajVYN0tsSnM1Z1EycUcvM0JwQ0FSeHRvNGw3RERhanJoeFF1NVhQVzIzcWUKM20rY3dzd0s3WWxYbWNSUytoQVFxenppOGpvYTNvTG1vcFRwdkNlMnNJVFlOQnk3WGswSURmY2dZbExvdEM1RwpnK3U0TzFEc1UzS05oVjJRUkViaHlSWWxQdk02VFFEOS9VcGM4akJvbWptV2ltOUJtNWM9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0t -------------------------------------------------------------------------------- /charts/katalyst/charts/webhook/keys/tls.crt: -------------------------------------------------------------------------------- 1 | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURjakNDQWxxZ0F3SUJBZ0lRU0g1aVZ1MnlpZzNIS0o3VDVCdWlVekFOQmdrcWhraUc5dzBCQVFzRkFEQVQKTVJFd0R3WURWUVFERXdocllYUmhiSGx6ZERBZUZ3MHlNakV5TVRrd05UUTNNakphRncwek1qRXlNVFl3TlRRMwpNakphTUM4eExUQXJCZ05WQkFNVEpHdGhkR0ZzZVhOMExYZGxZbWh2YjJzdWEyRjBZV3g1YzNRdGMzbHpkR1Z0CkxuTjJZekNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMZ1pUeHdLTG14N1l3NWYKR3ZoZFpOMjFNcENFK28vRysrV1cyUWlUUllRZTJTeGhIRFVJaS9ZZGxMejhZcWlVaXhNaGNFNFlVSDNBaTFsRQpHUWtGcVl0b0VwYUxJQUVYaFN2SnROdTJ1ZkMzSlI5YmsxL0R2WE5wT3NUZ0NFOGpBUDF3ekx4dXErU09OS1ViCnJUWEZoNkViOHZJYU9WanowVnZDV25EVUFVNS8rVnV2UnpTVHE1K2w5b2xDTWdQYkRIMjlEellBangycDQ1eDEKQjNwd2pQQTZKcDNIZ2IwOHNqRFdtandFZmZMeFhOaTFjaGxudndoS3YvaHlDWGducjBpZUJhVGNybzFhWW90LwpIeE5hajZqK1dwa1ZTMmtjOGdKNDZkakptRVVsVDVnVXdlZnpEZU1GbnY0Vm1TYjlLZGxCMHhVRFJpTHRiMzl2Ck1RbEtYTVVDQXdFQUFhT0JwVENCb2pBT0JnTlZIUThCQWY4RUJBTUNCYUF3SFFZRFZSMGxCQll3RkFZSUt3WUIKQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDTUFBd1l3WURWUjBSQkZ3d1dvSWthMkYwWVd4NQpjM1F0ZDJWaWFHOXZheTVyWVhSaGJIbHpkQzF6ZVhOMFpXMHVjM1pqZ2pKcllYUmhiSGx6ZEMxM1pXSm9iMjlyCkxtdGhkR0ZzZVhOMExYTjVjM1JsYlM1emRtTXVZMngxYzNSbGNpNXNiMk5oYkRBTkJna3Foa2lHOXcwQkFRc0YKQUFPQ0FRRUFNbENzclR2ME1neVRnbnh3Z2VBbW5SWklIT1ZYeXlpcmUvSzZnaWZONkMzQUUyQlpYVkhLSmVNRwoxZXM0cDBSbnVGM3NjSzZZYmtndVFIUVlNc2dXYXRWa1N0cVY1KzEvUmkvZFVHYW9Ea3hnRWZ0dk93YjJWNU5ECkJCTFRIbXBHRzZoUFRDK3JDbVphdlNNeEdHc0VFV0FJVnM0OVZMbERBTEhJNE9aRjE3Sk5wRitPQ25UMFFGQVMKYjBSM3p1WTh3dGYxdmkyWGNKK2pMV2lFT3VkSW9kdkZKMHZkSkRKcDZ2OU5GMkRxQ3FkMFZ2c2FMeitIb01kWApzTHphb2hGWS8wYzJIam8xbnAwWVZBZTVnNXhXTW9PQTl3Uy9vbFV4ZFcxL0Z4bDN6R1YzclBXVk16QlFhemNUCmhYeDVwT21sN2d2Z1NtV2lJKytza2NubjZsUUs4Zz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0= -------------------------------------------------------------------------------- /charts/katalyst/charts/webhook/keys/tls.key: -------------------------------------------------------------------------------- 1 | LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBdUJsUEhBb3ViSHRqRGw4YStGMWszYlV5a0lUNmo4Yjc1WmJaQ0pORmhCN1pMR0VjCk5RaUw5aDJVdlB4aXFKU0xFeUZ3VGhoUWZjQ0xXVVFaQ1FXcGkyZ1Nsb3NnQVJlRks4bTAyN2E1OExjbEgxdVQKWDhPOWMyazZ4T0FJVHlNQS9YRE12RzZyNUk0MHBSdXROY1dIb1J2eThobzVXUFBSVzhKYWNOUUJUbi81VzY5SApOSk9ybjZYMmlVSXlBOXNNZmIwUE5nQ1BIYW5qbkhVSGVuQ004RG9tbmNlQnZUeXlNTmFhUEFSOTh2RmMyTFZ5CkdXZS9DRXEvK0hJSmVDZXZTSjRGcE55dWpWcGlpMzhmRTFxUHFQNWFtUlZMYVJ6eUFuanAyTW1ZUlNWUG1CVEIKNS9NTjR3V2UvaFdaSnYwcDJVSFRGUU5HSXUxdmYyOHhDVXBjeFFJREFRQUJBb0lCQUduUzRvNlRxNnZnSVVpWgprcjlCc0VGaGJ2ZHorVE84aGYrcmZvWlhZWlpZeFMybGhMbFhlRnk1RkU2dUpXZ1NPdjk4TVRveTc5SFpaRUNqCnpHQkxTUEpCbUszQXUxemxVRCtqYXJzQmhsREFkaTVZVFphMnhhZ1p6Ulp1VVZoc0hwMlF3Wjl2WG8rNnpyZzUKK0k3NFJNWnZjbStJYzM2V2FMbitOazYxRHlzM21nemNTbVVGbnArcFhLUEljSHAvSVlOOXVxb0F2Z0J3WTlBKwo2NzBTRTJrQm5DMmRMTmtRcFY2ajlqR3NTSkhUSjUrQUxrRkJ3Z2UvZWcrMEVuUVk5M3RXaFZUYkRUaC8yVXdqCllGcUNQS3FiU3d3TlRoMUI1aW9VUllLdDdmSGdRZmRodVAwV25lc3pyUERSNlhLVTRBUWZScDVaT0QrN0RHS2gKc0o0aVR1RUNnWUVBOExYclZ3V3lJRFZBcjBLL2dpeUx2MzU1R251cTNHbUpFZ3ZlcDQ2U1lHOWNqcDJwK2pqUgpmMnY5ZVhrNzErR0VuZXZXdTVYbGFYUGZXVy9zbmhGVzZwTVdtblR0ZVRMa2EwVGgxSysweVZ2QzBueitqYTlPCmlSOGNtQlFCWnB4MzA0U2JLMFZKNnFPQnhtclZUVG5pVzRIVmVQbTFuZUhLbURBeStTZ0RWdmNDZ1lFQXc4cmEKVjF0bnNLeGt3b201WndjWkxtMC91bVdxdVNvM3V6ZUZSdjdiRW1OQjZoaG9KNFc5a2dUOUZZWUsyVXF5K1djaQp5cm95L3JJbGVlUjJuaTBxbTVTbS8rZDI4UEI0a0N5MGxRdWRXcExmZ21mc21DU1R1a3hnRXNTWWRVbjg0bVE4Ckdha2g5K2hiMVVobVZnSGlGalF6UUV6R2tvQ2NYdmFpa0VickR5TUNnWUJiZmVvYnc1QjI2WWJTbHQ1UHpqcTMKNkl5RFltb0pLUnZ1ZmhCOVE1V2pqZkJ5VEw4azJwL1dmT2QxV24xQ2l2ZHJSdzd4Y2dJbTJPSVdEcEt6YWdmTgpWV2NNQWxHWTlaMFlvSy90dFhOVDdjclpVcVUybVdHU2dQN1BWeHRKTTBQZ1k5RE8yNkZDekM4eGliM1ZncURsCkF5NXVzd3N6SFhWeDd6QVF3QUswOVFLQmdGNXc3cmpNZ2t1YUhGQXFGcUEzc0ZIUXFMakVhWUUvZC9wNllYTkoKWTJxUExqQTQ3YVNDd2xvNHhjc29DUHVmS0kxY3prOXpXVDI1dUpIL1BhZzJxU0s2cFlNeXB4QzVMYTU5b2UxeQoyTWZqcUtSQ2RNRStnM09OZTVvUjhtaEE5QlpQdXgyMWs0ajlMNjdGYVhkN0dROFV4dFB4TktkZUdnOUVjRTJmCnA2cDVBb0dBT0lzVDliY0lLZVpwajVYN0tsSnM1Z1EycUcvM0JwQ0FSeHRvNGw3RERhanJoeFF1NVhQVzIzcWUKM20rY3dzd0s3WWxYbWNSUytoQVFxenppOGpvYTNvTG1vcFRwdkNlMnNJVFlOQnk3WGswSURmY2dZbExvdEM1RwpnK3U0TzFEc1UzS05oVjJRUkViaHlSWWxQdk02VFFEOS9VcGM4akJvbWptV2ltOUJtNWM9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0t -------------------------------------------------------------------------------- /charts/katalyst/charts/webhook/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* 2 | Expand the name of the chart. 3 | */}} 4 | {{- define "katalyst-webhook.name" -}} 5 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} 6 | {{- end }} 7 | 8 | {{/* 9 | Create a default fully qualified app name. 10 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 11 | If release name contains chart name it will be used as a full name. 12 | */}} 13 | {{- define "katalyst-webhook.fullname" -}} 14 | {{- if .Values.fullnameOverride }} 15 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} 16 | {{- else }} 17 | {{- $name := default .Chart.Name .Values.nameOverride }} 18 | {{- if (contains $name .Release.Name) }} 19 | {{- .Release.Name | trunc 63 | trimSuffix "-" }} 20 | {{- else }} 21 | {{- if (contains .Release.Name $name) }} 22 | {{- $name | trunc 63 | trimSuffix "-" }} 23 | {{- else }} 24 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} 25 | {{- end }} 26 | {{- end }} 27 | {{- end }} 28 | {{- end }} 29 | 30 | {{/* 31 | Create chart name and version as used by the chart label. 32 | */}} 33 | {{- define "katalyst-webhook.chart" -}} 34 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} 35 | {{- end }} 36 | 37 | {{/* 38 | Common labels 39 | */}} 40 | {{- define "katalyst-webhook.labels" -}} 41 | helm.sh/chart: {{ include "katalyst-webhook.chart" . }} 42 | {{ include "katalyst-webhook.selectorLabels" . }} 43 | {{- if .Chart.AppVersion }} 44 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 45 | {{- end }} 46 | app.kubernetes.io/managed-by: {{ .Release.Service }} 47 | {{- end }} 48 | 49 | {{/* 50 | Selector labels 51 | */}} 52 | {{- define "katalyst-webhook.selectorLabels" -}} 53 | app.kubernetes.io/name: {{ include "katalyst-webhook.name" . }} 54 | app.kubernetes.io/instance: {{ .Release.Name }} 55 | {{- end }} 56 | 57 | {{/* 58 | Create the name of the service account to use 59 | */}} 60 | {{- define "katalyst-webhook.serviceAccountName" -}} 61 | {{- if .Values.serviceAccount.create }} 62 | {{- default (include "katalyst-webhook.fullname" .) .Values.serviceAccount.name }} 63 | {{- else }} 64 | {{- default "default" .Values.serviceAccount.name }} 65 | {{- end }} 66 | {{- end }} 67 | -------------------------------------------------------------------------------- /charts/katalyst/charts/webhook/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ include "katalyst-webhook.fullname" . }} 5 | labels: 6 | {{- include "katalyst-webhook.labels" . | nindent 4 }} 7 | app: "katalyst-webhook" 8 | spec: 9 | {{- if not .Values.autoscaling.enabled }} 10 | replicas: {{ .Values.replicaCount }} 11 | {{- end }} 12 | selector: 13 | matchLabels: 14 | {{- include "katalyst-webhook.selectorLabels" . | nindent 6 }} 15 | app: "katalyst-webhook" 16 | template: 17 | metadata: 18 | {{- with .Values.podAnnotations }} 19 | annotations: 20 | {{- toYaml . | nindent 8 }} 21 | {{- end }} 22 | labels: 23 | {{- include "katalyst-webhook.selectorLabels" . | nindent 8 }} 24 | app: "katalyst-webhook" 25 | spec: 26 | {{- with .Values.imagePullSecrets }} 27 | imagePullSecrets: 28 | {{- toYaml . | nindent 8 }} 29 | {{- end }} 30 | serviceAccountName: {{ include "katalyst-webhook.serviceAccountName" . }} 31 | containers: 32 | - name: {{ .Chart.Name }} 33 | command: 34 | - {{ default "katalyst-webhook" .Values.customCommand }} 35 | args: 36 | - --tls-cert-file={{ index .Values.customArgs "tls-cert-file" | default "/tmp/katalyst-webhook/certs/tls.crt" }} 37 | - --tls-private-key-file={{ index .Values.customArgs "tls-private-key-file" | default "/tmp/katalyst-webhook/certs/tls.key" }} 38 | - --tls-sni-cert-key={{ index .Values.customArgs "tls-sni-cert-key" | default "/tmp/katalyst-webhook/certs/tls.crt,/tmp/katalyst-webhook/certs/tls.key" }} 39 | {{- range $key, $value := .Values.customArgs }} 40 | - --{{ $key }}={{ $value }} 41 | {{- end }} 42 | image: "{{ .Values.global.image.registry | default .Values.image.registry }}/{{ .Values.global.image.repository | default .Values.image.repository }}:{{ .Values.global.image.tag | default .Values.image.tag | default .Chart.AppVersion }}" 43 | imagePullPolicy: {{ .Values.global.image.pullPolicy | default .Values.image.pullPolicy }} 44 | volumeMounts: 45 | - mountPath: /tmp/katalyst-webhook/certs 46 | name: webhook-cert-dir 47 | readOnly: true 48 | ports: 49 | - name: metrics 50 | containerPort: {{ (index .Values.customArgs "generic-endpoint" | default 9316) }} 51 | protocol: TCP 52 | - name: secure-port 53 | containerPort: {{ (index .Values.customArgs "secure-port" | default 443) }} 54 | protocol: TCP 55 | livenessProbe: 56 | httpGet: 57 | path: /healthz 58 | port: metrics 59 | readinessProbe: 60 | httpGet: 61 | path: /healthz 62 | port: metrics 63 | resources: 64 | {{- toYaml .Values.resources | nindent 12 }} 65 | {{- with .Values.nodeSelector }} 66 | nodeSelector: 67 | {{- toYaml . | nindent 8 }} 68 | {{- end }} 69 | {{- with .Values.affinity }} 70 | affinity: 71 | {{- toYaml . | nindent 8 }} 72 | {{- end }} 73 | {{- with .Values.tolerations }} 74 | tolerations: 75 | {{- toYaml . | nindent 8 }} 76 | {{- end }} 77 | volumes: 78 | - name: webhook-cert-dir 79 | secret: 80 | defaultMode: 420 81 | secretName: webhook-server-cert 82 | -------------------------------------------------------------------------------- /charts/katalyst/charts/webhook/templates/hpa.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.autoscaling.enabled }} 2 | apiVersion: autoscaling/v2beta1 3 | kind: HorizontalPodAutoscaler 4 | metadata: 5 | name: {{ include "katalyst-webhook.fullname" . }} 6 | labels: 7 | {{- include "katalyst-webhook.labels" . | nindent 4 }} 8 | spec: 9 | scaleTargetRef: 10 | apiVersion: apps/v1 11 | kind: Deployment 12 | name: {{ include "katalyst-webhook.fullname" . }} 13 | minReplicas: {{ .Values.autoscaling.minReplicas }} 14 | maxReplicas: {{ .Values.autoscaling.maxReplicas }} 15 | metrics: 16 | {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} 17 | - type: Resource 18 | resource: 19 | name: cpu 20 | targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} 21 | {{- end }} 22 | {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} 23 | - type: Resource 24 | resource: 25 | name: memory 26 | targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} 27 | {{- end }} 28 | {{- end }} 29 | -------------------------------------------------------------------------------- /charts/katalyst/charts/webhook/templates/rbac.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRole 4 | metadata: 5 | name: {{ include "katalyst-webhook.serviceAccountName" . }} 6 | rules: 7 | - apiGroups: 8 | - autoscaling.katalyst.kubewharf.io 9 | - workload.katalyst.kubewharf.io 10 | resources: 11 | - "*" 12 | verbs: 13 | - get 14 | - list 15 | - watch 16 | - patch 17 | - create 18 | - delete 19 | - update 20 | - apiGroups: 21 | - apps 22 | resources: 23 | - '*' 24 | verbs: 25 | - get 26 | - list 27 | - watch 28 | - apiGroups: 29 | - "" 30 | resources: 31 | - nodes 32 | verbs: 33 | - get 34 | - list 35 | - watch 36 | - apiGroups: 37 | - "" 38 | resources: 39 | - events 40 | verbs: 41 | - create 42 | - apiGroups: 43 | - "" 44 | resources: 45 | - pods 46 | verbs: 47 | - get 48 | - list 49 | - watch 50 | - patch 51 | - update 52 | - delete 53 | 54 | --- 55 | apiVersion: rbac.authorization.k8s.io/v1 56 | kind: ClusterRoleBinding 57 | metadata: 58 | name: {{ include "katalyst-webhook.serviceAccountName" . }} 59 | roleRef: 60 | apiGroup: rbac.authorization.k8s.io 61 | kind: ClusterRole 62 | name: {{ include "katalyst-webhook.serviceAccountName" . }} 63 | subjects: 64 | - kind: ServiceAccount 65 | name: {{ include "katalyst-webhook.serviceAccountName" . }} 66 | namespace: {{ .Release.Namespace }} 67 | 68 | --- 69 | apiVersion: v1 70 | kind: ServiceAccount 71 | metadata: 72 | name: {{ include "katalyst-webhook.serviceAccountName" . }} 73 | labels: 74 | {{- include "katalyst-webhook.labels" . | nindent 4 }} 75 | {{- with .Values.serviceAccount.annotations }} 76 | annotations: 77 | {{- toYaml . | nindent 4 }} 78 | {{- end }} 79 | {{- end }} 80 | -------------------------------------------------------------------------------- /charts/katalyst/charts/webhook/templates/secret.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | data: 3 | tls.crt: {{ .Files.Get "keys/tls.crt" }} 4 | tls.key: {{ .Files.Get "keys/tls.key" }} 5 | kind: Secret 6 | metadata: 7 | name: webhook-server-cert 8 | namespace: {{ .Release.Namespace }} 9 | labels: 10 | {{- include "katalyst-webhook.labels" . | nindent 4 }} 11 | type: kubernetes.io/tls -------------------------------------------------------------------------------- /charts/katalyst/charts/webhook/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ include "katalyst-webhook.fullname" . }} 5 | labels: 6 | {{- include "katalyst-webhook.labels" . | nindent 4 }} 7 | spec: 8 | type: {{ .Values.service.type }} 9 | ports: 10 | - port: {{ .Values.service.port }} 11 | targetPort: secure-port 12 | protocol: TCP 13 | name: webhook 14 | selector: 15 | {{- include "katalyst-webhook.selectorLabels" . | nindent 4 }} 16 | -------------------------------------------------------------------------------- /charts/katalyst/charts/webhook/templates/webhookconfiguration.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: admissionregistration.k8s.io/v1 2 | kind: MutatingWebhookConfiguration 3 | metadata: 4 | labels: 5 | {{- include "katalyst-webhook.labels" . | nindent 4 }} 6 | name: katalyst-mutating-webhook-configuration 7 | webhooks: 8 | - admissionReviewVersions: 9 | - v1beta1 10 | clientConfig: 11 | caBundle: {{ .Files.Get "keys/ca.crt" }} 12 | service: 13 | name: {{ include "katalyst-webhook.fullname" . }} 14 | namespace: {{ .Release.Namespace }} 15 | path: /pod 16 | failurePolicy: Ignore 17 | matchPolicy: Exact 18 | name: pod-mutation.katalyst.kubewharf.io 19 | namespaceSelector: {} 20 | objectSelector: {} 21 | reinvocationPolicy: Never 22 | rules: 23 | - apiGroups: 24 | - '*' 25 | apiVersions: 26 | - '*' 27 | operations: 28 | - CREATE 29 | resources: 30 | - pods 31 | scope: '*' 32 | sideEffects: None 33 | timeoutSeconds: 30 34 | --- 35 | apiVersion: admissionregistration.k8s.io/v1 36 | kind: ValidatingWebhookConfiguration 37 | metadata: 38 | labels: 39 | {{- include "katalyst-webhook.labels" . | nindent 4 }} 40 | name: vpa-validation 41 | webhooks: 42 | - admissionReviewVersions: 43 | - v1beta1 44 | clientConfig: 45 | caBundle: {{ .Files.Get "keys/ca.crt" }} 46 | service: 47 | name: {{ include "katalyst-webhook.fullname" . }} 48 | namespace: {{ .Release.Namespace }} 49 | path: /vpa 50 | failurePolicy: Fail 51 | matchPolicy: Exact 52 | name: vpa-validation.katalyst.kubewharf.io 53 | namespaceSelector: {} 54 | objectSelector: {} 55 | rules: 56 | - apiGroups: 57 | - autoscaling.katalyst.kubewharf.io 58 | apiVersions: 59 | - v1alpha1 60 | operations: 61 | - UPDATE 62 | - CREATE 63 | resources: 64 | - katalystverticalpodautoscalers 65 | scope: '*' 66 | sideEffects: None 67 | timeoutSeconds: 30 68 | --- 69 | apiVersion: admissionregistration.k8s.io/v1 70 | kind: MutatingWebhookConfiguration 71 | metadata: 72 | labels: 73 | {{- include "katalyst-webhook.labels" . | nindent 4 }} 74 | name: katalyst-node-mutating-webhook-configuration 75 | webhooks: 76 | - admissionReviewVersions: 77 | - v1beta1 78 | clientConfig: 79 | caBundle: {{ .Files.Get "keys/ca.crt" }} 80 | service: 81 | name: {{ include "katalyst-webhook.fullname" . }} 82 | namespace: {{ .Release.Namespace }} 83 | path: /node 84 | failurePolicy: Ignore 85 | matchPolicy: Exact 86 | name: node-mutation.katalyst.kubewharf.io 87 | namespaceSelector: {} 88 | objectSelector: {} 89 | reinvocationPolicy: Never 90 | rules: 91 | - apiGroups: 92 | - '*' 93 | apiVersions: 94 | - '*' 95 | operations: 96 | - UPDATE 97 | resources: 98 | - nodes/status 99 | scope: '*' 100 | sideEffects: None 101 | timeoutSeconds: 30 102 | -------------------------------------------------------------------------------- /charts/katalyst/charts/webhook/values.yaml: -------------------------------------------------------------------------------- 1 | 2 | global: 3 | image: {} 4 | 5 | replicaCount: 2 6 | 7 | image: 8 | registry: docker.io 9 | repository: kubewharf/katalyst-webhook 10 | pullPolicy: IfNotPresent 11 | # Overrides the image tag whose default is the chart appVersion. 12 | tag: "" 13 | 14 | imagePullSecrets: [] 15 | nameOverride: "" 16 | fullnameOverride: "" 17 | 18 | serviceAccount: 19 | # Specifies whether a service account should be created 20 | create: true 21 | # Annotations to add to the service account 22 | annotations: {} 23 | # The name of the service account to use. 24 | # If not set and create is true, a name is generated using the fullname template 25 | name: katalyst-webhook 26 | 27 | podAnnotations: {} 28 | 29 | resources: {} 30 | 31 | autoscaling: 32 | enabled: false 33 | minReplicas: 1 34 | maxReplicas: 10 35 | targetCPUUtilizationPercentage: 80 36 | # targetMemoryUtilizationPercentage: 80 37 | 38 | nodeSelector: {} 39 | 40 | tolerations: [] 41 | 42 | affinity: {} 43 | 44 | customCommand: {} 45 | 46 | service: 47 | type: ClusterIP 48 | port: 443 49 | 50 | customArgs: 51 | webhooks: "*" 52 | -------------------------------------------------------------------------------- /charts/malachite/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: malachite 3 | description: A Helm chart for Malachite 4 | 5 | # A chart can be either an 'application' or a 'library' chart. 6 | # 7 | # Application charts are a collection of templates that can be packaged into versioned archives 8 | # to be deployed. 9 | # 10 | # Library charts provide useful utilities or functions for the chart developer. They're included as 11 | # a dependency of application charts to inject those utilities and functions into the rendering 12 | # pipeline. Library charts do not define any templates and therefore cannot be deployed. 13 | type: application 14 | 15 | # This is the chart version. This version number should be incremented each time you make changes 16 | # to the chart and its templates, including the app version. 17 | # Versions are expected to follow Semantic Versioning (https://semver.org/) 18 | version: 0.1.0 19 | 20 | # This is the version number of the application being deployed. This version number should be 21 | # incremented each time you make changes to the application. Versions are not expected to 22 | # follow Semantic Versioning. They should reflect the version the application is using. 23 | # It is recommended to use it with quotes. 24 | appVersion: "0.1.0" 25 | -------------------------------------------------------------------------------- /charts/malachite/README.md: -------------------------------------------------------------------------------- 1 | # Malachite Helm Charts 2 | 3 | ## TL;DR 4 | 5 | ``` 6 | helm repo add kubewharf https://kubewharf.github.io/charts 7 | helm repo update 8 | 9 | helm install malachite -n malachite-system --create-namespace kubewharf/malachite 10 | ``` -------------------------------------------------------------------------------- /charts/malachite/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* 2 | Expand the name of the chart. 3 | */}} 4 | {{- define "malachite.name" -}} 5 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} 6 | {{- end }} 7 | 8 | {{/* 9 | Create a default fully qualified app name. 10 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 11 | If release name contains chart name it will be used as a full name. 12 | */}} 13 | {{- define "malachite.fullname" -}} 14 | {{- if .Values.fullnameOverride }} 15 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} 16 | {{- else }} 17 | {{- $name := default .Chart.Name .Values.nameOverride }} 18 | {{- if contains $name .Release.Name }} 19 | {{- .Release.Name | trunc 63 | trimSuffix "-" }} 20 | {{- else }} 21 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} 22 | {{- end }} 23 | {{- end }} 24 | {{- end }} 25 | 26 | {{/* 27 | Create chart name and version as used by the chart label. 28 | */}} 29 | {{- define "malachite.chart" -}} 30 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} 31 | {{- end }} 32 | 33 | {{/* 34 | Common labels 35 | */}} 36 | {{- define "malachite.labels" -}} 37 | helm.sh/chart: {{ include "malachite.chart" . }} 38 | {{ include "malachite.selectorLabels" . }} 39 | {{- if .Chart.AppVersion }} 40 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 41 | {{- end }} 42 | app.kubernetes.io/managed-by: {{ .Release.Service }} 43 | {{- end }} 44 | 45 | {{/* 46 | Selector labels 47 | */}} 48 | {{- define "malachite.selectorLabels" -}} 49 | app.kubernetes.io/name: {{ include "malachite.name" . }} 50 | app.kubernetes.io/instance: {{ .Release.Name }} 51 | {{- end }} 52 | -------------------------------------------------------------------------------- /charts/malachite/templates/daemonset.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: DaemonSet 3 | metadata: 4 | name: {{ include "malachite.fullname" . }} 5 | labels: 6 | {{- include "malachite.labels" . | nindent 4 }} 7 | app: "malachite" 8 | spec: 9 | selector: 10 | matchLabels: 11 | {{- include "malachite.selectorLabels" . | nindent 6 }} 12 | app: "malachite" 13 | minReadySeconds: 10 14 | updateStrategy: 15 | type: RollingUpdate 16 | rollingUpdate: 17 | maxUnavailable: 20% 18 | template: 19 | metadata: 20 | {{- with .Values.podAnnotations }} 21 | annotations: 22 | {{- toYaml . | nindent 8 }} 23 | {{- end }} 24 | labels: 25 | {{- include "malachite.selectorLabels" . | nindent 8 }} 26 | app: "malachite" 27 | spec: 28 | {{- with .Values.imagePullSecrets }} 29 | imagePullSecrets: 30 | {{- toYaml . | nindent 8 }} 31 | {{- end }} 32 | containers: 33 | - name: {{ .Chart.Name }} 34 | command: 35 | - {{ default "malachite" .Values.customCommand }} 36 | env: 37 | - name: ROCKET_CONFIG 38 | value: "/etc/malachite/bin/static/Rocket.toml" 39 | - name: MY_NODE_NAME 40 | valueFrom: 41 | fieldRef: 42 | apiVersion: v1 43 | fieldPath: spec.nodeName 44 | image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" 45 | imagePullPolicy: {{ default .Values.image.pullPolicy }} 46 | workingDir: /etc/malachite 47 | ports: 48 | - name: healthz 49 | containerPort: 8000 50 | protocol: TCP 51 | resources: 52 | {{- toYaml .Values.resources | nindent 12 }} 53 | securityContext: 54 | privileged: true 55 | volumeMounts: 56 | - mountPath: /sys 57 | name: host-sys-dir 58 | readOnly: true 59 | - mountPath: /tmp 60 | name: host-tmp-dir 61 | - mountPath: /sys/fs/cgroup 62 | name: cgroups 63 | readOnly: true 64 | {{- with .Values.nodeSelector }} 65 | nodeSelector: 66 | {{- toYaml . | nindent 8 }} 67 | {{- end }} 68 | {{- with .Values.affinity }} 69 | affinity: 70 | {{- toYaml . | nindent 8 }} 71 | {{- end }} 72 | {{- with .Values.tolerations }} 73 | tolerations: 74 | {{- toYaml . | nindent 8 }} 75 | {{- end }} 76 | priorityClassName: system-node-critical 77 | restartPolicy: Always 78 | hostNetwork: true 79 | volumes: 80 | - hostPath: 81 | path: /sys/fs/cgroup 82 | type: "" 83 | name: cgroups 84 | - hostPath: 85 | path: /sys 86 | type: "" 87 | name: host-sys-dir 88 | - hostPath: 89 | path: /tmp 90 | type: "" 91 | name: host-tmp-dir 92 | -------------------------------------------------------------------------------- /charts/malachite/values.yaml: -------------------------------------------------------------------------------- 1 | image: 2 | registry: docker.io 3 | repository: kubewharf/malachite 4 | pullPolicy: IfNotPresent 5 | # Overrides the image tag whose default is the chart appVersion. 6 | tag: "" 7 | 8 | imagePullSecrets: [] 9 | nameOverride: "" 10 | fullnameOverride: "" 11 | 12 | podAnnotations: 13 | "katalyst.kubewharf.io/qos_level": system_cores 14 | 15 | resources: {} 16 | 17 | nodeSelector: {} 18 | 19 | tolerations: [] 20 | 21 | affinity: {} 22 | 23 | customCommand: {} 24 | --------------------------------------------------------------------------------