parent
43310d54d0
commit
2087d30041
Binary file not shown.
|
@ -0,0 +1,28 @@
|
|||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
README.md.gotmpl
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
|
||||
*.go
|
||||
testdata/
|
||||
ci/
|
|
@ -0,0 +1,9 @@
|
|||
dependencies:
|
||||
- name: console
|
||||
repository: https://charts.redpanda.com
|
||||
version: 0.7.30
|
||||
- name: connectors
|
||||
repository: https://charts.redpanda.com
|
||||
version: 0.1.14
|
||||
digest: sha256:f83ed4d31b640367a327361d6a431bc14be379efc74fa1df157bd6431b095b68
|
||||
generated: "2024-11-21T19:38:03.064791+01:00"
|
|
@ -0,0 +1,38 @@
|
|||
annotations:
|
||||
artifacthub.io/images: |
|
||||
- name: redpanda
|
||||
image: docker.redpanda.com/redpandadata/redpanda:v24.2.7
|
||||
- name: busybox
|
||||
image: busybox:latest
|
||||
artifacthub.io/license: Apache-2.0
|
||||
artifacthub.io/links: |
|
||||
- name: Documentation
|
||||
url: https://docs.redpanda.com
|
||||
- name: "Helm (>= 3.10.0)"
|
||||
url: https://helm.sh/docs/intro/install/
|
||||
catalog.cattle.io/certified: partner
|
||||
catalog.cattle.io/display-name: Redpanda
|
||||
catalog.cattle.io/kube-version: '>=1.21-0'
|
||||
catalog.cattle.io/release-name: redpanda
|
||||
apiVersion: v2
|
||||
appVersion: v24.2.7
|
||||
dependencies:
|
||||
- condition: console.enabled
|
||||
name: console
|
||||
repository: https://charts.redpanda.com
|
||||
version: '>=0.5 <1.0'
|
||||
- condition: connectors.enabled
|
||||
name: connectors
|
||||
repository: https://charts.redpanda.com
|
||||
version: '>=0.1.2 <1.0'
|
||||
description: Redpanda is the real-time engine for modern apps.
|
||||
icon: file://assets/icons/redpanda.svg
|
||||
kubeVersion: '>=1.21-0'
|
||||
maintainers:
|
||||
- name: redpanda-data
|
||||
url: https://github.com/orgs/redpanda-data/people
|
||||
name: redpanda
|
||||
sources:
|
||||
- https://github.com/redpanda-data/helm-charts
|
||||
type: application
|
||||
version: 5.9.12
|
|
@ -0,0 +1,201 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,29 @@
|
|||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
README.md.gotmpl
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
|
||||
*.go
|
||||
testdata/
|
||||
ci/
|
||||
examples/
|
|
@ -0,0 +1,25 @@
|
|||
annotations:
|
||||
artifacthub.io/images: |
|
||||
- name: connectors
|
||||
image: docker.redpanda.com/redpandadata/connectors:v1.0.31
|
||||
- name: rpk
|
||||
image: docker.redpanda.com/redpandadata/redpanda:latest
|
||||
artifacthub.io/license: Apache-2.0
|
||||
artifacthub.io/links: |
|
||||
- name: Documentation
|
||||
url: https://docs.redpanda.com
|
||||
- name: "Helm (>= 3.6.0)"
|
||||
url: https://helm.sh/docs/intro/install/
|
||||
apiVersion: v2
|
||||
appVersion: v1.0.31
|
||||
description: Redpanda managed Connectors helm chart
|
||||
icon: https://images.ctfassets.net/paqvtpyf8rwu/3cYHw5UzhXCbKuR24GDFGO/73fb682e6157d11c10d5b2b5da1d5af0/skate-stand-panda.svg
|
||||
kubeVersion: ^1.21.0-0
|
||||
maintainers:
|
||||
- name: redpanda-data
|
||||
url: https://github.com/orgs/redpanda-data/people
|
||||
name: connectors
|
||||
sources:
|
||||
- https://github.com/redpanda-data/helm-charts
|
||||
type: application
|
||||
version: 0.1.14
|
|
@ -0,0 +1,201 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
|
@ -0,0 +1,580 @@
|
|||
# Redpanda Connectors Helm Chart Specification
|
||||
---
|
||||
description: Find the default values and descriptions of settings in the Redpanda Connectors Helm chart.
|
||||
---
|
||||
|
||||
![Version: 0.1.14](https://img.shields.io/badge/Version-0.1.14-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.0.31](https://img.shields.io/badge/AppVersion-v1.0.31-informational?style=flat-square)
|
||||
|
||||
This page describes the official Redpanda Connectors Helm Chart. In particular, this page describes the contents of the chart’s [`values.yaml` file](https://github.com/redpanda-data/helm-charts/blob/main/charts/connectors/values.yaml). Each of the settings is listed and described on this page, along with any default values.
|
||||
|
||||
For instructions on how to install and use the chart, including how to override and customize the chart’s values, refer to the [deployment documentation](https://docs.redpanda.com/current/deploy/deployment-option/self-hosted/kubernetes/k-deploy-connectors/).
|
||||
|
||||
----------------------------------------------
|
||||
Autogenerated from chart metadata using [helm-docs v1.13.1](https://github.com/norwoodj/helm-docs/releases/v1.13.1)
|
||||
|
||||
## Source Code
|
||||
|
||||
* <https://github.com/redpanda-data/helm-charts>
|
||||
|
||||
## Requirements
|
||||
|
||||
Kubernetes: `^1.21.0-0`
|
||||
|
||||
## Settings
|
||||
|
||||
### [auth](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=auth)
|
||||
|
||||
Authentication settings. For details, see the [SASL documentation](https://docs.redpanda.com/docs/manage/kubernetes/security/sasl-kubernetes/). The first line of the secret file is used. So the first superuser is used to authenticate to the Redpanda cluster.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
{"sasl":{"enabled":false,"mechanism":"scram-sha-512","secretRef":"","userName":""}}
|
||||
```
|
||||
|
||||
### [auth.sasl.mechanism](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=auth.sasl.mechanism)
|
||||
|
||||
The authentication mechanism to use for the superuser. Options are `scram-sha-256` and `scram-sha-512`.
|
||||
|
||||
**Default:** `"scram-sha-512"`
|
||||
|
||||
### [auth.sasl.secretRef](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=auth.sasl.secretRef)
|
||||
|
||||
A Secret that contains your SASL user password.
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [commonLabels](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=commonLabels)
|
||||
|
||||
Additional labels to add to all Kubernetes objects. For example, `my.k8s.service: redpanda`.
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [connectors.additionalConfiguration](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.additionalConfiguration)
|
||||
|
||||
A placeholder for any Java configuration settings for Kafka Connect that are not explicitly defined in this Helm chart. Java configuration settings are passed to the Kafka Connect startup script.
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [connectors.bootstrapServers](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.bootstrapServers)
|
||||
|
||||
A comma-separated list of Redpanda broker addresses in the format of IP:Port or DNS:Port. Kafka Connect uses this to connect to the Redpanda/Kafka cluster.
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [connectors.brokerTLS.ca.secretNameOverwrite](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.brokerTLS.ca.secretNameOverwrite)
|
||||
|
||||
If `secretRef` points to a Secret where the certificate authority (CA) is not under the `ca.crt` key, use `secretNameOverwrite` to overwrite it e.g. `corp-ca.crt`.
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [connectors.brokerTLS.ca.secretRef](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.brokerTLS.ca.secretRef)
|
||||
|
||||
The name of the Secret where the ca.crt file content is located.
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [connectors.brokerTLS.cert.secretNameOverwrite](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.brokerTLS.cert.secretNameOverwrite)
|
||||
|
||||
If secretRef points to secret where client signed certificate is not under tls.crt key then please use secretNameOverwrite to overwrite it e.g. corp-tls.crt
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [connectors.brokerTLS.cert.secretRef](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.brokerTLS.cert.secretRef)
|
||||
|
||||
The name of the secret where client signed certificate is located
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [connectors.brokerTLS.enabled](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.brokerTLS.enabled)
|
||||
|
||||
**Default:** `false`
|
||||
|
||||
### [connectors.brokerTLS.key.secretNameOverwrite](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.brokerTLS.key.secretNameOverwrite)
|
||||
|
||||
If secretRef points to secret where client private key is not under tls.key key then please use secretNameOverwrite to overwrite it e.g. corp-tls.key
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [connectors.brokerTLS.key.secretRef](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.brokerTLS.key.secretRef)
|
||||
|
||||
The name of the secret where client private key is located
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [connectors.groupID](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.groupID)
|
||||
|
||||
A unique string that identifies the Kafka Connect cluster. It's used in the formation of the internal topic names, ensuring that multiple Kafka Connect clusters can connect to the same Redpanda cluster without interfering with each other.
|
||||
|
||||
**Default:** `"connectors-cluster"`
|
||||
|
||||
### [connectors.producerBatchSize](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.producerBatchSize)
|
||||
|
||||
The number of bytes of records a producer will attempt to batch together before sending to Redpanda. Batching improves throughput.
|
||||
|
||||
**Default:** `131072`
|
||||
|
||||
### [connectors.producerLingerMS](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.producerLingerMS)
|
||||
|
||||
The time, in milliseconds, that a producer will wait before sending a batch of records. Waiting allows the producer to gather more records in the same batch and improve throughput.
|
||||
|
||||
**Default:** `1`
|
||||
|
||||
### [connectors.restPort](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.restPort)
|
||||
|
||||
The port on which the Kafka Connect REST API listens. The API is used for administrative tasks.
|
||||
|
||||
**Default:** `8083`
|
||||
|
||||
### [connectors.schemaRegistryURL](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.schemaRegistryURL)
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [connectors.secretManager.connectorsPrefix](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.secretManager.connectorsPrefix)
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [connectors.secretManager.consolePrefix](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.secretManager.consolePrefix)
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [connectors.secretManager.enabled](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.secretManager.enabled)
|
||||
|
||||
**Default:** `false`
|
||||
|
||||
### [connectors.secretManager.region](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.secretManager.region)
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [connectors.storage.remote](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.storage.remote)
|
||||
|
||||
Indicates if read and write operations for the respective topics are allowed remotely.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
{"read":{"config":false,"offset":false,"status":false},"write":{"config":false,"offset":false,"status":false}}
|
||||
```
|
||||
|
||||
### [connectors.storage.replicationFactor](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.storage.replicationFactor)
|
||||
|
||||
The number of replicas for each of the internal topics that Kafka Connect uses.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
{"config":-1,"offset":-1,"status":-1}
|
||||
```
|
||||
|
||||
### [connectors.storage.replicationFactor.config](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.storage.replicationFactor.config)
|
||||
|
||||
Replication factor for the configuration topic.
|
||||
|
||||
**Default:** `-1`
|
||||
|
||||
### [connectors.storage.replicationFactor.offset](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.storage.replicationFactor.offset)
|
||||
|
||||
Replication factor for the offset topic.
|
||||
|
||||
**Default:** `-1`
|
||||
|
||||
### [connectors.storage.replicationFactor.status](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.storage.replicationFactor.status)
|
||||
|
||||
Replication factor for the status topic.
|
||||
|
||||
**Default:** `-1`
|
||||
|
||||
### [connectors.storage.topic.config](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.storage.topic.config)
|
||||
|
||||
The name of the internal topic that Kafka Connect uses to store connector and task configurations.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
"_internal_connectors_configs"
|
||||
```
|
||||
|
||||
### [connectors.storage.topic.offset](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.storage.topic.offset)
|
||||
|
||||
The name of the internal topic that Kafka Connect uses to store source connector offsets.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
"_internal_connectors_offsets"
|
||||
```
|
||||
|
||||
### [connectors.storage.topic.status](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=connectors.storage.topic.status)
|
||||
|
||||
The name of the internal topic that Kafka Connect uses to store connector and task status updates.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
"_internal_connectors_status"
|
||||
```
|
||||
|
||||
### [container.javaGCLogEnabled](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=container.javaGCLogEnabled)
|
||||
|
||||
**Default:** `"false"`
|
||||
|
||||
### [container.resources](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=container.resources)
|
||||
|
||||
Pod resource management.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
{"javaMaxHeapSize":"2G","limits":{"cpu":"1","memory":"2350Mi"},"request":{"cpu":"1","memory":"2350Mi"}}
|
||||
```
|
||||
|
||||
### [container.resources.javaMaxHeapSize](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=container.resources.javaMaxHeapSize)
|
||||
|
||||
Java maximum heap size must not be greater than `container.resources.limits.memory`.
|
||||
|
||||
**Default:** `"2G"`
|
||||
|
||||
### [container.securityContext](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=container.securityContext)
|
||||
|
||||
Security context for the Redpanda Connectors container. See also `deployment.securityContext` for Pod-level settings.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
{"allowPrivilegeEscalation":false}
|
||||
```
|
||||
|
||||
### [deployment.annotations](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.annotations)
|
||||
|
||||
Additional annotations to apply to the Pods of this Deployment.
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [deployment.budget.maxUnavailable](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.budget.maxUnavailable)
|
||||
|
||||
**Default:** `1`
|
||||
|
||||
### [deployment.create](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.create)
|
||||
|
||||
**Default:** `true`
|
||||
|
||||
### [deployment.extraEnv](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.extraEnv)
|
||||
|
||||
Additional environment variables for the Pods.
|
||||
|
||||
**Default:** `[]`
|
||||
|
||||
### [deployment.extraEnvFrom](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.extraEnvFrom)
|
||||
|
||||
Configure extra environment variables from Secrets and ConfigMaps.
|
||||
|
||||
**Default:** `[]`
|
||||
|
||||
### [deployment.livenessProbe](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.livenessProbe)
|
||||
|
||||
Adjust the period for your probes to meet your needs. For details, see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes).
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
{"failureThreshold":3,"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}
|
||||
```
|
||||
|
||||
### [deployment.nodeAffinity](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.nodeAffinity)
|
||||
|
||||
Node Affinity rules for scheduling Pods of this Deployment. The suggestion would be to spread Pods according to topology zone. For details, see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity).
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [deployment.nodeSelector](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.nodeSelector)
|
||||
|
||||
Node selection constraints for scheduling Pods of this Deployment. These constraints override the global `nodeSelector` value. For details, see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector).
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [deployment.podAffinity](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.podAffinity)
|
||||
|
||||
Inter-Pod Affinity rules for scheduling Pods of this Deployment. For details, see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#inter-pod-affinity-and-anti-affinity).
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [deployment.podAntiAffinity](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.podAntiAffinity)
|
||||
|
||||
Anti-affinity rules for scheduling Pods of this Deployment. For details, see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#inter-pod-affinity-and-anti-affinity). You may either edit the default settings for anti-affinity rules, or specify new anti-affinity rules to use instead of the defaults.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
{"custom":{},"topologyKey":"kubernetes.io/hostname","type":"hard","weight":100}
|
||||
```
|
||||
|
||||
### [deployment.podAntiAffinity.custom](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.podAntiAffinity.custom)
|
||||
|
||||
Change `podAntiAffinity.type` to `custom` and provide your own podAntiAffinity rules here.
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [deployment.podAntiAffinity.topologyKey](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.podAntiAffinity.topologyKey)
|
||||
|
||||
The `topologyKey` to be used. Can be used to spread across different nodes, AZs, regions etc.
|
||||
|
||||
**Default:** `"kubernetes.io/hostname"`
|
||||
|
||||
### [deployment.podAntiAffinity.type](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.podAntiAffinity.type)
|
||||
|
||||
Valid anti-affinity types are `soft`, `hard`, or `custom`. Use `custom` if you want to supply your own anti-affinity rules in the `podAntiAffinity.custom` object.
|
||||
|
||||
**Default:** `"hard"`
|
||||
|
||||
### [deployment.podAntiAffinity.weight](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.podAntiAffinity.weight)
|
||||
|
||||
Weight for `soft` anti-affinity rules. Does not apply for other anti-affinity types.
|
||||
|
||||
**Default:** `100`
|
||||
|
||||
### [deployment.priorityClassName](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.priorityClassName)
|
||||
|
||||
PriorityClassName given to Pods of this Deployment. For details, see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass).
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [deployment.progressDeadlineSeconds](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.progressDeadlineSeconds)
|
||||
|
||||
The maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused.
|
||||
|
||||
**Default:** `600`
|
||||
|
||||
### [deployment.readinessProbe.failureThreshold](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.readinessProbe.failureThreshold)
|
||||
|
||||
**Default:** `2`
|
||||
|
||||
### [deployment.readinessProbe.initialDelaySeconds](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.readinessProbe.initialDelaySeconds)
|
||||
|
||||
**Default:** `60`
|
||||
|
||||
### [deployment.readinessProbe.periodSeconds](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.readinessProbe.periodSeconds)
|
||||
|
||||
**Default:** `10`
|
||||
|
||||
### [deployment.readinessProbe.successThreshold](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.readinessProbe.successThreshold)
|
||||
|
||||
**Default:** `3`
|
||||
|
||||
### [deployment.readinessProbe.timeoutSeconds](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.readinessProbe.timeoutSeconds)
|
||||
|
||||
**Default:** `5`
|
||||
|
||||
### [deployment.restartPolicy](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.restartPolicy)
|
||||
|
||||
**Default:** `"Always"`
|
||||
|
||||
### [deployment.revisionHistoryLimit](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.revisionHistoryLimit)
|
||||
|
||||
The number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified.
|
||||
|
||||
**Default:** `10`
|
||||
|
||||
### [deployment.schedulerName](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.schedulerName)
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [deployment.securityContext.fsGroup](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.securityContext.fsGroup)
|
||||
|
||||
**Default:** `101`
|
||||
|
||||
### [deployment.securityContext.fsGroupChangePolicy](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.securityContext.fsGroupChangePolicy)
|
||||
|
||||
**Default:** `"OnRootMismatch"`
|
||||
|
||||
### [deployment.securityContext.runAsUser](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.securityContext.runAsUser)
|
||||
|
||||
**Default:** `101`
|
||||
|
||||
### [deployment.strategy.type](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.strategy.type)
|
||||
|
||||
**Default:** `"RollingUpdate"`
|
||||
|
||||
### [deployment.terminationGracePeriodSeconds](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.terminationGracePeriodSeconds)
|
||||
|
||||
**Default:** `30`
|
||||
|
||||
### [deployment.tolerations](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.tolerations)
|
||||
|
||||
Taints to be tolerated by Pods of this Deployment. These tolerations override the global tolerations value. For details, see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/).
|
||||
|
||||
**Default:** `[]`
|
||||
|
||||
### [deployment.topologySpreadConstraints[0].maxSkew](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.topologySpreadConstraints[0].maxSkew)
|
||||
|
||||
**Default:** `1`
|
||||
|
||||
### [deployment.topologySpreadConstraints[0].topologyKey](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.topologySpreadConstraints[0].topologyKey)
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
"topology.kubernetes.io/zone"
|
||||
```
|
||||
|
||||
### [deployment.topologySpreadConstraints[0].whenUnsatisfiable](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=deployment.topologySpreadConstraints[0].whenUnsatisfiable)
|
||||
|
||||
**Default:** `"ScheduleAnyway"`
|
||||
|
||||
### [fullnameOverride](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=fullnameOverride)
|
||||
|
||||
Override `connectors.fullname` template.
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [image](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=image)
|
||||
|
||||
Redpanda Docker image settings.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
{"pullPolicy":"IfNotPresent","repository":"docker.redpanda.com/redpandadata/connectors","tag":""}
|
||||
```
|
||||
|
||||
### [image.pullPolicy](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=image.pullPolicy)
|
||||
|
||||
The imagePullPolicy. If `image.tag` is 'latest', the default is `Always`.
|
||||
|
||||
**Default:** `"IfNotPresent"`
|
||||
|
||||
### [image.repository](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=image.repository)
|
||||
|
||||
Docker repository from which to pull the Redpanda Docker image.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
"docker.redpanda.com/redpandadata/connectors"
|
||||
```
|
||||
|
||||
### [image.tag](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=image.tag)
|
||||
|
||||
The Redpanda version. See DockerHub for: [All stable versions](https://hub.docker.com/r/redpandadata/redpanda/tags) and [all unstable versions](https://hub.docker.com/r/redpandadata/redpanda-unstable/tags).
|
||||
|
||||
**Default:** `Chart.appVersion`.
|
||||
|
||||
### [imagePullSecrets](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=imagePullSecrets)
|
||||
|
||||
Pull secrets may be used to provide credentials to image repositories See https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
|
||||
**Default:** `[]`
|
||||
|
||||
### [logging](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=logging)
|
||||
|
||||
Log-level settings.
|
||||
|
||||
**Default:** `{"level":"warn"}`
|
||||
|
||||
### [logging.level](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=logging.level)
|
||||
|
||||
Log level Valid values (from least to most verbose) are: `error`, `warn`, `info` and `debug`.
|
||||
|
||||
**Default:** `"warn"`
|
||||
|
||||
### [monitoring](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=monitoring)
|
||||
|
||||
Monitoring. When set to `true`, the Helm chart creates a PodMonitor that can be used by Prometheus-Operator or VictoriaMetrics-Operator to scrape the metrics.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
{"annotations":{},"enabled":false,"labels":{},"namespaceSelector":{"any":true},"scrapeInterval":"30s"}
|
||||
```
|
||||
|
||||
### [nameOverride](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=nameOverride)
|
||||
|
||||
Override `connectors.name` template.
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [service](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=service)
|
||||
|
||||
Service management.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
{"annotations":{},"name":"","ports":[{"name":"prometheus","port":9404}]}
|
||||
```
|
||||
|
||||
### [service.annotations](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=service.annotations)
|
||||
|
||||
Annotations to add to the Service.
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [service.name](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=service.name)
|
||||
|
||||
The name of the service to use. If not set, a name is generated using the `connectors.fullname` template.
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [serviceAccount](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=serviceAccount)
|
||||
|
||||
ServiceAccount management.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
{"annotations":{},"automountServiceAccountToken":false,"create":false,"name":""}
|
||||
```
|
||||
|
||||
### [serviceAccount.annotations](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=serviceAccount.annotations)
|
||||
|
||||
Annotations to add to the ServiceAccount.
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [serviceAccount.automountServiceAccountToken](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=serviceAccount.automountServiceAccountToken)
|
||||
|
||||
Specifies whether a service account should automount API-Credentials
|
||||
|
||||
**Default:** `false`
|
||||
|
||||
### [serviceAccount.create](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=serviceAccount.create)
|
||||
|
||||
Specifies whether a ServiceAccount should be created.
|
||||
|
||||
**Default:** `false`
|
||||
|
||||
### [serviceAccount.name](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=serviceAccount.name)
|
||||
|
||||
The name of the ServiceAccount to use. If not set and `serviceAccount.create` is `true`, a name is generated using the `connectors.fullname` template.
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [storage.volumeMounts[0].mountPath](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=storage.volumeMounts[0].mountPath)
|
||||
|
||||
**Default:** `"/tmp"`
|
||||
|
||||
### [storage.volumeMounts[0].name](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=storage.volumeMounts[0].name)
|
||||
|
||||
**Default:** `"rp-connect-tmp"`
|
||||
|
||||
### [storage.volume[0].emptyDir.medium](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=storage.volume[0].emptyDir.medium)
|
||||
|
||||
**Default:** `"Memory"`
|
||||
|
||||
### [storage.volume[0].emptyDir.sizeLimit](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=storage.volume[0].emptyDir.sizeLimit)
|
||||
|
||||
**Default:** `"5Mi"`
|
||||
|
||||
### [storage.volume[0].name](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=storage.volume[0].name)
|
||||
|
||||
**Default:** `"rp-connect-tmp"`
|
||||
|
||||
### [test.create](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=test.create)
|
||||
|
||||
**Default:** `true`
|
||||
|
||||
### [tolerations](https://artifacthub.io/packages/helm/redpanda-data/connectors?modal=values&path=tolerations)
|
||||
|
||||
Taints to be tolerated by Pods. For details, see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/).
|
||||
|
||||
**Default:** `[]`
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
{{- /* Generated from "chart.go" */ -}}
|
||||
|
||||
{{- define "connectors.render" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $manifests := (list (get (fromJson (include "connectors.Deployment" (dict "a" (list $dot) ))) "r") (get (fromJson (include "connectors.PodMonitor" (dict "a" (list $dot) ))) "r") (get (fromJson (include "connectors.Service" (dict "a" (list $dot) ))) "r") (get (fromJson (include "connectors.ServiceAccount" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $manifests) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
{{- /* Generated from "deployment.go" */ -}}
|
||||
|
||||
{{- define "connectors.Deployment" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.deployment.create) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $topologySpreadConstraints := (coalesce nil) -}}
|
||||
{{- range $_, $spread := $values.deployment.topologySpreadConstraints -}}
|
||||
{{- $topologySpreadConstraints = (concat (default (list ) $topologySpreadConstraints) (list (mustMergeOverwrite (dict "maxSkew" 0 "topologyKey" "" "whenUnsatisfiable" "" ) (dict "labelSelector" (mustMergeOverwrite (dict ) (dict "matchLabels" (get (fromJson (include "connectors.PodLabels" (dict "a" (list $dot) ))) "r") )) "maxSkew" ($spread.maxSkew | int) "topologyKey" $spread.topologyKey "whenUnsatisfiable" $spread.whenUnsatisfiable )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $ports := (list (mustMergeOverwrite (dict "containerPort" 0 ) (dict "containerPort" ($values.connectors.restPort | int) "name" "rest-api" "protocol" "TCP" ))) -}}
|
||||
{{- range $_, $port := $values.service.ports -}}
|
||||
{{- $ports = (concat (default (list ) $ports) (list (mustMergeOverwrite (dict "containerPort" 0 ) (dict "name" $port.name "containerPort" ($port.port | int) "protocol" "TCP" )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $podAntiAffinity := (coalesce nil) -}}
|
||||
{{- if (ne (toJson $values.deployment.podAntiAffinity) "null") -}}
|
||||
{{- if (eq $values.deployment.podAntiAffinity.type "hard") -}}
|
||||
{{- $podAntiAffinity = (mustMergeOverwrite (dict ) (dict "requiredDuringSchedulingIgnoredDuringExecution" (list (mustMergeOverwrite (dict "topologyKey" "" ) (dict "topologyKey" $values.deployment.podAntiAffinity.topologyKey "namespaces" (list $dot.Release.Namespace) "labelSelector" (mustMergeOverwrite (dict ) (dict "matchLabels" (get (fromJson (include "connectors.PodLabels" (dict "a" (list $dot) ))) "r") )) ))) )) -}}
|
||||
{{- else -}}{{- if (eq $values.deployment.podAntiAffinity.type "soft") -}}
|
||||
{{- $podAntiAffinity = (mustMergeOverwrite (dict ) (dict "preferredDuringSchedulingIgnoredDuringExecution" (list (mustMergeOverwrite (dict "weight" 0 "podAffinityTerm" (dict "topologyKey" "" ) ) (dict "weight" $values.deployment.podAntiAffinity.weight "podAffinityTerm" (mustMergeOverwrite (dict "topologyKey" "" ) (dict "topologyKey" $values.deployment.podAntiAffinity.topologyKey "namespaces" (list $dot.Release.Namespace) "labelSelector" (mustMergeOverwrite (dict ) (dict "matchLabels" (get (fromJson (include "connectors.PodLabels" (dict "a" (list $dot) ))) "r") )) )) ))) )) -}}
|
||||
{{- else -}}{{- if (eq $values.deployment.podAntiAffinity.type "custom") -}}
|
||||
{{- $podAntiAffinity = $values.deployment.podAntiAffinity.custom -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "selector" (coalesce nil) "template" (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "containers" (coalesce nil) ) ) "strategy" (dict ) ) "status" (dict ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "apps/v1" "kind" "Deployment" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "connectors.Fullname" (dict "a" (list $dot) ))) "r") "labels" (merge (dict ) (get (fromJson (include "connectors.FullLabels" (dict "a" (list $dot) ))) "r") $values.deployment.annotations) )) "spec" (mustMergeOverwrite (dict "selector" (coalesce nil) "template" (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "containers" (coalesce nil) ) ) "strategy" (dict ) ) (dict "replicas" $values.deployment.replicas "progressDeadlineSeconds" ($values.deployment.progressDeadlineSeconds | int) "revisionHistoryLimit" $values.deployment.revisionHistoryLimit "selector" (mustMergeOverwrite (dict ) (dict "matchLabels" (get (fromJson (include "connectors.PodLabels" (dict "a" (list $dot) ))) "r") )) "strategy" $values.deployment.strategy "template" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "containers" (coalesce nil) ) ) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "annotations" $values.deployment.annotations "labels" (get (fromJson (include "connectors.PodLabels" (dict "a" (list $dot) ))) "r") )) "spec" (mustMergeOverwrite (dict "containers" (coalesce nil) ) (dict "automountServiceAccountToken" false "terminationGracePeriodSeconds" $values.deployment.terminationGracePeriodSeconds "affinity" (mustMergeOverwrite (dict ) (dict "nodeAffinity" $values.deployment.nodeAffinity "podAffinity" $values.deployment.podAffinity "podAntiAffinity" $podAntiAffinity )) "serviceAccountName" (get (fromJson (include "connectors.ServiceAccountName" (dict "a" (list $dot) ))) "r") "containers" (list (mustMergeOverwrite (dict "name" "" "resources" (dict ) ) (dict "name" "connectors-cluster" "image" (printf "%s:%s" $values.image.repository (get (fromJson (include "connectors.Tag" (dict "a" (list $dot) ))) "r")) "imagePullPolicy" $values.image.pullPolicy "securityContext" $values.container.securityContext "command" $values.deployment.command "env" (get (fromJson (include "connectors.env" (dict "a" (list $values) ))) "r") "envFrom" $values.deployment.extraEnvFrom "livenessProbe" (mustMergeOverwrite (dict ) (mustMergeOverwrite (dict ) (dict "httpGet" (mustMergeOverwrite (dict "port" 0 ) (dict "path" "/" "port" "rest-api" "scheme" "HTTP" )) )) (dict "initialDelaySeconds" ($values.deployment.livenessProbe.initialDelaySeconds | int) "timeoutSeconds" ($values.deployment.livenessProbe.timeoutSeconds | int) "periodSeconds" ($values.deployment.livenessProbe.periodSeconds | int) "successThreshold" ($values.deployment.livenessProbe.successThreshold | int) "failureThreshold" ($values.deployment.livenessProbe.failureThreshold | int) )) "readinessProbe" (mustMergeOverwrite (dict ) (mustMergeOverwrite (dict ) (dict "httpGet" (mustMergeOverwrite (dict "port" 0 ) (dict "path" "/connectors" "port" "rest-api" "scheme" "HTTP" )) )) (dict "initialDelaySeconds" ($values.deployment.readinessProbe.initialDelaySeconds | int) "timeoutSeconds" ($values.deployment.readinessProbe.timeoutSeconds | int) "periodSeconds" ($values.deployment.readinessProbe.periodSeconds | int) "successThreshold" ($values.deployment.readinessProbe.successThreshold | int) "failureThreshold" ($values.deployment.readinessProbe.failureThreshold | int) )) "ports" $ports "resources" (mustMergeOverwrite (dict ) (dict "requests" $values.container.resources.request "limits" $values.container.resources.limits )) "terminationMessagePath" "/dev/termination-log" "terminationMessagePolicy" "File" "volumeMounts" (get (fromJson (include "connectors.volumeMountss" (dict "a" (list $values) ))) "r") ))) "dnsPolicy" "ClusterFirst" "restartPolicy" $values.deployment.restartPolicy "schedulerName" $values.deployment.schedulerName "nodeSelector" $values.deployment.nodeSelector "imagePullSecrets" $values.imagePullSecrets "securityContext" $values.deployment.securityContext "tolerations" $values.deployment.tolerations "topologySpreadConstraints" $topologySpreadConstraints "volumes" (get (fromJson (include "connectors.volumes" (dict "a" (list $values) ))) "r") )) )) )) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "connectors.env" -}}
|
||||
{{- $values := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $env := (list (mustMergeOverwrite (dict "name" "" ) (dict "name" "CONNECT_CONFIGURATION" "value" (get (fromJson (include "connectors.connectorConfiguration" (dict "a" (list $values) ))) "r") )) (mustMergeOverwrite (dict "name" "" ) (dict "name" "CONNECT_ADDITIONAL_CONFIGURATION" "value" $values.connectors.additionalConfiguration )) (mustMergeOverwrite (dict "name" "" ) (dict "name" "CONNECT_BOOTSTRAP_SERVERS" "value" $values.connectors.bootstrapServers ))) -}}
|
||||
{{- if (not (empty $values.connectors.schemaRegistryURL)) -}}
|
||||
{{- $env = (concat (default (list ) $env) (list (mustMergeOverwrite (dict "name" "" ) (dict "name" "SCHEMA_REGISTRY_URL" "value" $values.connectors.schemaRegistryURL )))) -}}
|
||||
{{- end -}}
|
||||
{{- $env = (concat (default (list ) $env) (list (mustMergeOverwrite (dict "name" "" ) (dict "name" "CONNECT_GC_LOG_ENABLED" "value" $values.container.javaGCLogEnabled )) (mustMergeOverwrite (dict "name" "" ) (dict "name" "CONNECT_HEAP_OPTS" "value" (printf "-Xms256M -Xmx%s" $values.container.resources.javaMaxHeapSize) )) (mustMergeOverwrite (dict "name" "" ) (dict "name" "CONNECT_LOG_LEVEL" "value" $values.logging.level )))) -}}
|
||||
{{- if (get (fromJson (include "connectors.Auth.SASLEnabled" (dict "a" (list $values.auth) ))) "r") -}}
|
||||
{{- $env = (concat (default (list ) $env) (list (mustMergeOverwrite (dict "name" "" ) (dict "name" "CONNECT_SASL_USERNAME" "value" $values.auth.sasl.userName )) (mustMergeOverwrite (dict "name" "" ) (dict "name" "CONNECT_SASL_MECHANISM" "value" $values.auth.sasl.mechanism )) (mustMergeOverwrite (dict "name" "" ) (dict "name" "CONNECT_SASL_PASSWORD_FILE" "value" "rc-credentials/password" )))) -}}
|
||||
{{- end -}}
|
||||
{{- $env = (concat (default (list ) $env) (list (mustMergeOverwrite (dict "name" "" ) (dict "name" "CONNECT_TLS_ENABLED" "value" (printf "%v" $values.connectors.brokerTLS.enabled) )))) -}}
|
||||
{{- if (not (empty $values.connectors.brokerTLS.ca.secretRef)) -}}
|
||||
{{- $ca := (default "ca.crt" $values.connectors.brokerTLS.ca.secretNameOverwrite) -}}
|
||||
{{- $env = (concat (default (list ) $env) (list (mustMergeOverwrite (dict "name" "" ) (dict "name" "CONNECT_TRUSTED_CERTS" "value" (printf "ca/%s" $ca) )))) -}}
|
||||
{{- end -}}
|
||||
{{- if (not (empty $values.connectors.brokerTLS.cert.secretRef)) -}}
|
||||
{{- $cert := (default "tls.crt" $values.connectors.brokerTLS.cert.secretNameOverwrite) -}}
|
||||
{{- $env = (concat (default (list ) $env) (list (mustMergeOverwrite (dict "name" "" ) (dict "name" "CONNECT_TLS_AUTH_CERT" "value" (printf "cert/%s" $cert) )))) -}}
|
||||
{{- end -}}
|
||||
{{- if (not (empty $values.connectors.brokerTLS.key.secretRef)) -}}
|
||||
{{- $key := (default "tls.key" $values.connectors.brokerTLS.key.secretNameOverwrite) -}}
|
||||
{{- $env = (concat (default (list ) $env) (list (mustMergeOverwrite (dict "name" "" ) (dict "name" "CONNECT_TLS_AUTH_KEY" "value" (printf "key/%s" $key) )))) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (concat (default (list ) $env) (default (list ) $values.deployment.extraEnv))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "connectors.connectorConfiguration" -}}
|
||||
{{- $values := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $lines := (list (printf "rest.advertised.port=%d" ($values.connectors.restPort | int)) (printf "rest.port=%d" ($values.connectors.restPort | int)) "key.converter=org.apache.kafka.connect.converters.ByteArrayConverter" "value.converter=org.apache.kafka.connect.converters.ByteArrayConverter" (printf "group.id=%s" $values.connectors.groupID) (printf "offset.storage.topic=%s" $values.connectors.storage.topic.offset) (printf "config.storage.topic=%s" $values.connectors.storage.topic.config) (printf "status.storage.topic=%s" $values.connectors.storage.topic.status) (printf "offset.storage.redpanda.remote.read=%t" $values.connectors.storage.remote.read.offset) (printf "offset.storage.redpanda.remote.write=%t" $values.connectors.storage.remote.write.offset) (printf "config.storage.redpanda.remote.read=%t" $values.connectors.storage.remote.read.config) (printf "config.storage.redpanda.remote.write=%t" $values.connectors.storage.remote.write.config) (printf "status.storage.redpanda.remote.read=%t" $values.connectors.storage.remote.read.status) (printf "status.storage.redpanda.remote.write=%t" $values.connectors.storage.remote.write.status) (printf "offset.storage.replication.factor=%d" ($values.connectors.storage.replicationFactor.offset | int)) (printf "config.storage.replication.factor=%d" ($values.connectors.storage.replicationFactor.config | int)) (printf "status.storage.replication.factor=%d" ($values.connectors.storage.replicationFactor.status | int)) (printf "producer.linger.ms=%d" ($values.connectors.producerLingerMS | int)) (printf "producer.batch.size=%d" ($values.connectors.producerBatchSize | int)) "config.providers=file,secretsManager,env" "config.providers.file.class=org.apache.kafka.common.config.provider.FileConfigProvider") -}}
|
||||
{{- if $values.connectors.secretManager.enabled -}}
|
||||
{{- $lines = (concat (default (list ) $lines) (list "config.providers.secretsManager.class=com.github.jcustenborder.kafka.config.aws.SecretsManagerConfigProvider" (printf "config.providers.secretsManager.param.secret.prefix=%s%s" $values.connectors.secretManager.consolePrefix $values.connectors.secretManager.connectorsPrefix) (printf "config.providers.secretsManager.param.aws.region=%s" $values.connectors.secretManager.region))) -}}
|
||||
{{- end -}}
|
||||
{{- $lines = (concat (default (list ) $lines) (list "config.providers.env.class=org.apache.kafka.common.config.provider.EnvVarConfigProvider")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (join "\n" $lines)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "connectors.volumes" -}}
|
||||
{{- $values := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $volumes := (coalesce nil) -}}
|
||||
{{- if (not (empty $values.connectors.brokerTLS.ca.secretRef)) -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (list (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "secret" (mustMergeOverwrite (dict ) (dict "defaultMode" (0o444 | int) "secretName" $values.connectors.brokerTLS.ca.secretRef )) )) (dict "name" "truststore" )))) -}}
|
||||
{{- end -}}
|
||||
{{- if (not (empty $values.connectors.brokerTLS.cert.secretRef)) -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (list (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "secret" (mustMergeOverwrite (dict ) (dict "defaultMode" (0o444 | int) "secretName" $values.connectors.brokerTLS.cert.secretRef )) )) (dict "name" "cert" )))) -}}
|
||||
{{- end -}}
|
||||
{{- if (not (empty $values.connectors.brokerTLS.key.secretRef)) -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (list (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "secret" (mustMergeOverwrite (dict ) (dict "defaultMode" (0o444 | int) "secretName" $values.connectors.brokerTLS.key.secretRef )) )) (dict "name" "key" )))) -}}
|
||||
{{- end -}}
|
||||
{{- if (get (fromJson (include "connectors.Auth.SASLEnabled" (dict "a" (list $values.auth) ))) "r") -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (list (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "secret" (mustMergeOverwrite (dict ) (dict "defaultMode" (0o444 | int) "secretName" $values.auth.sasl.secretRef )) )) (dict "name" "rc-credentials" )))) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (concat (default (list ) $volumes) (default (list ) $values.storage.volume))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "connectors.volumeMountss" -}}
|
||||
{{- $values := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $mounts := (coalesce nil) -}}
|
||||
{{- if (get (fromJson (include "connectors.Auth.SASLEnabled" (dict "a" (list $values.auth) ))) "r") -}}
|
||||
{{- $mounts = (concat (default (list ) $mounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "mountPath" "/opt/kafka/connect-password/rc-credentials" "name" "rc-credentials" )))) -}}
|
||||
{{- end -}}
|
||||
{{- if (not (empty $values.connectors.brokerTLS.ca.secretRef)) -}}
|
||||
{{- $mounts = (concat (default (list ) $mounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "truststore" "mountPath" "/opt/kafka/connect-certs/ca" )))) -}}
|
||||
{{- end -}}
|
||||
{{- if (not (empty $values.connectors.brokerTLS.cert.secretRef)) -}}
|
||||
{{- $mounts = (concat (default (list ) $mounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "cert" "mountPath" "/opt/kafka/connect-certs/cert" )))) -}}
|
||||
{{- end -}}
|
||||
{{- if (not (empty $values.connectors.brokerTLS.key.secretRef)) -}}
|
||||
{{- $mounts = (concat (default (list ) $mounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "key" "mountPath" "/opt/kafka/connect-certs/key" )))) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (concat (default (list ) $mounts) (default (list ) $values.storage.volumeMounts))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,131 @@
|
|||
{{- /* Generated from "helpers.go" */ -}}
|
||||
|
||||
{{- define "connectors.Name" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $name := (default $dot.Chart.Name $values.nameOverride) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "connectors.trunc" (dict "a" (list $name) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "connectors.Fullname" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not (empty $values.fullnameOverride)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "connectors.trunc" (dict "a" (list $values.fullnameOverride) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $name := (default $dot.Chart.Name $values.nameOverride) -}}
|
||||
{{- if (contains $name $dot.Release.Name) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "connectors.trunc" (dict "a" (list $dot.Release.Name) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "connectors.trunc" (dict "a" (list (printf "%s-%s" $dot.Release.Name $name)) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "connectors.FullLabels" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (merge (dict ) (dict "helm.sh/chart" (get (fromJson (include "connectors.ChartLabels" (dict "a" (list $dot) ))) "r") "app.kubernetes.io/managed-by" $dot.Release.Service ) (get (fromJson (include "connectors.PodLabels" (dict "a" (list $dot) ))) "r"))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "connectors.PodLabels" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (merge (dict ) (dict "app.kubernetes.io/name" (get (fromJson (include "connectors.Name" (dict "a" (list $dot) ))) "r") "app.kubernetes.io/instance" $dot.Release.Name "app.kubernetes.io/component" (get (fromJson (include "connectors.Name" (dict "a" (list $dot) ))) "r") ) $values.commonLabels)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "connectors.ChartLabels" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $chart := (printf "%s-%s" $dot.Chart.Name $dot.Chart.Version) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "connectors.trunc" (dict "a" (list (replace "+" "_" $chart)) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "connectors.Semver" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (trimPrefix "v" (get (fromJson (include "connectors.Tag" (dict "a" (list $dot) ))) "r"))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "connectors.ServiceAccountName" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if $values.serviceAccount.create -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (default (get (fromJson (include "connectors.Fullname" (dict "a" (list $dot) ))) "r") $values.serviceAccount.name)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (default "default" $values.serviceAccount.name)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "connectors.ServiceName" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (default (get (fromJson (include "connectors.Fullname" (dict "a" (list $dot) ))) "r") $values.service.name)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "connectors.Tag" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $tag := (default $dot.Chart.AppVersion $values.image.tag) -}}
|
||||
{{- $matchString := "^v(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$" -}}
|
||||
{{- if (not (mustRegexMatch $matchString $tag)) -}}
|
||||
{{- $_ := (fail "image.tag must start with a 'v' and be a valid semver") -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $tag) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "connectors.trunc" -}}
|
||||
{{- $s := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (trimSuffix "-" (trunc (63 | int) $s))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "connectors.name" -}}
|
||||
{{- get ((include "connectors.Name" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "connectors.fullname" }}
|
||||
{{- get ((include "connectors.Fullname" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
full helm labels + common labels
|
||||
*/}}
|
||||
{{- define "full.labels" -}}
|
||||
{{- (get ((include "connectors.FullLabels" (dict "a" (list .))) | fromJson) "r") | toYaml }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
pod labels merged with common labels
|
||||
*/}}
|
||||
{{- define "connectors-pod-labels" -}}
|
||||
{{- (get ((include "connectors.PodLabels" (dict "a" (list .))) | fromJson) "r") | toYaml }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "connectors.chart" -}}
|
||||
{{- get ((include "connectors.Chart" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Get the version of redpanda being used as an image
|
||||
*/}}
|
||||
{{- define "connectors.semver" -}}
|
||||
{{- get ((include "connectors.Tag" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "connectors.serviceAccountName" -}}
|
||||
{{- get ((include "connectors.ServiceAccountName" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service to use
|
||||
*/}}
|
||||
{{- define "connectors.serviceName" -}}
|
||||
{{- get ((include "connectors.ServiceName" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Use AppVersion if image.tag is not set
|
||||
*/}}
|
||||
{{- define "connectors.tag" -}}
|
||||
{{- get ((include "connectors.Tag" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,18 @@
|
|||
{{- /* Generated from "podmonitor.go" */ -}}
|
||||
|
||||
{{- define "connectors.PodMonitor" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.monitoring.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "podMetricsEndpoints" (coalesce nil) "selector" (dict ) "namespaceSelector" (dict ) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "monitoring.coreos.com/v1" "kind" "PodMonitor" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "connectors.Fullname" (dict "a" (list $dot) ))) "r") "labels" $values.monitoring.labels "annotations" $values.monitoring.annotations )) "spec" (mustMergeOverwrite (dict "podMetricsEndpoints" (coalesce nil) "selector" (dict ) "namespaceSelector" (dict ) ) (dict "namespaceSelector" $values.monitoring.namespaceSelector "podMetricsEndpoints" (list (mustMergeOverwrite (dict "bearerTokenSecret" (dict "key" "" ) ) (dict "path" "/" "port" "prometheus" ))) "selector" (mustMergeOverwrite (dict ) (dict "matchLabels" (get (fromJson (include "connectors.PodLabels" (dict "a" (list $dot) ))) "r") )) )) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
{{- /* Generated from "service.go" */ -}}
|
||||
|
||||
{{- define "connectors.Service" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $ports := (list (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" "rest-api" "port" ($values.connectors.restPort | int) "targetPort" ($values.connectors.restPort | int) "protocol" "TCP" ))) -}}
|
||||
{{- range $_, $port := $values.service.ports -}}
|
||||
{{- $ports = (concat (default (list ) $ports) (list (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" $port.name "port" ($port.port | int) "targetPort" ($port.port | int) "protocol" "TCP" )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict ) "status" (dict "loadBalancer" (dict ) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "v1" "kind" "Service" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "connectors.ServiceName" (dict "a" (list $dot) ))) "r") "labels" (merge (dict ) (get (fromJson (include "connectors.FullLabels" (dict "a" (list $dot) ))) "r") $values.service.annotations) )) "spec" (mustMergeOverwrite (dict ) (dict "ipFamilies" (list "IPv4") "ipFamilyPolicy" "SingleStack" "ports" $ports "selector" (get (fromJson (include "connectors.PodLabels" (dict "a" (list $dot) ))) "r") "sessionAffinity" "None" "type" "ClusterIP" )) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
{{- /* Generated from "serviceaccount.go" */ -}}
|
||||
|
||||
{{- define "connectors.ServiceAccount" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.serviceAccount.create) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "v1" "kind" "ServiceAccount" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "annotations" $values.serviceAccount.annotations "labels" (get (fromJson (include "connectors.FullLabels" (dict "a" (list $dot) ))) "r") "name" (get (fromJson (include "connectors.ServiceAccountName" (dict "a" (list $dot) ))) "r") "namespace" $dot.Release.Namespace )) "automountServiceAccountToken" $values.serviceAccount.automountServiceAccountToken ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,339 @@
|
|||
{{- /* Generated from "bootstrap.go" */ -}}
|
||||
|
||||
{{- define "_shims.typetest" -}}
|
||||
{{- $typ := (index .a 0) -}}
|
||||
{{- $value := (index .a 1) -}}
|
||||
{{- $zero := (index .a 2) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (typeIs $typ $value) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $zero false)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.typeassertion" -}}
|
||||
{{- $typ := (index .a 0) -}}
|
||||
{{- $value := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (not (typeIs $typ $value)) -}}
|
||||
{{- $_ := (fail (printf "expected type of %q got: %T" $typ $value)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $value) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.dicttest" -}}
|
||||
{{- $m := (index .a 0) -}}
|
||||
{{- $key := (index .a 1) -}}
|
||||
{{- $zero := (index .a 2) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (hasKey $m $key) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (index $m $key) true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $zero false)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.compact" -}}
|
||||
{{- $args := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $out := (dict ) -}}
|
||||
{{- range $i, $e := $args -}}
|
||||
{{- $_ := (set $out (printf "T%d" ((add (1 | int) $i) | int)) $e) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $out) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.deref" -}}
|
||||
{{- $ptr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (eq (toJson $ptr) "null") -}}
|
||||
{{- $_ := (fail "nil dereference") -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $ptr) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.len" -}}
|
||||
{{- $m := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (eq (toJson $m) "null") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (0 | int)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (len $m)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.ptr_Deref" -}}
|
||||
{{- $ptr := (index .a 0) -}}
|
||||
{{- $def := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (ne (toJson $ptr) "null") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $ptr) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $def) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.ptr_Equal" -}}
|
||||
{{- $a := (index .a 0) -}}
|
||||
{{- $b := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (and (eq (toJson $a) "null") (eq (toJson $b) "null")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" true) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (eq $a $b)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.lookup" -}}
|
||||
{{- $apiVersion := (index .a 0) -}}
|
||||
{{- $kind := (index .a 1) -}}
|
||||
{{- $namespace := (index .a 2) -}}
|
||||
{{- $name := (index .a 3) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $result := (lookup $apiVersion $kind $namespace $name) -}}
|
||||
{{- if (empty $result) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (coalesce nil) false)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $result true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.asnumeric" -}}
|
||||
{{- $value := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (typeIs "float64" $value) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (typeIs "int64" $value) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (typeIs "int" $value) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (0 | int) false)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.asintegral" -}}
|
||||
{{- $value := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (or (typeIs "int64" $value) (typeIs "int" $value)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (and (typeIs "float64" $value) (eq (floor $value) $value)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (0 | int) false)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.parseResource" -}}
|
||||
{{- $repr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (typeIs "float64" $repr) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (float64 $repr) 1.0)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (not (typeIs "string" $repr)) -}}
|
||||
{{- $_ := (fail (printf "invalid Quantity expected string or float64 got: %T (%v)" $repr $repr)) -}}
|
||||
{{- end -}}
|
||||
{{- if (not (regexMatch `^[0-9]+(\.[0-9]{0,6})?(k|m|M|G|T|P|Ki|Mi|Gi|Ti|Pi)?$` $repr)) -}}
|
||||
{{- $_ := (fail (printf "invalid Quantity: %q" $repr)) -}}
|
||||
{{- end -}}
|
||||
{{- $reprStr := (toString $repr) -}}
|
||||
{{- $unit := (regexFind "(k|m|M|G|T|P|Ki|Mi|Gi|Ti|Pi)$" $repr) -}}
|
||||
{{- $numeric := (float64 (substr (0 | int) ((sub ((get (fromJson (include "_shims.len" (dict "a" (list $reprStr) ))) "r") | int) ((get (fromJson (include "_shims.len" (dict "a" (list $unit) ))) "r") | int)) | int) $reprStr)) -}}
|
||||
{{- $tmp_tuple_1 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.dicttest" (dict "a" (list (dict "" 1.0 "m" 0.001 "k" (1000 | int) "M" (1000000 | int) "G" (1000000000 | int) "T" (1000000000000 | int) "P" (1000000000000000 | int) "Ki" (1024 | int) "Mi" (1048576 | int) "Gi" (1073741824 | int) "Ti" (1099511627776 | int) "Pi" (1125899906842624 | int) ) $unit (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $ok := $tmp_tuple_1.T2 -}}
|
||||
{{- $scale := ($tmp_tuple_1.T1 | float64) -}}
|
||||
{{- if (not $ok) -}}
|
||||
{{- $_ := (fail (printf "unknown unit: %q" $unit)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $numeric $scale)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.resource_MustParse" -}}
|
||||
{{- $repr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $tmp_tuple_2 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.parseResource" (dict "a" (list $repr) ))) "r")) ))) "r") -}}
|
||||
{{- $scale := ($tmp_tuple_2.T2 | float64) -}}
|
||||
{{- $numeric := ($tmp_tuple_2.T1 | float64) -}}
|
||||
{{- $strs := (list "" "m" "k" "M" "G" "T" "P" "Ki" "Mi" "Gi" "Ti" "Pi") -}}
|
||||
{{- $scales := (list 1.0 0.001 (1000 | int) (1000000 | int) (1000000000 | int) (1000000000000 | int) (1000000000000000 | int) (1024 | int) (1048576 | int) (1073741824 | int) (1099511627776 | int) (1125899906842624 | int)) -}}
|
||||
{{- $idx := -1 -}}
|
||||
{{- range $i, $s := $scales -}}
|
||||
{{- if (eq ($s | float64) ($scale | float64)) -}}
|
||||
{{- $idx = $i -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (eq $idx -1) -}}
|
||||
{{- $_ := (fail (printf "unknown scale: %v" $scale)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (printf "%s%s" (toString $numeric) (index $strs $idx))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.resource_Value" -}}
|
||||
{{- $repr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $tmp_tuple_3 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.parseResource" (dict "a" (list $repr) ))) "r")) ))) "r") -}}
|
||||
{{- $scale := ($tmp_tuple_3.T2 | float64) -}}
|
||||
{{- $numeric := ($tmp_tuple_3.T1 | float64) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (int64 (ceil ((mulf $numeric $scale) | float64)))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.resource_MilliValue" -}}
|
||||
{{- $repr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $tmp_tuple_4 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.parseResource" (dict "a" (list $repr) ))) "r")) ))) "r") -}}
|
||||
{{- $scale := ($tmp_tuple_4.T2 | float64) -}}
|
||||
{{- $numeric := ($tmp_tuple_4.T1 | float64) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (int64 (ceil ((mulf ((mulf $numeric 1000.0) | float64) $scale) | float64)))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.time_ParseDuration" -}}
|
||||
{{- $repr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $unitMap := (dict "s" (1000000000 | int64) "m" (60000000000 | int64) "h" (3600000000000 | int64) ) -}}
|
||||
{{- $original := $repr -}}
|
||||
{{- $value := ((0 | int64) | int64) -}}
|
||||
{{- if (eq $repr "") -}}
|
||||
{{- $_ := (fail (printf "invalid Duration: %q" $original)) -}}
|
||||
{{- end -}}
|
||||
{{- if (eq $repr "0") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (0 | int64)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $_ := (list (0 | int) (0 | int) (0 | int)) -}}
|
||||
{{- if (eq $repr "") -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $n := (regexFind `^\d+` $repr) -}}
|
||||
{{- if (eq $n "") -}}
|
||||
{{- $_ := (fail (printf "invalid Duration: %q" $original)) -}}
|
||||
{{- end -}}
|
||||
{{- $repr = (substr ((get (fromJson (include "_shims.len" (dict "a" (list $n) ))) "r") | int) -1 $repr) -}}
|
||||
{{- $unit := (regexFind `^(h|m|s)` $repr) -}}
|
||||
{{- if (eq $unit "") -}}
|
||||
{{- $_ := (fail (printf "invalid Duration: %q" $original)) -}}
|
||||
{{- end -}}
|
||||
{{- $repr = (substr ((get (fromJson (include "_shims.len" (dict "a" (list $unit) ))) "r") | int) -1 $repr) -}}
|
||||
{{- $value = ((add $value (((mul (int64 $n) (index $unitMap $unit)) | int64))) | int64) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $value) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.time_Duration_String" -}}
|
||||
{{- $dur := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (duration ((div $dur (1000000000 | int64)) | int64))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.render-manifest" -}}
|
||||
{{- $tpl := (index . 0) -}}
|
||||
{{- $dot := (index . 1) -}}
|
||||
{{- $manifests := (get ((include $tpl (dict "a" (list $dot))) | fromJson) "r") -}}
|
||||
{{- if not (typeIs "[]interface {}" $manifests) -}}
|
||||
{{- $manifests = (list $manifests) -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $manifest := $manifests -}}
|
||||
{{- if ne (toJson $manifest) "null" }}
|
||||
---
|
||||
{{toYaml (unset (unset $manifest "status") "creationTimestamp")}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,15 @@
|
|||
{{- /* Generated from "values.go" */ -}}
|
||||
|
||||
{{- define "connectors.Auth.SASLEnabled" -}}
|
||||
{{- $c := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $saslEnabled := (not (empty $c.sasl.userName)) -}}
|
||||
{{- $saslEnabled = (and $saslEnabled (not (empty $c.sasl.mechanism))) -}}
|
||||
{{- $saslEnabled = (and $saslEnabled (not (empty $c.sasl.secretRef))) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $saslEnabled) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{{- /*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- include "_shims.render-manifest" (list "connectors.render" .) -}}
|
|
@ -0,0 +1,176 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- define "curl-options" -}}
|
||||
{{- print " -svm3 --fail --retry \"120\" --retry-max-time \"120\" --retry-all-errors -o - -w \"\\nstatus=%{http_code} %{redirect_url} size=%{size_download} time=%{time_total} content-type=\\\"%{content_type}\\\"\\n\" "}}
|
||||
{{- end -}}
|
||||
{{- if .Values.test.create -}}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: {{ include "connectors.fullname" . }}-mm2-test
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: create-mm2
|
||||
image: docker.redpanda.com/redpandadata/redpanda:latest
|
||||
command:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- |
|
||||
set -xe
|
||||
|
||||
trap connectorsState ERR
|
||||
|
||||
connectorsState () {
|
||||
echo check connectors expand status
|
||||
curl {{ template "curl-options" . }} http://{{ include "connectors.serviceName" . }}:{{ .Values.connectors.restPort }}/connectors?expand=status
|
||||
echo check connectors expand info
|
||||
curl {{ template "curl-options" . }} http://{{ include "connectors.serviceName" . }}:{{ .Values.connectors.restPort }}/connectors?expand=info
|
||||
echo check connector configuration
|
||||
curl {{ template "curl-options" . }} http://{{ include "connectors.serviceName" . }}:{{ .Values.connectors.restPort }}/connectors/$CONNECTOR_NAME
|
||||
echo check connector topics
|
||||
curl {{ template "curl-options" . }} http://{{ include "connectors.serviceName" . }}:{{ .Values.connectors.restPort }}/connectors/$CONNECTOR_NAME/topics
|
||||
}
|
||||
|
||||
curl {{ template "curl-options" . }} http://{{ include "connectors.serviceName" . }}:{{ .Values.connectors.restPort }}/connectors
|
||||
|
||||
SASL_MECHANISM="PLAIN"
|
||||
{{- if .Values.auth.sasl.enabled }}
|
||||
set -e
|
||||
set +x
|
||||
|
||||
IFS=: read -r CONNECT_SASL_USERNAME KAFKA_SASL_PASSWORD CONNECT_SASL_MECHANISM < $(find /mnt/users/* -print)
|
||||
CONNECT_SASL_MECHANISM=${CONNECT_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
if [[ -n "$CONNECT_SASL_USERNAME" && -n "$KAFKA_SASL_PASSWORD" && -n "$CONNECT_SASL_MECHANISM" ]]; then
|
||||
rpk profile set user=$CONNECT_SASL_USERNAME pass=$KAFKA_SASL_PASSWORD sasl.mechanism=$CONNECT_SASL_MECHANISM
|
||||
SASL_MECHANISM=$CONNECT_SASL_MECHANISM
|
||||
JAAS_CONFIG_SOURCE="\"source.cluster.sasl.jaas.config\": \"org.apache.kafka.common.security.scram.ScramLoginModule required username=\\\\"\"${CONNECT_SASL_USERNAME}\\\\"\" password=\\\\"\"${KAFKA_SASL_PASSWORD}\\\\"\";\","
|
||||
JAAS_CONFIG_TARGET="\"target.cluster.sasl.jaas.config\": \"org.apache.kafka.common.security.scram.ScramLoginModule required username=\\\\"\"${CONNECT_SASL_USERNAME}\\\\"\" password=\\\\"\"${KAFKA_SASL_PASSWORD}\\\\"\";\","
|
||||
fi
|
||||
|
||||
set -x
|
||||
set +e
|
||||
{{- end }}
|
||||
|
||||
rpk profile create test
|
||||
rpk profile set tls.enabled={{.Values.connectors.brokerTLS.enabled}} brokers={{ .Values.connectors.bootstrapServers }}
|
||||
{{- if .Values.connectors.brokerTLS.ca.secretRef }}
|
||||
rpk profile set tls.ca={{ printf "/redpanda-certs/%s" (default "ca.crt" .Values.connectors.brokerTLS.ca.secretNameOverwrite) }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.connectors.brokerTLS.enabled }}
|
||||
CONNECT_TLS_ENABLED=true
|
||||
{{- else }}
|
||||
CONNECT_TLS_ENABLED=false
|
||||
{{- end }}
|
||||
SECURITY_PROTOCOL=PLAINTEXT
|
||||
if [[ -n "$CONNECT_SASL_MECHANISM" && $CONNECT_TLS_ENABLED == "true" ]]; then
|
||||
SECURITY_PROTOCOL="SASL_SSL"
|
||||
elif [[ -n "$CONNECT_SASL_MECHANISM" ]]; then
|
||||
SECURITY_PROTOCOL="SASL_PLAINTEXT"
|
||||
elif [[ $CONNECT_TLS_ENABLED == "true" ]]; then
|
||||
SECURITY_PROTOCOL="SSL"
|
||||
fi
|
||||
|
||||
rpk topic list
|
||||
rpk topic create test-topic
|
||||
rpk topic list
|
||||
echo "Test message!" | rpk topic produce test-topic
|
||||
|
||||
CONNECTOR_NAME=mm2-$RANDOM
|
||||
cat << 'EOF' > /tmp/mm2-conf.json
|
||||
{
|
||||
"name": "CONNECTOR_NAME",
|
||||
"config": {
|
||||
"connector.class": "org.apache.kafka.connect.mirror.MirrorSourceConnector",
|
||||
"topics": "test-topic",
|
||||
"replication.factor": "1",
|
||||
"tasks.max": "1",
|
||||
"source.cluster.bootstrap.servers": {{ .Values.connectors.bootstrapServers | quote }},
|
||||
"target.cluster.bootstrap.servers": {{ .Values.connectors.bootstrapServers | quote }},
|
||||
"target.cluster.alias": "test-only",
|
||||
"source.cluster.alias": "source",
|
||||
"key.converter": "org.apache.kafka.connect.converters.ByteArrayConverter",
|
||||
"value.converter": "org.apache.kafka.connect.converters.ByteArrayConverter",
|
||||
"source->target.enabled": "true",
|
||||
"target->source.enabled": "false",
|
||||
"sync.topic.configs.interval.seconds": "5",
|
||||
"sync.topics.configs.enabled": "true",
|
||||
"source.cluster.ssl.truststore.type": "PEM",
|
||||
"target.cluster.ssl.truststore.type": "PEM",
|
||||
"source.cluster.ssl.truststore.location": {{ printf "/opt/kafka/connect-certs/ca/%s" (default "ca.crt" .Values.connectors.brokerTLS.ca.secretNameOverwrite) | quote }},
|
||||
"target.cluster.ssl.truststore.location": {{ printf "/opt/kafka/connect-certs/ca/%s" (default "ca.crt" .Values.connectors.brokerTLS.ca.secretNameOverwrite) | quote }},
|
||||
JAAS_CONFIG_SOURCE
|
||||
JAAS_CONFIG_TARGET
|
||||
"source.cluster.security.protocol": "SECURITY_PROTOCOL",
|
||||
"target.cluster.security.protocol": "SECURITY_PROTOCOL",
|
||||
"source.cluster.sasl.mechanism": "SASL_MECHANISM",
|
||||
"target.cluster.sasl.mechanism": "SASL_MECHANISM",
|
||||
"offset-syncs.topic.replication.factor": 1
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
sed -i "s/CONNECTOR_NAME/$CONNECTOR_NAME/g" /tmp/mm2-conf.json
|
||||
sed -i "s/SASL_MECHANISM/$SASL_MECHANISM/g" /tmp/mm2-conf.json
|
||||
sed -i "s/SECURITY_PROTOCOL/$SECURITY_PROTOCOL/g" /tmp/mm2-conf.json
|
||||
set +x
|
||||
sed -i "s/JAAS_CONFIG_SOURCE/$JAAS_CONFIG_SOURCE/g" /tmp/mm2-conf.json
|
||||
sed -i "s/JAAS_CONFIG_TARGET/$JAAS_CONFIG_TARGET/g" /tmp/mm2-conf.json
|
||||
set -x
|
||||
|
||||
curl {{ template "curl-options" . }} -H 'Content-Type: application/json' http://{{ include "connectors.serviceName" . }}:{{ .Values.connectors.restPort }}/connectors -d @/tmp/mm2-conf.json
|
||||
|
||||
# The rpk topic consume could fail for the first few times as kafka connect needs
|
||||
# to spawn the task and copy one message from the source topic. To solve this race condition
|
||||
# the retry should be implemented in bash for rpk topic consume or other mechanism that
|
||||
# can confirm source connectors started its execution. As a fast fix fixed 30 second fix is added.
|
||||
sleep 30
|
||||
|
||||
rpk topic consume source.test-topic -n 1 | grep "Test message!"
|
||||
|
||||
curl {{ template "curl-options" . }} -X DELETE http://{{ include "connectors.serviceName" . }}:{{ .Values.connectors.restPort }}/connectors/$CONNECTOR_NAME
|
||||
|
||||
curl {{ template "curl-options" . }} http://{{ include "connectors.serviceName" . }}:{{ .Values.connectors.restPort }}/connectors
|
||||
|
||||
rpk topic delete test-topic source.test-topic mm2-offset-syncs.test-only.internal
|
||||
volumeMounts:
|
||||
{{- if .Values.connectors.brokerTLS.ca.secretRef }}
|
||||
- mountPath: /redpanda-certs
|
||||
name: redpanda-ca
|
||||
{{- end }}
|
||||
{{- toYaml .Values.storage.volumeMounts | nindent 8 }}
|
||||
volumes:
|
||||
{{- if .Values.connectors.brokerTLS.ca.secretRef }}
|
||||
- name: redpanda-ca
|
||||
secret:
|
||||
defaultMode: 0444
|
||||
secretName: {{ .Values.connectors.brokerTLS.ca.secretRef }}
|
||||
{{- end }}
|
||||
{{- toYaml .Values.storage.volume | nindent 4 }}
|
||||
{{- end }}
|
|
@ -0,0 +1,313 @@
|
|||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# This file contains values for variables referenced from yaml files in the templates directory.
|
||||
#
|
||||
# For further information on Helm templating see the documentation at:
|
||||
# https://helm.sh/docs/chart_template_guide/values_files/
|
||||
|
||||
#
|
||||
# >>> This chart requires Helm version 3.6.0 or greater <<<
|
||||
#
|
||||
|
||||
# Common settings
|
||||
#
|
||||
# -- Override `connectors.name` template.
|
||||
nameOverride: ""
|
||||
# -- Override `connectors.fullname` template.
|
||||
fullnameOverride: ""
|
||||
# -- Additional labels to add to all Kubernetes objects.
|
||||
# For example, `my.k8s.service: redpanda`.
|
||||
commonLabels: {}
|
||||
# -- Taints to be tolerated by Pods.
|
||||
# For details,
|
||||
# see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/).
|
||||
tolerations: []
|
||||
|
||||
# -- Redpanda Docker image settings.
|
||||
image:
|
||||
# -- Docker repository from which to pull the Redpanda Docker image.
|
||||
repository: docker.redpanda.com/redpandadata/connectors
|
||||
# -- The Redpanda version.
|
||||
# See DockerHub for:
|
||||
# [All stable versions](https://hub.docker.com/r/redpandadata/redpanda/tags)
|
||||
# and [all unstable versions](https://hub.docker.com/r/redpandadata/redpanda-unstable/tags).
|
||||
# @default -- `Chart.appVersion`.
|
||||
tag: ""
|
||||
# -- The imagePullPolicy.
|
||||
# If `image.tag` is 'latest', the default is `Always`.
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
# -- Pull secrets may be used to provide credentials to image repositories
|
||||
# See https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
imagePullSecrets: []
|
||||
|
||||
test:
|
||||
create: true
|
||||
|
||||
connectors:
|
||||
# -- The port on which the Kafka Connect REST API listens. The API is used for administrative tasks.
|
||||
restPort: 8083
|
||||
# -- A comma-separated list of Redpanda broker addresses in the format of IP:Port or DNS:Port. Kafka Connect uses this to connect to the Redpanda/Kafka cluster.
|
||||
bootstrapServers: ""
|
||||
# A comma-separated list of Schema Registry addresses in the format IP:Port or DNS:Port. The Schema Registry is a service that manages the schemas used by producers and consumers.
|
||||
schemaRegistryURL: ""
|
||||
# -- A placeholder for any Java configuration settings for Kafka Connect that are not explicitly defined in this Helm chart. Java configuration settings are passed to the Kafka Connect startup script.
|
||||
additionalConfiguration: ""
|
||||
secretManager:
|
||||
enabled: false
|
||||
region: ""
|
||||
consolePrefix: ""
|
||||
connectorsPrefix: ""
|
||||
# -- The number of bytes of records a producer will attempt to batch together before sending to Redpanda. Batching improves throughput.
|
||||
producerBatchSize: 131072
|
||||
# -- The time, in milliseconds, that a producer will wait before sending a batch of records. Waiting allows the producer to gather more records in the same batch and improve throughput.
|
||||
producerLingerMS: 1
|
||||
storage:
|
||||
# -- The number of replicas for each of the internal topics that Kafka Connect uses.
|
||||
replicationFactor:
|
||||
# -- Replication factor for the offset topic.
|
||||
offset: -1
|
||||
# -- Replication factor for the configuration topic.
|
||||
config: -1
|
||||
# -- Replication factor for the status topic.
|
||||
status: -1
|
||||
# -- Indicates if read and write operations for the respective topics are allowed remotely.
|
||||
remote:
|
||||
read:
|
||||
offset: false
|
||||
config: false
|
||||
status: false
|
||||
write:
|
||||
offset: false
|
||||
config: false
|
||||
status: false
|
||||
topic:
|
||||
# -- The name of the internal topic that Kafka Connect uses to store source connector offsets.
|
||||
offset: _internal_connectors_offsets
|
||||
# -- The name of the internal topic that Kafka Connect uses to store connector and task configurations.
|
||||
config: _internal_connectors_configs
|
||||
# -- The name of the internal topic that Kafka Connect uses to store connector and task status updates.
|
||||
status: _internal_connectors_status
|
||||
# -- A unique string that identifies the Kafka Connect cluster. It's used in the formation of the internal topic names, ensuring that multiple Kafka Connect clusters can connect to the same Redpanda cluster without interfering with each other.
|
||||
groupID: connectors-cluster
|
||||
brokerTLS:
|
||||
enabled: false
|
||||
ca:
|
||||
# -- The name of the Secret where the ca.crt file content is located.
|
||||
secretRef: ""
|
||||
# -- If `secretRef` points to a Secret where the certificate authority (CA) is not under the
|
||||
# `ca.crt` key, use `secretNameOverwrite` to overwrite it e.g. `corp-ca.crt`.
|
||||
secretNameOverwrite: ""
|
||||
cert:
|
||||
# -- The name of the secret where client signed certificate is located
|
||||
secretRef: ""
|
||||
# -- If secretRef points to secret where client signed certificate is not under
|
||||
# tls.crt key then please use secretNameOverwrite to overwrite it e.g. corp-tls.crt
|
||||
secretNameOverwrite: ""
|
||||
key:
|
||||
# -- The name of the secret where client private key is located
|
||||
secretRef: ""
|
||||
# -- If secretRef points to secret where client private key is not under
|
||||
# tls.key key then please use secretNameOverwrite to overwrite it e.g. corp-tls.key
|
||||
secretNameOverwrite: ""
|
||||
|
||||
# -- Authentication settings.
|
||||
# For details,
|
||||
# see the [SASL documentation](https://docs.redpanda.com/docs/manage/kubernetes/security/sasl-kubernetes/).
|
||||
# The first line of the secret file is used. So the first superuser is used to authenticate to the Redpanda cluster.
|
||||
auth:
|
||||
sasl:
|
||||
enabled: false
|
||||
# -- The authentication mechanism to use for the superuser. Options are `scram-sha-256` and `scram-sha-512`.
|
||||
mechanism: scram-sha-512
|
||||
# -- A Secret that contains your SASL user password.
|
||||
secretRef: ""
|
||||
userName: ""
|
||||
|
||||
# -- Log-level settings.
|
||||
logging:
|
||||
# -- Log level
|
||||
# Valid values (from least to most verbose) are: `error`, `warn`, `info` and `debug`.
|
||||
level: warn
|
||||
|
||||
# -- Monitoring.
|
||||
# When set to `true`, the Helm chart creates a PodMonitor that can be used by Prometheus-Operator or VictoriaMetrics-Operator to scrape the metrics.
|
||||
monitoring:
|
||||
enabled: false
|
||||
scrapeInterval: 30s
|
||||
labels: {}
|
||||
annotations: {}
|
||||
namespaceSelector:
|
||||
any: true
|
||||
|
||||
container:
|
||||
#
|
||||
# -- Security context for the Redpanda Connectors container.
|
||||
# See also `deployment.securityContext` for Pod-level settings.
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
# -- Pod resource management.
|
||||
resources:
|
||||
request:
|
||||
# Numeric values here are also acceptable.
|
||||
cpu: "1"
|
||||
memory: 2350Mi
|
||||
limits:
|
||||
cpu: "1"
|
||||
memory: 2350Mi
|
||||
# -- Java maximum heap size must not be greater than `container.resources.limits.memory`.
|
||||
javaMaxHeapSize: 2G
|
||||
javaGCLogEnabled: "false"
|
||||
|
||||
deployment:
|
||||
# Replicas can be used to scale Deployment
|
||||
# replicas
|
||||
|
||||
create: true
|
||||
# Customize the command to use as the entrypoint of the Deployment.
|
||||
# command: []
|
||||
strategy:
|
||||
type: RollingUpdate
|
||||
schedulerName: ""
|
||||
budget:
|
||||
maxUnavailable: 1
|
||||
# -- Additional annotations to apply to the Pods of this Deployment.
|
||||
annotations: {}
|
||||
# -- Adjust the period for your probes to meet your needs.
|
||||
# For details,
|
||||
# see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes).
|
||||
livenessProbe:
|
||||
initialDelaySeconds: 10
|
||||
failureThreshold: 3
|
||||
periodSeconds: 10
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 1
|
||||
readinessProbe:
|
||||
initialDelaySeconds: 60
|
||||
failureThreshold: 2
|
||||
periodSeconds: 10
|
||||
successThreshold: 3
|
||||
timeoutSeconds: 5
|
||||
|
||||
# -- Additional environment variables for the Pods.
|
||||
extraEnv: []
|
||||
# - name: RACK_ID
|
||||
# value: "1"
|
||||
|
||||
# -- Configure extra environment variables from Secrets and ConfigMaps.
|
||||
extraEnvFrom: []
|
||||
# - secretRef:
|
||||
# name: my-secret
|
||||
# - configMapRef:
|
||||
# name: my-configmap
|
||||
|
||||
# -- The maximum time in seconds for a deployment to make progress before it is
|
||||
# considered to be failed. The deployment controller will continue to process
|
||||
# failed deployments and a condition with a ProgressDeadlineExceeded reason
|
||||
# will be surfaced in the deployment status. Note that progress will not be
|
||||
# estimated during the time a deployment is paused.
|
||||
progressDeadlineSeconds: 600
|
||||
|
||||
# -- The number of old ReplicaSets to retain to allow rollback. This is a pointer
|
||||
# to distinguish between explicit zero and not specified.
|
||||
revisionHistoryLimit: 10
|
||||
|
||||
# -- Inter-Pod Affinity rules for scheduling Pods of this Deployment.
|
||||
# For details,
|
||||
# see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#inter-pod-affinity-and-anti-affinity).
|
||||
podAffinity: {}
|
||||
# -- Node Affinity rules for scheduling Pods of this Deployment.
|
||||
# The suggestion would be to spread Pods according to topology zone.
|
||||
# For details,
|
||||
# see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity).
|
||||
nodeAffinity: {}
|
||||
# -- Anti-affinity rules for scheduling Pods of this Deployment.
|
||||
# For details,
|
||||
# see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#inter-pod-affinity-and-anti-affinity).
|
||||
# You may either edit the default settings for anti-affinity rules,
|
||||
# or specify new anti-affinity rules to use instead of the defaults.
|
||||
podAntiAffinity:
|
||||
# -- The `topologyKey` to be used.
|
||||
# Can be used to spread across different nodes, AZs, regions etc.
|
||||
topologyKey: kubernetes.io/hostname
|
||||
# -- Valid anti-affinity types are `soft`, `hard`, or `custom`.
|
||||
# Use `custom` if you want to supply your own anti-affinity rules in the `podAntiAffinity.custom` object.
|
||||
type: hard
|
||||
# -- Weight for `soft` anti-affinity rules.
|
||||
# Does not apply for other anti-affinity types.
|
||||
weight: 100
|
||||
# -- Change `podAntiAffinity.type` to `custom` and provide your own podAntiAffinity rules here.
|
||||
custom: {}
|
||||
# -- Node selection constraints for scheduling Pods of this Deployment.
|
||||
# These constraints override the global `nodeSelector` value.
|
||||
# For details,
|
||||
# see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector).
|
||||
nodeSelector: {}
|
||||
# -- PriorityClassName given to Pods of this Deployment.
|
||||
# For details,
|
||||
# see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass).
|
||||
priorityClassName: ""
|
||||
# -- Taints to be tolerated by Pods of this Deployment.
|
||||
# These tolerations override the global tolerations value.
|
||||
# For details,
|
||||
# see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/).
|
||||
tolerations: []
|
||||
# For details,
|
||||
# see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/).
|
||||
topologySpreadConstraints:
|
||||
- maxSkew: 1
|
||||
topologyKey: topology.kubernetes.io/zone
|
||||
whenUnsatisfiable: ScheduleAnyway
|
||||
securityContext:
|
||||
fsGroup: 101
|
||||
runAsUser: 101
|
||||
fsGroupChangePolicy: OnRootMismatch
|
||||
terminationGracePeriodSeconds: 30
|
||||
restartPolicy: Always
|
||||
|
||||
storage:
|
||||
volume:
|
||||
- emptyDir:
|
||||
medium: Memory
|
||||
sizeLimit: 5Mi
|
||||
name: rp-connect-tmp
|
||||
volumeMounts:
|
||||
- mountPath: /tmp
|
||||
name: rp-connect-tmp
|
||||
|
||||
# -- ServiceAccount management.
|
||||
serviceAccount:
|
||||
# -- Specifies whether a ServiceAccount should be created.
|
||||
create: false
|
||||
# -- Specifies whether a service account should automount API-Credentials
|
||||
automountServiceAccountToken: false
|
||||
# -- Annotations to add to the ServiceAccount.
|
||||
annotations: {}
|
||||
# -- The name of the ServiceAccount to use.
|
||||
# If not set and `serviceAccount.create` is `true`,
|
||||
# a name is generated using the `connectors.fullname` template.
|
||||
name: ""
|
||||
|
||||
# -- Service management.
|
||||
service:
|
||||
# -- Annotations to add to the Service.
|
||||
annotations: {}
|
||||
# -- The name of the service to use.
|
||||
# If not set, a name is generated using the `connectors.fullname` template.
|
||||
name: ""
|
||||
ports:
|
||||
- name: prometheus
|
||||
port: 9404
|
|
@ -0,0 +1,28 @@
|
|||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
README.md.gotmpl
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
|
||||
*.go
|
||||
testdata/
|
||||
ci/
|
|
@ -0,0 +1,23 @@
|
|||
annotations:
|
||||
artifacthub.io/images: |
|
||||
- name: redpanda
|
||||
image: docker.redpanda.com/redpandadata/console:v2.7.2
|
||||
artifacthub.io/license: Apache-2.0
|
||||
artifacthub.io/links: |
|
||||
- name: Documentation
|
||||
url: https://docs.redpanda.com
|
||||
- name: "Helm (>= 3.6.0)"
|
||||
url: https://helm.sh/docs/intro/install/
|
||||
apiVersion: v2
|
||||
appVersion: v2.7.2
|
||||
description: Helm chart to deploy Redpanda Console.
|
||||
icon: https://images.ctfassets.net/paqvtpyf8rwu/3cYHw5UzhXCbKuR24GDFGO/73fb682e6157d11c10d5b2b5da1d5af0/skate-stand-panda.svg
|
||||
kubeVersion: '>= 1.25.0-0'
|
||||
maintainers:
|
||||
- name: redpanda-data
|
||||
url: https://github.com/orgs/redpanda-data/people
|
||||
name: console
|
||||
sources:
|
||||
- https://github.com/redpanda-data/helm-charts
|
||||
type: application
|
||||
version: 0.7.30
|
|
@ -0,0 +1,353 @@
|
|||
# Redpanda Console Helm Chart Specification
|
||||
---
|
||||
description: Find the default values and descriptions of settings in the Redpanda Console Helm chart.
|
||||
---
|
||||
|
||||
![Version: 0.7.30](https://img.shields.io/badge/Version-0.7.30-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v2.7.2](https://img.shields.io/badge/AppVersion-v2.7.2-informational?style=flat-square)
|
||||
|
||||
This page describes the official Redpanda Console Helm Chart. In particular, this page describes the contents of the chart’s [`values.yaml` file](https://github.com/redpanda-data/helm-charts/blob/main/charts/console/values.yaml).
|
||||
Each of the settings is listed and described on this page, along with any default values.
|
||||
|
||||
The Redpanda Console Helm chart is included as a subchart in the Redpanda Helm chart so that you can deploy and configure Redpanda and Redpanda Console together.
|
||||
For instructions on how to install and use the chart, refer to the [deployment documentation](https://docs.redpanda.com/docs/deploy/deployment-option/self-hosted/kubernetes/kubernetes-deploy/).
|
||||
For instructions on how to override and customize the chart’s values, see [Configure Redpanda Console](https://docs.redpanda.com/docs/manage/kubernetes/configure-helm-chart/#configure-redpanda-console).
|
||||
|
||||
----------------------------------------------
|
||||
Autogenerated from chart metadata using [helm-docs v1.13.1](https://github.com/norwoodj/helm-docs/releases/v1.13.1)
|
||||
|
||||
## Source Code
|
||||
|
||||
* <https://github.com/redpanda-data/helm-charts>
|
||||
|
||||
## Requirements
|
||||
|
||||
Kubernetes: `>= 1.25.0-0`
|
||||
|
||||
## Settings
|
||||
|
||||
### [affinity](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=affinity)
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [annotations](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=annotations)
|
||||
|
||||
Annotations to add to the deployment.
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [automountServiceAccountToken](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=automountServiceAccountToken)
|
||||
|
||||
Automount API credentials for the Service Account into the pod.
|
||||
|
||||
**Default:** `true`
|
||||
|
||||
### [autoscaling.enabled](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=autoscaling.enabled)
|
||||
|
||||
**Default:** `false`
|
||||
|
||||
### [autoscaling.maxReplicas](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=autoscaling.maxReplicas)
|
||||
|
||||
**Default:** `100`
|
||||
|
||||
### [autoscaling.minReplicas](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=autoscaling.minReplicas)
|
||||
|
||||
**Default:** `1`
|
||||
|
||||
### [autoscaling.targetCPUUtilizationPercentage](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=autoscaling.targetCPUUtilizationPercentage)
|
||||
|
||||
**Default:** `80`
|
||||
|
||||
### [commonLabels](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=commonLabels)
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [configmap.create](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=configmap.create)
|
||||
|
||||
**Default:** `true`
|
||||
|
||||
### [console.config](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=console.config)
|
||||
|
||||
Settings for the `Config.yaml` (required). For a reference of configuration settings, see the [Redpanda Console documentation](https://docs.redpanda.com/docs/reference/console/config/).
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [deployment.create](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=deployment.create)
|
||||
|
||||
**Default:** `true`
|
||||
|
||||
### [enterprise](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=enterprise)
|
||||
|
||||
Settings for license key, as an alternative to secret.enterprise when a license secret is available
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
{"licenseSecretRef":{"key":"","name":""}}
|
||||
```
|
||||
|
||||
### [extraContainers](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=extraContainers)
|
||||
|
||||
Add additional containers, such as for oauth2-proxy.
|
||||
|
||||
**Default:** `[]`
|
||||
|
||||
### [extraEnv](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=extraEnv)
|
||||
|
||||
Additional environment variables for the Redpanda Console Deployment.
|
||||
|
||||
**Default:** `[]`
|
||||
|
||||
### [extraEnvFrom](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=extraEnvFrom)
|
||||
|
||||
Additional environment variables for Redpanda Console mapped from Secret or ConfigMap.
|
||||
|
||||
**Default:** `[]`
|
||||
|
||||
### [extraVolumeMounts](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=extraVolumeMounts)
|
||||
|
||||
Add additional volume mounts, such as for TLS keys.
|
||||
|
||||
**Default:** `[]`
|
||||
|
||||
### [extraVolumes](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=extraVolumes)
|
||||
|
||||
Add additional volumes, such as for TLS keys.
|
||||
|
||||
**Default:** `[]`
|
||||
|
||||
### [fullnameOverride](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=fullnameOverride)
|
||||
|
||||
Override `console.fullname` template.
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [image](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=image)
|
||||
|
||||
Redpanda Console Docker image settings.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
{"pullPolicy":"IfNotPresent","registry":"docker.redpanda.com","repository":"redpandadata/console","tag":""}
|
||||
```
|
||||
|
||||
### [image.pullPolicy](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=image.pullPolicy)
|
||||
|
||||
The imagePullPolicy.
|
||||
|
||||
**Default:** `"IfNotPresent"`
|
||||
|
||||
### [image.repository](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=image.repository)
|
||||
|
||||
Docker repository from which to pull the Redpanda Docker image.
|
||||
|
||||
**Default:** `"redpandadata/console"`
|
||||
|
||||
### [image.tag](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=image.tag)
|
||||
|
||||
The Redpanda Console version. See DockerHub for: [All stable versions](https://hub.docker.com/r/redpandadata/console/tags) and [all unstable versions](https://hub.docker.com/r/redpandadata/console-unstable/tags).
|
||||
|
||||
**Default:** `Chart.appVersion`
|
||||
|
||||
### [imagePullSecrets](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=imagePullSecrets)
|
||||
|
||||
Pull secrets may be used to provide credentials to image repositories See https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
|
||||
**Default:** `[]`
|
||||
|
||||
### [ingress.annotations](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=ingress.annotations)
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [ingress.className](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=ingress.className)
|
||||
|
||||
**Default:** `nil`
|
||||
|
||||
### [ingress.enabled](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=ingress.enabled)
|
||||
|
||||
**Default:** `false`
|
||||
|
||||
### [ingress.hosts[0].host](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=ingress.hosts[0].host)
|
||||
|
||||
**Default:** `"chart-example.local"`
|
||||
|
||||
### [ingress.hosts[0].paths[0].path](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=ingress.hosts[0].paths[0].path)
|
||||
|
||||
**Default:** `"/"`
|
||||
|
||||
### [ingress.hosts[0].paths[0].pathType](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=ingress.hosts[0].paths[0].pathType)
|
||||
|
||||
**Default:** `"ImplementationSpecific"`
|
||||
|
||||
### [ingress.tls](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=ingress.tls)
|
||||
|
||||
**Default:** `[]`
|
||||
|
||||
### [initContainers](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=initContainers)
|
||||
|
||||
Any initContainers defined should be written here
|
||||
|
||||
**Default:** `{"extraInitContainers":""}`
|
||||
|
||||
### [initContainers.extraInitContainers](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=initContainers.extraInitContainers)
|
||||
|
||||
Additional set of init containers
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [livenessProbe](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=livenessProbe)
|
||||
|
||||
Settings for liveness and readiness probes. For details, see the [Kubernetes documentation](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes).
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
{"failureThreshold":3,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}
|
||||
```
|
||||
|
||||
### [nameOverride](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=nameOverride)
|
||||
|
||||
Override `console.name` template.
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [nodeSelector](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=nodeSelector)
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [podAnnotations](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=podAnnotations)
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [podLabels](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=podLabels)
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [podSecurityContext.fsGroup](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=podSecurityContext.fsGroup)
|
||||
|
||||
**Default:** `99`
|
||||
|
||||
### [podSecurityContext.runAsUser](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=podSecurityContext.runAsUser)
|
||||
|
||||
**Default:** `99`
|
||||
|
||||
### [priorityClassName](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=priorityClassName)
|
||||
|
||||
PriorityClassName given to Pods. For details, see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass).
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [readinessProbe.failureThreshold](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=readinessProbe.failureThreshold)
|
||||
|
||||
**Default:** `3`
|
||||
|
||||
### [readinessProbe.initialDelaySeconds](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=readinessProbe.initialDelaySeconds)
|
||||
|
||||
Grant time to test connectivity to upstream services such as Kafka and Schema Registry.
|
||||
|
||||
**Default:** `10`
|
||||
|
||||
### [readinessProbe.periodSeconds](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=readinessProbe.periodSeconds)
|
||||
|
||||
**Default:** `10`
|
||||
|
||||
### [readinessProbe.successThreshold](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=readinessProbe.successThreshold)
|
||||
|
||||
**Default:** `1`
|
||||
|
||||
### [readinessProbe.timeoutSeconds](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=readinessProbe.timeoutSeconds)
|
||||
|
||||
**Default:** `1`
|
||||
|
||||
### [replicaCount](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=replicaCount)
|
||||
|
||||
**Default:** `1`
|
||||
|
||||
### [resources](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=resources)
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [secret](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=secret)
|
||||
|
||||
Create a new Kubernetes Secret for all sensitive configuration inputs. Each provided Secret is mounted automatically and made available to the Pod. If you want to use one or more existing Secrets, you can use the `extraEnvFrom` list to mount environment variables from string and secretMounts to mount files such as Certificates from Secrets.
|
||||
|
||||
**Default:**
|
||||
|
||||
```
|
||||
{"create":true,"enterprise":{},"kafka":{},"login":{"github":{},"google":{},"jwtSecret":"","oidc":{},"okta":{}},"redpanda":{"adminApi":{}}}
|
||||
```
|
||||
|
||||
### [secret.kafka](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=secret.kafka)
|
||||
|
||||
Kafka Secrets.
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [secretMounts](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=secretMounts)
|
||||
|
||||
SecretMounts is an abstraction to make a Secret available in the container's filesystem. Under the hood it creates a volume and a volume mount for the Redpanda Console container.
|
||||
|
||||
**Default:** `[]`
|
||||
|
||||
### [securityContext.runAsNonRoot](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=securityContext.runAsNonRoot)
|
||||
|
||||
**Default:** `true`
|
||||
|
||||
### [service.annotations](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=service.annotations)
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [service.port](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=service.port)
|
||||
|
||||
**Default:** `8080`
|
||||
|
||||
### [service.targetPort](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=service.targetPort)
|
||||
|
||||
Override the value in `console.config.server.listenPort` if not `nil`
|
||||
|
||||
**Default:** `nil`
|
||||
|
||||
### [service.type](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=service.type)
|
||||
|
||||
**Default:** `"ClusterIP"`
|
||||
|
||||
### [serviceAccount.annotations](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=serviceAccount.annotations)
|
||||
|
||||
Annotations to add to the service account.
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [serviceAccount.automountServiceAccountToken](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=serviceAccount.automountServiceAccountToken)
|
||||
|
||||
Specifies whether a service account should automount API-Credentials
|
||||
|
||||
**Default:** `true`
|
||||
|
||||
### [serviceAccount.create](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=serviceAccount.create)
|
||||
|
||||
Specifies whether a service account should be created.
|
||||
|
||||
**Default:** `true`
|
||||
|
||||
### [serviceAccount.name](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=serviceAccount.name)
|
||||
|
||||
The name of the service account to use. If not set and `serviceAccount.create` is `true`, a name is generated using the `console.fullname` template
|
||||
|
||||
**Default:** `""`
|
||||
|
||||
### [strategy](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=strategy)
|
||||
|
||||
**Default:** `{}`
|
||||
|
||||
### [tests.enabled](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=tests.enabled)
|
||||
|
||||
**Default:** `true`
|
||||
|
||||
### [tolerations](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=tolerations)
|
||||
|
||||
**Default:** `[]`
|
||||
|
||||
### [topologySpreadConstraints](https://artifacthub.io/packages/helm/redpanda-data/console?modal=values&path=topologySpreadConstraints)
|
||||
|
||||
**Default:** `[]`
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
image:
|
||||
tag: master-8fcce39
|
||||
|
||||
resources:
|
||||
limits:
|
||||
cpu: 1
|
||||
memory: 2Gi
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 512Mi
|
||||
|
||||
console:
|
||||
config:
|
||||
kafka:
|
||||
brokers:
|
||||
- bootstrap.mybrokers.com:9092
|
||||
clientId: redpanda-console
|
||||
sasl:
|
||||
enabled: true
|
||||
mechanism: SCRAM-SHA-256
|
||||
username: console
|
||||
# password: set via Helm secret / Env variable
|
||||
tls:
|
||||
enabled: false
|
||||
login:
|
||||
google:
|
||||
enabled: true
|
||||
clientId: redacted.apps.googleusercontent.com
|
||||
# clientSecret: set via Helm secret / Env variable
|
||||
directory:
|
||||
# serviceAccountFilepath: set via Helm secret / Env variable
|
||||
targetPrincipal: admin@mycompany.com
|
||||
enterprise:
|
||||
rbac:
|
||||
enabled: true
|
||||
roleBindingsFilepath: /etc/console/configs/role-bindings.yaml
|
||||
roleBindings:
|
||||
- roleName: viewer
|
||||
metadata:
|
||||
# Metadata properties will be shown in the UI. You can omit it if you want to
|
||||
name: Developers
|
||||
subjects:
|
||||
# You can specify all groups or users from different providers here which shall be bound to the same role
|
||||
- kind: group
|
||||
provider: Google
|
||||
name: engineering@mycompany.com
|
||||
- kind: user
|
||||
provider: Google
|
||||
name: singleuser@mycompany.com
|
||||
- roleName: admin
|
||||
metadata:
|
||||
name: Admin
|
||||
subjects:
|
||||
- kind: user
|
||||
provider: Google
|
||||
name: adminperson@mycompany.com
|
||||
|
||||
secret:
|
||||
create: true
|
||||
kafka:
|
||||
saslPassword: "redacted"
|
||||
enterprise:
|
||||
license: "redacted"
|
||||
login:
|
||||
google:
|
||||
clientSecret: "redacted"
|
||||
groupsServiceAccount: |
|
||||
{
|
||||
"type": "service_account",
|
||||
"project_id": "redacted",
|
||||
"private_key_id": "redacted",
|
||||
"private_key": "-----BEGIN PRIVATE KEY-----\nREDACTED\n-----END PRIVATE KEY-----\n",
|
||||
"client_email": "redacted@projectid.iam.gserviceaccount.com",
|
||||
"client_id": "redacted",
|
||||
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
||||
"token_uri": "https://oauth2.googleapis.com/token",
|
||||
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
||||
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/redacted.iam.gserviceaccount.com"
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- $notes := (get ((include "console.Notes" (dict "a" (list .))) | fromJson) "r") -}}
|
||||
{{- range $_, $note := $notes }}
|
||||
{{ $note }}
|
||||
{{- end }}
|
|
@ -0,0 +1,13 @@
|
|||
{{- /* Generated from "chart.go" */ -}}
|
||||
|
||||
{{- define "console.render" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $manifests := (list (get (fromJson (include "console.ServiceAccount" (dict "a" (list $dot) ))) "r") (get (fromJson (include "console.Secret" (dict "a" (list $dot) ))) "r") (get (fromJson (include "console.ConfigMap" (dict "a" (list $dot) ))) "r") (get (fromJson (include "console.Service" (dict "a" (list $dot) ))) "r") (get (fromJson (include "console.Ingress" (dict "a" (list $dot) ))) "r") (get (fromJson (include "console.Deployment" (dict "a" (list $dot) ))) "r") (get (fromJson (include "console.HorizontalPodAutoscaler" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $manifests) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
{{- /* Generated from "configmap.go" */ -}}
|
||||
|
||||
{{- define "console.ConfigMap" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.configmap.create) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $data := (dict "config.yaml" (printf "# from .Values.console.config\n%s\n" (tpl (toYaml $values.console.config) $dot)) ) -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $values.console.roles) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $_ := (set $data "roles.yaml" (tpl (toYaml (dict "roles" $values.console.roles )) $dot)) -}}
|
||||
{{- end -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $values.console.roleBindings) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $_ := (set $data "role-bindings.yaml" (tpl (toYaml (dict "roleBindings" $values.console.roleBindings )) $dot)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "v1" "kind" "ConfigMap" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "console.Fullname" (dict "a" (list $dot) ))) "r") "labels" (get (fromJson (include "console.Labels" (dict "a" (list $dot) ))) "r") )) "data" $data ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,82 @@
|
|||
{{- /* Generated from "helpers.go" */ -}}
|
||||
|
||||
{{- define "console.Name" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $name := (default $dot.Chart.Name $values.nameOverride) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "console.cleanForK8s" (dict "a" (list $name) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "console.Fullname" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (ne $values.fullnameOverride "") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "console.cleanForK8s" (dict "a" (list $values.fullnameOverride) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $name := (default $dot.Chart.Name $values.nameOverride) -}}
|
||||
{{- if (contains $name $dot.Release.Name) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "console.cleanForK8s" (dict "a" (list $dot.Release.Name) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "console.cleanForK8s" (dict "a" (list (printf "%s-%s" $dot.Release.Name $name)) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "console.ChartLabel" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $chart := (printf "%s-%s" $dot.Chart.Name $dot.Chart.Version) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "console.cleanForK8s" (dict "a" (list (replace "+" "_" $chart)) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "console.Labels" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $labels := (dict "helm.sh/chart" (get (fromJson (include "console.ChartLabel" (dict "a" (list $dot) ))) "r") "app.kubernetes.io/managed-by" $dot.Release.Service ) -}}
|
||||
{{- if (ne $dot.Chart.AppVersion "") -}}
|
||||
{{- $_ := (set $labels "app.kubernetes.io/version" $dot.Chart.AppVersion) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (merge (dict ) $labels (get (fromJson (include "console.SelectorLabels" (dict "a" (list $dot) ))) "r") $values.commonLabels)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "console.SelectorLabels" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (dict "app.kubernetes.io/name" (get (fromJson (include "console.Name" (dict "a" (list $dot) ))) "r") "app.kubernetes.io/instance" $dot.Release.Name )) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "console.cleanForK8s" -}}
|
||||
{{- $s := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (trimSuffix "-" (trunc (63 | int) $s))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
{{/*
|
||||
Expand the name of the chart.
|
||||
Used by tests/test-connection.yaml
|
||||
*/}}
|
||||
{{- define "console.name" -}}
|
||||
{{- get ((include "console.Name" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
Used by tests/test-connection.yaml
|
||||
*/}}
|
||||
{{- define "console.fullname" -}}
|
||||
{{- get ((include "console.Fullname" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
Used by tests/test-connection.yaml
|
||||
*/}}
|
||||
{{- define "console.labels" -}}
|
||||
{{- (get ((include "console.Labels" (dict "a" (list .))) | fromJson) "r") | toYaml -}}
|
||||
{{- end }}
|
|
@ -0,0 +1,25 @@
|
|||
{{- /* Generated from "hpa.go" */ -}}
|
||||
|
||||
{{- define "console.HorizontalPodAutoscaler" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.autoscaling.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $metrics := (list ) -}}
|
||||
{{- if (ne (toJson $values.autoscaling.targetCPUUtilizationPercentage) "null") -}}
|
||||
{{- $metrics = (concat (default (list ) $metrics) (list (mustMergeOverwrite (dict "type" "" ) (dict "type" "Resource" "resource" (mustMergeOverwrite (dict "name" "" "target" (dict "type" "" ) ) (dict "name" "cpu" "target" (mustMergeOverwrite (dict "type" "" ) (dict "type" "Utilization" "averageUtilization" $values.autoscaling.targetCPUUtilizationPercentage )) )) )))) -}}
|
||||
{{- end -}}
|
||||
{{- if (ne (toJson $values.autoscaling.targetMemoryUtilizationPercentage) "null") -}}
|
||||
{{- $metrics = (concat (default (list ) $metrics) (list (mustMergeOverwrite (dict "type" "" ) (dict "type" "Resource" "resource" (mustMergeOverwrite (dict "name" "" "target" (dict "type" "" ) ) (dict "name" "memory" "target" (mustMergeOverwrite (dict "type" "" ) (dict "type" "Utilization" "averageUtilization" $values.autoscaling.targetMemoryUtilizationPercentage )) )) )))) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "scaleTargetRef" (dict "kind" "" "name" "" ) "maxReplicas" 0 ) "status" (dict "desiredReplicas" 0 "currentMetrics" (coalesce nil) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "autoscaling/v2" "kind" "HorizontalPodAutoscaler" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "console.Fullname" (dict "a" (list $dot) ))) "r") "labels" (get (fromJson (include "console.Labels" (dict "a" (list $dot) ))) "r") )) "spec" (mustMergeOverwrite (dict "scaleTargetRef" (dict "kind" "" "name" "" ) "maxReplicas" 0 ) (dict "scaleTargetRef" (mustMergeOverwrite (dict "kind" "" "name" "" ) (dict "apiVersion" "apps/v1" "kind" "Deployment" "name" (get (fromJson (include "console.Fullname" (dict "a" (list $dot) ))) "r") )) "minReplicas" ($values.autoscaling.minReplicas | int) "maxReplicas" ($values.autoscaling.maxReplicas | int) "metrics" $metrics )) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
{{- /* Generated from "ingress.go" */ -}}
|
||||
|
||||
{{- define "console.Ingress" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.ingress.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $tls := (coalesce nil) -}}
|
||||
{{- range $_, $t := $values.ingress.tls -}}
|
||||
{{- $hosts := (coalesce nil) -}}
|
||||
{{- range $_, $host := $t.hosts -}}
|
||||
{{- $hosts = (concat (default (list ) $hosts) (list (tpl $host $dot))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $tls = (concat (default (list ) $tls) (list (mustMergeOverwrite (dict ) (dict "secretName" $t.secretName "hosts" $hosts )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $rules := (coalesce nil) -}}
|
||||
{{- range $_, $host := $values.ingress.hosts -}}
|
||||
{{- $paths := (coalesce nil) -}}
|
||||
{{- range $_, $path := $host.paths -}}
|
||||
{{- $paths = (concat (default (list ) $paths) (list (mustMergeOverwrite (dict "pathType" (coalesce nil) "backend" (dict ) ) (dict "path" $path.path "pathType" $path.pathType "backend" (mustMergeOverwrite (dict ) (dict "service" (mustMergeOverwrite (dict "name" "" "port" (dict ) ) (dict "name" (get (fromJson (include "console.Fullname" (dict "a" (list $dot) ))) "r") "port" (mustMergeOverwrite (dict ) (dict "number" ($values.service.port | int) )) )) )) )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $rules = (concat (default (list ) $rules) (list (mustMergeOverwrite (dict ) (mustMergeOverwrite (dict ) (dict "http" (mustMergeOverwrite (dict "paths" (coalesce nil) ) (dict "paths" $paths )) )) (dict "host" (tpl $host.host $dot) )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict ) "status" (dict "loadBalancer" (dict ) ) ) (mustMergeOverwrite (dict ) (dict "kind" "Ingress" "apiVersion" "networking.k8s.io/v1" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "console.Fullname" (dict "a" (list $dot) ))) "r") "labels" (get (fromJson (include "console.Labels" (dict "a" (list $dot) ))) "r") "annotations" $values.ingress.annotations )) "spec" (mustMergeOverwrite (dict ) (dict "ingressClassName" $values.ingress.className "tls" $tls "rules" $rules )) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
{{- /* Generated from "notes.go" */ -}}
|
||||
|
||||
{{- define "console.Notes" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $commands := (list `1. Get the application URL by running these commands:`) -}}
|
||||
{{- if $values.ingress.enabled -}}
|
||||
{{- $scheme := "http" -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $values.ingress.tls) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $scheme = "https" -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $host := $values.ingress.hosts -}}
|
||||
{{- range $_, $path := $host.paths -}}
|
||||
{{- $commands = (concat (default (list ) $commands) (list (printf "%s://%s%s" $scheme $host.host $path.path))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- else -}}{{- if (contains "NodePort" (toString $values.service.type)) -}}
|
||||
{{- $commands = (concat (default (list ) $commands) (list (printf ` export NODE_PORT=$(kubectl get --namespace %s -o jsonpath="{.spec.ports[0].nodePort}" services %s)` $dot.Release.Namespace (get (fromJson (include "console.Fullname" (dict "a" (list $dot) ))) "r")) (printf ` export NODE_IP=$(kubectl get nodes --namespace %s -o jsonpath="{.items[0].status.addresses[0].address}")` $dot.Release.Namespace) " echo http://$NODE_IP:$NODE_PORT")) -}}
|
||||
{{- else -}}{{- if (contains "NodePort" (toString $values.service.type)) -}}
|
||||
{{- $commands = (concat (default (list ) $commands) (list ` NOTE: It may take a few minutes for the LoadBalancer IP to be available.` (printf ` You can watch the status of by running 'kubectl get --namespace %s svc -w %s'` $dot.Release.Namespace (get (fromJson (include "console.Fullname" (dict "a" (list $dot) ))) "r")) (printf ` export SERVICE_IP=$(kubectl get svc --namespace %s %s --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")` $dot.Release.Namespace (get (fromJson (include "console.Fullname" (dict "a" (list $dot) ))) "r")) (printf ` echo http://$SERVICE_IP:%d` ($values.service.port | int)))) -}}
|
||||
{{- else -}}{{- if (contains "ClusterIP" (toString $values.service.type)) -}}
|
||||
{{- $commands = (concat (default (list ) $commands) (list (printf ` export POD_NAME=$(kubectl get pods --namespace %s -l "app.kubernetes.io/name=%s,app.kubernetes.io/instance=%s" -o jsonpath="{.items[0].metadata.name}")` $dot.Release.Namespace (get (fromJson (include "console.Name" (dict "a" (list $dot) ))) "r") $dot.Release.Name) (printf ` export CONTAINER_PORT=$(kubectl get pod --namespace %s $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")` $dot.Release.Namespace) ` echo "Visit http://127.0.0.1:8080 to use your application"` (printf ` kubectl --namespace %s port-forward $POD_NAME 8080:$CONTAINER_PORT` $dot.Release.Namespace))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $commands) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
{{- /* Generated from "secret.go" */ -}}
|
||||
|
||||
{{- define "console.Secret" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.secret.create) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $jwtSecret := $values.secret.login.jwtSecret -}}
|
||||
{{- if (eq $jwtSecret "") -}}
|
||||
{{- $jwtSecret = (randAlphaNum (32 | int)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "v1" "kind" "Secret" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "console.Fullname" (dict "a" (list $dot) ))) "r") "labels" (get (fromJson (include "console.Labels" (dict "a" (list $dot) ))) "r") )) "type" "Opaque" "stringData" (dict "kafka-sasl-password" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.kafka.saslPassword "") ))) "r") "kafka-protobuf-git-basicauth-password" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.kafka.protobufGitBasicAuthPassword "") ))) "r") "kafka-sasl-aws-msk-iam-secret-key" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.kafka.awsMskIamSecretKey "") ))) "r") "kafka-tls-ca" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.kafka.tlsCa "") ))) "r") "kafka-tls-cert" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.kafka.tlsCert "") ))) "r") "kafka-tls-key" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.kafka.tlsKey "") ))) "r") "kafka-schema-registry-password" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.kafka.schemaRegistryPassword "") ))) "r") "kafka-schemaregistry-tls-ca" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.kafka.schemaRegistryTlsCa "") ))) "r") "kafka-schemaregistry-tls-cert" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.kafka.schemaRegistryTlsCert "") ))) "r") "kafka-schemaregistry-tls-key" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.kafka.schemaRegistryTlsKey "") ))) "r") "login-jwt-secret" $jwtSecret "login-google-oauth-client-secret" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.login.google.clientSecret "") ))) "r") "login-google-groups-service-account.json" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.login.google.groupsServiceAccount "") ))) "r") "login-github-oauth-client-secret" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.login.github.clientSecret "") ))) "r") "login-github-personal-access-token" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.login.github.personalAccessToken "") ))) "r") "login-okta-client-secret" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.login.okta.clientSecret "") ))) "r") "login-okta-directory-api-token" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.login.okta.directoryApiToken "") ))) "r") "login-oidc-client-secret" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.login.oidc.clientSecret "") ))) "r") "enterprise-license" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.enterprise.license "") ))) "r") "redpanda-admin-api-password" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.redpanda.adminApi.password "") ))) "r") "redpanda-admin-api-tls-ca" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.redpanda.adminApi.tlsCa "") ))) "r") "redpanda-admin-api-tls-cert" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.redpanda.adminApi.tlsCert "") ))) "r") "redpanda-admin-api-tls-key" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.secret.redpanda.adminApi.tlsKey "") ))) "r") ) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
{{- /* Generated from "service.go" */ -}}
|
||||
|
||||
{{- define "console.Service" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $port := (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" "http" "port" (($values.service.port | int) | int) "protocol" "TCP" )) -}}
|
||||
{{- if (ne (toJson $values.service.targetPort) "null") -}}
|
||||
{{- $_ := (set $port "targetPort" $values.service.targetPort) -}}
|
||||
{{- end -}}
|
||||
{{- if (and (contains "NodePort" (toString $values.service.type)) (ne (toJson $values.service.nodePort) "null")) -}}
|
||||
{{- $_ := (set $port "nodePort" $values.service.nodePort) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict ) "status" (dict "loadBalancer" (dict ) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "v1" "kind" "Service" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "console.Fullname" (dict "a" (list $dot) ))) "r") "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "console.Labels" (dict "a" (list $dot) ))) "r") "annotations" $values.service.annotations )) "spec" (mustMergeOverwrite (dict ) (dict "type" $values.service.type "selector" (get (fromJson (include "console.SelectorLabels" (dict "a" (list $dot) ))) "r") "ports" (list $port) )) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
{{- /* Generated from "serviceaccount.go" */ -}}
|
||||
|
||||
{{- define "console.ServiceAccountName" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if $values.serviceAccount.create -}}
|
||||
{{- if (ne $values.serviceAccount.name "") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $values.serviceAccount.name) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "console.Fullname" (dict "a" (list $dot) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (default "default" $values.serviceAccount.name)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "console.ServiceAccount" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.serviceAccount.create) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) ) (mustMergeOverwrite (dict ) (dict "kind" "ServiceAccount" "apiVersion" "v1" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "console.ServiceAccountName" (dict "a" (list $dot) ))) "r") "labels" (get (fromJson (include "console.Labels" (dict "a" (list $dot) ))) "r") "namespace" $dot.Release.Namespace "annotations" $values.serviceAccount.annotations )) "automountServiceAccountToken" $values.serviceAccount.automountServiceAccountToken ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,289 @@
|
|||
{{- /* Generated from "bootstrap.go" */ -}}
|
||||
|
||||
{{- define "_shims.typetest" -}}
|
||||
{{- $typ := (index .a 0) -}}
|
||||
{{- $value := (index .a 1) -}}
|
||||
{{- $zero := (index .a 2) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (typeIs $typ $value) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $zero false)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.typeassertion" -}}
|
||||
{{- $typ := (index .a 0) -}}
|
||||
{{- $value := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (not (typeIs $typ $value)) -}}
|
||||
{{- $_ := (fail (printf "expected type of %q got: %T" $typ $value)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $value) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.dicttest" -}}
|
||||
{{- $m := (index .a 0) -}}
|
||||
{{- $key := (index .a 1) -}}
|
||||
{{- $zero := (index .a 2) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (hasKey $m $key) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (index $m $key) true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $zero false)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.compact" -}}
|
||||
{{- $args := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $out := (dict ) -}}
|
||||
{{- range $i, $e := $args -}}
|
||||
{{- $_ := (set $out (printf "T%d" ((add (1 | int) $i) | int)) $e) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $out) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.deref" -}}
|
||||
{{- $ptr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (eq (toJson $ptr) "null") -}}
|
||||
{{- $_ := (fail "nil dereference") -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $ptr) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.len" -}}
|
||||
{{- $m := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (eq (toJson $m) "null") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (0 | int)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (len $m)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.ptr_Deref" -}}
|
||||
{{- $ptr := (index .a 0) -}}
|
||||
{{- $def := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (ne (toJson $ptr) "null") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $ptr) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $def) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.ptr_Equal" -}}
|
||||
{{- $a := (index .a 0) -}}
|
||||
{{- $b := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (and (eq (toJson $a) "null") (eq (toJson $b) "null")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" true) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (eq $a $b)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.lookup" -}}
|
||||
{{- $apiVersion := (index .a 0) -}}
|
||||
{{- $kind := (index .a 1) -}}
|
||||
{{- $namespace := (index .a 2) -}}
|
||||
{{- $name := (index .a 3) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $result := (lookup $apiVersion $kind $namespace $name) -}}
|
||||
{{- if (empty $result) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (coalesce nil) false)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $result true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.asnumeric" -}}
|
||||
{{- $value := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (typeIs "float64" $value) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (typeIs "int64" $value) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (typeIs "int" $value) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (0 | int) false)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.asintegral" -}}
|
||||
{{- $value := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (or (typeIs "int64" $value) (typeIs "int" $value)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (and (typeIs "float64" $value) (eq (floor $value) $value)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (0 | int) false)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.parseResource" -}}
|
||||
{{- $repr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (typeIs "float64" $repr) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (float64 $repr) 1.0)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (not (typeIs "string" $repr)) -}}
|
||||
{{- $_ := (fail (printf "invalid Quantity expected string or float64 got: %T (%v)" $repr $repr)) -}}
|
||||
{{- end -}}
|
||||
{{- if (not (regexMatch `^[0-9]+(\.[0-9]{0,6})?(k|m|M|G|T|P|Ki|Mi|Gi|Ti|Pi)?$` $repr)) -}}
|
||||
{{- $_ := (fail (printf "invalid Quantity: %q" $repr)) -}}
|
||||
{{- end -}}
|
||||
{{- $reprStr := (toString $repr) -}}
|
||||
{{- $unit := (regexFind "(k|m|M|G|T|P|Ki|Mi|Gi|Ti|Pi)$" $repr) -}}
|
||||
{{- $numeric := (float64 (substr (0 | int) ((sub ((get (fromJson (include "_shims.len" (dict "a" (list $reprStr) ))) "r") | int) ((get (fromJson (include "_shims.len" (dict "a" (list $unit) ))) "r") | int)) | int) $reprStr)) -}}
|
||||
{{- $tmp_tuple_1 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.dicttest" (dict "a" (list (dict "" 1.0 "m" 0.001 "k" (1000 | int) "M" (1000000 | int) "G" (1000000000 | int) "T" (1000000000000 | int) "P" (1000000000000000 | int) "Ki" (1024 | int) "Mi" (1048576 | int) "Gi" (1073741824 | int) "Ti" (1099511627776 | int) "Pi" (1125899906842624 | int) ) $unit (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $ok := $tmp_tuple_1.T2 -}}
|
||||
{{- $scale := ($tmp_tuple_1.T1 | float64) -}}
|
||||
{{- if (not $ok) -}}
|
||||
{{- $_ := (fail (printf "unknown unit: %q" $unit)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $numeric $scale)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.resource_MustParse" -}}
|
||||
{{- $repr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $tmp_tuple_2 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.parseResource" (dict "a" (list $repr) ))) "r")) ))) "r") -}}
|
||||
{{- $scale := ($tmp_tuple_2.T2 | float64) -}}
|
||||
{{- $numeric := ($tmp_tuple_2.T1 | float64) -}}
|
||||
{{- $strs := (list "" "m" "k" "M" "G" "T" "P" "Ki" "Mi" "Gi" "Ti" "Pi") -}}
|
||||
{{- $scales := (list 1.0 0.001 (1000 | int) (1000000 | int) (1000000000 | int) (1000000000000 | int) (1000000000000000 | int) (1024 | int) (1048576 | int) (1073741824 | int) (1099511627776 | int) (1125899906842624 | int)) -}}
|
||||
{{- $idx := -1 -}}
|
||||
{{- range $i, $s := $scales -}}
|
||||
{{- if (eq ($s | float64) ($scale | float64)) -}}
|
||||
{{- $idx = $i -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (eq $idx -1) -}}
|
||||
{{- $_ := (fail (printf "unknown scale: %v" $scale)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (printf "%s%s" (toString $numeric) (index $strs $idx))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.resource_Value" -}}
|
||||
{{- $repr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $tmp_tuple_3 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.parseResource" (dict "a" (list $repr) ))) "r")) ))) "r") -}}
|
||||
{{- $scale := ($tmp_tuple_3.T2 | float64) -}}
|
||||
{{- $numeric := ($tmp_tuple_3.T1 | float64) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (int64 (ceil ((mulf $numeric $scale) | float64)))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.resource_MilliValue" -}}
|
||||
{{- $repr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $tmp_tuple_4 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.parseResource" (dict "a" (list $repr) ))) "r")) ))) "r") -}}
|
||||
{{- $scale := ($tmp_tuple_4.T2 | float64) -}}
|
||||
{{- $numeric := ($tmp_tuple_4.T1 | float64) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (int64 (ceil ((mulf ((mulf $numeric 1000.0) | float64) $scale) | float64)))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.render-manifest" -}}
|
||||
{{- $tpl := (index . 0) -}}
|
||||
{{- $dot := (index . 1) -}}
|
||||
{{- $manifests := (get ((include $tpl (dict "a" (list $dot))) | fromJson) "r") -}}
|
||||
{{- if not (typeIs "[]interface {}" $manifests) -}}
|
||||
{{- $manifests = (list $manifests) -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $manifest := $manifests -}}
|
||||
{{- if ne (toJson $manifest) "null" }}
|
||||
---
|
||||
{{toYaml (unset (unset $manifest "status") "creationTimestamp")}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,17 @@
|
|||
{{- /*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- include "_shims.render-manifest" (list "console.render" .) -}}
|
|
@ -0,0 +1,22 @@
|
|||
{{- if .Values.tests.enabled }}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "console.fullname" . }}-test-connection"
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- include "console.labels" . | nindent 4 }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: wget
|
||||
image: busybox
|
||||
command: ['wget']
|
||||
args: ['{{ include "console.fullname" . }}:{{ .Values.service.port }}']
|
||||
restartPolicy: Never
|
||||
priorityClassName: {{ .Values.priorityClassName }}
|
||||
{{- end }}
|
|
@ -0,0 +1,323 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/schema#",
|
||||
"type": "object",
|
||||
"required": [
|
||||
"image"
|
||||
],
|
||||
"properties": {
|
||||
"affinity": {
|
||||
"type": "object"
|
||||
},
|
||||
"autoscaling": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"maxReplicas": {
|
||||
"type": "integer"
|
||||
},
|
||||
"minReplicas": {
|
||||
"type": "integer"
|
||||
},
|
||||
"targetCPUUtilizationPercentage": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"configmap": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"create": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"console": {
|
||||
"type": "object"
|
||||
},
|
||||
"deployment": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"create": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"extraContainers": {
|
||||
"type": "array"
|
||||
},
|
||||
"extraEnv": {
|
||||
"type": "array"
|
||||
},
|
||||
"extraEnvFrom": {
|
||||
"type": "array"
|
||||
},
|
||||
"extraVolumeMounts": {
|
||||
"type": "array"
|
||||
},
|
||||
"extraVolumes": {
|
||||
"type": "array"
|
||||
},
|
||||
"fullnameOverride": {
|
||||
"type": "string"
|
||||
},
|
||||
"image": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"repository"
|
||||
],
|
||||
"properties": {
|
||||
"pullPolicy": {
|
||||
"type": "string"
|
||||
},
|
||||
"registry": {
|
||||
"type": "string"
|
||||
},
|
||||
"repository": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"tag": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"imagePullSecrets": {
|
||||
"type": "array"
|
||||
},
|
||||
"ingress": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"annotations": {
|
||||
"type": "object"
|
||||
},
|
||||
"className": {
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"hosts": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"host": {
|
||||
"type": "string"
|
||||
},
|
||||
"paths": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"path": {
|
||||
"type": "string"
|
||||
},
|
||||
"pathType": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"tls": {
|
||||
"type": "array"
|
||||
}
|
||||
}
|
||||
},
|
||||
"livenessProbe": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"failureThreshold": {
|
||||
"type": "integer"
|
||||
},
|
||||
"initialDelaySeconds": {
|
||||
"type": "integer"
|
||||
},
|
||||
"periodSeconds": {
|
||||
"type": "integer"
|
||||
},
|
||||
"successThreshold": {
|
||||
"type": "integer"
|
||||
},
|
||||
"timeoutSeconds": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"nameOverride": {
|
||||
"type": "string"
|
||||
},
|
||||
"nodeSelector": {
|
||||
"type": "object"
|
||||
},
|
||||
"annotations": {
|
||||
"type": "object"
|
||||
},
|
||||
"podAnnotations": {
|
||||
"type": "object"
|
||||
},
|
||||
"podSecurityContext": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"fsGroup": {
|
||||
"type": "integer"
|
||||
},
|
||||
"runAsUser": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"readinessProbe": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"failureThreshold": {
|
||||
"type": "integer"
|
||||
},
|
||||
"initialDelaySeconds": {
|
||||
"type": "integer"
|
||||
},
|
||||
"periodSeconds": {
|
||||
"type": "integer"
|
||||
},
|
||||
"successThreshold": {
|
||||
"type": "integer"
|
||||
},
|
||||
"timeoutSeconds": {
|
||||
"type": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"replicaCount": {
|
||||
"type": "integer"
|
||||
},
|
||||
"resources": {
|
||||
"type": "object"
|
||||
},
|
||||
"secret": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"create": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"enterprise": {
|
||||
"type": "object"
|
||||
},
|
||||
"kafka": {
|
||||
"type": "object"
|
||||
},
|
||||
"login": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"jwtSecret": {
|
||||
"type": "string"
|
||||
},
|
||||
"github": {
|
||||
"type": "object"
|
||||
},
|
||||
"google": {
|
||||
"type": "object"
|
||||
},
|
||||
"oidc": {
|
||||
"type": "object"
|
||||
},
|
||||
"okta": {
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
},
|
||||
"redpanda": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"adminApi": {
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"secretMounts": {
|
||||
"type": "array"
|
||||
},
|
||||
"securityContext": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"runAsNonRoot": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"service": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"annotations": {
|
||||
"type": "object"
|
||||
},
|
||||
"port": {
|
||||
"type": "integer"
|
||||
},
|
||||
"nodePort": {
|
||||
"type": "integer"
|
||||
},
|
||||
"targetPort": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "integer"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"automountServiceAccountToken": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"serviceAccount": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"annotations": {
|
||||
"type": "object"
|
||||
},
|
||||
"create": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"automountServiceAccountToken": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tolerations": {
|
||||
"type": "array"
|
||||
},
|
||||
"initContainers": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"extraInitContainers": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"strategy": {
|
||||
"type": "object"
|
||||
},
|
||||
"tests": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,279 @@
|
|||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# Default values for console.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
|
||||
replicaCount: 1
|
||||
|
||||
# -- Redpanda Console Docker image settings.
|
||||
image:
|
||||
registry: docker.redpanda.com
|
||||
# -- Docker repository from which to pull the Redpanda Docker image.
|
||||
repository: redpandadata/console
|
||||
# -- The imagePullPolicy.
|
||||
pullPolicy: IfNotPresent
|
||||
# -- The Redpanda Console version.
|
||||
# See DockerHub for:
|
||||
# [All stable versions](https://hub.docker.com/r/redpandadata/console/tags)
|
||||
# and [all unstable versions](https://hub.docker.com/r/redpandadata/console-unstable/tags).
|
||||
# @default -- `Chart.appVersion`
|
||||
tag: ""
|
||||
|
||||
# -- Pull secrets may be used to provide credentials to image repositories
|
||||
# See https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||
imagePullSecrets: []
|
||||
|
||||
# -- Override `console.name` template.
|
||||
nameOverride: ""
|
||||
# -- Override `console.fullname` template.
|
||||
fullnameOverride: ""
|
||||
|
||||
# -- Automount API credentials for the Service Account into the pod.
|
||||
automountServiceAccountToken: true
|
||||
|
||||
serviceAccount:
|
||||
# -- Specifies whether a service account should be created.
|
||||
create: true
|
||||
# -- Specifies whether a service account should automount API-Credentials
|
||||
automountServiceAccountToken: true
|
||||
# -- Annotations to add to the service account.
|
||||
annotations: {}
|
||||
# -- The name of the service account to use.
|
||||
# If not set and `serviceAccount.create` is `true`,
|
||||
# a name is generated using the `console.fullname` template
|
||||
name: ""
|
||||
|
||||
# Common labels to add to all the pods
|
||||
commonLabels: {}
|
||||
|
||||
# -- Annotations to add to the deployment.
|
||||
annotations: {}
|
||||
|
||||
podAnnotations: {}
|
||||
|
||||
podLabels: {}
|
||||
|
||||
podSecurityContext:
|
||||
runAsUser: 99
|
||||
fsGroup: 99
|
||||
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
# readOnlyRootFilesystem: true
|
||||
# runAsNonRoot: true
|
||||
# runAsUser: 1000
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8080
|
||||
# nodePort: 30001
|
||||
# -- Override the value in `console.config.server.listenPort` if not `nil`
|
||||
targetPort:
|
||||
annotations: {}
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
className:
|
||||
annotations: {}
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# kubernetes.io/tls-acme: "true"
|
||||
hosts:
|
||||
- host: chart-example.local
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
tls: []
|
||||
# - secretName: chart-example-tls
|
||||
# hosts:
|
||||
# - chart-example.local
|
||||
|
||||
resources: {}
|
||||
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||
# choice for the user. This also increases chances charts run on environments with little
|
||||
# resources, such as minikube. If you want to specify resources, uncomment the following
|
||||
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||
# limits:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
# requests:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 1
|
||||
maxReplicas: 100
|
||||
targetCPUUtilizationPercentage: 80
|
||||
# targetMemoryUtilizationPercentage: 80
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
|
||||
topologySpreadConstraints: []
|
||||
|
||||
# -- PriorityClassName given to Pods.
|
||||
# For details,
|
||||
# see the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass).
|
||||
priorityClassName: ""
|
||||
|
||||
console:
|
||||
# -- Settings for the `Config.yaml` (required).
|
||||
# For a reference of configuration settings,
|
||||
# see the [Redpanda Console documentation](https://docs.redpanda.com/docs/reference/console/config/).
|
||||
config: {}
|
||||
# roles:
|
||||
# roleBindings:
|
||||
|
||||
# -- Additional environment variables for the Redpanda Console Deployment.
|
||||
extraEnv: []
|
||||
# - name: KAFKA_RACKID
|
||||
# value: "1"
|
||||
|
||||
# -- Additional environment variables for Redpanda Console mapped from Secret or ConfigMap.
|
||||
extraEnvFrom: []
|
||||
# - secretRef:
|
||||
# name: kowl-config-secret
|
||||
|
||||
# -- Add additional volumes, such as for TLS keys.
|
||||
extraVolumes: []
|
||||
# - name: kafka-certs
|
||||
# secret:
|
||||
# secretName: kafka-certs
|
||||
# - name: config
|
||||
# configMap:
|
||||
# name: console-config
|
||||
|
||||
# -- Add additional volume mounts, such as for TLS keys.
|
||||
extraVolumeMounts: []
|
||||
# - name: kafka-certs # Must match the volume name
|
||||
# mountPath: /etc/kafka/certs
|
||||
# readOnly: true
|
||||
|
||||
# -- Add additional containers, such as for oauth2-proxy.
|
||||
extraContainers: []
|
||||
|
||||
# -- Any initContainers defined should be written here
|
||||
initContainers:
|
||||
# -- Additional set of init containers
|
||||
extraInitContainers: |-
|
||||
# - name: "test-init-container"
|
||||
# image: "mintel/docker-alpine-bash-curl-jq:latest"
|
||||
# command: [ "/bin/bash", "-c" ]
|
||||
# args:
|
||||
# - |
|
||||
# set -xe
|
||||
# echo "Hello World!"
|
||||
|
||||
# -- SecretMounts is an abstraction to make a Secret available in the container's filesystem.
|
||||
# Under the hood it creates a volume and a volume mount for the Redpanda Console container.
|
||||
secretMounts: []
|
||||
# - name: kafka-certs
|
||||
# secretName: kafka-certs
|
||||
# path: /etc/console/certs
|
||||
# defaultMode: 0755
|
||||
|
||||
# -- Create a new Kubernetes Secret for all sensitive configuration inputs.
|
||||
# Each provided Secret is mounted automatically and made available to the
|
||||
# Pod.
|
||||
# If you want to use one or more existing Secrets,
|
||||
# you can use the `extraEnvFrom` list to mount environment variables from string and secretMounts to mount files such as Certificates from Secrets.
|
||||
secret:
|
||||
create: true
|
||||
|
||||
# Secret values in case you want the chart to create a Secret. All Certificates are mounted
|
||||
# as files and the path to those files are configured through environment variables so
|
||||
# that Console can automatically pick them up.
|
||||
# -- Kafka Secrets.
|
||||
kafka: {}
|
||||
# saslPassword:
|
||||
# awsMskIamSecretKey:
|
||||
# tlsCa:
|
||||
# tlsCert:
|
||||
# tlsKey:
|
||||
# tlsPassphrase:
|
||||
# schemaRegistryPassword:
|
||||
# schemaRegistryTlsCa:
|
||||
# schemaRegistryTlsCert:
|
||||
# schemaRegistryTlsKey:
|
||||
# protobufGitBasicAuthPassword
|
||||
# Enterprise version secrets
|
||||
# - SSO secrets (Enterprise version).
|
||||
login:
|
||||
# Configurable JWT value
|
||||
jwtSecret: ""
|
||||
google: {}
|
||||
# clientSecret:
|
||||
# groupsServiceAccount:
|
||||
github: {}
|
||||
# clientSecret:
|
||||
# personalAccessToken:
|
||||
okta: {}
|
||||
# clientSecret:
|
||||
# directoryApiToken:
|
||||
oidc: {}
|
||||
# clientSecret:
|
||||
|
||||
enterprise: {}
|
||||
# license:
|
||||
|
||||
redpanda:
|
||||
adminApi: {}
|
||||
# password:
|
||||
# tlsCa:
|
||||
# tlsCert:
|
||||
# tlsKey:
|
||||
|
||||
# -- Settings for license key, as an alternative to secret.enterprise when
|
||||
# a license secret is available
|
||||
enterprise:
|
||||
licenseSecretRef:
|
||||
name: ""
|
||||
key: ""
|
||||
|
||||
# -- Settings for liveness and readiness probes.
|
||||
# For details,
|
||||
# see the [Kubernetes documentation](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes).
|
||||
livenessProbe:
|
||||
# initialDelaySeconds: 0
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 1
|
||||
successThreshold: 1
|
||||
failureThreshold: 3
|
||||
|
||||
readinessProbe:
|
||||
# -- Grant time to test connectivity to upstream services such as Kafka and Schema Registry.
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 1
|
||||
successThreshold: 1
|
||||
failureThreshold: 3
|
||||
|
||||
configmap:
|
||||
create: true
|
||||
deployment:
|
||||
create: true
|
||||
|
||||
strategy: {}
|
||||
|
||||
tests:
|
||||
enabled: true
|
|
@ -0,0 +1,26 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
|
||||
{{- $warnings := (get ((include "redpanda.Warnings" (dict "a" (list .))) | fromJson) "r") }}
|
||||
{{- range $_, $warning := $warnings }}
|
||||
{{ $warning }}
|
||||
{{- end }}
|
||||
|
||||
{{- $notes := (get ((include "redpanda.Notes" (dict "a" (list .))) | fromJson) "r") }}
|
||||
{{- range $_, $note := $notes }}
|
||||
{{ $note }}
|
||||
{{- end }}
|
|
@ -0,0 +1,57 @@
|
|||
{{- /* Generated from "cert_issuers.go" */ -}}
|
||||
|
||||
{{- define "redpanda.CertIssuers" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $tmp_tuple_1 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "redpanda.certIssuersAndCAs" (dict "a" (list $dot) ))) "r")) ))) "r") -}}
|
||||
{{- $issuers := $tmp_tuple_1.T1 -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $issuers) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RootCAs" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $tmp_tuple_2 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "redpanda.certIssuersAndCAs" (dict "a" (list $dot) ))) "r")) ))) "r") -}}
|
||||
{{- $cas := $tmp_tuple_2.T2 -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $cas) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.certIssuersAndCAs" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $issuers := (coalesce nil) -}}
|
||||
{{- $certs := (coalesce nil) -}}
|
||||
{{- if (not (get (fromJson (include "redpanda.TLSEnabled" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $issuers $certs)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $name, $data := $values.tls.certs -}}
|
||||
{{- if (or (not (empty $data.secretRef)) (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $data.enabled true) ))) "r"))) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- if (eq (toJson $data.issuerRef) "null") -}}
|
||||
{{- $issuers = (concat (default (list ) $issuers) (list (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict ) "status" (dict ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "cert-manager.io/v1" "kind" "Issuer" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (printf `%s-%s-selfsigned-issuer` (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") $name) "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") )) "spec" (mustMergeOverwrite (dict ) (mustMergeOverwrite (dict ) (dict "selfSigned" (mustMergeOverwrite (dict ) (dict )) )) (dict )) )))) -}}
|
||||
{{- end -}}
|
||||
{{- $issuers = (concat (default (list ) $issuers) (list (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict ) "status" (dict ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "cert-manager.io/v1" "kind" "Issuer" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (printf `%s-%s-root-issuer` (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") $name) "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") )) "spec" (mustMergeOverwrite (dict ) (mustMergeOverwrite (dict ) (dict "ca" (mustMergeOverwrite (dict "secretName" "" ) (dict "secretName" (printf `%s-%s-root-certificate` (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") $name) )) )) (dict )) )))) -}}
|
||||
{{- $certs = (concat (default (list ) $certs) (list (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "secretName" "" "issuerRef" (dict "name" "" ) ) "status" (dict ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "cert-manager.io/v1" "kind" "Certificate" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (printf `%s-%s-root-certificate` (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") $name) "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") )) "spec" (mustMergeOverwrite (dict "secretName" "" "issuerRef" (dict "name" "" ) ) (dict "duration" (get (fromJson (include "_shims.time_Duration_String" (dict "a" (list (get (fromJson (include "_shims.time_ParseDuration" (dict "a" (list (default "43800h" $data.duration)) ))) "r")) ))) "r") "isCA" true "commonName" (printf `%s-%s-root-certificate` (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") $name) "secretName" (printf `%s-%s-root-certificate` (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") $name) "privateKey" (mustMergeOverwrite (dict ) (dict "algorithm" "ECDSA" "size" (256 | int) )) "issuerRef" (mustMergeOverwrite (dict "name" "" ) (dict "name" (printf `%s-%s-selfsigned-issuer` (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") $name) "kind" "Issuer" "group" "cert-manager.io" )) )) )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $issuers $certs)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
{{- /* Generated from "certs.go" */ -}}
|
||||
|
||||
{{- define "redpanda.ClientCerts" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (not (get (fromJson (include "redpanda.TLSEnabled" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list )) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $fullname := (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $service := (get (fromJson (include "redpanda.ServiceName" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $ns := $dot.Release.Namespace -}}
|
||||
{{- $domain := (trimSuffix "." $values.clusterDomain) -}}
|
||||
{{- $certs := (coalesce nil) -}}
|
||||
{{- range $name, $data := $values.tls.certs -}}
|
||||
{{- if (or (not (empty $data.secretRef)) (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $data.enabled true) ))) "r"))) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $names := (coalesce nil) -}}
|
||||
{{- if (or (eq (toJson $data.issuerRef) "null") (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $data.applyInternalDNSNames false) ))) "r")) -}}
|
||||
{{- $names = (concat (default (list ) $names) (list (printf "%s-cluster.%s.%s.svc.%s" $fullname $service $ns $domain))) -}}
|
||||
{{- $names = (concat (default (list ) $names) (list (printf "%s-cluster.%s.%s.svc" $fullname $service $ns))) -}}
|
||||
{{- $names = (concat (default (list ) $names) (list (printf "%s-cluster.%s.%s" $fullname $service $ns))) -}}
|
||||
{{- $names = (concat (default (list ) $names) (list (printf "*.%s-cluster.%s.%s.svc.%s" $fullname $service $ns $domain))) -}}
|
||||
{{- $names = (concat (default (list ) $names) (list (printf "*.%s-cluster.%s.%s.svc" $fullname $service $ns))) -}}
|
||||
{{- $names = (concat (default (list ) $names) (list (printf "*.%s-cluster.%s.%s" $fullname $service $ns))) -}}
|
||||
{{- $names = (concat (default (list ) $names) (list (printf "%s.%s.svc.%s" $service $ns $domain))) -}}
|
||||
{{- $names = (concat (default (list ) $names) (list (printf "%s.%s.svc" $service $ns))) -}}
|
||||
{{- $names = (concat (default (list ) $names) (list (printf "%s.%s" $service $ns))) -}}
|
||||
{{- $names = (concat (default (list ) $names) (list (printf "*.%s.%s.svc.%s" $service $ns $domain))) -}}
|
||||
{{- $names = (concat (default (list ) $names) (list (printf "*.%s.%s.svc" $service $ns))) -}}
|
||||
{{- $names = (concat (default (list ) $names) (list (printf "*.%s.%s" $service $ns))) -}}
|
||||
{{- end -}}
|
||||
{{- if (ne (toJson $values.external.domain) "null") -}}
|
||||
{{- $names = (concat (default (list ) $names) (list (tpl $values.external.domain $dot))) -}}
|
||||
{{- $names = (concat (default (list ) $names) (list (printf "*.%s" (tpl $values.external.domain $dot)))) -}}
|
||||
{{- end -}}
|
||||
{{- $duration := (default "43800h" $data.duration) -}}
|
||||
{{- $issuerRef := (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $data.issuerRef (mustMergeOverwrite (dict "name" "" ) (dict "kind" "Issuer" "group" "cert-manager.io" "name" (printf "%s-%s-root-issuer" $fullname $name) ))) ))) "r") -}}
|
||||
{{- $certs = (concat (default (list ) $certs) (list (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "secretName" "" "issuerRef" (dict "name" "" ) ) "status" (dict ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "cert-manager.io/v1" "kind" "Certificate" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (printf "%s-%s-cert" $fullname $name) "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") "namespace" $dot.Release.Namespace )) "spec" (mustMergeOverwrite (dict "secretName" "" "issuerRef" (dict "name" "" ) ) (dict "dnsNames" $names "duration" (get (fromJson (include "_shims.time_Duration_String" (dict "a" (list (get (fromJson (include "_shims.time_ParseDuration" (dict "a" (list $duration) ))) "r")) ))) "r") "isCA" false "issuerRef" $issuerRef "secretName" (printf "%s-%s-cert" $fullname $name) "privateKey" (mustMergeOverwrite (dict ) (dict "algorithm" "ECDSA" "size" (256 | int) )) )) )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $name := $values.listeners.kafka.tls.cert -}}
|
||||
{{- $tmp_tuple_1 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.dicttest" (dict "a" (list $values.tls.certs $name (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $ok := $tmp_tuple_1.T2 -}}
|
||||
{{- $data := $tmp_tuple_1.T1 -}}
|
||||
{{- if (not $ok) -}}
|
||||
{{- $_ := (fail (printf "Certificate %q referenced but not defined" $name)) -}}
|
||||
{{- end -}}
|
||||
{{- if (or (not (empty $data.secretRef)) (not (get (fromJson (include "redpanda.ClientAuthRequired" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $certs) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $issuerRef := (mustMergeOverwrite (dict "name" "" ) (dict "group" "cert-manager.io" "kind" "Issuer" "name" (printf "%s-%s-root-issuer" $fullname $name) )) -}}
|
||||
{{- if (ne (toJson $data.issuerRef) "null") -}}
|
||||
{{- $issuerRef = $data.issuerRef -}}
|
||||
{{- $_ := (set $issuerRef "group" "cert-manager.io") -}}
|
||||
{{- end -}}
|
||||
{{- $duration := (default "43800h" $data.duration) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (concat (default (list ) $certs) (list (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "secretName" "" "issuerRef" (dict "name" "" ) ) "status" (dict ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "cert-manager.io/v1" "kind" "Certificate" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (printf "%s-client" $fullname) "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") )) "spec" (mustMergeOverwrite (dict "secretName" "" "issuerRef" (dict "name" "" ) ) (dict "commonName" (printf "%s-client" $fullname) "duration" (get (fromJson (include "_shims.time_Duration_String" (dict "a" (list (get (fromJson (include "_shims.time_ParseDuration" (dict "a" (list $duration) ))) "r")) ))) "r") "isCA" false "secretName" (printf "%s-client" $fullname) "privateKey" (mustMergeOverwrite (dict ) (dict "algorithm" "ECDSA" "size" (256 | int) )) "issuerRef" $issuerRef )) ))))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
{{- /* Generated from "chart.go" */ -}}
|
||||
|
||||
{{- define "redpanda.render" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $manifests := (list (get (fromJson (include "redpanda.NodePortService" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.PodDisruptionBudget" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.ServiceAccount" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.ServiceInternal" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.ServiceMonitor" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.SidecarControllersRole" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.SidecarControllersRoleBinding" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.StatefulSet" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.PostInstallUpgradeJob" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- range $_, $obj := (get (fromJson (include "redpanda.ConfigMaps" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $manifests = (concat (default (list ) $manifests) (list $obj)) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $obj := (get (fromJson (include "redpanda.CertIssuers" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $manifests = (concat (default (list ) $manifests) (list $obj)) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $obj := (get (fromJson (include "redpanda.RootCAs" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $manifests = (concat (default (list ) $manifests) (list $obj)) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $obj := (get (fromJson (include "redpanda.ClientCerts" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $manifests = (concat (default (list ) $manifests) (list $obj)) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $obj := (get (fromJson (include "redpanda.ClusterRoleBindings" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $manifests = (concat (default (list ) $manifests) (list $obj)) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $obj := (get (fromJson (include "redpanda.ClusterRoles" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $manifests = (concat (default (list ) $manifests) (list $obj)) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $obj := (get (fromJson (include "redpanda.LoadBalancerServices" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $manifests = (concat (default (list ) $manifests) (list $obj)) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $obj := (get (fromJson (include "redpanda.Secrets" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $manifests = (concat (default (list ) $manifests) (list $obj)) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $manifests = (concat (default (list ) $manifests) (default (list ) (get (fromJson (include "redpanda.consoleChartIntegration" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- $manifests = (concat (default (list ) $manifests) (default (list ) (get (fromJson (include "redpanda.connectorsChartIntegration" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $manifests) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,574 @@
|
|||
{{- /* Generated from "configmap.tpl.go" */ -}}
|
||||
|
||||
{{- define "redpanda.ConfigMaps" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $cms := (list (get (fromJson (include "redpanda.RedpandaConfigMap" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.RPKProfile" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $cms) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RedpandaConfigMap" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) ) (mustMergeOverwrite (dict ) (dict "kind" "ConfigMap" "apiVersion" "v1" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") )) "data" (dict "bootstrap.yaml" (get (fromJson (include "redpanda.BootstrapFile" (dict "a" (list $dot) ))) "r") "redpanda.yaml" (get (fromJson (include "redpanda.RedpandaConfigFile" (dict "a" (list $dot true) ))) "r") ) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.BootstrapFile" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $bootstrap := (dict "kafka_enable_authorization" (get (fromJson (include "redpanda.Auth.IsSASLEnabled" (dict "a" (list $values.auth) ))) "r") "enable_sasl" (get (fromJson (include "redpanda.Auth.IsSASLEnabled" (dict "a" (list $values.auth) ))) "r") "enable_rack_awareness" $values.rackAwareness.enabled "storage_min_free_bytes" ((get (fromJson (include "redpanda.Storage.StorageMinFreeBytes" (dict "a" (list $values.storage) ))) "r") | int64) ) -}}
|
||||
{{- $bootstrap = (merge (dict ) $bootstrap (get (fromJson (include "redpanda.AuditLogging.Translate" (dict "a" (list $values.auditLogging $dot (get (fromJson (include "redpanda.Auth.IsSASLEnabled" (dict "a" (list $values.auth) ))) "r")) ))) "r")) -}}
|
||||
{{- $bootstrap = (merge (dict ) $bootstrap (get (fromJson (include "redpanda.Logging.Translate" (dict "a" (list $values.logging) ))) "r")) -}}
|
||||
{{- $bootstrap = (merge (dict ) $bootstrap (get (fromJson (include "redpanda.TunableConfig.Translate" (dict "a" (list $values.config.tunable) ))) "r")) -}}
|
||||
{{- $bootstrap = (merge (dict ) $bootstrap (get (fromJson (include "redpanda.ClusterConfig.Translate" (dict "a" (list $values.config.cluster) ))) "r")) -}}
|
||||
{{- $bootstrap = (merge (dict ) $bootstrap (get (fromJson (include "redpanda.Auth.Translate" (dict "a" (list $values.auth (get (fromJson (include "redpanda.Auth.IsSASLEnabled" (dict "a" (list $values.auth) ))) "r")) ))) "r")) -}}
|
||||
{{- $bootstrap = (merge (dict ) $bootstrap (get (fromJson (include "redpanda.TieredStorageConfig.Translate" (dict "a" (list (deepCopy (get (fromJson (include "redpanda.Storage.GetTieredStorageConfig" (dict "a" (list $values.storage) ))) "r")) $values.storage.tiered.credentialsSecretRef) ))) "r")) -}}
|
||||
{{- $tmp_tuple_1 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.dicttest" (dict "a" (list $values.config.cluster "default_topic_replications" (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $ok_1 := $tmp_tuple_1.T2 -}}
|
||||
{{- if (and (not $ok_1) (ge ($values.statefulset.replicas | int) (3 | int))) -}}
|
||||
{{- $_ := (set $bootstrap "default_topic_replications" (3 | int)) -}}
|
||||
{{- end -}}
|
||||
{{- $tmp_tuple_2 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.dicttest" (dict "a" (list $values.config.cluster "storage_min_free_bytes" (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $ok_2 := $tmp_tuple_2.T2 -}}
|
||||
{{- if (not $ok_2) -}}
|
||||
{{- $_ := (set $bootstrap "storage_min_free_bytes" ((get (fromJson (include "redpanda.Storage.StorageMinFreeBytes" (dict "a" (list $values.storage) ))) "r") | int64)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (toYaml $bootstrap)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RedpandaConfigFile" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $includeSeedServer := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $redpanda := (dict "empty_seed_starts_cluster" false ) -}}
|
||||
{{- if $includeSeedServer -}}
|
||||
{{- $_ := (set $redpanda "seed_servers" (get (fromJson (include "redpanda.Listeners.CreateSeedServers" (dict "a" (list $values.listeners ($values.statefulset.replicas | int) (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.InternalDomain" (dict "a" (list $dot) ))) "r")) ))) "r")) -}}
|
||||
{{- end -}}
|
||||
{{- $redpanda = (merge (dict ) $redpanda (get (fromJson (include "redpanda.NodeConfig.Translate" (dict "a" (list $values.config.node) ))) "r")) -}}
|
||||
{{- $_ := (get (fromJson (include "redpanda.configureListeners" (dict "a" (list $redpanda $dot) ))) "r") -}}
|
||||
{{- $redpandaYaml := (dict "redpanda" $redpanda "schema_registry" (get (fromJson (include "redpanda.schemaRegistry" (dict "a" (list $dot) ))) "r") "schema_registry_client" (get (fromJson (include "redpanda.kafkaClient" (dict "a" (list $dot) ))) "r") "pandaproxy" (get (fromJson (include "redpanda.pandaProxyListener" (dict "a" (list $dot) ))) "r") "pandaproxy_client" (get (fromJson (include "redpanda.kafkaClient" (dict "a" (list $dot) ))) "r") "rpk" (get (fromJson (include "redpanda.rpkNodeConfig" (dict "a" (list $dot) ))) "r") "config_file" "/etc/redpanda/redpanda.yaml" ) -}}
|
||||
{{- if (and (and (get (fromJson (include "redpanda.RedpandaAtLeast_23_3_0" (dict "a" (list $dot) ))) "r") $values.auditLogging.enabled) (get (fromJson (include "redpanda.Auth.IsSASLEnabled" (dict "a" (list $values.auth) ))) "r")) -}}
|
||||
{{- $_ := (set $redpandaYaml "audit_log_client" (get (fromJson (include "redpanda.kafkaClient" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (toYaml $redpandaYaml)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RPKProfile" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.external.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) ) (mustMergeOverwrite (dict ) (dict "kind" "ConfigMap" "apiVersion" "v1" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (printf "%s-rpk" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") )) "data" (dict "profile" (toYaml (get (fromJson (include "redpanda.rpkProfile" (dict "a" (list $dot) ))) "r")) ) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.rpkProfile" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $brokerList := (list ) -}}
|
||||
{{- range $_, $i := untilStep (((0 | int) | int)|int) (($values.statefulset.replicas | int)|int) (1|int) -}}
|
||||
{{- $brokerList = (concat (default (list ) $brokerList) (list (printf "%s:%d" (get (fromJson (include "redpanda.advertisedHost" (dict "a" (list $dot $i) ))) "r") (((get (fromJson (include "redpanda.advertisedKafkaPort" (dict "a" (list $dot $i) ))) "r") | int) | int)))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $adminAdvertisedList := (list ) -}}
|
||||
{{- range $_, $i := untilStep (((0 | int) | int)|int) (($values.statefulset.replicas | int)|int) (1|int) -}}
|
||||
{{- $adminAdvertisedList = (concat (default (list ) $adminAdvertisedList) (list (printf "%s:%d" (get (fromJson (include "redpanda.advertisedHost" (dict "a" (list $dot $i) ))) "r") (((get (fromJson (include "redpanda.advertisedAdminPort" (dict "a" (list $dot $i) ))) "r") | int) | int)))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $schemaAdvertisedList := (list ) -}}
|
||||
{{- range $_, $i := untilStep (((0 | int) | int)|int) (($values.statefulset.replicas | int)|int) (1|int) -}}
|
||||
{{- $schemaAdvertisedList = (concat (default (list ) $schemaAdvertisedList) (list (printf "%s:%d" (get (fromJson (include "redpanda.advertisedHost" (dict "a" (list $dot $i) ))) "r") (((get (fromJson (include "redpanda.advertisedSchemaPort" (dict "a" (list $dot $i) ))) "r") | int) | int)))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $kafkaTLS := (get (fromJson (include "redpanda.rpkKafkaClientTLSConfiguration" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $tmp_tuple_3 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.dicttest" (dict "a" (list $kafkaTLS "ca_file" (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $ok_3 := $tmp_tuple_3.T2 -}}
|
||||
{{- if $ok_3 -}}
|
||||
{{- $_ := (set $kafkaTLS "ca_file" "ca.crt") -}}
|
||||
{{- end -}}
|
||||
{{- $adminTLS := (get (fromJson (include "redpanda.rpkAdminAPIClientTLSConfiguration" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $tmp_tuple_4 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.dicttest" (dict "a" (list $adminTLS "ca_file" (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $ok_4 := $tmp_tuple_4.T2 -}}
|
||||
{{- if $ok_4 -}}
|
||||
{{- $_ := (set $adminTLS "ca_file" "ca.crt") -}}
|
||||
{{- end -}}
|
||||
{{- $schemaTLS := (get (fromJson (include "redpanda.rpkSchemaRegistryClientTLSConfiguration" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $tmp_tuple_5 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.dicttest" (dict "a" (list $schemaTLS "ca_file" (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $ok_5 := $tmp_tuple_5.T2 -}}
|
||||
{{- if $ok_5 -}}
|
||||
{{- $_ := (set $schemaTLS "ca_file" "ca.crt") -}}
|
||||
{{- end -}}
|
||||
{{- $ka := (dict "brokers" $brokerList "tls" (coalesce nil) ) -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $kafkaTLS) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $_ := (set $ka "tls" $kafkaTLS) -}}
|
||||
{{- end -}}
|
||||
{{- $aa := (dict "addresses" $adminAdvertisedList "tls" (coalesce nil) ) -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $adminTLS) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $_ := (set $aa "tls" $adminTLS) -}}
|
||||
{{- end -}}
|
||||
{{- $sa := (dict "addresses" $schemaAdvertisedList "tls" (coalesce nil) ) -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $schemaTLS) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $_ := (set $sa "tls" $schemaTLS) -}}
|
||||
{{- end -}}
|
||||
{{- $result := (dict "name" (get (fromJson (include "redpanda.getFirstExternalKafkaListener" (dict "a" (list $dot) ))) "r") "kafka_api" $ka "admin_api" $aa "schema_registry" $sa ) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $result) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.advertisedKafkaPort" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $i := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $externalKafkaListenerName := (get (fromJson (include "redpanda.getFirstExternalKafkaListener" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $listener := (index $values.listeners.kafka.external $externalKafkaListenerName) -}}
|
||||
{{- $port := (($values.listeners.kafka.port | int) | int) -}}
|
||||
{{- if (gt (($listener.port | int) | int) ((1 | int) | int)) -}}
|
||||
{{- $port = (($listener.port | int) | int) -}}
|
||||
{{- end -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $listener.advertisedPorts) ))) "r") | int) (1 | int)) -}}
|
||||
{{- $port = ((index $listener.advertisedPorts $i) | int) -}}
|
||||
{{- else -}}{{- if (eq ((get (fromJson (include "_shims.len" (dict "a" (list $listener.advertisedPorts) ))) "r") | int) (1 | int)) -}}
|
||||
{{- $port = ((index $listener.advertisedPorts (0 | int)) | int) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $port) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.advertisedAdminPort" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $i := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $keys := (keys $values.listeners.admin.external) -}}
|
||||
{{- $_ := (sortAlpha $keys) -}}
|
||||
{{- $externalAdminListenerName := (first $keys) -}}
|
||||
{{- $listener := (index $values.listeners.admin.external (get (fromJson (include "_shims.typeassertion" (dict "a" (list "string" $externalAdminListenerName) ))) "r")) -}}
|
||||
{{- $port := (($values.listeners.admin.port | int) | int) -}}
|
||||
{{- if (gt (($listener.port | int) | int) (1 | int)) -}}
|
||||
{{- $port = (($listener.port | int) | int) -}}
|
||||
{{- end -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $listener.advertisedPorts) ))) "r") | int) (1 | int)) -}}
|
||||
{{- $port = ((index $listener.advertisedPorts $i) | int) -}}
|
||||
{{- else -}}{{- if (eq ((get (fromJson (include "_shims.len" (dict "a" (list $listener.advertisedPorts) ))) "r") | int) (1 | int)) -}}
|
||||
{{- $port = ((index $listener.advertisedPorts (0 | int)) | int) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $port) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.advertisedSchemaPort" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $i := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $keys := (keys $values.listeners.schemaRegistry.external) -}}
|
||||
{{- $_ := (sortAlpha $keys) -}}
|
||||
{{- $externalSchemaListenerName := (first $keys) -}}
|
||||
{{- $listener := (index $values.listeners.schemaRegistry.external (get (fromJson (include "_shims.typeassertion" (dict "a" (list "string" $externalSchemaListenerName) ))) "r")) -}}
|
||||
{{- $port := (($values.listeners.schemaRegistry.port | int) | int) -}}
|
||||
{{- if (gt (($listener.port | int) | int) (1 | int)) -}}
|
||||
{{- $port = (($listener.port | int) | int) -}}
|
||||
{{- end -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $listener.advertisedPorts) ))) "r") | int) (1 | int)) -}}
|
||||
{{- $port = ((index $listener.advertisedPorts $i) | int) -}}
|
||||
{{- else -}}{{- if (eq ((get (fromJson (include "_shims.len" (dict "a" (list $listener.advertisedPorts) ))) "r") | int) (1 | int)) -}}
|
||||
{{- $port = ((index $listener.advertisedPorts (0 | int)) | int) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $port) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.advertisedHost" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $i := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $address := (printf "%s-%d" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") ($i | int)) -}}
|
||||
{{- if (ne (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.external.domain "") ))) "r") "") -}}
|
||||
{{- $address = (printf "%s.%s" $address (tpl $values.external.domain $dot)) -}}
|
||||
{{- end -}}
|
||||
{{- if (le ((get (fromJson (include "_shims.len" (dict "a" (list $values.external.addresses) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $address) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (eq ((get (fromJson (include "_shims.len" (dict "a" (list $values.external.addresses) ))) "r") | int) (1 | int)) -}}
|
||||
{{- $address = (index $values.external.addresses (0 | int)) -}}
|
||||
{{- else -}}
|
||||
{{- $address = (index $values.external.addresses $i) -}}
|
||||
{{- end -}}
|
||||
{{- if (ne (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.external.domain "") ))) "r") "") -}}
|
||||
{{- $address = (printf "%s.%s" $address (tpl $values.external.domain $dot)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $address) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.getFirstExternalKafkaListener" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $keys := (keys $values.listeners.kafka.external) -}}
|
||||
{{- $_ := (sortAlpha $keys) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "_shims.typeassertion" (dict "a" (list "string" (first $keys)) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.BrokerList" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $replicas := (index .a 1) -}}
|
||||
{{- $port := (index .a 2) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $bl := (coalesce nil) -}}
|
||||
{{- range $_, $i := untilStep (((0 | int) | int)|int) ($replicas|int) (1|int) -}}
|
||||
{{- $bl = (concat (default (list ) $bl) (list (printf "%s-%d.%s:%d" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") $i (get (fromJson (include "redpanda.InternalDomain" (dict "a" (list $dot) ))) "r") $port))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $bl) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.rpkNodeConfig" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $brokerList := (get (fromJson (include "redpanda.BrokerList" (dict "a" (list $dot ($values.statefulset.replicas | int) ($values.listeners.kafka.port | int)) ))) "r") -}}
|
||||
{{- $adminTLS := (coalesce nil) -}}
|
||||
{{- $tls_6 := (get (fromJson (include "redpanda.rpkAdminAPIClientTLSConfiguration" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $tls_6) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $adminTLS = $tls_6 -}}
|
||||
{{- end -}}
|
||||
{{- $brokerTLS := (coalesce nil) -}}
|
||||
{{- $tls_7 := (get (fromJson (include "redpanda.rpkKafkaClientTLSConfiguration" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $tls_7) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $brokerTLS = $tls_7 -}}
|
||||
{{- end -}}
|
||||
{{- $schemaRegistryTLS := (coalesce nil) -}}
|
||||
{{- $tls_8 := (get (fromJson (include "redpanda.rpkSchemaRegistryClientTLSConfiguration" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $tls_8) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $schemaRegistryTLS = $tls_8 -}}
|
||||
{{- end -}}
|
||||
{{- $result := (dict "overprovisioned" (get (fromJson (include "redpanda.RedpandaResources.GetOverProvisionValue" (dict "a" (list $values.resources) ))) "r") "enable_memory_locking" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.resources.memory.enable_memory_locking false) ))) "r") "additional_start_flags" (get (fromJson (include "redpanda.RedpandaAdditionalStartFlags" (dict "a" (list $dot ((get (fromJson (include "redpanda.RedpandaSMP" (dict "a" (list $dot) ))) "r") | int64)) ))) "r") "kafka_api" (dict "brokers" $brokerList "tls" $brokerTLS ) "admin_api" (dict "addresses" (get (fromJson (include "redpanda.Listeners.AdminList" (dict "a" (list $values.listeners ($values.statefulset.replicas | int) (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.InternalDomain" (dict "a" (list $dot) ))) "r")) ))) "r") "tls" $adminTLS ) "schema_registry" (dict "addresses" (get (fromJson (include "redpanda.Listeners.SchemaRegistryList" (dict "a" (list $values.listeners ($values.statefulset.replicas | int) (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.InternalDomain" (dict "a" (list $dot) ))) "r")) ))) "r") "tls" $schemaRegistryTLS ) ) -}}
|
||||
{{- $result = (merge (dict ) $result (get (fromJson (include "redpanda.Tuning.Translate" (dict "a" (list $values.tuning) ))) "r")) -}}
|
||||
{{- $result = (merge (dict ) $result (get (fromJson (include "redpanda.Config.CreateRPKConfiguration" (dict "a" (list $values.config) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $result) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.rpkKafkaClientTLSConfiguration" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $tls := $values.listeners.kafka.tls -}}
|
||||
{{- if (not (get (fromJson (include "redpanda.InternalTLS.IsEnabled" (dict "a" (list $tls $values.tls) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (dict )) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $result := (dict "ca_file" (get (fromJson (include "redpanda.InternalTLS.ServerCAPath" (dict "a" (list $tls $values.tls) ))) "r") ) -}}
|
||||
{{- if $tls.requireClientAuth -}}
|
||||
{{- $_ := (set $result "cert_file" (printf "%s/%s-client/tls.crt" "/etc/tls/certs" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- $_ := (set $result "key_file" (printf "%s/%s-client/tls.key" "/etc/tls/certs" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $result) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.rpkAdminAPIClientTLSConfiguration" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $tls := $values.listeners.admin.tls -}}
|
||||
{{- if (not (get (fromJson (include "redpanda.InternalTLS.IsEnabled" (dict "a" (list $tls $values.tls) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (dict )) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $result := (dict "ca_file" (get (fromJson (include "redpanda.InternalTLS.ServerCAPath" (dict "a" (list $tls $values.tls) ))) "r") ) -}}
|
||||
{{- if $tls.requireClientAuth -}}
|
||||
{{- $_ := (set $result "cert_file" (printf "%s/%s-client/tls.crt" "/etc/tls/certs" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- $_ := (set $result "key_file" (printf "%s/%s-client/tls.key" "/etc/tls/certs" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $result) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.rpkSchemaRegistryClientTLSConfiguration" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $tls := $values.listeners.schemaRegistry.tls -}}
|
||||
{{- if (not (get (fromJson (include "redpanda.InternalTLS.IsEnabled" (dict "a" (list $tls $values.tls) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (dict )) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $result := (dict "ca_file" (get (fromJson (include "redpanda.InternalTLS.ServerCAPath" (dict "a" (list $tls $values.tls) ))) "r") ) -}}
|
||||
{{- if $tls.requireClientAuth -}}
|
||||
{{- $_ := (set $result "cert_file" (printf "%s/%s-client/tls.crt" "/etc/tls/certs" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- $_ := (set $result "key_file" (printf "%s/%s-client/tls.key" "/etc/tls/certs" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $result) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.kafkaClient" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $brokerList := (list ) -}}
|
||||
{{- range $_, $i := untilStep (((0 | int) | int)|int) (($values.statefulset.replicas | int)|int) (1|int) -}}
|
||||
{{- $brokerList = (concat (default (list ) $brokerList) (list (dict "address" (printf "%s-%d.%s" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") $i (get (fromJson (include "redpanda.InternalDomain" (dict "a" (list $dot) ))) "r")) "port" ($values.listeners.kafka.port | int) ))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $kafkaTLS := $values.listeners.kafka.tls -}}
|
||||
{{- $brokerTLS := (coalesce nil) -}}
|
||||
{{- if (get (fromJson (include "redpanda.InternalTLS.IsEnabled" (dict "a" (list $values.listeners.kafka.tls $values.tls) ))) "r") -}}
|
||||
{{- $brokerTLS = (dict "enabled" true "require_client_auth" $kafkaTLS.requireClientAuth "truststore_file" (get (fromJson (include "redpanda.InternalTLS.ServerCAPath" (dict "a" (list $kafkaTLS $values.tls) ))) "r") ) -}}
|
||||
{{- if $kafkaTLS.requireClientAuth -}}
|
||||
{{- $_ := (set $brokerTLS "cert_file" (printf "%s/%s-client/tls.crt" "/etc/tls/certs" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- $_ := (set $brokerTLS "key_file" (printf "%s/%s-client/tls.key" "/etc/tls/certs" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $cfg := (dict "brokers" $brokerList ) -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $brokerTLS) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $_ := (set $cfg "broker_tls" $brokerTLS) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $cfg) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.configureListeners" -}}
|
||||
{{- $redpanda := (index .a 0) -}}
|
||||
{{- $dot := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $_ := (set $redpanda "admin" (get (fromJson (include "redpanda.AdminListeners.Listeners" (dict "a" (list $values.listeners.admin) ))) "r")) -}}
|
||||
{{- $_ := (set $redpanda "kafka_api" (get (fromJson (include "redpanda.KafkaListeners.Listeners" (dict "a" (list $values.listeners.kafka $values.auth) ))) "r")) -}}
|
||||
{{- $_ := (set $redpanda "rpc_server" (get (fromJson (include "redpanda.rpcListeners" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $_ := (set $redpanda "admin_api_tls" (coalesce nil)) -}}
|
||||
{{- $tls_9 := (get (fromJson (include "redpanda.AdminListeners.ListenersTLS" (dict "a" (list $values.listeners.admin $values.tls) ))) "r") -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $tls_9) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $_ := (set $redpanda "admin_api_tls" $tls_9) -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $redpanda "kafka_api_tls" (coalesce nil)) -}}
|
||||
{{- $tls_10 := (get (fromJson (include "redpanda.KafkaListeners.ListenersTLS" (dict "a" (list $values.listeners.kafka $values.tls) ))) "r") -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $tls_10) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $_ := (set $redpanda "kafka_api_tls" $tls_10) -}}
|
||||
{{- end -}}
|
||||
{{- $tls_11 := (get (fromJson (include "redpanda.rpcListenersTLS" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $tls_11) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $_ := (set $redpanda "rpc_server_tls" $tls_11) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.pandaProxyListener" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $pandaProxy := (dict ) -}}
|
||||
{{- $_ := (set $pandaProxy "pandaproxy_api" (get (fromJson (include "redpanda.HTTPListeners.Listeners" (dict "a" (list $values.listeners.http (get (fromJson (include "redpanda.Auth.IsSASLEnabled" (dict "a" (list $values.auth) ))) "r")) ))) "r")) -}}
|
||||
{{- $_ := (set $pandaProxy "pandaproxy_api_tls" (coalesce nil)) -}}
|
||||
{{- $tls_12 := (get (fromJson (include "redpanda.HTTPListeners.ListenersTLS" (dict "a" (list $values.listeners.http $values.tls) ))) "r") -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $tls_12) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $_ := (set $pandaProxy "pandaproxy_api_tls" $tls_12) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $pandaProxy) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.schemaRegistry" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $schemaReg := (dict ) -}}
|
||||
{{- $_ := (set $schemaReg "schema_registry_api" (get (fromJson (include "redpanda.SchemaRegistryListeners.Listeners" (dict "a" (list $values.listeners.schemaRegistry (get (fromJson (include "redpanda.Auth.IsSASLEnabled" (dict "a" (list $values.auth) ))) "r")) ))) "r")) -}}
|
||||
{{- $_ := (set $schemaReg "schema_registry_api_tls" (coalesce nil)) -}}
|
||||
{{- $tls_13 := (get (fromJson (include "redpanda.SchemaRegistryListeners.ListenersTLS" (dict "a" (list $values.listeners.schemaRegistry $values.tls) ))) "r") -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $tls_13) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $_ := (set $schemaReg "schema_registry_api_tls" $tls_13) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $schemaReg) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.rpcListenersTLS" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $r := $values.listeners.rpc -}}
|
||||
{{- if (and (not ((or (or (get (fromJson (include "redpanda.RedpandaAtLeast_22_2_atleast_22_2_10" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.RedpandaAtLeast_22_3_atleast_22_3_13" (dict "a" (list $dot) ))) "r")) (get (fromJson (include "redpanda.RedpandaAtLeast_23_1_2" (dict "a" (list $dot) ))) "r")))) ((or (and (eq (toJson $r.tls.enabled) "null") $values.tls.enabled) (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $r.tls.enabled false) ))) "r")))) -}}
|
||||
{{- $_ := (fail (printf "Redpanda version v%s does not support TLS on the RPC port. Please upgrade. See technical service bulletin 2023-01." (trimPrefix "v" (get (fromJson (include "redpanda.Tag" (dict "a" (list $dot) ))) "r")))) -}}
|
||||
{{- end -}}
|
||||
{{- if (not (get (fromJson (include "redpanda.InternalTLS.IsEnabled" (dict "a" (list $r.tls $values.tls) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (dict )) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $certName := $r.tls.cert -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (dict "enabled" true "cert_file" (printf "%s/%s/tls.crt" "/etc/tls/certs" $certName) "key_file" (printf "%s/%s/tls.key" "/etc/tls/certs" $certName) "require_client_auth" $r.tls.requireClientAuth "truststore_file" (get (fromJson (include "redpanda.InternalTLS.TrustStoreFilePath" (dict "a" (list $r.tls $values.tls) ))) "r") )) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.rpcListeners" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (dict "address" "0.0.0.0" "port" ($values.listeners.rpc.port | int) )) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.createInternalListenerTLSCfg" -}}
|
||||
{{- $tls := (index .a 0) -}}
|
||||
{{- $internal := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (not (get (fromJson (include "redpanda.InternalTLS.IsEnabled" (dict "a" (list $internal $tls) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (dict )) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (dict "name" "internal" "enabled" true "cert_file" (printf "%s/%s/tls.crt" "/etc/tls/certs" $internal.cert) "key_file" (printf "%s/%s/tls.key" "/etc/tls/certs" $internal.cert) "require_client_auth" $internal.requireClientAuth "truststore_file" (get (fromJson (include "redpanda.InternalTLS.TrustStoreFilePath" (dict "a" (list $internal $tls) ))) "r") )) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.createInternalListenerCfg" -}}
|
||||
{{- $port := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (dict "name" "internal" "address" "0.0.0.0" "port" $port )) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RedpandaAdditionalStartFlags" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $smp := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $chartFlags := (dict "smp" (printf "%d" ($smp | int)) "memory" (printf "%dM" (((get (fromJson (include "redpanda.RedpandaMemory" (dict "a" (list $dot) ))) "r") | int64) | int)) "reserve-memory" (printf "%dM" (((get (fromJson (include "redpanda.RedpandaReserveMemory" (dict "a" (list $dot) ))) "r") | int64) | int)) "default-log-level" $values.logging.logLevel ) -}}
|
||||
{{- if (eq (index $values.config.node "developer_mode") true) -}}
|
||||
{{- $_ := (unset $chartFlags "reserve-memory") -}}
|
||||
{{- end -}}
|
||||
{{- range $flag, $_ := $chartFlags -}}
|
||||
{{- range $_, $userFlag := $values.statefulset.additionalRedpandaCmdFlags -}}
|
||||
{{- if (regexMatch (printf "^--%s" $flag) $userFlag) -}}
|
||||
{{- $_ := (unset $chartFlags $flag) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $keys := (keys $chartFlags) -}}
|
||||
{{- $_ := (sortAlpha $keys) -}}
|
||||
{{- $flags := (list ) -}}
|
||||
{{- range $_, $key := $keys -}}
|
||||
{{- $flags = (concat (default (list ) $flags) (list (printf "--%s=%s" $key (index $chartFlags $key)))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (concat (default (list ) $flags) (default (list ) $values.statefulset.additionalRedpandaCmdFlags))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
{{- /* Generated from "connectors.go" */ -}}
|
||||
|
||||
{{- define "redpanda.connectorsChartIntegration" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values -}}
|
||||
{{- if (or (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.connectors.enabled false) ))) "r")) (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.connectors.deployment.create false) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $connectorsDot := (index $dot.Subcharts "connectors") -}}
|
||||
{{- $loadedValues := $connectorsDot.Values -}}
|
||||
{{- $connectorsValue := $connectorsDot.Values -}}
|
||||
{{- $_ := (set $connectorsValue "deployment" (merge (dict ) $connectorsValue.deployment (mustMergeOverwrite (dict "create" false "strategy" (dict ) "schedulerName" "" "budget" (dict "maxUnavailable" 0 ) "annotations" (coalesce nil) "extraEnv" (coalesce nil) "extraEnvFrom" (coalesce nil) "progressDeadlineSeconds" 0 "nodeSelector" (coalesce nil) "tolerations" (coalesce nil) "restartPolicy" "" ) (dict "create" true )))) -}}
|
||||
{{- if (eq $connectorsValue.connectors.bootstrapServers "") -}}
|
||||
{{- range $_, $b := (get (fromJson (include "redpanda.BrokerList" (dict "a" (list $dot ($values.statefulset.replicas | int) ($values.listeners.kafka.port | int)) ))) "r") -}}
|
||||
{{- if (eq ((get (fromJson (include "_shims.len" (dict "a" (list $connectorsValue.connectors.bootstrapServers) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $_ := (set $connectorsValue.connectors "bootstrapServers" $b) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $connectorsValue.connectors "bootstrapServers" (printf "%s,%s" $connectorsValue.connectors.bootstrapServers $b)) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $connectorsValue.connectors "brokerTLS" (mustMergeOverwrite (dict "enabled" false "ca" (dict "secretRef" "" "secretNameOverwrite" "" ) "cert" (dict "secretRef" "" "secretNameOverwrite" "" ) "key" (dict "secretRef" "" "secretNameOverwrite" "" ) ) (dict "enabled" false "ca" (mustMergeOverwrite (dict "secretRef" "" "secretNameOverwrite" "" ) (dict )) "cert" (mustMergeOverwrite (dict "secretRef" "" "secretNameOverwrite" "" ) (dict )) "key" (mustMergeOverwrite (dict "secretRef" "" "secretNameOverwrite" "" ) (dict )) ))) -}}
|
||||
{{- $_ := (set $connectorsValue.connectors "brokerTLS" (get (fromJson (include "redpanda.KafkaListeners.ConnectorsTLS" (dict "a" (list $values.listeners.kafka $values.tls (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) ))) "r")) -}}
|
||||
{{- if (get (fromJson (include "redpanda.Auth.IsSASLEnabled" (dict "a" (list $values.auth) ))) "r") -}}
|
||||
{{- $command := (list "bash" "-c" (printf "%s%s" (printf "%s%s" (printf "%s%s" (printf "%s%s" (printf "%s%s" (printf "%s%s" (printf "%s%s" "set -e; IFS=':' read -r CONNECT_SASL_USERNAME CONNECT_SASL_PASSWORD CONNECT_SASL_MECHANISM < <(grep \"\" $(find /mnt/users/* -print));" (printf " CONNECT_SASL_MECHANISM=${CONNECT_SASL_MECHANISM:-%s};" (get (fromJson (include "redpanda.SASLMechanism" (dict "a" (list $dot) ))) "r"))) " export CONNECT_SASL_USERNAME CONNECT_SASL_PASSWORD CONNECT_SASL_MECHANISM;") " [[ $CONNECT_SASL_MECHANISM == \"SCRAM-SHA-256\" ]] && CONNECT_SASL_MECHANISM=scram-sha-256;") " [[ $CONNECT_SASL_MECHANISM == \"SCRAM-SHA-512\" ]] && CONNECT_SASL_MECHANISM=scram-sha-512;") " export CONNECT_SASL_MECHANISM;") " echo $CONNECT_SASL_PASSWORD > /opt/kafka/connect-password/rc-credentials/password;") " exec /opt/kafka/bin/kafka_connect_run.sh")) -}}
|
||||
{{- $_ := (set $connectorsValue.deployment "command" $command) -}}
|
||||
{{- $_ := (set $connectorsValue.auth "sasl" (merge (dict ) $connectorsValue.auth.sasl (mustMergeOverwrite (dict "enabled" false "mechanism" "" "secretRef" "" "userName" "" ) (dict "enabled" true )))) -}}
|
||||
{{- $_ := (set $connectorsValue.storage "volume" (concat (default (list ) $connectorsValue.storage.volume) (default (list ) (list (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "secret" (mustMergeOverwrite (dict ) (dict "secretName" $values.auth.sasl.secretRef )) )) (dict "name" (get (fromJson (include "redpanda.cleanForK8sWithSuffix" (dict "a" (list (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") "users") ))) "r") )) (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "secret" (mustMergeOverwrite (dict ) (dict "secretName" $values.auth.sasl.secretRef )) )) (dict "name" (get (fromJson (include "redpanda.cleanForK8sWithSuffix" (dict "a" (list (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") "user-password") ))) "r") )))))) -}}
|
||||
{{- $_ := (set $connectorsValue.storage "volumeMounts" (concat (default (list ) $connectorsValue.storage.volumeMounts) (default (list ) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" (get (fromJson (include "redpanda.cleanForK8sWithSuffix" (dict "a" (list (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") "users") ))) "r") "mountPath" "/mnt/users" "readOnly" true )) (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" (get (fromJson (include "redpanda.cleanForK8sWithSuffix" (dict "a" (list (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") "user-password") ))) "r") "mountPath" "/opt/kafka/connect-password/rc-credentials" )))))) -}}
|
||||
{{- $_ := (set $connectorsValue.deployment "extraEnv" (concat (default (list ) $connectorsValue.deployment.extraEnv) (default (list ) (list (mustMergeOverwrite (dict "name" "" ) (dict "name" "CONNECT_SASL_PASSWORD_FILE" "value" "rc-credentials/password" )))))) -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $connectorsDot "Values" $connectorsValue) -}}
|
||||
{{- $manifests := (list (get (fromJson (include "connectors.Deployment" (dict "a" (list $connectorsDot) ))) "r")) -}}
|
||||
{{- $_ := (set $connectorsDot "Values" $loadedValues) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $manifests) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
{{- /* Generated from "console.tpl.go" */ -}}
|
||||
|
||||
{{- define "redpanda.consoleChartIntegration" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values -}}
|
||||
{{- if (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.console.enabled true) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $consoleDot := (index $dot.Subcharts "console") -}}
|
||||
{{- $loadedValues := $consoleDot.Values -}}
|
||||
{{- $consoleValue := $consoleDot.Values -}}
|
||||
{{- $license_1 := (get (fromJson (include "redpanda.GetLicenseLiteral" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (and (ne $license_1 "") (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.console.secret.create false) ))) "r"))) -}}
|
||||
{{- $_ := (set $consoleValue.secret "create" true) -}}
|
||||
{{- $_ := (set $consoleValue.secret "enterprise" (mustMergeOverwrite (dict ) (dict "license" $license_1 ))) -}}
|
||||
{{- end -}}
|
||||
{{- if (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.console.configmap.create false) ))) "r")) -}}
|
||||
{{- $_ := (set $consoleValue.configmap "create" true) -}}
|
||||
{{- $_ := (set $consoleValue.console "config" (get (fromJson (include "redpanda.ConsoleConfig" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- end -}}
|
||||
{{- if (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.console.deployment.create false) ))) "r")) -}}
|
||||
{{- $_ := (set $consoleValue.deployment "create" true) -}}
|
||||
{{- if (get (fromJson (include "redpanda.Auth.IsSASLEnabled" (dict "a" (list $values.auth) ))) "r") -}}
|
||||
{{- $command := (list "sh" "-c" (printf "%s%s" (printf "%s%s" (printf "%s%s" (printf "%s%s" (printf "%s%s" (printf "%s%s" (printf "%s%s" "set -e; IFS=':' read -r KAFKA_SASL_USERNAME KAFKA_SASL_PASSWORD KAFKA_SASL_MECHANISM < <(grep \"\" $(find /mnt/users/* -print));" (printf " KAFKA_SASL_MECHANISM=${KAFKA_SASL_MECHANISM:-%s};" (get (fromJson (include "redpanda.SASLMechanism" (dict "a" (list $dot) ))) "r"))) " export KAFKA_SASL_USERNAME KAFKA_SASL_PASSWORD KAFKA_SASL_MECHANISM;") " export KAFKA_SCHEMAREGISTRY_USERNAME=$KAFKA_SASL_USERNAME;") " export KAFKA_SCHEMAREGISTRY_PASSWORD=$KAFKA_SASL_PASSWORD;") " export REDPANDA_ADMINAPI_USERNAME=$KAFKA_SASL_USERNAME;") " export REDPANDA_ADMINAPI_PASSWORD=$KAFKA_SASL_PASSWORD;") " /app/console $@") " --") -}}
|
||||
{{- $_ := (set $consoleValue.deployment "command" $command) -}}
|
||||
{{- end -}}
|
||||
{{- $secret_2 := (get (fromJson (include "redpanda.GetLicenseSecretReference" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $secret_2) "null") -}}
|
||||
{{- $_ := (set $consoleValue "enterprise" (mustMergeOverwrite (dict "licenseSecretRef" (dict "name" "" "key" "" ) ) (dict "licenseSecretRef" (mustMergeOverwrite (dict "name" "" "key" "" ) (dict "name" $secret_2.name "key" $secret_2.key )) ))) -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $consoleValue "extraVolumes" (get (fromJson (include "redpanda.consoleTLSVolumes" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $_ := (set $consoleValue "extraVolumeMounts" (get (fromJson (include "redpanda.consoleTLSVolumesMounts" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $_ := (set $consoleDot "Values" $consoleValue) -}}
|
||||
{{- $cfg := (get (fromJson (include "console.ConfigMap" (dict "a" (list $consoleDot) ))) "r") -}}
|
||||
{{- if (eq (toJson $consoleValue.podAnnotations) "null") -}}
|
||||
{{- $_ := (set $consoleValue "podAnnotations" (dict )) -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $consoleValue.podAnnotations "checksum-redpanda-chart/config" (sha256sum (toYaml $cfg))) -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $consoleDot "Values" $consoleValue) -}}
|
||||
{{- $manifests := (list (get (fromJson (include "console.Secret" (dict "a" (list $consoleDot) ))) "r") (get (fromJson (include "console.ConfigMap" (dict "a" (list $consoleDot) ))) "r") (get (fromJson (include "console.Deployment" (dict "a" (list $consoleDot) ))) "r")) -}}
|
||||
{{- $_ := (set $consoleDot "Values" $loadedValues) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $manifests) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.consoleTLSVolumesMounts" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $mounts := (list ) -}}
|
||||
{{- $sasl_3 := $values.auth.sasl -}}
|
||||
{{- if (and $sasl_3.enabled (ne $sasl_3.secretRef "")) -}}
|
||||
{{- $mounts = (concat (default (list ) $mounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" (printf "%s-users" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) "mountPath" "/mnt/users" "readOnly" true )))) -}}
|
||||
{{- end -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list (get (fromJson (include "redpanda.Listeners.TrustStores" (dict "a" (list $values.listeners $values.tls) ))) "r")) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $mounts = (concat (default (list ) $mounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "truststores" "mountPath" "/etc/truststores" "readOnly" true )))) -}}
|
||||
{{- end -}}
|
||||
{{- $visitedCert := (dict ) -}}
|
||||
{{- range $_, $tlsCfg := (list $values.listeners.kafka.tls $values.listeners.schemaRegistry.tls $values.listeners.admin.tls) -}}
|
||||
{{- $tmp_tuple_1 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.dicttest" (dict "a" (list $visitedCert $tlsCfg.cert (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $visited := $tmp_tuple_1.T2 -}}
|
||||
{{- if (or (not (get (fromJson (include "redpanda.InternalTLS.IsEnabled" (dict "a" (list $tlsCfg $values.tls) ))) "r")) $visited) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $visitedCert $tlsCfg.cert true) -}}
|
||||
{{- $mounts = (concat (default (list ) $mounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" (printf "redpanda-%s-cert" $tlsCfg.cert) "mountPath" (printf "%s/%s" "/etc/tls/certs" $tlsCfg.cert) )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (concat (default (list ) $mounts) (default (list ) $values.console.extraVolumeMounts))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.consoleTLSVolumes" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $volumes := (list ) -}}
|
||||
{{- $sasl_4 := $values.auth.sasl -}}
|
||||
{{- if (and $sasl_4.enabled (ne $sasl_4.secretRef "")) -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (list (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "secret" (mustMergeOverwrite (dict ) (dict "secretName" $values.auth.sasl.secretRef )) )) (dict "name" (printf "%s-users" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) )))) -}}
|
||||
{{- end -}}
|
||||
{{- $vol_5 := (get (fromJson (include "redpanda.Listeners.TrustStoreVolume" (dict "a" (list $values.listeners $values.tls) ))) "r") -}}
|
||||
{{- if (ne (toJson $vol_5) "null") -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (list $vol_5)) -}}
|
||||
{{- end -}}
|
||||
{{- $visitedCert := (dict ) -}}
|
||||
{{- range $_, $tlsCfg := (list $values.listeners.kafka.tls $values.listeners.schemaRegistry.tls $values.listeners.admin.tls) -}}
|
||||
{{- $tmp_tuple_2 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.dicttest" (dict "a" (list $visitedCert $tlsCfg.cert (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $visited := $tmp_tuple_2.T2 -}}
|
||||
{{- if (or (not (get (fromJson (include "redpanda.InternalTLS.IsEnabled" (dict "a" (list $tlsCfg $values.tls) ))) "r")) $visited) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $visitedCert $tlsCfg.cert true) -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (list (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "secret" (mustMergeOverwrite (dict ) (dict "defaultMode" (0o420 | int) "secretName" (get (fromJson (include "redpanda.CertSecretName" (dict "a" (list $dot $tlsCfg.cert (get (fromJson (include "redpanda.TLSCertMap.MustGet" (dict "a" (list (deepCopy $values.tls.certs) $tlsCfg.cert) ))) "r")) ))) "r") )) )) (dict "name" (printf "redpanda-%s-cert" $tlsCfg.cert) )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (concat (default (list ) $volumes) (default (list ) $values.console.extraVolumes))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.ConsoleConfig" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $schemaURLs := (coalesce nil) -}}
|
||||
{{- if $values.listeners.schemaRegistry.enabled -}}
|
||||
{{- $schema := "http" -}}
|
||||
{{- if (get (fromJson (include "redpanda.InternalTLS.IsEnabled" (dict "a" (list $values.listeners.schemaRegistry.tls $values.tls) ))) "r") -}}
|
||||
{{- $schema = "https" -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $i := untilStep (((0 | int) | int)|int) (($values.statefulset.replicas | int)|int) (1|int) -}}
|
||||
{{- $schemaURLs = (concat (default (list ) $schemaURLs) (list (printf "%s://%s-%d.%s:%d" $schema (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") $i (get (fromJson (include "redpanda.InternalDomain" (dict "a" (list $dot) ))) "r") ($values.listeners.schemaRegistry.port | int)))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $schema := "http" -}}
|
||||
{{- if (get (fromJson (include "redpanda.InternalTLS.IsEnabled" (dict "a" (list $values.listeners.admin.tls $values.tls) ))) "r") -}}
|
||||
{{- $schema = "https" -}}
|
||||
{{- end -}}
|
||||
{{- $c := (dict "kafka" (dict "brokers" (get (fromJson (include "redpanda.BrokerList" (dict "a" (list $dot ($values.statefulset.replicas | int) ($values.listeners.kafka.port | int)) ))) "r") "sasl" (dict "enabled" (get (fromJson (include "redpanda.Auth.IsSASLEnabled" (dict "a" (list $values.auth) ))) "r") ) "tls" (get (fromJson (include "redpanda.KafkaListeners.ConsoleTLS" (dict "a" (list $values.listeners.kafka $values.tls) ))) "r") "schemaRegistry" (dict "enabled" $values.listeners.schemaRegistry.enabled "urls" $schemaURLs "tls" (get (fromJson (include "redpanda.SchemaRegistryListeners.ConsoleTLS" (dict "a" (list $values.listeners.schemaRegistry $values.tls) ))) "r") ) ) "redpanda" (dict "adminApi" (dict "enabled" true "urls" (list (printf "%s://%s:%d" $schema (get (fromJson (include "redpanda.InternalDomain" (dict "a" (list $dot) ))) "r") ($values.listeners.admin.port | int))) "tls" (get (fromJson (include "redpanda.AdminListeners.ConsoleTLS" (dict "a" (list $values.listeners.admin $values.tls) ))) "r") ) ) ) -}}
|
||||
{{- if (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.connectors.enabled false) ))) "r") -}}
|
||||
{{- $port := (dig "connectors" "connectors" "restPort" (8083 | int) $dot.Values.AsMap) -}}
|
||||
{{- $tmp_tuple_3 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.asintegral" (dict "a" (list $port) ))) "r")) ))) "r") -}}
|
||||
{{- $ok := $tmp_tuple_3.T2 -}}
|
||||
{{- $p := ($tmp_tuple_3.T1 | int) -}}
|
||||
{{- if (not $ok) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $c) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $connectorsDot := (index $dot.Subcharts "connectors") -}}
|
||||
{{- $connectorsURL := (printf "http://%s.%s.svc.%s:%d" (get (fromJson (include "connectors.Fullname" (dict "a" (list $connectorsDot) ))) "r") $dot.Release.Namespace (trimSuffix "." $values.clusterDomain) $p) -}}
|
||||
{{- $_ := (set $c "connect" (dict "enabled" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.connectors.enabled false) ))) "r") "clusters" (list (dict "name" "connectors" "url" $connectorsURL "tls" (dict "enabled" false "caFilepath" "" "certFilepath" "" "keyFilepath" "" "insecureSkipTlsVerify" false ) "username" "" "password" "" "token" "" )) "connectTimeout" (0 | int) "readTimeout" (0 | int) "requestTimeout" (0 | int) )) -}}
|
||||
{{- end -}}
|
||||
{{- if (eq (toJson $values.console.console) "null") -}}
|
||||
{{- $_ := (set $values.console "console" (mustMergeOverwrite (dict ) (dict "config" (dict ) ))) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (merge (dict ) $values.console.console.config $c)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
|
||||
|
||||
{{/*
|
||||
Any rpk command that's given to the user in NOTES.txt must be defined in this template file
|
||||
and tested in a test.
|
||||
*/}}
|
||||
|
||||
{{/* tested in tests/test-kafka-sasl-status.yaml */}}
|
||||
{{- define "rpk-acl-user-create" -}}
|
||||
{{- $cmd := (get ((include "redpanda.RpkACLUserCreate" (dict "a" (list .))) | fromJson) "r") }}
|
||||
{{- $cmd }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* tested in tests/test-kafka-sasl-status.yaml */}}
|
||||
{{- define "rpk-acl-create" -}}
|
||||
{{- $cmd := (get ((include "redpanda.RpkACLCreate" (dict "a" (list .))) | fromJson) "r") }}
|
||||
{{- $cmd }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* tested in tests/test-kafka-sasl-status.yaml */}}
|
||||
{{- define "rpk-cluster-info" -}}
|
||||
{{- $cmd := (get ((include "redpanda.RpkClusterInfo" (dict "a" (list .))) | fromJson) "r") }}
|
||||
{{- $cmd }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* tested in tests/test-kafka-sasl-status.yaml */}}
|
||||
{{- define "rpk-topic-create" -}}
|
||||
{{- $cmd := (get ((include "redpanda.RpkTopicCreate" (dict "a" (list .))) | fromJson) "r") }}
|
||||
{{- $cmd }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* tested in tests/test-kafka-sasl-status.yaml */}}
|
||||
{{- define "rpk-topic-describe" -}}
|
||||
{{- $cmd := (get ((include "redpanda.RpkTopicDescribe" (dict "a" (list .))) | fromJson) "r") }}
|
||||
{{- $cmd }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* tested in tests/test-kafka-sasl-status.yaml */}}
|
||||
{{- define "rpk-topic-delete" -}}
|
||||
{{- $cmd := (get ((include "redpanda.RpkTopicDelete" (dict "a" (list .))) | fromJson) "r") }}
|
||||
{{- $cmd }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,585 @@
|
|||
{{- /* Generated from "helpers.go" */ -}}
|
||||
|
||||
{{- define "redpanda.ChartLabel" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.cleanForK8s" (dict "a" (list (replace "+" "_" (printf "%s-%s" $dot.Chart.Name $dot.Chart.Version))) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.Name" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $tmp_tuple_1 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.typetest" (dict "a" (list "string" (index $dot.Values "nameOverride") "") ))) "r")) ))) "r") -}}
|
||||
{{- $ok_2 := $tmp_tuple_1.T2 -}}
|
||||
{{- $override_1 := $tmp_tuple_1.T1 -}}
|
||||
{{- if (and $ok_2 (ne $override_1 "")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.cleanForK8s" (dict "a" (list $override_1) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.cleanForK8s" (dict "a" (list $dot.Chart.Name) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.Fullname" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $tmp_tuple_2 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.typetest" (dict "a" (list "string" (index $dot.Values "fullnameOverride") "") ))) "r")) ))) "r") -}}
|
||||
{{- $ok_4 := $tmp_tuple_2.T2 -}}
|
||||
{{- $override_3 := $tmp_tuple_2.T1 -}}
|
||||
{{- if (and $ok_4 (ne $override_3 "")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.cleanForK8s" (dict "a" (list $override_3) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.cleanForK8s" (dict "a" (list $dot.Release.Name) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.FullLabels" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $labels := (dict ) -}}
|
||||
{{- if (ne (toJson $values.commonLabels) "null") -}}
|
||||
{{- $labels = $values.commonLabels -}}
|
||||
{{- end -}}
|
||||
{{- $defaults := (dict "helm.sh/chart" (get (fromJson (include "redpanda.ChartLabel" (dict "a" (list $dot) ))) "r") "app.kubernetes.io/name" (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r") "app.kubernetes.io/instance" $dot.Release.Name "app.kubernetes.io/managed-by" $dot.Release.Service "app.kubernetes.io/component" (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r") ) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (merge (dict ) $labels $defaults)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.ServiceAccountName" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $serviceAccount := $values.serviceAccount -}}
|
||||
{{- if (and $serviceAccount.create (ne $serviceAccount.name "")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $serviceAccount.name) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- else -}}{{- if $serviceAccount.create -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- else -}}{{- if (ne $serviceAccount.name "") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $serviceAccount.name) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" "default") | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.Tag" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $tag := (toString $values.image.tag) -}}
|
||||
{{- if (eq $tag "") -}}
|
||||
{{- $tag = $dot.Chart.AppVersion -}}
|
||||
{{- end -}}
|
||||
{{- $pattern := "^v(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$" -}}
|
||||
{{- if (not (regexMatch $pattern $tag)) -}}
|
||||
{{- $_ := (fail "image.tag must start with a 'v' and be a valid semver") -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $tag) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.ServiceName" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (and (ne (toJson $values.service) "null") (ne (toJson $values.service.name) "null")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.cleanForK8s" (dict "a" (list $values.service.name) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.InternalDomain" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $service := (get (fromJson (include "redpanda.ServiceName" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $ns := $dot.Release.Namespace -}}
|
||||
{{- $domain := (trimSuffix "." $values.clusterDomain) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (printf "%s.%s.svc.%s." $service $ns $domain)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.TLSEnabled" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if $values.tls.enabled -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" true) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $listeners := (list "kafka" "admin" "schemaRegistry" "rpc" "http") -}}
|
||||
{{- range $_, $listener := $listeners -}}
|
||||
{{- $tlsCert := (dig "listeners" $listener "tls" "cert" false $dot.Values.AsMap) -}}
|
||||
{{- $tlsEnabled := (dig "listeners" $listener "tls" "enabled" false $dot.Values.AsMap) -}}
|
||||
{{- if (and (not (empty $tlsEnabled)) (not (empty $tlsCert))) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" true) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $external := (dig "listeners" $listener "external" false $dot.Values.AsMap) -}}
|
||||
{{- if (empty $external) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $keys := (keys (get (fromJson (include "_shims.typeassertion" (dict "a" (list (printf "map[%s]%s" "string" "interface {}") $external) ))) "r")) -}}
|
||||
{{- range $_, $key := $keys -}}
|
||||
{{- $enabled := (dig "listeners" $listener "external" $key "enabled" false $dot.Values.AsMap) -}}
|
||||
{{- $tlsCert := (dig "listeners" $listener "external" $key "tls" "cert" false $dot.Values.AsMap) -}}
|
||||
{{- $tlsEnabled := (dig "listeners" $listener "external" $key "tls" "enabled" false $dot.Values.AsMap) -}}
|
||||
{{- if (and (and (not (empty $enabled)) (not (empty $tlsCert))) (not (empty $tlsEnabled))) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" true) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" false) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.ClientAuthRequired" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $listeners := (list "kafka" "admin" "schemaRegistry" "rpc" "http") -}}
|
||||
{{- range $_, $listener := $listeners -}}
|
||||
{{- $required := (dig "listeners" $listener "tls" "requireClientAuth" false $dot.Values.AsMap) -}}
|
||||
{{- if (not (empty $required)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" true) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" false) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.DefaultMounts" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (concat (default (list ) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "base-config" "mountPath" "/etc/redpanda" )))) (default (list ) (get (fromJson (include "redpanda.CommonMounts" (dict "a" (list $dot) ))) "r")))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.CommonMounts" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $mounts := (list ) -}}
|
||||
{{- $sasl_5 := $values.auth.sasl -}}
|
||||
{{- if (and $sasl_5.enabled (ne $sasl_5.secretRef "")) -}}
|
||||
{{- $mounts = (concat (default (list ) $mounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "users" "mountPath" "/etc/secrets/users" "readOnly" true )))) -}}
|
||||
{{- end -}}
|
||||
{{- if (get (fromJson (include "redpanda.TLSEnabled" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $certNames := (keys $values.tls.certs) -}}
|
||||
{{- $_ := (sortAlpha $certNames) -}}
|
||||
{{- range $_, $name := $certNames -}}
|
||||
{{- $cert := (index $values.tls.certs $name) -}}
|
||||
{{- if (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $cert.enabled true) ))) "r")) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $mounts = (concat (default (list ) $mounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" (printf "redpanda-%s-cert" $name) "mountPath" (printf "%s/%s" "/etc/tls/certs" $name) )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $adminTLS := $values.listeners.admin.tls -}}
|
||||
{{- if $adminTLS.requireClientAuth -}}
|
||||
{{- $mounts = (concat (default (list ) $mounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "mtls-client" "mountPath" (printf "%s/%s-client" "/etc/tls/certs" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) )))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $mounts) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.DefaultVolumes" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (concat (default (list ) (list (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "configMap" (mustMergeOverwrite (dict ) (mustMergeOverwrite (dict ) (dict "name" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") )) (dict )) )) (dict "name" "base-config" )))) (default (list ) (get (fromJson (include "redpanda.CommonVolumes" (dict "a" (list $dot) ))) "r")))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.CommonVolumes" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $volumes := (list ) -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (get (fromJson (include "redpanda.TLSEnabled" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $certNames := (keys $values.tls.certs) -}}
|
||||
{{- $_ := (sortAlpha $certNames) -}}
|
||||
{{- range $_, $name := $certNames -}}
|
||||
{{- $cert := (index $values.tls.certs $name) -}}
|
||||
{{- if (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $cert.enabled true) ))) "r")) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (list (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "secret" (mustMergeOverwrite (dict ) (dict "secretName" (get (fromJson (include "redpanda.CertSecretName" (dict "a" (list $dot $name $cert) ))) "r") "defaultMode" (0o440 | int) )) )) (dict "name" (printf "redpanda-%s-cert" $name) )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $adminTLS := $values.listeners.admin.tls -}}
|
||||
{{- $cert := (index $values.tls.certs $adminTLS.cert) -}}
|
||||
{{- if $adminTLS.requireClientAuth -}}
|
||||
{{- $secretName := (printf "%s-client" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- if (ne (toJson $cert.clientSecretRef) "null") -}}
|
||||
{{- $secretName = $cert.clientSecretRef.name -}}
|
||||
{{- end -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (list (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "secret" (mustMergeOverwrite (dict ) (dict "secretName" $secretName "defaultMode" (0o440 | int) )) )) (dict "name" "mtls-client" )))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $sasl_6 := $values.auth.sasl -}}
|
||||
{{- if (and $sasl_6.enabled (ne $sasl_6.secretRef "")) -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (list (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "secret" (mustMergeOverwrite (dict ) (dict "secretName" $sasl_6.secretRef )) )) (dict "name" "users" )))) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $volumes) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.CertSecretName" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $certName := (index .a 1) -}}
|
||||
{{- $cert := (index .a 2) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (ne (toJson $cert.secretRef) "null") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $cert.secretRef.name) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (printf "%s-%s-cert" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") $certName)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.PodSecurityContext" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $sc := (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.statefulset.podSecurityContext $values.statefulset.securityContext) ))) "r") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict ) (dict "fsGroup" $sc.fsGroup "fsGroupChangePolicy" $sc.fsGroupChangePolicy ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.ContainerSecurityContext" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $sc := (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.statefulset.podSecurityContext $values.statefulset.securityContext) ))) "r") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict ) (dict "runAsUser" $sc.runAsUser "runAsGroup" (get (fromJson (include "redpanda.coalesce" (dict "a" (list (list $sc.runAsGroup $sc.fsGroup)) ))) "r") "allowPrivilegeEscalation" (get (fromJson (include "redpanda.coalesce" (dict "a" (list (list $sc.allowPrivilegeEscalation $sc.allowPriviledgeEscalation)) ))) "r") "runAsNonRoot" $sc.runAsNonRoot ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RedpandaAtLeast_22_2_0" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.redpandaAtLeast" (dict "a" (list $dot ">=22.2.0-0 || <0.0.1-0") ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RedpandaAtLeast_22_3_0" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.redpandaAtLeast" (dict "a" (list $dot ">=22.3.0-0 || <0.0.1-0") ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RedpandaAtLeast_23_1_1" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.redpandaAtLeast" (dict "a" (list $dot ">=23.1.1-0 || <0.0.1-0") ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RedpandaAtLeast_23_1_2" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.redpandaAtLeast" (dict "a" (list $dot ">=23.1.2-0 || <0.0.1-0") ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RedpandaAtLeast_22_3_atleast_22_3_13" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.redpandaAtLeast" (dict "a" (list $dot ">=22.3.13-0,<22.4") ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RedpandaAtLeast_22_2_atleast_22_2_10" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.redpandaAtLeast" (dict "a" (list $dot ">=22.2.10-0,<22.3") ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RedpandaAtLeast_23_2_1" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.redpandaAtLeast" (dict "a" (list $dot ">=23.2.1-0 || <0.0.1-0") ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RedpandaAtLeast_23_3_0" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.redpandaAtLeast" (dict "a" (list $dot ">=23.3.0-0 || <0.0.1-0") ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.redpandaAtLeast" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $constraint := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $version := (trimPrefix "v" (get (fromJson (include "redpanda.Tag" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $tmp_tuple_3 := (get (fromJson (include "_shims.compact" (dict "a" (list (list (semverCompare $constraint $version) nil)) ))) "r") -}}
|
||||
{{- $err := $tmp_tuple_3.T2 -}}
|
||||
{{- $result := $tmp_tuple_3.T1 -}}
|
||||
{{- if (ne (toJson $err) "null") -}}
|
||||
{{- $_ := (fail $err) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $result) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.cleanForK8s" -}}
|
||||
{{- $in := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (trimSuffix "-" (trunc (63 | int) $in))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.cleanForK8sWithSuffix" -}}
|
||||
{{- $s := (index .a 0) -}}
|
||||
{{- $suffix := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $lengthToTruncate := ((sub (((add ((get (fromJson (include "_shims.len" (dict "a" (list $s) ))) "r") | int) ((get (fromJson (include "_shims.len" (dict "a" (list $suffix) ))) "r") | int)) | int)) (63 | int)) | int) -}}
|
||||
{{- if (gt $lengthToTruncate (0 | int)) -}}
|
||||
{{- $s = (trunc $lengthToTruncate $s) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (printf "%s-%s" $s $suffix)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RedpandaSMP" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $coresInMillies := ((get (fromJson (include "_shims.resource_MilliValue" (dict "a" (list $values.resources.cpu.cores) ))) "r") | int64) -}}
|
||||
{{- if (lt $coresInMillies (1000 | int64)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (1 | int64)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" ((get (fromJson (include "_shims.resource_Value" (dict "a" (list $values.resources.cpu.cores) ))) "r") | int64)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.coalesce" -}}
|
||||
{{- $values := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- range $_, $v := $values -}}
|
||||
{{- if (ne (toJson $v) "null") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $v) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.StrategicMergePatch" -}}
|
||||
{{- $overrides := (index .a 0) -}}
|
||||
{{- $original := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (ne (toJson $overrides.labels) "null") -}}
|
||||
{{- $_ := (set $original.metadata "labels" (merge (dict ) $overrides.labels (default (dict ) $original.metadata.labels))) -}}
|
||||
{{- end -}}
|
||||
{{- if (ne (toJson $overrides.annotations) "null") -}}
|
||||
{{- $_ := (set $original.metadata "annotations" (merge (dict ) $overrides.annotations (default (dict ) $original.metadata.annotations))) -}}
|
||||
{{- end -}}
|
||||
{{- if (ne (toJson $overrides.spec.securityContext) "null") -}}
|
||||
{{- $_ := (set $original.spec "securityContext" (merge (dict ) $overrides.spec.securityContext (default (mustMergeOverwrite (dict ) (dict )) $original.spec.securityContext))) -}}
|
||||
{{- end -}}
|
||||
{{- if (ne (toJson $overrides.spec.automountServiceAccountToken) "null") -}}
|
||||
{{- $_ := (set $original.spec "automountServiceAccountToken" $overrides.spec.automountServiceAccountToken) -}}
|
||||
{{- end -}}
|
||||
{{- $overrideContainers := (dict ) -}}
|
||||
{{- range $i, $_ := $overrides.spec.containers -}}
|
||||
{{- $container := (index $overrides.spec.containers $i) -}}
|
||||
{{- $_ := (set $overrideContainers (toString $container.name) $container) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (and (ne (toJson $overrides.spec.volumes) "null") (gt ((get (fromJson (include "_shims.len" (dict "a" (list $overrides.spec.volumes) ))) "r") | int) (0 | int))) -}}
|
||||
{{- $newVolumes := (list ) -}}
|
||||
{{- $overrideVolumes := (dict ) -}}
|
||||
{{- range $i, $_ := $overrides.spec.volumes -}}
|
||||
{{- $vol := (index $overrides.spec.volumes $i) -}}
|
||||
{{- $_ := (set $overrideVolumes $vol.name $vol) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $vol := $original.spec.volumes -}}
|
||||
{{- $tmp_tuple_4 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.dicttest" (dict "a" (list $overrideVolumes $vol.name (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $ok_8 := $tmp_tuple_4.T2 -}}
|
||||
{{- $overrideVol_7 := $tmp_tuple_4.T1 -}}
|
||||
{{- if $ok_8 -}}
|
||||
{{- $newVolumes = (concat (default (list ) $newVolumes) (list $overrideVol_7)) -}}
|
||||
{{- $_ := (unset $overrideVolumes $vol.name) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $newVolumes = (concat (default (list ) $newVolumes) (list $vol)) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $vol := $overrideVolumes -}}
|
||||
{{- $newVolumes = (concat (default (list ) $newVolumes) (list $vol)) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $original.spec "volumes" $newVolumes) -}}
|
||||
{{- end -}}
|
||||
{{- $merged := (coalesce nil) -}}
|
||||
{{- range $_, $container := $original.spec.containers -}}
|
||||
{{- $tmp_tuple_5 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.dicttest" (dict "a" (list $overrideContainers $container.name (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $ok_10 := $tmp_tuple_5.T2 -}}
|
||||
{{- $override_9 := $tmp_tuple_5.T1 -}}
|
||||
{{- if $ok_10 -}}
|
||||
{{- $env := (concat (default (list ) $container.env) (default (list ) $override_9.env)) -}}
|
||||
{{- $container = (merge (dict ) $override_9 $container) -}}
|
||||
{{- $_ := (set $container "env" $env) -}}
|
||||
{{- end -}}
|
||||
{{- if (eq (toJson $container.env) "null") -}}
|
||||
{{- $_ := (set $container "env" (list )) -}}
|
||||
{{- end -}}
|
||||
{{- $merged = (concat (default (list ) $merged) (list $container)) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $original.spec "containers" $merged) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $original) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,368 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "redpanda.name" -}}
|
||||
{{- get ((include "redpanda.Name" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
*/}}
|
||||
{{- define "redpanda.fullname" -}}
|
||||
{{- get ((include "redpanda.Fullname" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default service name
|
||||
*/}}
|
||||
{{- define "redpanda.servicename" -}}
|
||||
{{- get ((include "redpanda.ServiceName" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
full helm labels + common labels
|
||||
*/}}
|
||||
{{- define "full.labels" -}}
|
||||
{{- (get ((include "redpanda.FullLabels" (dict "a" (list .))) | fromJson) "r") | toYaml }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "redpanda.chart" -}}
|
||||
{{- get ((include "redpanda.Chart" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "redpanda.serviceAccountName" -}}
|
||||
{{- get ((include "redpanda.ServiceAccountName" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Use AppVersion if image.tag is not set
|
||||
*/}}
|
||||
{{- define "redpanda.tag" -}}
|
||||
{{- get ((include "redpanda.Tag" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Generate internal fqdn */}}
|
||||
{{- define "redpanda.internal.domain" -}}
|
||||
{{- get ((include "redpanda.InternalDomain" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* ConfigMap variables */}}
|
||||
{{- define "admin-internal-tls-enabled" -}}
|
||||
{{- toJson (dict "bool" (get ((include "redpanda.InternalTLS.IsEnabled" (dict "a" (list .Values.listeners.admin.tls .Values.tls))) | fromJson) "r")) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "kafka-internal-tls-enabled" -}}
|
||||
{{- $listener := .Values.listeners.kafka -}}
|
||||
{{- toJson (dict "bool" (and (dig "tls" "enabled" .Values.tls.enabled $listener) (not (empty (dig "tls" "cert" "" $listener))))) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "kafka-external-tls-cert" -}}
|
||||
{{- dig "tls" "cert" .Values.listeners.kafka.tls.cert .listener -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "http-internal-tls-enabled" -}}
|
||||
{{- $listener := .Values.listeners.http -}}
|
||||
{{- toJson (dict "bool" (and (dig "tls" "enabled" .Values.tls.enabled $listener) (not (empty (dig "tls" "cert" "" $listener))))) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "schemaRegistry-internal-tls-enabled" -}}
|
||||
{{- $listener := .Values.listeners.schemaRegistry -}}
|
||||
{{- toJson (dict "bool" (and (dig "tls" "enabled" .Values.tls.enabled $listener) (not (empty (dig "tls" "cert" "" $listener))))) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "tls-enabled" -}}
|
||||
{{- $tlsenabled := get ((include "redpanda.TLSEnabled" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- toJson (dict "bool" $tlsenabled) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "sasl-enabled" -}}
|
||||
{{- toJson (dict "bool" (dig "enabled" false .Values.auth.sasl)) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "admin-api-urls" -}}
|
||||
{{ printf "${SERVICE_NAME}.%s" (include "redpanda.internal.domain" .) }}:{{.Values.listeners.admin.port }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "admin-api-service-url" -}}
|
||||
{{ include "redpanda.internal.domain" .}}:{{.Values.listeners.admin.port }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "sasl-mechanism" -}}
|
||||
{{- dig "sasl" "mechanism" "SCRAM-SHA-512" .Values.auth -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "fail-on-insecure-sasl-logging" -}}
|
||||
{{- if (include "sasl-enabled" .|fromJson).bool -}}
|
||||
{{- $check := list
|
||||
(include "redpanda-atleast-23-1-1" .|fromJson).bool
|
||||
(include "redpanda-22-3-atleast-22-3-13" .|fromJson).bool
|
||||
(include "redpanda-22-2-atleast-22-2-10" .|fromJson).bool
|
||||
-}}
|
||||
{{- if not (mustHas true $check) -}}
|
||||
{{- fail "SASL is enabled and the redpanda version specified leaks secrets to the logs. Please choose a newer version of redpanda." -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "fail-on-unsupported-helm-version" -}}
|
||||
{{- $helmVer := (fromYaml (toYaml .Capabilities.HelmVersion)).version -}}
|
||||
{{- if semverCompare "<3.8.0-0" $helmVer -}}
|
||||
{{- fail (printf "helm version %s is not supported. Please use helm version v3.8.0 or newer." $helmVer) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda-atleast-22-2-0" -}}
|
||||
{{- toJson (dict "bool" (get ((include "redpanda.RedpandaAtLeast_22_2_0" (dict "a" (list .))) | fromJson) "r")) }}
|
||||
{{- end -}}
|
||||
{{- define "redpanda-atleast-22-3-0" -}}
|
||||
{{- toJson (dict "bool" (get ((include "redpanda.RedpandaAtLeast_22_3_0" (dict "a" (list .))) | fromJson) "r")) }}
|
||||
{{- end -}}
|
||||
{{- define "redpanda-atleast-23-1-1" -}}
|
||||
{{- toJson (dict "bool" (get ((include "redpanda.RedpandaAtLeast_23_1_1" (dict "a" (list .))) | fromJson) "r")) }}
|
||||
{{- end -}}
|
||||
{{- define "redpanda-atleast-23-1-2" -}}
|
||||
{{- toJson (dict "bool" (get ((include "redpanda.RedpandaAtLeast_23_1_2" (dict "a" (list .))) | fromJson) "r")) }}
|
||||
{{- end -}}
|
||||
{{- define "redpanda-22-3-atleast-22-3-13" -}}
|
||||
{{- toJson (dict "bool" (get ((include "redpanda.RedpandaAtLeast_22_3_atleast_22_3_13" (dict "a" (list .))) | fromJson) "r")) }}
|
||||
{{- end -}}
|
||||
{{- define "redpanda-22-2-atleast-22-2-10" -}}
|
||||
{{- toJson (dict "bool" (get ((include "redpanda.RedpandaAtLeast_22_2_atleast_22_2_10" (dict "a" (list .))) | fromJson) "r")) }}
|
||||
{{- end -}}
|
||||
{{- define "redpanda-atleast-23-2-1" -}}
|
||||
{{- toJson (dict "bool" (get ((include "redpanda.RedpandaAtLeast_23_2_1" (dict "a" (list .))) | fromJson) "r")) }}
|
||||
{{- end -}}
|
||||
{{- define "redpanda-atleast-23-3-0" -}}
|
||||
{{- toJson (dict "bool" (get ((include "redpanda.RedpandaAtLeast_23_3_0" (dict "a" (list .))) | fromJson) "r")) }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda-22-2-x-without-sasl" -}}
|
||||
{{- $result := (include "redpanda-atleast-22-3-0" . | fromJson).bool -}}
|
||||
{{- if or (include "sasl-enabled" . | fromJson).bool .Values.listeners.kafka.authenticationMethod -}}
|
||||
{{- $result := false -}}
|
||||
{{- end -}}
|
||||
{{- toJson (dict "bool" $result) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "pod-security-context" -}}
|
||||
{{- get ((include "redpanda.PodSecurityContext" (dict "a" (list .))) | fromJson) "r" | toYaml }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "container-security-context" -}}
|
||||
{{- get ((include "redpanda.ContainerSecurityContext" (dict "a" (list .))) | fromJson) "r" | toYaml }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "admin-tls-curl-flags" -}}
|
||||
{{- $result := "" -}}
|
||||
{{- if (include "admin-internal-tls-enabled" . | fromJson).bool -}}
|
||||
{{- $path := (printf "/etc/tls/certs/%s" .Values.listeners.admin.tls.cert) -}}
|
||||
{{- $result = (printf "--cacert %s/tls.crt" $path) -}}
|
||||
{{- if .Values.listeners.admin.tls.requireClientAuth -}}
|
||||
{{- $result = (printf "--cacert %s/ca.crt --cert %s/tls.crt --key %s/tls.key" $path $path $path) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $result -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "admin-http-protocol" -}}
|
||||
{{- $result := "http" -}}
|
||||
{{- if (include "admin-internal-tls-enabled" . | fromJson).bool -}}
|
||||
{{- $result = "https" -}}
|
||||
{{- end -}}
|
||||
{{- $result -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- /*
|
||||
advertised-port returns either the only advertised port if only one is specified,
|
||||
or the port specified for this pod ordinal when there is a full list provided.
|
||||
|
||||
This will return a string int or panic if there is more than one port provided,
|
||||
but not enough ports for the number of replicas requested.
|
||||
*/ -}}
|
||||
{{- define "advertised-port" -}}
|
||||
{{- $port := dig "port" .listenerVals.port .externalVals -}}
|
||||
{{- if .externalVals.advertisedPorts -}}
|
||||
{{- if eq (len .externalVals.advertisedPorts) 1 -}}
|
||||
{{- $port = mustFirst .externalVals.advertisedPorts -}}
|
||||
{{- else -}}
|
||||
{{- $port = index .externalVals.advertisedPorts .replicaIndex -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{ $port }}
|
||||
{{- end -}}
|
||||
|
||||
{{- /*
|
||||
advertised-host returns a json string with the data needed for configuring the advertised listener
|
||||
*/ -}}
|
||||
{{- define "advertised-host" -}}
|
||||
{{- $host := dict "name" .externalName "address" .externalAdvertiseAddress "port" .port -}}
|
||||
{{- if .values.external.addresses -}}
|
||||
{{- $address := "" -}}
|
||||
{{- if gt (len .values.external.addresses) 1 -}}
|
||||
{{- $address = (index .values.external.addresses .replicaIndex) -}}
|
||||
{{- else -}}
|
||||
{{- $address = (index .values.external.addresses 0) -}}
|
||||
{{- end -}}
|
||||
{{- if ( .values.external.domain | default "" ) }}
|
||||
{{- $host = dict "name" .externalName "address" (printf "%s.%s" $address .values.external.domain) "port" .port -}}
|
||||
{{- else -}}
|
||||
{{- $host = dict "name" .externalName "address" $address "port" .port -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- toJson $host -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "is-licensed" -}}
|
||||
{{- toJson (dict "bool" (or (not (empty (include "enterprise-license" . ))) (not (empty (include "enterprise-secret" . ))))) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "seed-server-list" -}}
|
||||
{{- $brokers := list -}}
|
||||
{{- range $ordinal := until (.Values.statefulset.replicas | int) -}}
|
||||
{{- $brokers = append $brokers (printf "%s-%d.%s"
|
||||
(include "redpanda.fullname" $)
|
||||
$ordinal
|
||||
(include "redpanda.internal.domain" $))
|
||||
-}}
|
||||
{{- end -}}
|
||||
{{- toJson $brokers -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
return license checks deprecated values if current values is empty
|
||||
*/}}
|
||||
{{- define "enterprise-license" -}}
|
||||
{{- if dig "license" dict .Values.enterprise -}}
|
||||
{{- .Values.enterprise.license -}}
|
||||
{{- else -}}
|
||||
{{- .Values.license_key -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
return licenseSecretRef checks deprecated values entry if current values empty
|
||||
*/}}
|
||||
{{- define "enterprise-secret" -}}
|
||||
{{- if ( dig "licenseSecretRef" dict .Values.enterprise ) -}}
|
||||
{{- .Values.enterprise.licenseSecretRef -}}
|
||||
{{- else if not (empty .Values.license_secret_ref ) -}}
|
||||
{{- .Values.license_secret_ref -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
return licenseSecretRef.name checks deprecated values entry if current values empty
|
||||
*/}}
|
||||
{{- define "enterprise-secret-name" -}}
|
||||
{{- if ( dig "licenseSecretRef" dict .Values.enterprise ) -}}
|
||||
{{- dig "name" "" .Values.enterprise.licenseSecretRef -}}
|
||||
{{- else if not (empty .Values.license_secret_ref ) -}}
|
||||
{{- dig "secret_name" "" .Values.license_secret_ref -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
return licenseSecretRef.key checks deprecated values entry if current values empty
|
||||
*/}}
|
||||
{{- define "enterprise-secret-key" -}}
|
||||
{{- if ( dig "licenseSecretRef" dict .Values.enterprise ) -}}
|
||||
{{- dig "key" "" .Values.enterprise.licenseSecretRef -}}
|
||||
{{- else if not (empty .Values.license_secret_ref ) -}}
|
||||
{{- dig "secret_key" "" .Values.license_secret_ref -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* mounts that are common to all containers */}}
|
||||
{{- define "common-mounts" -}}
|
||||
{{- $mounts := get ((include "redpanda.CommonMounts" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- if $mounts -}}
|
||||
{{- toYaml $mounts -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* mounts that are common to most containers */}}
|
||||
{{- define "default-mounts" -}}
|
||||
{{- $mounts := get ((include "redpanda.DefaultMounts" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- if $mounts -}}
|
||||
{{- toYaml $mounts -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* volumes that are common to all pods */}}
|
||||
{{- define "common-volumes" -}}
|
||||
{{- $volumes := get ((include "redpanda.CommonVolumes" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- if $volumes -}}
|
||||
{{- toYaml $volumes -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* the default set of volumes for most pods, except the sts pod */}}
|
||||
{{- define "default-volumes" -}}
|
||||
{{- $volumes := get ((include "redpanda.DefaultVolumes" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- if $volumes -}}
|
||||
{{- toYaml $volumes -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* support legacy storage.tieredConfig */}}
|
||||
{{- define "storage-tiered-config" -}}
|
||||
{{- $cfg := get ((include "redpanda.StorageTieredConfig" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- if $cfg -}}
|
||||
{{- toYaml $cfg -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
rpk sasl environment variables
|
||||
|
||||
this will return a string with the correct environment variables to use for SASL based on the
|
||||
version of the redpada container being used
|
||||
*/}}
|
||||
{{- define "rpk-sasl-environment-variables" -}}
|
||||
{{- if (include "redpanda-atleast-23-2-1" . | fromJson).bool -}}
|
||||
RPK_USER RPK_PASS RPK_SASL_MECHANISM
|
||||
{{- else -}}
|
||||
REDPANDA_SASL_USERNAME REDPANDA_SASL_PASSWORD REDPANDA_SASL_MECHANISM
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "curl-options" -}}
|
||||
{{- print " -svm3 --fail --retry \"120\" --retry-max-time \"120\" --retry-all-errors -o - -w \"\\nstatus=%{http_code} %{redirect_url} size=%{size_download} time=%{time_total} content-type=\\\"%{content_type}\\\"\\n\" "}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "advertised-address-template" -}}
|
||||
{{- $prefixTemplate := dig "prefixTemplate" "" .externalListener -}}
|
||||
{{- if empty $prefixTemplate -}}
|
||||
{{- $prefixTemplate = dig "prefixTemplate" "" .externalVals -}}
|
||||
{{- end -}}
|
||||
{{ quote $prefixTemplate }}
|
||||
{{- end -}}
|
||||
|
||||
{{/* check if client auth is enabled for any of the listeners */}}
|
||||
{{- define "client-auth-required" -}}
|
||||
{{- $requireClientAuth := get ((include "redpanda.ClientAuthRequired" (dict "a" (list .))) | fromJson) "r" }}
|
||||
{{- toJson (dict "bool" $requireClientAuth) -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,63 @@
|
|||
{{- /* Generated from "memory.go" */ -}}
|
||||
|
||||
{{- define "redpanda.RedpandaReserveMemory" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $rpMem_1 := $values.resources.memory.redpanda -}}
|
||||
{{- if (and (ne (toJson $rpMem_1) "null") (ne (toJson $rpMem_1.reserveMemory) "null")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" ((div ((get (fromJson (include "_shims.resource_Value" (dict "a" (list $rpMem_1.reserveMemory) ))) "r") | int64) ((mul (1024 | int) (1024 | int)))) | int64)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" ((add (((mulf (((get (fromJson (include "redpanda.ContainerMemory" (dict "a" (list $dot) ))) "r") | int64) | float64) 0.002) | float64) | int64) (200 | int64)) | int64)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RedpandaMemory" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $memory := ((0 | int64) | int64) -}}
|
||||
{{- $containerMemory := ((get (fromJson (include "redpanda.ContainerMemory" (dict "a" (list $dot) ))) "r") | int64) -}}
|
||||
{{- $rpMem_2 := $values.resources.memory.redpanda -}}
|
||||
{{- if (and (ne (toJson $rpMem_2) "null") (ne (toJson $rpMem_2.memory) "null")) -}}
|
||||
{{- $memory = ((div ((get (fromJson (include "_shims.resource_Value" (dict "a" (list $rpMem_2.memory) ))) "r") | int64) ((mul (1024 | int) (1024 | int)))) | int64) -}}
|
||||
{{- else -}}
|
||||
{{- $memory = (((mulf ($containerMemory | float64) 0.8) | float64) | int64) -}}
|
||||
{{- end -}}
|
||||
{{- if (eq $memory (0 | int64)) -}}
|
||||
{{- $_ := (fail "unable to get memory value redpanda-memory") -}}
|
||||
{{- end -}}
|
||||
{{- if (lt $memory (256 | int64)) -}}
|
||||
{{- $_ := (fail (printf "%d is below the minimum value for Redpanda" $memory)) -}}
|
||||
{{- end -}}
|
||||
{{- if (gt ((add $memory ((get (fromJson (include "redpanda.RedpandaReserveMemory" (dict "a" (list $dot) ))) "r") | int64)) | int64) $containerMemory) -}}
|
||||
{{- $_ := (fail (printf "Not enough container memory for Redpanda memory values where Redpanda: %d, reserve: %d, container: %d" $memory ((get (fromJson (include "redpanda.RedpandaReserveMemory" (dict "a" (list $dot) ))) "r") | int64) $containerMemory)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $memory) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.ContainerMemory" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (ne (toJson $values.resources.memory.container.min) "null") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" ((div ((get (fromJson (include "_shims.resource_Value" (dict "a" (list $values.resources.memory.container.min) ))) "r") | int64) ((mul (1024 | int) (1024 | int)))) | int64)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" ((div ((get (fromJson (include "_shims.resource_Value" (dict "a" (list $values.resources.memory.container.max) ))) "r") | int64) ((mul (1024 | int) (1024 | int)))) | int64)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,167 @@
|
|||
{{- /* Generated from "notes.go" */ -}}
|
||||
|
||||
{{- define "redpanda.Warnings" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $warnings := (coalesce nil) -}}
|
||||
{{- $w_1 := (get (fromJson (include "redpanda.cpuWarning" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne $w_1 "") -}}
|
||||
{{- $warnings = (concat (default (list ) $warnings) (list (printf `**Warning**: %s` $w_1))) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $warnings) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.cpuWarning" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $coresInMillis := ((get (fromJson (include "_shims.resource_MilliValue" (dict "a" (list $values.resources.cpu.cores) ))) "r") | int64) -}}
|
||||
{{- if (lt $coresInMillis (1000 | int64)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (printf "%dm is below the minimum recommended CPU value for Redpanda" $coresInMillis)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" "") | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.Notes" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $anySASL := (get (fromJson (include "redpanda.Auth.IsSASLEnabled" (dict "a" (list $values.auth) ))) "r") -}}
|
||||
{{- $notes := (coalesce nil) -}}
|
||||
{{- $notes = (concat (default (list ) $notes) (list `` `` `` `` (printf `Congratulations on installing %s!` $dot.Chart.Name) `` `The pods will rollout in a few seconds. To check the status:` `` (printf ` kubectl -n %s rollout status statefulset %s --watch` $dot.Release.Namespace (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")))) -}}
|
||||
{{- if (and $values.external.enabled (eq $values.external.type "LoadBalancer")) -}}
|
||||
{{- $notes = (concat (default (list ) $notes) (list `` `If you are using the load balancer service with a cloud provider, the services will likely have automatically-generated addresses. In this scenario the advertised listeners must be updated in order for external access to work. Run the following command once Redpanda is deployed:` `` (printf ` helm upgrade %s redpanda/redpanda --reuse-values -n %s --set $(kubectl get svc -n %s -o jsonpath='{"external.addresses={"}{ range .items[*]}{.status.loadBalancer.ingress[0].ip }{.status.loadBalancer.ingress[0].hostname}{","}{ end }{"}\n"}')` (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r") $dot.Release.Namespace $dot.Release.Namespace))) -}}
|
||||
{{- end -}}
|
||||
{{- $profiles := (keys $values.listeners.kafka.external) -}}
|
||||
{{- $_ := (sortAlpha $profiles) -}}
|
||||
{{- $profileName := (index $profiles (0 | int)) -}}
|
||||
{{- $notes = (concat (default (list ) $notes) (list `` `Set up rpk for access to your external listeners:`)) -}}
|
||||
{{- $profile := (index $values.listeners.kafka.external $profileName) -}}
|
||||
{{- if (get (fromJson (include "redpanda.TLSEnabled" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $external := "" -}}
|
||||
{{- if (and (ne (toJson $profile.tls) "null") (ne (toJson $profile.tls.cert) "null")) -}}
|
||||
{{- $external = $profile.tls.cert -}}
|
||||
{{- else -}}
|
||||
{{- $external = $values.listeners.kafka.tls.cert -}}
|
||||
{{- end -}}
|
||||
{{- $notes = (concat (default (list ) $notes) (list (printf ` kubectl get secret -n %s %s-%s-cert -o go-template='{{ index .data "ca.crt" | base64decode }}' > ca.crt` $dot.Release.Namespace (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") $external))) -}}
|
||||
{{- if (or $values.listeners.kafka.tls.requireClientAuth $values.listeners.admin.tls.requireClientAuth) -}}
|
||||
{{- $notes = (concat (default (list ) $notes) (list (printf ` kubectl get secret -n %s %s-client -o go-template='{{ index .data "tls.crt" | base64decode }}' > tls.crt` $dot.Release.Namespace (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) (printf ` kubectl get secret -n %s %s-client -o go-template='{{ index .data "tls.key" | base64decode }}' > tls.key` $dot.Release.Namespace (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $notes = (concat (default (list ) $notes) (list (printf ` rpk profile create --from-profile <(kubectl get configmap -n %s %s-rpk -o go-template='{{ .data.profile }}') %s` $dot.Release.Namespace (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") $profileName) `` `Set up dns to look up the pods on their Kubernetes Nodes. You can use this query to get the list of short-names to IP addresses. Add your external domain to the hostnames and you could test by adding these to your /etc/hosts:` `` (printf ` kubectl get pod -n %s -o custom-columns=node:.status.hostIP,name:.metadata.name --no-headers -l app.kubernetes.io/name=redpanda,app.kubernetes.io/component=redpanda-statefulset` $dot.Release.Namespace))) -}}
|
||||
{{- if $anySASL -}}
|
||||
{{- $notes = (concat (default (list ) $notes) (list `` `Set the credentials in the environment:` `` (printf ` kubectl -n %s get secret %s -o go-template="{{ range .data }}{{ . | base64decode }}{{ end }}" | IFS=: read -r %s` $dot.Release.Namespace $values.auth.sasl.secretRef (get (fromJson (include "redpanda.RpkSASLEnvironmentVariables" (dict "a" (list $dot) ))) "r")) (printf ` export %s` (get (fromJson (include "redpanda.RpkSASLEnvironmentVariables" (dict "a" (list $dot) ))) "r")))) -}}
|
||||
{{- end -}}
|
||||
{{- $notes = (concat (default (list ) $notes) (list `` `Try some sample commands:`)) -}}
|
||||
{{- if $anySASL -}}
|
||||
{{- $notes = (concat (default (list ) $notes) (list `Create a user:` `` (printf ` %s` (get (fromJson (include "redpanda.RpkACLUserCreate" (dict "a" (list $dot) ))) "r")) `` `Give the user permissions:` `` (printf ` %s` (get (fromJson (include "redpanda.RpkACLCreate" (dict "a" (list $dot) ))) "r")))) -}}
|
||||
{{- end -}}
|
||||
{{- $notes = (concat (default (list ) $notes) (list `` `Get the api status:` `` (printf ` %s` (get (fromJson (include "redpanda.RpkClusterInfo" (dict "a" (list $dot) ))) "r")) `` `Create a topic` `` (printf ` %s` (get (fromJson (include "redpanda.RpkTopicCreate" (dict "a" (list $dot) ))) "r")) `` `Describe the topic:` `` (printf ` %s` (get (fromJson (include "redpanda.RpkTopicDescribe" (dict "a" (list $dot) ))) "r")) `` `Delete the topic:` `` (printf ` %s` (get (fromJson (include "redpanda.RpkTopicDelete" (dict "a" (list $dot) ))) "r")))) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $notes) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RpkACLUserCreate" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (printf `rpk acl user create myuser --new-password changeme --mechanism %s` (get (fromJson (include "redpanda.SASLMechanism" (dict "a" (list $dot) ))) "r"))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.SASLMechanism" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (ne (toJson $values.auth.sasl) "null") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $values.auth.sasl.mechanism) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" "SCRAM-SHA-512") | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RpkACLCreate" -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" `rpk acl create --allow-principal 'myuser' --allow-host '*' --operation all --topic 'test-topic'`) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RpkClusterInfo" -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" `rpk cluster info`) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RpkTopicCreate" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (printf `rpk topic create test-topic -p 3 -r %d` (min (3 | int64) (($values.statefulset.replicas | int) | int64)))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RpkTopicDescribe" -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" `rpk topic describe test-topic`) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RpkTopicDelete" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" `rpk topic delete test-topic`) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.RpkSASLEnvironmentVariables" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (get (fromJson (include "redpanda.RedpandaAtLeast_23_2_1" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" `RPK_USER RPK_PASS RPK_SASL_MECHANISM`) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- else -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" `REDPANDA_SASL_USERNAME REDPANDA_SASL_PASSWORD REDPANDA_SASL_MECHANISM`) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
{{- /* Generated from "poddisruptionbudget.go" */ -}}
|
||||
|
||||
{{- define "redpanda.PodDisruptionBudget" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $budget := ($values.statefulset.budget.maxUnavailable | int) -}}
|
||||
{{- $minReplicas := ((div ($values.statefulset.replicas | int) (2 | int)) | int) -}}
|
||||
{{- if (and (gt $budget (1 | int)) (gt $budget $minReplicas)) -}}
|
||||
{{- $_ := (fail (printf "statefulset.budget.maxUnavailable is set too high to maintain quorum: %d > %d" $budget $minReplicas)) -}}
|
||||
{{- end -}}
|
||||
{{- $maxUnavailable := ($budget | int) -}}
|
||||
{{- $matchLabels := (get (fromJson (include "redpanda.StatefulSetPodLabelsSelector" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $_ := (set $matchLabels "redpanda.com/poddisruptionbudget" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict ) "status" (dict "disruptionsAllowed" 0 "currentHealthy" 0 "desiredHealthy" 0 "expectedPods" 0 ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "policy/v1" "kind" "PodDisruptionBudget" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") )) "spec" (mustMergeOverwrite (dict ) (dict "selector" (mustMergeOverwrite (dict ) (dict "matchLabels" $matchLabels )) "maxUnavailable" $maxUnavailable )) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
{{- /* Generated from "post_install_upgrade_job.go" */ -}}
|
||||
|
||||
{{- define "redpanda.bootstrapYamlTemplater" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $env := (get (fromJson (include "redpanda.TieredStorageCredentials.AsEnvVars" (dict "a" (list $values.storage.tiered.credentialsSecretRef (get (fromJson (include "redpanda.Storage.GetTieredStorageConfig" (dict "a" (list $values.storage) ))) "r")) ))) "r") -}}
|
||||
{{- $image := (printf `%s:%s` $values.statefulset.sideCars.controllers.image.repository $values.statefulset.sideCars.controllers.image.tag) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "name" "" "resources" (dict ) ) (dict "name" "bootstrap-yaml-envsubst" "image" $image "command" (list "/redpanda-operator" "envsubst" "/tmp/base-config/bootstrap.yaml" "--output" "/tmp/config/.bootstrap.yaml") "env" $env "resources" (mustMergeOverwrite (dict ) (dict "limits" (dict "cpu" (get (fromJson (include "_shims.resource_MustParse" (dict "a" (list "100m") ))) "r") "memory" (get (fromJson (include "_shims.resource_MustParse" (dict "a" (list "125Mi") ))) "r") ) "requests" (dict "cpu" (get (fromJson (include "_shims.resource_MustParse" (dict "a" (list "100m") ))) "r") "memory" (get (fromJson (include "_shims.resource_MustParse" (dict "a" (list "125Mi") ))) "r") ) )) "securityContext" (mustMergeOverwrite (dict ) (dict "allowPrivilegeEscalation" false "readOnlyRootFilesystem" true "runAsNonRoot" true )) "volumeMounts" (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "config" "mountPath" "/tmp/config/" )) (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "base-config" "mountPath" "/tmp/base-config/" ))) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.PostInstallUpgradeJob" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.post_install_job.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $image := (printf `%s:%s` $values.statefulset.sideCars.controllers.image.repository $values.statefulset.sideCars.controllers.image.tag) -}}
|
||||
{{- $job := (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "template" (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "containers" (coalesce nil) ) ) ) "status" (dict ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "batch/v1" "kind" "Job" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (printf "%s-configuration" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) "namespace" $dot.Release.Namespace "labels" (merge (dict ) (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") (default (dict ) $values.post_install_job.labels)) "annotations" (merge (dict ) (dict "helm.sh/hook" "post-install,post-upgrade" "helm.sh/hook-delete-policy" "before-hook-creation" "helm.sh/hook-weight" "-5" ) (default (dict ) $values.post_install_job.annotations)) )) "spec" (mustMergeOverwrite (dict "template" (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "containers" (coalesce nil) ) ) ) (dict "template" (get (fromJson (include "redpanda.StrategicMergePatch" (dict "a" (list $values.post_install_job.podTemplate (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "containers" (coalesce nil) ) ) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "generateName" (printf "%s-post-" $dot.Release.Name) "labels" (merge (dict ) (dict "app.kubernetes.io/name" (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r") "app.kubernetes.io/instance" $dot.Release.Name "app.kubernetes.io/component" (printf "%.50s-post-install" (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r")) ) (default (dict ) $values.commonLabels)) )) "spec" (mustMergeOverwrite (dict "containers" (coalesce nil) ) (dict "nodeSelector" $values.nodeSelector "affinity" (get (fromJson (include "redpanda.postInstallJobAffinity" (dict "a" (list $dot) ))) "r") "tolerations" (get (fromJson (include "redpanda.tolerations" (dict "a" (list $dot) ))) "r") "restartPolicy" "Never" "securityContext" (get (fromJson (include "redpanda.PodSecurityContext" (dict "a" (list $dot) ))) "r") "imagePullSecrets" (default (coalesce nil) $values.imagePullSecrets) "initContainers" (list (get (fromJson (include "redpanda.bootstrapYamlTemplater" (dict "a" (list $dot) ))) "r")) "automountServiceAccountToken" false "containers" (list (mustMergeOverwrite (dict "name" "" "resources" (dict ) ) (dict "name" "post-install" "image" $image "env" (get (fromJson (include "redpanda.PostInstallUpgradeEnvironmentVariables" (dict "a" (list $dot) ))) "r") "command" (list "/redpanda-operator" "sync-cluster-config" "--users-directory" "/etc/secrets/users" "--redpanda-yaml" "/tmp/base-config/redpanda.yaml" "--bootstrap-yaml" "/tmp/config/.bootstrap.yaml") "resources" (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.post_install_job.resources (mustMergeOverwrite (dict ) (dict ))) ))) "r") "securityContext" (merge (dict ) (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.post_install_job.securityContext (mustMergeOverwrite (dict ) (dict ))) ))) "r") (get (fromJson (include "redpanda.ContainerSecurityContext" (dict "a" (list $dot) ))) "r")) "volumeMounts" (concat (default (list ) (get (fromJson (include "redpanda.CommonMounts" (dict "a" (list $dot) ))) "r")) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "config" "mountPath" "/tmp/config" )) (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "base-config" "mountPath" "/tmp/base-config" )))) ))) "volumes" (concat (default (list ) (get (fromJson (include "redpanda.CommonVolumes" (dict "a" (list $dot) ))) "r")) (list (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "configMap" (mustMergeOverwrite (dict ) (mustMergeOverwrite (dict ) (dict "name" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") )) (dict )) )) (dict "name" "base-config" )) (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "emptyDir" (mustMergeOverwrite (dict ) (dict )) )) (dict "name" "config" )))) "serviceAccountName" (get (fromJson (include "redpanda.ServiceAccountName" (dict "a" (list $dot) ))) "r") )) ))) ))) "r") )) )) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $job) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.postInstallJobAffinity" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not (empty $values.post_install_job.affinity)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $values.post_install_job.affinity) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (merge (dict ) $values.post_install_job.affinity $values.affinity)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.tolerations" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $result := (coalesce nil) -}}
|
||||
{{- range $_, $t := $values.tolerations -}}
|
||||
{{- $result = (concat (default (list ) $result) (list (merge (dict ) $t))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $result) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.PostInstallUpgradeEnvironmentVariables" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $envars := (list ) -}}
|
||||
{{- $license_1 := (get (fromJson (include "redpanda.GetLicenseLiteral" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $secretReference_2 := (get (fromJson (include "redpanda.GetLicenseSecretReference" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne $license_1 "") -}}
|
||||
{{- $envars = (concat (default (list ) $envars) (list (mustMergeOverwrite (dict "name" "" ) (dict "name" "REDPANDA_LICENSE" "value" $license_1 )))) -}}
|
||||
{{- else -}}{{- if (ne (toJson $secretReference_2) "null") -}}
|
||||
{{- $envars = (concat (default (list ) $envars) (list (mustMergeOverwrite (dict "name" "" ) (dict "name" "REDPANDA_LICENSE" "valueFrom" (mustMergeOverwrite (dict ) (dict "secretKeyRef" $secretReference_2 )) )))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.bootstrapEnvVars" (dict "a" (list $dot $envars) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.GetLicenseLiteral" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (ne $values.enterprise.license "") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $values.enterprise.license) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $values.license_key) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.GetLicenseSecretReference" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not (empty $values.enterprise.licenseSecretRef)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "key" "" ) (mustMergeOverwrite (dict ) (dict "name" $values.enterprise.licenseSecretRef.name )) (dict "key" $values.enterprise.licenseSecretRef.key ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- else -}}{{- if (not (empty $values.license_secret_ref)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "key" "" ) (mustMergeOverwrite (dict ) (dict "name" $values.license_secret_ref.secret_name )) (dict "key" $values.license_secret_ref.secret_key ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
{{- /* Generated from "post_upgrade_job.go" */ -}}
|
||||
|
||||
{{- define "redpanda.PostUpgrade" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.post_upgrade_job.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $labels := (default (dict ) $values.post_upgrade_job.labels) -}}
|
||||
{{- $annotations := (default (dict ) $values.post_upgrade_job.annotations) -}}
|
||||
{{- $annotations = (merge (dict ) (dict "helm.sh/hook" "post-upgrade" "helm.sh/hook-delete-policy" "before-hook-creation" "helm.sh/hook-weight" "-10" ) $annotations) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "template" (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "containers" (coalesce nil) ) ) ) "status" (dict ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "batch/v1" "kind" "Job" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (printf "%s-post-upgrade" (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r")) "namespace" $dot.Release.Namespace "labels" (merge (dict ) (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") $labels) "annotations" $annotations )) "spec" (mustMergeOverwrite (dict "template" (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "containers" (coalesce nil) ) ) ) (dict "backoffLimit" $values.post_upgrade_job.backoffLimit "template" (get (fromJson (include "redpanda.StrategicMergePatch" (dict "a" (list $values.post_upgrade_job.podTemplate (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "containers" (coalesce nil) ) ) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" $dot.Release.Name "labels" (merge (dict ) (dict "app.kubernetes.io/name" (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r") "app.kubernetes.io/instance" $dot.Release.Name "app.kubernetes.io/component" (printf "%s-post-upgrade" (trunc (50 | int) (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r"))) ) $values.commonLabels) )) "spec" (mustMergeOverwrite (dict "containers" (coalesce nil) ) (dict "nodeSelector" $values.nodeSelector "affinity" (merge (dict ) $values.post_upgrade_job.affinity $values.affinity) "tolerations" $values.tolerations "restartPolicy" "Never" "securityContext" (get (fromJson (include "redpanda.PodSecurityContext" (dict "a" (list $dot) ))) "r") "serviceAccountName" (get (fromJson (include "redpanda.ServiceAccountName" (dict "a" (list $dot) ))) "r") "imagePullSecrets" (default (coalesce nil) $values.imagePullSecrets) "containers" (list (mustMergeOverwrite (dict "name" "" "resources" (dict ) ) (dict "name" "post-upgrade" "image" (printf "%s:%s" $values.image.repository (get (fromJson (include "redpanda.Tag" (dict "a" (list $dot) ))) "r")) "command" (list "/bin/bash" "-c") "args" (list (get (fromJson (include "redpanda.PostUpgradeJobScript" (dict "a" (list $dot) ))) "r")) "env" (get (fromJson (include "redpanda.rpkEnvVars" (dict "a" (list $dot $values.post_upgrade_job.extraEnv) ))) "r") "envFrom" $values.post_upgrade_job.extraEnvFrom "securityContext" (merge (dict ) (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.post_upgrade_job.securityContext (mustMergeOverwrite (dict ) (dict ))) ))) "r") (get (fromJson (include "redpanda.ContainerSecurityContext" (dict "a" (list $dot) ))) "r")) "resources" $values.post_upgrade_job.resources "volumeMounts" (get (fromJson (include "redpanda.DefaultMounts" (dict "a" (list $dot) ))) "r") ))) "volumes" (get (fromJson (include "redpanda.DefaultVolumes" (dict "a" (list $dot) ))) "r") )) ))) ))) "r") )) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.PostUpgradeJobScript" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $script := (list `set -e` ``) -}}
|
||||
{{- range $key, $value := $values.config.cluster -}}
|
||||
{{- $tmp_tuple_1 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.asintegral" (dict "a" (list $value) ))) "r")) ))) "r") -}}
|
||||
{{- $isInt64 := $tmp_tuple_1.T2 -}}
|
||||
{{- $asInt64 := ($tmp_tuple_1.T1 | int64) -}}
|
||||
{{- $tmp_tuple_2 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.typetest" (dict "a" (list "bool" $value false) ))) "r")) ))) "r") -}}
|
||||
{{- $ok_2 := $tmp_tuple_2.T2 -}}
|
||||
{{- $asBool_1 := $tmp_tuple_2.T1 -}}
|
||||
{{- $tmp_tuple_3 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.typetest" (dict "a" (list "string" $value "") ))) "r")) ))) "r") -}}
|
||||
{{- $ok_4 := $tmp_tuple_3.T2 -}}
|
||||
{{- $asStr_3 := $tmp_tuple_3.T1 -}}
|
||||
{{- $tmp_tuple_4 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.typetest" (dict "a" (list (printf "[]%s" "interface {}") $value (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $ok_6 := $tmp_tuple_4.T2 -}}
|
||||
{{- $asSlice_5 := $tmp_tuple_4.T1 -}}
|
||||
{{- if (and $ok_2 $asBool_1) -}}
|
||||
{{- $script = (concat (default (list ) $script) (list (printf "rpk cluster config set %s %t" $key $asBool_1))) -}}
|
||||
{{- else -}}{{- if (and $ok_4 (ne $asStr_3 "")) -}}
|
||||
{{- $script = (concat (default (list ) $script) (list (printf "rpk cluster config set %s %s" $key $asStr_3))) -}}
|
||||
{{- else -}}{{- if (and $isInt64 (gt $asInt64 (0 | int64))) -}}
|
||||
{{- $script = (concat (default (list ) $script) (list (printf "rpk cluster config set %s %d" $key $asInt64))) -}}
|
||||
{{- else -}}{{- if (and $ok_6 (gt ((get (fromJson (include "_shims.len" (dict "a" (list $asSlice_5) ))) "r") | int) (0 | int))) -}}
|
||||
{{- $script = (concat (default (list ) $script) (list (printf `rpk cluster config set %s "[ %s ]"` $key (join "," $asSlice_5)))) -}}
|
||||
{{- else -}}{{- if (not (empty $value)) -}}
|
||||
{{- $script = (concat (default (list ) $script) (list (printf "rpk cluster config set %s %v" $key $value))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $tmp_tuple_5 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.dicttest" (dict "a" (list $values.config.cluster "default_topic_replications" (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $ok_7 := $tmp_tuple_5.T2 -}}
|
||||
{{- if (and (not $ok_7) (ge ($values.statefulset.replicas | int) (3 | int))) -}}
|
||||
{{- $script = (concat (default (list ) $script) (list "rpk cluster config set default_topic_replications 3")) -}}
|
||||
{{- end -}}
|
||||
{{- $tmp_tuple_6 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.dicttest" (dict "a" (list $values.config.cluster "storage_min_free_bytes" (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $ok_8 := $tmp_tuple_6.T2 -}}
|
||||
{{- if (not $ok_8) -}}
|
||||
{{- $script = (concat (default (list ) $script) (list (printf "rpk cluster config set storage_min_free_bytes %d" ((get (fromJson (include "redpanda.Storage.StorageMinFreeBytes" (dict "a" (list $values.storage) ))) "r") | int64)))) -}}
|
||||
{{- end -}}
|
||||
{{- if (get (fromJson (include "redpanda.RedpandaAtLeast_23_2_1" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $service := $values.listeners.admin -}}
|
||||
{{- $caCert := "" -}}
|
||||
{{- $scheme := "http" -}}
|
||||
{{- if (get (fromJson (include "redpanda.InternalTLS.IsEnabled" (dict "a" (list $service.tls $values.tls) ))) "r") -}}
|
||||
{{- $scheme = "https" -}}
|
||||
{{- $caCert = (printf "--cacert %q" (get (fromJson (include "redpanda.InternalTLS.ServerCAPath" (dict "a" (list $service.tls $values.tls) ))) "r")) -}}
|
||||
{{- end -}}
|
||||
{{- $url := (printf "%s://%s:%d/v1/debug/restart_service?service=schema-registry" $scheme (get (fromJson (include "redpanda.InternalDomain" (dict "a" (list $dot) ))) "r") (($service.port | int) | int64)) -}}
|
||||
{{- $script = (concat (default (list ) $script) (list `if [ -d "/etc/secrets/users/" ]; then` ` IFS=":" read -r USER_NAME PASSWORD MECHANISM < <(grep "" $(find /etc/secrets/users/* -print))` ` curl -svm3 --fail --retry "120" --retry-max-time "120" --retry-all-errors --ssl-reqd \` (printf ` %s \` $caCert) ` -X PUT -u ${USER_NAME}:${PASSWORD} \` (printf ` %s || true` $url) `fi`)) -}}
|
||||
{{- end -}}
|
||||
{{- $script = (concat (default (list ) $script) (list "")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (join "\n" $script)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
{{- /* Generated from "rbac.go" */ -}}
|
||||
|
||||
{{- define "redpanda.ClusterRoles" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $crs := (coalesce nil) -}}
|
||||
{{- $cr_1 := (get (fromJson (include "redpanda.SidecarControllersClusterRole" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $cr_1) "null") -}}
|
||||
{{- $crs = (concat (default (list ) $crs) (list $cr_1)) -}}
|
||||
{{- end -}}
|
||||
{{- if (not $values.rbac.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $crs) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $rpkBundleName := (printf "%s-rpk-bundle" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $crs = (concat (default (list ) $crs) (default (list ) (list (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "rules" (coalesce nil) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "rbac.authorization.k8s.io/v1" "kind" "ClusterRole" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") "annotations" $values.serviceAccount.annotations )) "rules" (list (mustMergeOverwrite (dict "verbs" (coalesce nil) ) (dict "apiGroups" (list "") "resources" (list "nodes") "verbs" (list "get" "list") ))) )) (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "rules" (coalesce nil) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "rbac.authorization.k8s.io/v1" "kind" "ClusterRole" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" $rpkBundleName "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") "annotations" $values.serviceAccount.annotations )) "rules" (list (mustMergeOverwrite (dict "verbs" (coalesce nil) ) (dict "apiGroups" (list "") "resources" (list "configmaps" "endpoints" "events" "limitranges" "persistentvolumeclaims" "pods" "pods/log" "replicationcontrollers" "resourcequotas" "serviceaccounts" "services") "verbs" (list "get" "list") ))) ))))) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $crs) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.ClusterRoleBindings" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $crbs := (coalesce nil) -}}
|
||||
{{- $crb_2 := (get (fromJson (include "redpanda.SidecarControllersClusterRoleBinding" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $crb_2) "null") -}}
|
||||
{{- $crbs = (concat (default (list ) $crbs) (list $crb_2)) -}}
|
||||
{{- end -}}
|
||||
{{- if (not $values.rbac.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $crbs) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $rpkBundleName := (printf "%s-rpk-bundle" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $crbs = (concat (default (list ) $crbs) (default (list ) (list (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "roleRef" (dict "apiGroup" "" "kind" "" "name" "" ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "rbac.authorization.k8s.io/v1" "kind" "ClusterRoleBinding" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") "annotations" $values.serviceAccount.annotations )) "roleRef" (mustMergeOverwrite (dict "apiGroup" "" "kind" "" "name" "" ) (dict "apiGroup" "rbac.authorization.k8s.io" "kind" "ClusterRole" "name" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") )) "subjects" (list (mustMergeOverwrite (dict "kind" "" "name" "" ) (dict "kind" "ServiceAccount" "name" (get (fromJson (include "redpanda.ServiceAccountName" (dict "a" (list $dot) ))) "r") "namespace" $dot.Release.Namespace ))) )) (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "roleRef" (dict "apiGroup" "" "kind" "" "name" "" ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "rbac.authorization.k8s.io/v1" "kind" "ClusterRoleBinding" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" $rpkBundleName "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") "annotations" $values.serviceAccount.annotations )) "roleRef" (mustMergeOverwrite (dict "apiGroup" "" "kind" "" "name" "" ) (dict "apiGroup" "rbac.authorization.k8s.io" "kind" "ClusterRole" "name" $rpkBundleName )) "subjects" (list (mustMergeOverwrite (dict "kind" "" "name" "" ) (dict "kind" "ServiceAccount" "name" (get (fromJson (include "redpanda.ServiceAccountName" (dict "a" (list $dot) ))) "r") "namespace" $dot.Release.Namespace ))) ))))) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $crbs) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.SidecarControllersClusterRole" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (or (not $values.statefulset.sideCars.controllers.enabled) (not $values.statefulset.sideCars.controllers.createRBAC)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $sidecarControllerName := (printf "%s-sidecar-controllers" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "rules" (coalesce nil) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "rbac.authorization.k8s.io/v1" "kind" "ClusterRole" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" $sidecarControllerName "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") "annotations" $values.serviceAccount.annotations )) "rules" (list (mustMergeOverwrite (dict "verbs" (coalesce nil) ) (dict "apiGroups" (list "") "resources" (list "nodes") "verbs" (list "get" "list" "watch") )) (mustMergeOverwrite (dict "verbs" (coalesce nil) ) (dict "apiGroups" (list "") "resources" (list "persistentvolumes") "verbs" (list "delete" "get" "list" "patch" "update" "watch") ))) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.SidecarControllersClusterRoleBinding" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (or (not $values.statefulset.sideCars.controllers.enabled) (not $values.statefulset.sideCars.controllers.createRBAC)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $sidecarControllerName := (printf "%s-sidecar-controllers" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "roleRef" (dict "apiGroup" "" "kind" "" "name" "" ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "rbac.authorization.k8s.io/v1" "kind" "ClusterRoleBinding" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" $sidecarControllerName "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") "annotations" $values.serviceAccount.annotations )) "roleRef" (mustMergeOverwrite (dict "apiGroup" "" "kind" "" "name" "" ) (dict "apiGroup" "rbac.authorization.k8s.io" "kind" "ClusterRole" "name" $sidecarControllerName )) "subjects" (list (mustMergeOverwrite (dict "kind" "" "name" "" ) (dict "kind" "ServiceAccount" "name" (get (fromJson (include "redpanda.ServiceAccountName" (dict "a" (list $dot) ))) "r") "namespace" $dot.Release.Namespace ))) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.SidecarControllersRole" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (or (not $values.statefulset.sideCars.controllers.enabled) (not $values.statefulset.sideCars.controllers.createRBAC)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $sidecarControllerName := (printf "%s-sidecar-controllers" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "rules" (coalesce nil) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "rbac.authorization.k8s.io/v1" "kind" "Role" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" $sidecarControllerName "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") "annotations" $values.serviceAccount.annotations )) "rules" (list (mustMergeOverwrite (dict "verbs" (coalesce nil) ) (dict "apiGroups" (list "apps") "resources" (list "statefulsets/status") "verbs" (list "patch" "update") )) (mustMergeOverwrite (dict "verbs" (coalesce nil) ) (dict "apiGroups" (list "") "resources" (list "secrets" "pods") "verbs" (list "get" "list" "watch") )) (mustMergeOverwrite (dict "verbs" (coalesce nil) ) (dict "apiGroups" (list "apps") "resources" (list "statefulsets") "verbs" (list "get" "patch" "update" "list" "watch") )) (mustMergeOverwrite (dict "verbs" (coalesce nil) ) (dict "apiGroups" (list "") "resources" (list "persistentvolumeclaims") "verbs" (list "delete" "get" "list" "patch" "update" "watch") ))) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.SidecarControllersRoleBinding" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (or (not $values.statefulset.sideCars.controllers.enabled) (not $values.statefulset.sideCars.controllers.createRBAC)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $sidecarControllerName := (printf "%s-sidecar-controllers" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "roleRef" (dict "apiGroup" "" "kind" "" "name" "" ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "rbac.authorization.k8s.io/v1" "kind" "RoleBinding" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" $sidecarControllerName "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") "annotations" $values.serviceAccount.annotations )) "roleRef" (mustMergeOverwrite (dict "apiGroup" "" "kind" "" "name" "" ) (dict "apiGroup" "rbac.authorization.k8s.io" "kind" "Role" "name" $sidecarControllerName )) "subjects" (list (mustMergeOverwrite (dict "kind" "" "name" "" ) (dict "kind" "ServiceAccount" "name" (get (fromJson (include "redpanda.ServiceAccountName" (dict "a" (list $dot) ))) "r") "namespace" $dot.Release.Namespace ))) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,419 @@
|
|||
{{- /* Generated from "secrets.go" */ -}}
|
||||
|
||||
{{- define "redpanda.Secrets" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $secrets := (coalesce nil) -}}
|
||||
{{- $secrets = (concat (default (list ) $secrets) (list (get (fromJson (include "redpanda.SecretSTSLifecycle" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- $saslUsers_1 := (get (fromJson (include "redpanda.SecretSASLUsers" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $saslUsers_1) "null") -}}
|
||||
{{- $secrets = (concat (default (list ) $secrets) (list $saslUsers_1)) -}}
|
||||
{{- end -}}
|
||||
{{- $configWatcher_2 := (get (fromJson (include "redpanda.SecretConfigWatcher" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $configWatcher_2) "null") -}}
|
||||
{{- $secrets = (concat (default (list ) $secrets) (list $configWatcher_2)) -}}
|
||||
{{- end -}}
|
||||
{{- $secrets = (concat (default (list ) $secrets) (list (get (fromJson (include "redpanda.SecretConfigurator" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- $fsValidator_3 := (get (fromJson (include "redpanda.SecretFSValidator" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $fsValidator_3) "null") -}}
|
||||
{{- $secrets = (concat (default (list ) $secrets) (list $fsValidator_3)) -}}
|
||||
{{- end -}}
|
||||
{{- $bootstrapUser_4 := (get (fromJson (include "redpanda.SecretBootstrapUser" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $bootstrapUser_4) "null") -}}
|
||||
{{- $secrets = (concat (default (list ) $secrets) (list $bootstrapUser_4)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $secrets) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.SecretSTSLifecycle" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $secret := (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "v1" "kind" "Secret" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (printf "%s-sts-lifecycle" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") )) "type" "Opaque" "stringData" (dict ) )) -}}
|
||||
{{- $adminCurlFlags := (get (fromJson (include "redpanda.adminTLSCurlFlags" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $_ := (set $secret.stringData "common.sh" (join "\n" (list `#!/usr/bin/env bash` `` `# the SERVICE_NAME comes from the metadata.name of the pod, essentially the POD_NAME` (printf `CURL_URL="%s"` (get (fromJson (include "redpanda.adminInternalURL" (dict "a" (list $dot) ))) "r")) `` `# commands used throughout` (printf `CURL_NODE_ID_CMD="curl --silent --fail %s ${CURL_URL}/v1/node_config"` $adminCurlFlags) `` `CURL_MAINTENANCE_DELETE_CMD_PREFIX='curl -X DELETE --silent -o /dev/null -w "%{http_code}"'` `CURL_MAINTENANCE_PUT_CMD_PREFIX='curl -X PUT --silent -o /dev/null -w "%{http_code}"'` (printf `CURL_MAINTENANCE_GET_CMD="curl -X GET --silent %s ${CURL_URL}/v1/maintenance"` $adminCurlFlags)))) -}}
|
||||
{{- $postStartSh := (list `#!/usr/bin/env bash` `# This code should be similar if not exactly the same as that found in the panda-operator, see` `# https://github.com/redpanda-data/redpanda/blob/e51d5b7f2ef76d5160ca01b8c7a8cf07593d29b6/src/go/k8s/pkg/resources/secret.go` `` `# path below should match the path defined on the statefulset` `source /var/lifecycle/common.sh` `` `postStartHook () {` ` set -x` `` ` touch /tmp/postStartHookStarted` `` ` until NODE_ID=$(${CURL_NODE_ID_CMD} | grep -o '\"node_id\":[^,}]*' | grep -o '[^: ]*$'); do` ` sleep 0.5` ` done` `` ` echo "Clearing maintenance mode on node ${NODE_ID}"` (printf ` CURL_MAINTENANCE_DELETE_CMD="${CURL_MAINTENANCE_DELETE_CMD_PREFIX} %s ${CURL_URL}/v1/brokers/${NODE_ID}/maintenance"` $adminCurlFlags) ` # a 400 here would mean not in maintenance mode` ` until [ "${status:-}" = '"200"' ] || [ "${status:-}" = '"400"' ]; do` ` status=$(${CURL_MAINTENANCE_DELETE_CMD})` ` sleep 0.5` ` done` `` ` touch /tmp/postStartHookFinished` `}` `` `postStartHook` `true`) -}}
|
||||
{{- $_ := (set $secret.stringData "postStart.sh" (join "\n" $postStartSh)) -}}
|
||||
{{- $preStopSh := (list `#!/usr/bin/env bash` `# This code should be similar if not exactly the same as that found in the panda-operator, see` `# https://github.com/redpanda-data/redpanda/blob/e51d5b7f2ef76d5160ca01b8c7a8cf07593d29b6/src/go/k8s/pkg/resources/secret.go` `` `touch /tmp/preStopHookStarted` `` `# path below should match the path defined on the statefulset` `source /var/lifecycle/common.sh` `` `set -x` `` `preStopHook () {` ` until NODE_ID=$(${CURL_NODE_ID_CMD} | grep -o '\"node_id\":[^,}]*' | grep -o '[^: ]*$'); do` ` sleep 0.5` ` done` `` ` echo "Setting maintenance mode on node ${NODE_ID}"` (printf ` CURL_MAINTENANCE_PUT_CMD="${CURL_MAINTENANCE_PUT_CMD_PREFIX} %s ${CURL_URL}/v1/brokers/${NODE_ID}/maintenance"` $adminCurlFlags) ` until [ "${status:-}" = '"200"' ]; do` ` status=$(${CURL_MAINTENANCE_PUT_CMD})` ` sleep 0.5` ` done` `` ` until [ "${finished:-}" = "true" ] || [ "${draining:-}" = "false" ]; do` ` res=$(${CURL_MAINTENANCE_GET_CMD})` ` finished=$(echo $res | grep -o '\"finished\":[^,}]*' | grep -o '[^: ]*$')` ` draining=$(echo $res | grep -o '\"draining\":[^,}]*' | grep -o '[^: ]*$')` ` sleep 0.5` ` done` `` ` touch /tmp/preStopHookFinished` `}`) -}}
|
||||
{{- if (and (gt ($values.statefulset.replicas | int) (2 | int)) (not (get (fromJson (include "_shims.typeassertion" (dict "a" (list "bool" (dig "recovery_mode_enabled" false $values.config.node)) ))) "r"))) -}}
|
||||
{{- $preStopSh = (concat (default (list ) $preStopSh) (list `preStopHook`)) -}}
|
||||
{{- else -}}
|
||||
{{- $preStopSh = (concat (default (list ) $preStopSh) (list `touch /tmp/preStopHookFinished` `echo "Not enough replicas or in recovery mode, cannot put a broker into maintenance mode."`)) -}}
|
||||
{{- end -}}
|
||||
{{- $preStopSh = (concat (default (list ) $preStopSh) (list `true`)) -}}
|
||||
{{- $_ := (set $secret.stringData "preStop.sh" (join "\n" $preStopSh)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $secret) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.SecretSASLUsers" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (and (and (ne $values.auth.sasl.secretRef "") $values.auth.sasl.enabled) (gt ((get (fromJson (include "_shims.len" (dict "a" (list $values.auth.sasl.users) ))) "r") | int) (0 | int))) -}}
|
||||
{{- $secret := (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "v1" "kind" "Secret" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" $values.auth.sasl.secretRef "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") )) "type" "Opaque" "stringData" (dict ) )) -}}
|
||||
{{- $usersTxt := (list ) -}}
|
||||
{{- range $_, $user := $values.auth.sasl.users -}}
|
||||
{{- if (empty $user.mechanism) -}}
|
||||
{{- $usersTxt = (concat (default (list ) $usersTxt) (list (printf "%s:%s" $user.name $user.password))) -}}
|
||||
{{- else -}}
|
||||
{{- $usersTxt = (concat (default (list ) $usersTxt) (list (printf "%s:%s:%s" $user.name $user.password $user.mechanism))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $secret.stringData "users.txt" (join "\n" $usersTxt)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $secret) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- else -}}{{- if (and $values.auth.sasl.enabled (eq $values.auth.sasl.secretRef "")) -}}
|
||||
{{- $_ := (fail "auth.sasl.secretRef cannot be empty when auth.sasl.enabled=true") -}}
|
||||
{{- else -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.SecretBootstrapUser" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (or (not $values.auth.sasl.enabled) (ne (toJson $values.auth.sasl.bootstrapUser.secretKeyRef) "null")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $secretName := (printf "%s-bootstrap-user" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- if $dot.Release.IsUpgrade -}}
|
||||
{{- $tmp_tuple_1 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.lookup" (dict "a" (list "v1" "Secret" $dot.Release.Namespace $secretName) ))) "r")) ))) "r") -}}
|
||||
{{- $ok_6 := $tmp_tuple_1.T2 -}}
|
||||
{{- $existing_5 := $tmp_tuple_1.T1 -}}
|
||||
{{- if $ok_6 -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $existing_5) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $password := (randAlphaNum (32 | int)) -}}
|
||||
{{- $userPassword := $values.auth.sasl.bootstrapUser.password -}}
|
||||
{{- if (ne (toJson $userPassword) "null") -}}
|
||||
{{- $password = $userPassword -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "v1" "kind" "Secret" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" $secretName "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") )) "type" "Opaque" "stringData" (dict "password" $password ) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.SecretConfigWatcher" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.statefulset.sideCars.configWatcher.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $bootstrapUser := (get (fromJson (include "redpanda.BootstrapUser.Username" (dict "a" (list $values.auth.sasl.bootstrapUser) ))) "r") -}}
|
||||
{{- $sasl := $values.auth.sasl -}}
|
||||
{{- $secret := (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "v1" "kind" "Secret" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (printf "%s-config-watcher" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") )) "type" "Opaque" "stringData" (dict ) )) -}}
|
||||
{{- $saslUserSh := (coalesce nil) -}}
|
||||
{{- $saslUserSh = (concat (default (list ) $saslUserSh) (list `#!/usr/bin/env bash` `` `trap 'error_handler $? $LINENO' ERR` `` `error_handler() {` ` echo "Error: ($1) occurred at line $2"` `}` `` `set -e` `` `# rpk cluster health can exit non-zero if it's unable to dial brokers. This` `# can happen for many reasons but we never want this script to crash as it` `# would take down yet another broker and make a bad situation worse.` `# Instead, just wait for the command to eventually exit zero.` `echo "Waiting for cluster to be ready"` `until rpk cluster health --watch --exit-when-healthy; do` ` echo "rpk cluster health failed. Waiting 5 seconds before trying again..."` ` sleep 5` `done`)) -}}
|
||||
{{- if (and $sasl.enabled (ne $sasl.secretRef "")) -}}
|
||||
{{- $saslUserSh = (concat (default (list ) $saslUserSh) (list `while true; do` ` echo "RUNNING: Monitoring and Updating SASL users"` ` USERS_DIR="/etc/secrets/users"` `` ` new_users_list(){` ` LIST=$1` ` NEW_USER=$2` ` if [[ -n "${LIST}" ]]; then` ` LIST="${NEW_USER},${LIST}"` ` else` ` LIST="${NEW_USER}"` ` fi` `` ` echo "${LIST}"` ` }` `` ` process_users() {` ` USERS_DIR=${1-"/etc/secrets/users"}` ` USERS_FILE=$(find ${USERS_DIR}/* -print)` (printf ` USERS_LIST="%s"` $bootstrapUser) ` READ_LIST_SUCCESS=0` ` # Read line by line, handle a missing EOL at the end of file` ` while read p || [ -n "$p" ] ; do` ` IFS=":" read -r USER_NAME PASSWORD MECHANISM <<< $p` ` # Do not process empty lines` ` if [ -z "$USER_NAME" ]; then` ` continue` ` fi` ` if [[ "${USER_NAME// /}" != "$USER_NAME" ]]; then` ` continue` ` fi` ` echo "Creating user ${USER_NAME}..."` (printf ` MECHANISM=${MECHANISM:-%s}` (dig "auth" "sasl" "mechanism" "SCRAM-SHA-512" $dot.Values.AsMap)) ` creation_result=$(rpk acl user create ${USER_NAME} -p ${PASSWORD} --mechanism ${MECHANISM} 2>&1) && creation_result_exit_code=$? || creation_result_exit_code=$? # On a non-success exit code` ` if [[ $creation_result_exit_code -ne 0 ]]; then` ` # Check if the stderr contains "User already exists"` ` # this error occurs when password has changed` ` if [[ $creation_result == *"User already exists"* ]]; then` ` echo "Update user ${USER_NAME}"` ` # we will try to update by first deleting` ` deletion_result=$(rpk acl user delete ${USER_NAME} 2>&1) && deletion_result_exit_code=$? || deletion_result_exit_code=$?` ` if [[ $deletion_result_exit_code -ne 0 ]]; then` ` echo "deletion of user ${USER_NAME} failed: ${deletion_result}"` ` READ_LIST_SUCCESS=1` ` break` ` fi` ` # Now we update the user` ` update_result=$(rpk acl user create ${USER_NAME} -p ${PASSWORD} --mechanism ${MECHANISM} 2>&1) && update_result_exit_code=$? || update_result_exit_code=$? # On a non-success exit code` ` if [[ $update_result_exit_code -ne 0 ]]; then` ` echo "updating user ${USER_NAME} failed: ${update_result}"` ` READ_LIST_SUCCESS=1` ` break` ` else` ` echo "Updated user ${USER_NAME}..."` ` USERS_LIST=$(new_users_list "${USERS_LIST}" "${USER_NAME}")` ` fi` ` else` ` # Another error occurred, so output the original message and exit code` ` echo "error creating user ${USER_NAME}: ${creation_result}"` ` READ_LIST_SUCCESS=1` ` break` ` fi` ` # On a success, the user was created so output that` ` else` ` echo "Created user ${USER_NAME}..."` ` USERS_LIST=$(new_users_list "${USERS_LIST}" "${USER_NAME}")` ` fi` ` done < $USERS_FILE` `` ` if [[ -n "${USERS_LIST}" && ${READ_LIST_SUCCESS} ]]; then` ` echo "Setting superusers configurations with users [${USERS_LIST}]"` ` superuser_result=$(rpk cluster config set superusers [${USERS_LIST}] 2>&1) && superuser_result_exit_code=$? || superuser_result_exit_code=$?` ` if [[ $superuser_result_exit_code -ne 0 ]]; then` ` echo "Setting superusers configurations failed: ${superuser_result}"` ` else` ` echo "Completed setting superusers configurations"` ` fi` ` fi` ` }` `` ` # before we do anything ensure we have the bootstrap user` ` echo "Ensuring bootstrap user ${RPK_USER}..."` ` creation_result=$(rpk acl user create ${RPK_USER} -p ${RPK_PASS} --mechanism ${RPK_SASL_MECHANISM} 2>&1) && creation_result_exit_code=$? || creation_result_exit_code=$? # On a non-success exit code` ` if [[ $creation_result_exit_code -ne 0 ]]; then` ` if [[ $creation_result == *"User already exists"* ]]; then` ` echo "Bootstrap user already created"` ` else` ` echo "error creating user ${RPK_USER}: ${creation_result}"` ` fi` ` fi` `` ` # first time processing` ` process_users $USERS_DIR` `` ` # subsequent changes detected here` ` # watching delete_self as documented in https://ahmet.im/blog/kubernetes-inotify/` ` USERS_FILE=$(find ${USERS_DIR}/* -print)` ` while RES=$(inotifywait -q -e delete_self ${USERS_FILE}); do` ` process_users $USERS_DIR` ` done` `done`)) -}}
|
||||
{{- else -}}
|
||||
{{- $saslUserSh = (concat (default (list ) $saslUserSh) (list `echo "Nothing to do. Sleeping..."` `sleep infinity`)) -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $secret.stringData "sasl-user.sh" (join "\n" $saslUserSh)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $secret) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.SecretFSValidator" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.statefulset.initContainers.fsValidator.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $secret := (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "v1" "kind" "Secret" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (printf "%s-fs-validator" (substr 0 (49 | int) (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r"))) "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") )) "type" "Opaque" "stringData" (dict ) )) -}}
|
||||
{{- $_ := (set $secret.stringData "fsValidator.sh" `set -e
|
||||
EXPECTED_FS_TYPE=$1
|
||||
|
||||
DATA_DIR="/var/lib/redpanda/data"
|
||||
TEST_FILE="testfile"
|
||||
|
||||
echo "checking data directory exist..."
|
||||
if [ ! -d "${DATA_DIR}" ]; then
|
||||
echo "data directory does not exists, exiting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "checking filesystem type..."
|
||||
FS_TYPE=$(df -T $DATA_DIR | tail -n +2 | awk '{print $2}')
|
||||
|
||||
if [ "${FS_TYPE}" != "${EXPECTED_FS_TYPE}" ]; then
|
||||
echo "file system found to be ${FS_TYPE} when expected ${EXPECTED_FS_TYPE}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "checking if able to create a test file..."
|
||||
|
||||
touch ${DATA_DIR}/${TEST_FILE}
|
||||
result=$(touch ${DATA_DIR}/${TEST_FILE} 2> /dev/null; echo $?)
|
||||
if [ "${result}" != "0" ]; then
|
||||
echo "could not write testfile, may not have write permission"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "checking if able to delete a test file..."
|
||||
|
||||
result=$(rm ${DATA_DIR}/${TEST_FILE} 2> /dev/null; echo $?)
|
||||
if [ "${result}" != "0" ]; then
|
||||
echo "could not delete testfile"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "passed"`) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $secret) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.SecretConfigurator" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $secret := (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "v1" "kind" "Secret" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (printf "%.51s-configurator" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") )) "type" "Opaque" "stringData" (dict ) )) -}}
|
||||
{{- $configuratorSh := (list ) -}}
|
||||
{{- $configuratorSh = (concat (default (list ) $configuratorSh) (list `set -xe` `SERVICE_NAME=$1` `KUBERNETES_NODE_NAME=$2` `POD_ORDINAL=${SERVICE_NAME##*-}` "BROKER_INDEX=`expr $POD_ORDINAL + 1`" `` `CONFIG=/etc/redpanda/redpanda.yaml` `` `# Setup config files` `cp /tmp/base-config/redpanda.yaml "${CONFIG}"`)) -}}
|
||||
{{- if (not (get (fromJson (include "redpanda.RedpandaAtLeast_22_3_0" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $configuratorSh = (concat (default (list ) $configuratorSh) (list `` `# Configure bootstrap` `## Not used for Redpanda v22.3.0+` `rpk --config "${CONFIG}" redpanda config set redpanda.node_id "${POD_ORDINAL}"` `if [ "${POD_ORDINAL}" = "0" ]; then` ` rpk --config "${CONFIG}" redpanda config set redpanda.seed_servers '[]' --format yaml` `fi`)) -}}
|
||||
{{- end -}}
|
||||
{{- $kafkaSnippet := (get (fromJson (include "redpanda.secretConfiguratorKafkaConfig" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $configuratorSh = (concat (default (list ) $configuratorSh) (default (list ) $kafkaSnippet)) -}}
|
||||
{{- $httpSnippet := (get (fromJson (include "redpanda.secretConfiguratorHTTPConfig" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $configuratorSh = (concat (default (list ) $configuratorSh) (default (list ) $httpSnippet)) -}}
|
||||
{{- if (and (get (fromJson (include "redpanda.RedpandaAtLeast_22_3_0" (dict "a" (list $dot) ))) "r") $values.rackAwareness.enabled) -}}
|
||||
{{- $configuratorSh = (concat (default (list ) $configuratorSh) (list `` `# Configure Rack Awareness` `set +x` (printf `RACK=$(curl --silent --cacert /run/secrets/kubernetes.io/serviceaccount/ca.crt --fail -H 'Authorization: Bearer '$(cat /run/secrets/kubernetes.io/serviceaccount/token) "https://${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT_HTTPS}/api/v1/nodes/${KUBERNETES_NODE_NAME}?pretty=true" | grep %s | grep -v '\"key\":' | sed 's/.*": "\([^"]\+\).*/\1/')` (squote (quote $values.rackAwareness.nodeAnnotation))) `set -x` `rpk --config "$CONFIG" redpanda config set redpanda.rack "${RACK}"`)) -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $secret.stringData "configurator.sh" (join "\n" $configuratorSh)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $secret) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.secretConfiguratorKafkaConfig" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $internalAdvertiseAddress := (printf "%s.%s" "${SERVICE_NAME}" (get (fromJson (include "redpanda.InternalDomain" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $snippet := (coalesce nil) -}}
|
||||
{{- $listenerName := "kafka" -}}
|
||||
{{- $listenerAdvertisedName := $listenerName -}}
|
||||
{{- $redpandaConfigPart := "redpanda" -}}
|
||||
{{- $snippet = (concat (default (list ) $snippet) (list `` (printf `LISTENER=%s` (quote (toJson (dict "name" "internal" "address" $internalAdvertiseAddress "port" ($values.listeners.kafka.port | int) )))) (printf `rpk redpanda config --config "$CONFIG" set %s.advertised_%s_api[0] "$LISTENER"` $redpandaConfigPart $listenerAdvertisedName))) -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $values.listeners.kafka.external) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $externalCounter := (0 | int) -}}
|
||||
{{- range $externalName, $externalVals := $values.listeners.kafka.external -}}
|
||||
{{- $externalCounter = ((add $externalCounter (1 | int)) | int) -}}
|
||||
{{- $snippet = (concat (default (list ) $snippet) (list `` (printf `ADVERTISED_%s_ADDRESSES=()` (upper $listenerName)))) -}}
|
||||
{{- range $_, $replicaIndex := (until (($values.statefulset.replicas | int) | int)) -}}
|
||||
{{- $port := ($externalVals.port | int) -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $externalVals.advertisedPorts) ))) "r") | int) (0 | int)) -}}
|
||||
{{- if (eq ((get (fromJson (include "_shims.len" (dict "a" (list $externalVals.advertisedPorts) ))) "r") | int) (1 | int)) -}}
|
||||
{{- $port = (index $externalVals.advertisedPorts (0 | int)) -}}
|
||||
{{- else -}}
|
||||
{{- $port = (index $externalVals.advertisedPorts $replicaIndex) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $host := (get (fromJson (include "redpanda.advertisedHostJSON" (dict "a" (list $dot $externalName $port $replicaIndex) ))) "r") -}}
|
||||
{{- $address := (toJson $host) -}}
|
||||
{{- $prefixTemplate := (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $externalVals.prefixTemplate "") ))) "r") -}}
|
||||
{{- if (eq $prefixTemplate "") -}}
|
||||
{{- $prefixTemplate = (default "" $values.external.prefixTemplate) -}}
|
||||
{{- end -}}
|
||||
{{- $snippet = (concat (default (list ) $snippet) (list `` (printf `PREFIX_TEMPLATE=%s` (quote $prefixTemplate)) (printf `ADVERTISED_%s_ADDRESSES+=(%s)` (upper $listenerName) (quote $address)))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $snippet = (concat (default (list ) $snippet) (list `` (printf `rpk redpanda config --config "$CONFIG" set %s.advertised_%s_api[%d] "${ADVERTISED_%s_ADDRESSES[$POD_ORDINAL]}"` $redpandaConfigPart $listenerAdvertisedName $externalCounter (upper $listenerName)))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $snippet) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.secretConfiguratorHTTPConfig" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $internalAdvertiseAddress := (printf "%s.%s" "${SERVICE_NAME}" (get (fromJson (include "redpanda.InternalDomain" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $snippet := (coalesce nil) -}}
|
||||
{{- $listenerName := "http" -}}
|
||||
{{- $listenerAdvertisedName := "pandaproxy" -}}
|
||||
{{- $redpandaConfigPart := "pandaproxy" -}}
|
||||
{{- $snippet = (concat (default (list ) $snippet) (list `` (printf `LISTENER=%s` (quote (toJson (dict "name" "internal" "address" $internalAdvertiseAddress "port" ($values.listeners.http.port | int) )))) (printf `rpk redpanda config --config "$CONFIG" set %s.advertised_%s_api[0] "$LISTENER"` $redpandaConfigPart $listenerAdvertisedName))) -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $values.listeners.http.external) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $externalCounter := (0 | int) -}}
|
||||
{{- range $externalName, $externalVals := $values.listeners.http.external -}}
|
||||
{{- $externalCounter = ((add $externalCounter (1 | int)) | int) -}}
|
||||
{{- $snippet = (concat (default (list ) $snippet) (list `` (printf `ADVERTISED_%s_ADDRESSES=()` (upper $listenerName)))) -}}
|
||||
{{- range $_, $replicaIndex := (until (($values.statefulset.replicas | int) | int)) -}}
|
||||
{{- $port := ($externalVals.port | int) -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $externalVals.advertisedPorts) ))) "r") | int) (0 | int)) -}}
|
||||
{{- if (eq ((get (fromJson (include "_shims.len" (dict "a" (list $externalVals.advertisedPorts) ))) "r") | int) (1 | int)) -}}
|
||||
{{- $port = (index $externalVals.advertisedPorts (0 | int)) -}}
|
||||
{{- else -}}
|
||||
{{- $port = (index $externalVals.advertisedPorts $replicaIndex) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $host := (get (fromJson (include "redpanda.advertisedHostJSON" (dict "a" (list $dot $externalName $port $replicaIndex) ))) "r") -}}
|
||||
{{- $address := (toJson $host) -}}
|
||||
{{- $prefixTemplate := (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $externalVals.prefixTemplate "") ))) "r") -}}
|
||||
{{- if (eq $prefixTemplate "") -}}
|
||||
{{- $prefixTemplate = (default "" $values.external.prefixTemplate) -}}
|
||||
{{- end -}}
|
||||
{{- $snippet = (concat (default (list ) $snippet) (list `` (printf `PREFIX_TEMPLATE=%s` (quote $prefixTemplate)) (printf `ADVERTISED_%s_ADDRESSES+=(%s)` (upper $listenerName) (quote $address)))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $snippet = (concat (default (list ) $snippet) (list `` (printf `rpk redpanda config --config "$CONFIG" set %s.advertised_%s_api[%d] "${ADVERTISED_%s_ADDRESSES[$POD_ORDINAL]}"` $redpandaConfigPart $listenerAdvertisedName $externalCounter (upper $listenerName)))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $snippet) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.adminTLSCurlFlags" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not (get (fromJson (include "redpanda.InternalTLS.IsEnabled" (dict "a" (list $values.listeners.admin.tls $values.tls) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" "") | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if $values.listeners.admin.tls.requireClientAuth -}}
|
||||
{{- $path := (printf "%s/%s-client" "/etc/tls/certs" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (printf "--cacert %s/ca.crt --cert %s/tls.crt --key %s/tls.key" $path $path $path)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $path := (get (fromJson (include "redpanda.InternalTLS.ServerCAPath" (dict "a" (list $values.listeners.admin.tls $values.tls) ))) "r") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (printf "--cacert %s" $path)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.externalAdvertiseAddress" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $eaa := "${SERVICE_NAME}" -}}
|
||||
{{- $externalDomainTemplate := (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.external.domain "") ))) "r") -}}
|
||||
{{- $expanded := (tpl $externalDomainTemplate $dot) -}}
|
||||
{{- if (not (empty $expanded)) -}}
|
||||
{{- $eaa = (printf "%s.%s" "${SERVICE_NAME}" $expanded) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $eaa) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.advertisedHostJSON" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $externalName := (index .a 1) -}}
|
||||
{{- $port := (index .a 2) -}}
|
||||
{{- $replicaIndex := (index .a 3) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $host := (dict "name" $externalName "address" (get (fromJson (include "redpanda.externalAdvertiseAddress" (dict "a" (list $dot) ))) "r") "port" $port ) -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $values.external.addresses) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $address := "" -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $values.external.addresses) ))) "r") | int) (1 | int)) -}}
|
||||
{{- $address = (index $values.external.addresses $replicaIndex) -}}
|
||||
{{- else -}}
|
||||
{{- $address = (index $values.external.addresses (0 | int)) -}}
|
||||
{{- end -}}
|
||||
{{- $domain_7 := (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.external.domain "") ))) "r") -}}
|
||||
{{- if (ne $domain_7 "") -}}
|
||||
{{- $host = (dict "name" $externalName "address" (printf "%s.%s" $address (tpl $domain_7 $dot)) "port" $port ) -}}
|
||||
{{- else -}}
|
||||
{{- $host = (dict "name" $externalName "address" $address "port" $port ) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $host) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.adminInternalHTTPProtocol" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (get (fromJson (include "redpanda.InternalTLS.IsEnabled" (dict "a" (list $values.listeners.admin.tls $values.tls) ))) "r") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" "https") | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" "http") | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.adminInternalURL" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (printf "%s://%s.%s.%s.svc.%s:%d" (get (fromJson (include "redpanda.adminInternalHTTPProtocol" (dict "a" (list $dot) ))) "r") `${SERVICE_NAME}` (get (fromJson (include "redpanda.ServiceName" (dict "a" (list $dot) ))) "r") $dot.Release.Namespace (trimSuffix "." $values.clusterDomain) ($values.listeners.admin.port | int))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
{{- /* Generated from "service_internal.go" */ -}}
|
||||
|
||||
{{- define "redpanda.MonitoringEnabledLabel" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (dict "monitoring.redpanda.com/enabled" (printf "%t" $values.monitoring.enabled) )) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.ServiceInternal" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $ports := (list ) -}}
|
||||
{{- $ports = (concat (default (list ) $ports) (list (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" "admin" "protocol" "TCP" "appProtocol" $values.listeners.admin.appProtocol "port" ($values.listeners.admin.port | int) "targetPort" ($values.listeners.admin.port | int) )))) -}}
|
||||
{{- if $values.listeners.http.enabled -}}
|
||||
{{- $ports = (concat (default (list ) $ports) (list (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" "http" "protocol" "TCP" "port" ($values.listeners.http.port | int) "targetPort" ($values.listeners.http.port | int) )))) -}}
|
||||
{{- end -}}
|
||||
{{- $ports = (concat (default (list ) $ports) (list (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" "kafka" "protocol" "TCP" "port" ($values.listeners.kafka.port | int) "targetPort" ($values.listeners.kafka.port | int) )))) -}}
|
||||
{{- $ports = (concat (default (list ) $ports) (list (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" "rpc" "protocol" "TCP" "port" ($values.listeners.rpc.port | int) "targetPort" ($values.listeners.rpc.port | int) )))) -}}
|
||||
{{- if $values.listeners.schemaRegistry.enabled -}}
|
||||
{{- $ports = (concat (default (list ) $ports) (list (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" "schemaregistry" "protocol" "TCP" "port" ($values.listeners.schemaRegistry.port | int) "targetPort" ($values.listeners.schemaRegistry.port | int) )))) -}}
|
||||
{{- end -}}
|
||||
{{- $annotations := (dict ) -}}
|
||||
{{- if (ne (toJson $values.service) "null") -}}
|
||||
{{- $annotations = $values.service.internal.annotations -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict ) "status" (dict "loadBalancer" (dict ) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "v1" "kind" "Service" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "redpanda.ServiceName" (dict "a" (list $dot) ))) "r") "namespace" $dot.Release.Namespace "labels" (merge (dict ) (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.MonitoringEnabledLabel" (dict "a" (list $dot) ))) "r")) "annotations" $annotations )) "spec" (mustMergeOverwrite (dict ) (dict "type" "ClusterIP" "publishNotReadyAddresses" true "clusterIP" "None" "selector" (get (fromJson (include "redpanda.StatefulSetPodLabelsSelector" (dict "a" (list $dot) ))) "r") "ports" $ports )) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,105 @@
|
|||
{{- /* Generated from "service.loadbalancer.go" */ -}}
|
||||
|
||||
{{- define "redpanda.LoadBalancerServices" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (or (not $values.external.enabled) (not $values.external.service.enabled)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (ne $values.external.type "LoadBalancer") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $externalDNS := (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.external.externalDns (mustMergeOverwrite (dict "enabled" false ) (dict ))) ))) "r") -}}
|
||||
{{- $labels := (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $_ := (set $labels "repdanda.com/type" "loadbalancer") -}}
|
||||
{{- $selector := (get (fromJson (include "redpanda.StatefulSetPodLabelsSelector" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $services := (coalesce nil) -}}
|
||||
{{- $replicas := ($values.statefulset.replicas | int) -}}
|
||||
{{- range $_, $i := untilStep (((0 | int) | int)|int) (($values.statefulset.replicas | int)|int) (1|int) -}}
|
||||
{{- $podname := (printf "%s-%d" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") $i) -}}
|
||||
{{- $annotations := (dict ) -}}
|
||||
{{- range $k, $v := $values.external.annotations -}}
|
||||
{{- $_ := (set $annotations $k $v) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if $externalDNS.enabled -}}
|
||||
{{- $prefix := $podname -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $values.external.addresses) ))) "r") | int) (0 | int)) -}}
|
||||
{{- if (eq ((get (fromJson (include "_shims.len" (dict "a" (list $values.external.addresses) ))) "r") | int) (1 | int)) -}}
|
||||
{{- $prefix = (index $values.external.addresses (0 | int)) -}}
|
||||
{{- else -}}
|
||||
{{- $prefix = (index $values.external.addresses $i) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $address := (printf "%s.%s" $prefix (tpl $values.external.domain $dot)) -}}
|
||||
{{- $_ := (set $annotations "external-dns.alpha.kubernetes.io/hostname" $address) -}}
|
||||
{{- end -}}
|
||||
{{- $podSelector := (dict ) -}}
|
||||
{{- range $k, $v := $selector -}}
|
||||
{{- $_ := (set $podSelector $k $v) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $podSelector "statefulset.kubernetes.io/pod-name" $podname) -}}
|
||||
{{- $ports := (coalesce nil) -}}
|
||||
{{- range $name, $listener := $values.listeners.admin.external -}}
|
||||
{{- if (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $listener.enabled $values.external.enabled) ))) "r")) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $fallbackPorts := (concat (default (list ) $listener.advertisedPorts) (list ($values.listeners.admin.port | int))) -}}
|
||||
{{- $ports = (concat (default (list ) $ports) (list (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" (printf "admin-%s" $name) "protocol" "TCP" "targetPort" ($listener.port | int) "port" ((get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $listener.nodePort (index $fallbackPorts (0 | int))) ))) "r") | int) )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $name, $listener := $values.listeners.kafka.external -}}
|
||||
{{- if (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $listener.enabled $values.external.enabled) ))) "r")) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $fallbackPorts := (concat (default (list ) $listener.advertisedPorts) (list ($listener.port | int))) -}}
|
||||
{{- $ports = (concat (default (list ) $ports) (list (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" (printf "kafka-%s" $name) "protocol" "TCP" "targetPort" ($listener.port | int) "port" ((get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $listener.nodePort (index $fallbackPorts (0 | int))) ))) "r") | int) )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $name, $listener := $values.listeners.http.external -}}
|
||||
{{- if (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $listener.enabled $values.external.enabled) ))) "r")) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $fallbackPorts := (concat (default (list ) $listener.advertisedPorts) (list ($listener.port | int))) -}}
|
||||
{{- $ports = (concat (default (list ) $ports) (list (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" (printf "http-%s" $name) "protocol" "TCP" "targetPort" ($listener.port | int) "port" ((get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $listener.nodePort (index $fallbackPorts (0 | int))) ))) "r") | int) )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $name, $listener := $values.listeners.schemaRegistry.external -}}
|
||||
{{- if (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $listener.enabled $values.external.enabled) ))) "r")) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $fallbackPorts := (concat (default (list ) $listener.advertisedPorts) (list ($listener.port | int))) -}}
|
||||
{{- $ports = (concat (default (list ) $ports) (list (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" (printf "schema-%s" $name) "protocol" "TCP" "targetPort" ($listener.port | int) "port" ((get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $listener.nodePort (index $fallbackPorts (0 | int))) ))) "r") | int) )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $svc := (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict ) "status" (dict "loadBalancer" (dict ) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "v1" "kind" "Service" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (printf "lb-%s" $podname) "namespace" $dot.Release.Namespace "labels" $labels "annotations" $annotations )) "spec" (mustMergeOverwrite (dict ) (dict "externalTrafficPolicy" "Local" "loadBalancerSourceRanges" $values.external.sourceRanges "ports" $ports "publishNotReadyAddresses" true "selector" $podSelector "sessionAffinity" "None" "type" "LoadBalancer" )) )) -}}
|
||||
{{- $services = (concat (default (list ) $services) (list $svc)) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $services) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
{{- /* Generated from "service.nodeport.go" */ -}}
|
||||
|
||||
{{- define "redpanda.NodePortService" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (or (not $values.external.enabled) (not $values.external.service.enabled)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (ne $values.external.type "NodePort") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $ports := (coalesce nil) -}}
|
||||
{{- range $name, $listener := $values.listeners.admin.external -}}
|
||||
{{- if (not (get (fromJson (include "redpanda.AdminExternal.IsEnabled" (dict "a" (list $listener) ))) "r")) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $nodePort := ($listener.port | int) -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $listener.advertisedPorts) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $nodePort = (index $listener.advertisedPorts (0 | int)) -}}
|
||||
{{- end -}}
|
||||
{{- $ports = (concat (default (list ) $ports) (list (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" (printf "admin-%s" $name) "protocol" "TCP" "port" ($listener.port | int) "nodePort" $nodePort )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $name, $listener := $values.listeners.kafka.external -}}
|
||||
{{- if (not (get (fromJson (include "redpanda.KafkaExternal.IsEnabled" (dict "a" (list $listener) ))) "r")) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $nodePort := ($listener.port | int) -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $listener.advertisedPorts) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $nodePort = (index $listener.advertisedPorts (0 | int)) -}}
|
||||
{{- end -}}
|
||||
{{- $ports = (concat (default (list ) $ports) (list (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" (printf "kafka-%s" $name) "protocol" "TCP" "port" ($listener.port | int) "nodePort" $nodePort )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $name, $listener := $values.listeners.http.external -}}
|
||||
{{- if (not (get (fromJson (include "redpanda.HTTPExternal.IsEnabled" (dict "a" (list $listener) ))) "r")) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $nodePort := ($listener.port | int) -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $listener.advertisedPorts) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $nodePort = (index $listener.advertisedPorts (0 | int)) -}}
|
||||
{{- end -}}
|
||||
{{- $ports = (concat (default (list ) $ports) (list (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" (printf "http-%s" $name) "protocol" "TCP" "port" ($listener.port | int) "nodePort" $nodePort )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $name, $listener := $values.listeners.schemaRegistry.external -}}
|
||||
{{- if (not (get (fromJson (include "redpanda.SchemaRegistryExternal.IsEnabled" (dict "a" (list $listener) ))) "r")) -}}
|
||||
{{- continue -}}
|
||||
{{- end -}}
|
||||
{{- $nodePort := ($listener.port | int) -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list $listener.advertisedPorts) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $nodePort = (index $listener.advertisedPorts (0 | int)) -}}
|
||||
{{- end -}}
|
||||
{{- $ports = (concat (default (list ) $ports) (list (mustMergeOverwrite (dict "port" 0 "targetPort" 0 ) (dict "name" (printf "schema-%s" $name) "protocol" "TCP" "port" ($listener.port | int) "nodePort" $nodePort )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $annotations := $values.external.annotations -}}
|
||||
{{- if (eq (toJson $annotations) "null") -}}
|
||||
{{- $annotations = (dict ) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict ) "status" (dict "loadBalancer" (dict ) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "v1" "kind" "Service" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (printf "%s-external" (get (fromJson (include "redpanda.ServiceName" (dict "a" (list $dot) ))) "r")) "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") "annotations" $annotations )) "spec" (mustMergeOverwrite (dict ) (dict "externalTrafficPolicy" "Local" "ports" $ports "publishNotReadyAddresses" true "selector" (get (fromJson (include "redpanda.StatefulSetPodLabelsSelector" (dict "a" (list $dot) ))) "r") "sessionAffinity" "None" "type" "NodePort" )) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
{{- /* Generated from "serviceaccount.go" */ -}}
|
||||
|
||||
{{- define "redpanda.ServiceAccount" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.serviceAccount.create) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "v1" "kind" "ServiceAccount" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "redpanda.ServiceAccountName" (dict "a" (list $dot) ))) "r") "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") "annotations" $values.serviceAccount.annotations )) "automountServiceAccountToken" $values.serviceAccount.automountServiceAccountToken ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{{- /* Generated from "servicemonitor.go" */ -}}
|
||||
|
||||
{{- define "redpanda.ServiceMonitor" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.monitoring.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $endpoint := (mustMergeOverwrite (dict ) (dict "interval" $values.monitoring.scrapeInterval "path" "/public_metrics" "port" "admin" "enableHttp2" $values.monitoring.enableHttp2 "scheme" "http" )) -}}
|
||||
{{- if (or (get (fromJson (include "redpanda.InternalTLS.IsEnabled" (dict "a" (list $values.listeners.admin.tls $values.tls) ))) "r") (ne (toJson $values.monitoring.tlsConfig) "null")) -}}
|
||||
{{- $_ := (set $endpoint "scheme" "https") -}}
|
||||
{{- $_ := (set $endpoint "tlsConfig" $values.monitoring.tlsConfig) -}}
|
||||
{{- if (eq (toJson $endpoint.tlsConfig) "null") -}}
|
||||
{{- $_ := (set $endpoint "tlsConfig" (mustMergeOverwrite (dict "ca" (dict ) "cert" (dict ) ) (mustMergeOverwrite (dict "ca" (dict ) "cert" (dict ) ) (dict "insecureSkipVerify" true )) (dict ))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "endpoints" (coalesce nil) "selector" (dict ) "namespaceSelector" (dict ) ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "monitoring.coreos.com/v1" "kind" "ServiceMonitor" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") "namespace" $dot.Release.Namespace "labels" (merge (dict ) (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") $values.monitoring.labels) )) "spec" (mustMergeOverwrite (dict "endpoints" (coalesce nil) "selector" (dict ) "namespaceSelector" (dict ) ) (dict "endpoints" (list $endpoint) "selector" (mustMergeOverwrite (dict ) (dict "matchLabels" (dict "monitoring.redpanda.com/enabled" "true" "app.kubernetes.io/name" (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r") "app.kubernetes.io/instance" $dot.Release.Name ) )) )) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
|
@ -0,0 +1,339 @@
|
|||
{{- /* Generated from "bootstrap.go" */ -}}
|
||||
|
||||
{{- define "_shims.typetest" -}}
|
||||
{{- $typ := (index .a 0) -}}
|
||||
{{- $value := (index .a 1) -}}
|
||||
{{- $zero := (index .a 2) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (typeIs $typ $value) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $zero false)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.typeassertion" -}}
|
||||
{{- $typ := (index .a 0) -}}
|
||||
{{- $value := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (not (typeIs $typ $value)) -}}
|
||||
{{- $_ := (fail (printf "expected type of %q got: %T" $typ $value)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $value) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.dicttest" -}}
|
||||
{{- $m := (index .a 0) -}}
|
||||
{{- $key := (index .a 1) -}}
|
||||
{{- $zero := (index .a 2) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (hasKey $m $key) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (index $m $key) true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $zero false)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.compact" -}}
|
||||
{{- $args := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $out := (dict ) -}}
|
||||
{{- range $i, $e := $args -}}
|
||||
{{- $_ := (set $out (printf "T%d" ((add (1 | int) $i) | int)) $e) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $out) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.deref" -}}
|
||||
{{- $ptr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (eq (toJson $ptr) "null") -}}
|
||||
{{- $_ := (fail "nil dereference") -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $ptr) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.len" -}}
|
||||
{{- $m := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (eq (toJson $m) "null") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (0 | int)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (len $m)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.ptr_Deref" -}}
|
||||
{{- $ptr := (index .a 0) -}}
|
||||
{{- $def := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (ne (toJson $ptr) "null") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $ptr) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $def) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.ptr_Equal" -}}
|
||||
{{- $a := (index .a 0) -}}
|
||||
{{- $b := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (and (eq (toJson $a) "null") (eq (toJson $b) "null")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" true) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (eq $a $b)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.lookup" -}}
|
||||
{{- $apiVersion := (index .a 0) -}}
|
||||
{{- $kind := (index .a 1) -}}
|
||||
{{- $namespace := (index .a 2) -}}
|
||||
{{- $name := (index .a 3) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $result := (lookup $apiVersion $kind $namespace $name) -}}
|
||||
{{- if (empty $result) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (coalesce nil) false)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $result true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.asnumeric" -}}
|
||||
{{- $value := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (typeIs "float64" $value) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (typeIs "int64" $value) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (typeIs "int" $value) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (0 | int) false)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.asintegral" -}}
|
||||
{{- $value := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (or (typeIs "int64" $value) (typeIs "int" $value)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (and (typeIs "float64" $value) (eq (floor $value) $value)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $value true)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (0 | int) false)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.parseResource" -}}
|
||||
{{- $repr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if (typeIs "float64" $repr) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (float64 $repr) 1.0)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (not (typeIs "string" $repr)) -}}
|
||||
{{- $_ := (fail (printf "invalid Quantity expected string or float64 got: %T (%v)" $repr $repr)) -}}
|
||||
{{- end -}}
|
||||
{{- if (not (regexMatch `^[0-9]+(\.[0-9]{0,6})?(k|m|M|G|T|P|Ki|Mi|Gi|Ti|Pi)?$` $repr)) -}}
|
||||
{{- $_ := (fail (printf "invalid Quantity: %q" $repr)) -}}
|
||||
{{- end -}}
|
||||
{{- $reprStr := (toString $repr) -}}
|
||||
{{- $unit := (regexFind "(k|m|M|G|T|P|Ki|Mi|Gi|Ti|Pi)$" $repr) -}}
|
||||
{{- $numeric := (float64 (substr (0 | int) ((sub ((get (fromJson (include "_shims.len" (dict "a" (list $reprStr) ))) "r") | int) ((get (fromJson (include "_shims.len" (dict "a" (list $unit) ))) "r") | int)) | int) $reprStr)) -}}
|
||||
{{- $tmp_tuple_1 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.dicttest" (dict "a" (list (dict "" 1.0 "m" 0.001 "k" (1000 | int) "M" (1000000 | int) "G" (1000000000 | int) "T" (1000000000000 | int) "P" (1000000000000000 | int) "Ki" (1024 | int) "Mi" (1048576 | int) "Gi" (1073741824 | int) "Ti" (1099511627776 | int) "Pi" (1125899906842624 | int) ) $unit (coalesce nil)) ))) "r")) ))) "r") -}}
|
||||
{{- $ok := $tmp_tuple_1.T2 -}}
|
||||
{{- $scale := ($tmp_tuple_1.T1 | float64) -}}
|
||||
{{- if (not $ok) -}}
|
||||
{{- $_ := (fail (printf "unknown unit: %q" $unit)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $numeric $scale)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.resource_MustParse" -}}
|
||||
{{- $repr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $tmp_tuple_2 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.parseResource" (dict "a" (list $repr) ))) "r")) ))) "r") -}}
|
||||
{{- $scale := ($tmp_tuple_2.T2 | float64) -}}
|
||||
{{- $numeric := ($tmp_tuple_2.T1 | float64) -}}
|
||||
{{- $strs := (list "" "m" "k" "M" "G" "T" "P" "Ki" "Mi" "Gi" "Ti" "Pi") -}}
|
||||
{{- $scales := (list 1.0 0.001 (1000 | int) (1000000 | int) (1000000000 | int) (1000000000000 | int) (1000000000000000 | int) (1024 | int) (1048576 | int) (1073741824 | int) (1099511627776 | int) (1125899906842624 | int)) -}}
|
||||
{{- $idx := -1 -}}
|
||||
{{- range $i, $s := $scales -}}
|
||||
{{- if (eq ($s | float64) ($scale | float64)) -}}
|
||||
{{- $idx = $i -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (eq $idx -1) -}}
|
||||
{{- $_ := (fail (printf "unknown scale: %v" $scale)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (printf "%s%s" (toString $numeric) (index $strs $idx))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.resource_Value" -}}
|
||||
{{- $repr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $tmp_tuple_3 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.parseResource" (dict "a" (list $repr) ))) "r")) ))) "r") -}}
|
||||
{{- $scale := ($tmp_tuple_3.T2 | float64) -}}
|
||||
{{- $numeric := ($tmp_tuple_3.T1 | float64) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (int64 (ceil ((mulf $numeric $scale) | float64)))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.resource_MilliValue" -}}
|
||||
{{- $repr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $tmp_tuple_4 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.parseResource" (dict "a" (list $repr) ))) "r")) ))) "r") -}}
|
||||
{{- $scale := ($tmp_tuple_4.T2 | float64) -}}
|
||||
{{- $numeric := ($tmp_tuple_4.T1 | float64) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (int64 (ceil ((mulf ((mulf $numeric 1000.0) | float64) $scale) | float64)))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.time_ParseDuration" -}}
|
||||
{{- $repr := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $unitMap := (dict "s" (1000000000 | int64) "m" (60000000000 | int64) "h" (3600000000000 | int64) ) -}}
|
||||
{{- $original := $repr -}}
|
||||
{{- $value := ((0 | int64) | int64) -}}
|
||||
{{- if (eq $repr "") -}}
|
||||
{{- $_ := (fail (printf "invalid Duration: %q" $original)) -}}
|
||||
{{- end -}}
|
||||
{{- if (eq $repr "0") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (0 | int64)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $_ := (list (0 | int) (0 | int) (0 | int)) -}}
|
||||
{{- if (eq $repr "") -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $n := (regexFind `^\d+` $repr) -}}
|
||||
{{- if (eq $n "") -}}
|
||||
{{- $_ := (fail (printf "invalid Duration: %q" $original)) -}}
|
||||
{{- end -}}
|
||||
{{- $repr = (substr ((get (fromJson (include "_shims.len" (dict "a" (list $n) ))) "r") | int) -1 $repr) -}}
|
||||
{{- $unit := (regexFind `^(h|m|s)` $repr) -}}
|
||||
{{- if (eq $unit "") -}}
|
||||
{{- $_ := (fail (printf "invalid Duration: %q" $original)) -}}
|
||||
{{- end -}}
|
||||
{{- $repr = (substr ((get (fromJson (include "_shims.len" (dict "a" (list $unit) ))) "r") | int) -1 $repr) -}}
|
||||
{{- $value = ((add $value (((mul (int64 $n) (index $unitMap $unit)) | int64))) | int64) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $value) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.time_Duration_String" -}}
|
||||
{{- $dur := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (duration ((div $dur (1000000000 | int64)) | int64))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "_shims.render-manifest" -}}
|
||||
{{- $tpl := (index . 0) -}}
|
||||
{{- $dot := (index . 1) -}}
|
||||
{{- $manifests := (get ((include $tpl (dict "a" (list $dot))) | fromJson) "r") -}}
|
||||
{{- if not (typeIs "[]interface {}" $manifests) -}}
|
||||
{{- $manifests = (list $manifests) -}}
|
||||
{{- end -}}
|
||||
{{- range $_, $manifest := $manifests -}}
|
||||
{{- if ne (toJson $manifest) "null" }}
|
||||
---
|
||||
{{toYaml (unset (unset $manifest "status") "creationTimestamp")}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -0,0 +1,777 @@
|
|||
{{- /* Generated from "statefulset.go" */ -}}
|
||||
|
||||
{{- define "redpanda.statefulSetRedpandaEnv" -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list (mustMergeOverwrite (dict "name" "" ) (dict "name" "SERVICE_NAME" "valueFrom" (mustMergeOverwrite (dict ) (dict "fieldRef" (mustMergeOverwrite (dict "fieldPath" "" ) (dict "fieldPath" "metadata.name" )) )) )) (mustMergeOverwrite (dict "name" "" ) (dict "name" "POD_IP" "valueFrom" (mustMergeOverwrite (dict ) (dict "fieldRef" (mustMergeOverwrite (dict "fieldPath" "" ) (dict "fieldPath" "status.podIP" )) )) )) (mustMergeOverwrite (dict "name" "" ) (dict "name" "HOST_IP" "valueFrom" (mustMergeOverwrite (dict ) (dict "fieldRef" (mustMergeOverwrite (dict "fieldPath" "" ) (dict "fieldPath" "status.hostIP" )) )) )))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.StatefulSetPodLabelsSelector" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if $dot.Release.IsUpgrade -}}
|
||||
{{- $tmp_tuple_1 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.lookup" (dict "a" (list "apps/v1" "StatefulSet" $dot.Release.Namespace (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) ))) "r")) ))) "r") -}}
|
||||
{{- $ok_2 := $tmp_tuple_1.T2 -}}
|
||||
{{- $existing_1 := $tmp_tuple_1.T1 -}}
|
||||
{{- if (and $ok_2 (gt ((get (fromJson (include "_shims.len" (dict "a" (list $existing_1.spec.selector.matchLabels) ))) "r") | int) (0 | int))) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $existing_1.spec.selector.matchLabels) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $additionalSelectorLabels := (dict ) -}}
|
||||
{{- if (ne (toJson $values.statefulset.additionalSelectorLabels) "null") -}}
|
||||
{{- $additionalSelectorLabels = $values.statefulset.additionalSelectorLabels -}}
|
||||
{{- end -}}
|
||||
{{- $component := (printf "%s-statefulset" (trimSuffix "-" (trunc (51 | int) (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r")))) -}}
|
||||
{{- $defaults := (dict "app.kubernetes.io/component" $component "app.kubernetes.io/instance" $dot.Release.Name "app.kubernetes.io/name" (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r") ) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (merge (dict ) $additionalSelectorLabels $defaults)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.StatefulSetPodLabels" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- if $dot.Release.IsUpgrade -}}
|
||||
{{- $tmp_tuple_2 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "_shims.lookup" (dict "a" (list "apps/v1" "StatefulSet" $dot.Release.Namespace (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) ))) "r")) ))) "r") -}}
|
||||
{{- $ok_4 := $tmp_tuple_2.T2 -}}
|
||||
{{- $existing_3 := $tmp_tuple_2.T1 -}}
|
||||
{{- if (and $ok_4 (gt ((get (fromJson (include "_shims.len" (dict "a" (list $existing_3.spec.template.metadata.labels) ))) "r") | int) (0 | int))) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $existing_3.spec.template.metadata.labels) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $statefulSetLabels := (dict ) -}}
|
||||
{{- if (ne (toJson $values.statefulset.podTemplate.labels) "null") -}}
|
||||
{{- $statefulSetLabels = $values.statefulset.podTemplate.labels -}}
|
||||
{{- end -}}
|
||||
{{- $defaults := (dict "redpanda.com/poddisruptionbudget" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") ) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (merge (dict ) $statefulSetLabels (get (fromJson (include "redpanda.StatefulSetPodLabelsSelector" (dict "a" (list $dot) ))) "r") $defaults (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r"))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.StatefulSetPodAnnotations" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $configMapChecksum := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $configMapChecksumAnnotation := (dict "config.redpanda.com/checksum" $configMapChecksum ) -}}
|
||||
{{- if (ne (toJson $values.statefulset.podTemplate.annotations) "null") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (merge (dict ) $values.statefulset.podTemplate.annotations $configMapChecksumAnnotation)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (merge (dict ) $values.statefulset.annotations $configMapChecksumAnnotation)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.StatefulSetVolumes" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $fullname := (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $volumes := (get (fromJson (include "redpanda.CommonVolumes" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (default (list ) (list (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "secret" (mustMergeOverwrite (dict ) (dict "secretName" (printf "%.50s-sts-lifecycle" $fullname) "defaultMode" (0o775 | int) )) )) (dict "name" "lifecycle-scripts" )) (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "configMap" (mustMergeOverwrite (dict ) (mustMergeOverwrite (dict ) (dict "name" $fullname )) (dict )) )) (dict "name" "base-config" )) (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "emptyDir" (mustMergeOverwrite (dict ) (dict )) )) (dict "name" "config" )) (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "secret" (mustMergeOverwrite (dict ) (dict "secretName" (printf "%.51s-configurator" $fullname) "defaultMode" (0o775 | int) )) )) (dict "name" (printf "%.51s-configurator" $fullname) )) (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "secret" (mustMergeOverwrite (dict ) (dict "secretName" (printf "%s-config-watcher" $fullname) "defaultMode" (0o775 | int) )) )) (dict "name" (printf "%s-config-watcher" $fullname) ))))) -}}
|
||||
{{- if $values.statefulset.initContainers.fsValidator.enabled -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (list (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "secret" (mustMergeOverwrite (dict ) (dict "secretName" (printf "%.49s-fs-validator" $fullname) "defaultMode" (0o775 | int) )) )) (dict "name" (printf "%.49s-fs-validator" $fullname) )))) -}}
|
||||
{{- end -}}
|
||||
{{- $vol_5 := (get (fromJson (include "redpanda.Listeners.TrustStoreVolume" (dict "a" (list $values.listeners $values.tls) ))) "r") -}}
|
||||
{{- if (ne (toJson $vol_5) "null") -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (list $vol_5)) -}}
|
||||
{{- end -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (default (list ) (get (fromJson (include "redpanda.templateToVolumes" (dict "a" (list $dot $values.statefulset.extraVolumes) ))) "r"))) -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (list (get (fromJson (include "redpanda.statefulSetVolumeDataDir" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- $v_6 := (get (fromJson (include "redpanda.statefulSetVolumeTieredStorageDir" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $v_6) "null") -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (list $v_6)) -}}
|
||||
{{- end -}}
|
||||
{{- if (and (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.serviceAccount.automountServiceAccountToken false) ))) "r")) ((or ((and (and $values.rbac.enabled $values.statefulset.sideCars.controllers.enabled) $values.statefulset.sideCars.controllers.createRBAC)) $values.rackAwareness.enabled))) -}}
|
||||
{{- $foundK8STokenVolume := false -}}
|
||||
{{- range $_, $v := $volumes -}}
|
||||
{{- if (hasPrefix $v.name (printf "%s%s" "kube-api-access" "-")) -}}
|
||||
{{- $foundK8STokenVolume = true -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (not $foundK8STokenVolume) -}}
|
||||
{{- $volumes = (concat (default (list ) $volumes) (list (get (fromJson (include "redpanda.kubeTokenAPIVolume" (dict "a" (list "kube-api-access") ))) "r"))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $volumes) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.kubeTokenAPIVolume" -}}
|
||||
{{- $name := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "projected" (mustMergeOverwrite (dict "sources" (coalesce nil) ) (dict "defaultMode" (420 | int) "sources" (list (mustMergeOverwrite (dict ) (dict "serviceAccountToken" (mustMergeOverwrite (dict "path" "" ) (dict "path" "token" "expirationSeconds" ((3607 | int) | int64) )) )) (mustMergeOverwrite (dict ) (dict "configMap" (mustMergeOverwrite (dict ) (mustMergeOverwrite (dict ) (dict "name" "kube-root-ca.crt" )) (dict "items" (list (mustMergeOverwrite (dict "key" "" "path" "" ) (dict "key" "ca.crt" "path" "ca.crt" ))) )) )) (mustMergeOverwrite (dict ) (dict "downwardAPI" (mustMergeOverwrite (dict ) (dict "items" (list (mustMergeOverwrite (dict "path" "" ) (dict "path" "namespace" "fieldRef" (mustMergeOverwrite (dict "fieldPath" "" ) (dict "apiVersion" "v1" "fieldPath" "metadata.namespace" )) ))) )) ))) )) )) (dict "name" $name ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.statefulSetVolumeDataDir" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $datadirSource := (mustMergeOverwrite (dict ) (dict "emptyDir" (mustMergeOverwrite (dict ) (dict )) )) -}}
|
||||
{{- if $values.storage.persistentVolume.enabled -}}
|
||||
{{- $datadirSource = (mustMergeOverwrite (dict ) (dict "persistentVolumeClaim" (mustMergeOverwrite (dict "claimName" "" ) (dict "claimName" "datadir" )) )) -}}
|
||||
{{- else -}}{{- if (ne $values.storage.hostPath "") -}}
|
||||
{{- $datadirSource = (mustMergeOverwrite (dict ) (dict "hostPath" (mustMergeOverwrite (dict "path" "" ) (dict "path" $values.storage.hostPath )) )) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "name" "" ) $datadirSource (dict "name" "datadir" ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.statefulSetVolumeTieredStorageDir" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not (get (fromJson (include "redpanda.Storage.IsTieredStorageEnabled" (dict "a" (list $values.storage) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $tieredType := (get (fromJson (include "redpanda.Storage.TieredMountType" (dict "a" (list $values.storage) ))) "r") -}}
|
||||
{{- if (or (eq $tieredType "none") (eq $tieredType "persistentVolume")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (eq $tieredType "hostPath") -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "hostPath" (mustMergeOverwrite (dict "path" "" ) (dict "path" (get (fromJson (include "redpanda.Storage.GetTieredStorageHostPath" (dict "a" (list $values.storage) ))) "r") )) )) (dict "name" "tiered-storage-dir" ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "name" "" ) (mustMergeOverwrite (dict ) (dict "emptyDir" (mustMergeOverwrite (dict ) (dict "sizeLimit" (get (fromJson (include "redpanda.TieredStorageConfig.CloudStorageCacheSize" (dict "a" (list (deepCopy (get (fromJson (include "redpanda.Storage.GetTieredStorageConfig" (dict "a" (list $values.storage) ))) "r"))) ))) "r") )) )) (dict "name" "tiered-storage-dir" ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.StatefulSetVolumeMounts" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $mounts := (get (fromJson (include "redpanda.CommonMounts" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $mounts = (concat (default (list ) $mounts) (default (list ) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "config" "mountPath" "/etc/redpanda" )) (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "base-config" "mountPath" "/tmp/base-config" )) (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "lifecycle-scripts" "mountPath" "/var/lifecycle" )) (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "datadir" "mountPath" "/var/lib/redpanda/data" ))))) -}}
|
||||
{{- if (gt ((get (fromJson (include "_shims.len" (dict "a" (list (get (fromJson (include "redpanda.Listeners.TrustStores" (dict "a" (list $values.listeners $values.tls) ))) "r")) ))) "r") | int) (0 | int)) -}}
|
||||
{{- $mounts = (concat (default (list ) $mounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "truststores" "mountPath" "/etc/truststores" "readOnly" true )))) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $mounts) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.StatefulSetInitContainers" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $containers := (coalesce nil) -}}
|
||||
{{- $c_7 := (get (fromJson (include "redpanda.statefulSetInitContainerTuning" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $c_7) "null") -}}
|
||||
{{- $containers = (concat (default (list ) $containers) (list $c_7)) -}}
|
||||
{{- end -}}
|
||||
{{- $c_8 := (get (fromJson (include "redpanda.statefulSetInitContainerSetDataDirOwnership" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $c_8) "null") -}}
|
||||
{{- $containers = (concat (default (list ) $containers) (list $c_8)) -}}
|
||||
{{- end -}}
|
||||
{{- $c_9 := (get (fromJson (include "redpanda.statefulSetInitContainerFSValidator" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $c_9) "null") -}}
|
||||
{{- $containers = (concat (default (list ) $containers) (list $c_9)) -}}
|
||||
{{- end -}}
|
||||
{{- $c_10 := (get (fromJson (include "redpanda.statefulSetInitContainerSetTieredStorageCacheDirOwnership" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $c_10) "null") -}}
|
||||
{{- $containers = (concat (default (list ) $containers) (list $c_10)) -}}
|
||||
{{- end -}}
|
||||
{{- $containers = (concat (default (list ) $containers) (list (get (fromJson (include "redpanda.statefulSetInitContainerConfigurator" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- $containers = (concat (default (list ) $containers) (list (get (fromJson (include "redpanda.bootstrapYamlTemplater" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- $containers = (concat (default (list ) $containers) (default (list ) (get (fromJson (include "redpanda.templateToContainers" (dict "a" (list $dot $values.statefulset.initContainers.extraInitContainers) ))) "r"))) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $containers) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.statefulSetInitContainerTuning" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.tuning.tune_aio_events) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "name" "" "resources" (dict ) ) (dict "name" "tuning" "image" (printf "%s:%s" $values.image.repository (get (fromJson (include "redpanda.Tag" (dict "a" (list $dot) ))) "r")) "command" (list `/bin/bash` `-c` `rpk redpanda tune all`) "securityContext" (mustMergeOverwrite (dict ) (dict "capabilities" (mustMergeOverwrite (dict ) (dict "add" (list `SYS_RESOURCE`) )) "privileged" true "runAsUser" ((0 | int64) | int64) "runAsGroup" ((0 | int64) | int64) )) "volumeMounts" (concat (default (list ) (concat (default (list ) (get (fromJson (include "redpanda.CommonMounts" (dict "a" (list $dot) ))) "r")) (default (list ) (get (fromJson (include "redpanda.templateToVolumeMounts" (dict "a" (list $dot $values.statefulset.initContainers.tuning.extraVolumeMounts) ))) "r")))) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "base-config" "mountPath" "/etc/redpanda" )))) "resources" $values.statefulset.initContainers.tuning.resources ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.statefulSetInitContainerSetDataDirOwnership" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.statefulset.initContainers.setDataDirOwnership.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $tmp_tuple_3 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "redpanda.securityContextUidGid" (dict "a" (list $dot "set-datadir-ownership") ))) "r")) ))) "r") -}}
|
||||
{{- $gid := ($tmp_tuple_3.T2 | int64) -}}
|
||||
{{- $uid := ($tmp_tuple_3.T1 | int64) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "name" "" "resources" (dict ) ) (dict "name" "set-datadir-ownership" "image" (printf "%s:%s" $values.statefulset.initContainerImage.repository $values.statefulset.initContainerImage.tag) "command" (list `/bin/sh` `-c` (printf `chown %d:%d -R /var/lib/redpanda/data` $uid $gid)) "volumeMounts" (concat (default (list ) (concat (default (list ) (get (fromJson (include "redpanda.CommonMounts" (dict "a" (list $dot) ))) "r")) (default (list ) (get (fromJson (include "redpanda.templateToVolumeMounts" (dict "a" (list $dot $values.statefulset.initContainers.setDataDirOwnership.extraVolumeMounts) ))) "r")))) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" `datadir` "mountPath" `/var/lib/redpanda/data` )))) "resources" $values.statefulset.initContainers.setDataDirOwnership.resources ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.securityContextUidGid" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $containerName := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $uid := $values.statefulset.securityContext.runAsUser -}}
|
||||
{{- if (and (ne (toJson $values.statefulset.podSecurityContext) "null") (ne (toJson $values.statefulset.podSecurityContext.runAsUser) "null")) -}}
|
||||
{{- $uid = $values.statefulset.podSecurityContext.runAsUser -}}
|
||||
{{- end -}}
|
||||
{{- if (eq (toJson $uid) "null") -}}
|
||||
{{- $_ := (fail (printf `%s container requires runAsUser to be specified` $containerName)) -}}
|
||||
{{- end -}}
|
||||
{{- $gid := $values.statefulset.securityContext.fsGroup -}}
|
||||
{{- if (and (ne (toJson $values.statefulset.podSecurityContext) "null") (ne (toJson $values.statefulset.podSecurityContext.fsGroup) "null")) -}}
|
||||
{{- $gid = $values.statefulset.podSecurityContext.fsGroup -}}
|
||||
{{- end -}}
|
||||
{{- if (eq (toJson $gid) "null") -}}
|
||||
{{- $_ := (fail (printf `%s container requires fsGroup to be specified` $containerName)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list $uid $gid)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.statefulSetInitContainerFSValidator" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.statefulset.initContainers.fsValidator.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "name" "" "resources" (dict ) ) (dict "name" "fs-validator" "image" (printf "%s:%s" $values.image.repository (get (fromJson (include "redpanda.Tag" (dict "a" (list $dot) ))) "r")) "command" (list `/bin/sh`) "args" (list `-c` (printf `trap "exit 0" TERM; exec /etc/secrets/fs-validator/scripts/fsValidator.sh %s & wait $!` $values.statefulset.initContainers.fsValidator.expectedFS)) "securityContext" (get (fromJson (include "redpanda.ContainerSecurityContext" (dict "a" (list $dot) ))) "r") "volumeMounts" (concat (default (list ) (concat (default (list ) (get (fromJson (include "redpanda.CommonMounts" (dict "a" (list $dot) ))) "r")) (default (list ) (get (fromJson (include "redpanda.templateToVolumeMounts" (dict "a" (list $dot $values.statefulset.initContainers.fsValidator.extraVolumeMounts) ))) "r")))) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" (printf `%.49s-fs-validator` (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) "mountPath" `/etc/secrets/fs-validator/scripts/` )) (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" `datadir` "mountPath" `/var/lib/redpanda/data` )))) "resources" $values.statefulset.initContainers.fsValidator.resources ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.statefulSetInitContainerSetTieredStorageCacheDirOwnership" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not (get (fromJson (include "redpanda.Storage.IsTieredStorageEnabled" (dict "a" (list $values.storage) ))) "r")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $tmp_tuple_4 := (get (fromJson (include "_shims.compact" (dict "a" (list (get (fromJson (include "redpanda.securityContextUidGid" (dict "a" (list $dot "set-tiered-storage-cache-dir-ownership") ))) "r")) ))) "r") -}}
|
||||
{{- $gid := ($tmp_tuple_4.T2 | int64) -}}
|
||||
{{- $uid := ($tmp_tuple_4.T1 | int64) -}}
|
||||
{{- $cacheDir := (get (fromJson (include "redpanda.Storage.TieredCacheDirectory" (dict "a" (list $values.storage $dot) ))) "r") -}}
|
||||
{{- $mounts := (get (fromJson (include "redpanda.CommonMounts" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $mounts = (concat (default (list ) $mounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "datadir" "mountPath" "/var/lib/redpanda/data" )))) -}}
|
||||
{{- if (ne (get (fromJson (include "redpanda.Storage.TieredMountType" (dict "a" (list $values.storage) ))) "r") "none") -}}
|
||||
{{- $name := "tiered-storage-dir" -}}
|
||||
{{- if (and (ne (toJson $values.storage.persistentVolume) "null") (ne $values.storage.persistentVolume.nameOverwrite "")) -}}
|
||||
{{- $name = $values.storage.persistentVolume.nameOverwrite -}}
|
||||
{{- end -}}
|
||||
{{- $mounts = (concat (default (list ) $mounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" $name "mountPath" $cacheDir )))) -}}
|
||||
{{- end -}}
|
||||
{{- $mounts = (concat (default (list ) $mounts) (default (list ) (get (fromJson (include "redpanda.templateToVolumeMounts" (dict "a" (list $dot $values.statefulset.initContainers.setTieredStorageCacheDirOwnership.extraVolumeMounts) ))) "r"))) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "name" "" "resources" (dict ) ) (dict "name" `set-tiered-storage-cache-dir-ownership` "image" (printf `%s:%s` $values.statefulset.initContainerImage.repository $values.statefulset.initContainerImage.tag) "command" (list `/bin/sh` `-c` (printf `mkdir -p %s; chown %d:%d -R %s` $cacheDir $uid $gid $cacheDir)) "volumeMounts" $mounts "resources" $values.statefulset.initContainers.setTieredStorageCacheDirOwnership.resources ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.statefulSetInitContainerConfigurator" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $volMounts := (get (fromJson (include "redpanda.CommonMounts" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $volMounts = (concat (default (list ) $volMounts) (default (list ) (get (fromJson (include "redpanda.templateToVolumeMounts" (dict "a" (list $dot $values.statefulset.initContainers.configurator.extraVolumeMounts) ))) "r"))) -}}
|
||||
{{- $volMounts = (concat (default (list ) $volMounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "config" "mountPath" "/etc/redpanda" )) (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "base-config" "mountPath" "/tmp/base-config" )) (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" (printf `%.51s-configurator` (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) "mountPath" "/etc/secrets/configurator/scripts/" )))) -}}
|
||||
{{- if (and (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.serviceAccount.automountServiceAccountToken false) ))) "r")) $values.rackAwareness.enabled) -}}
|
||||
{{- $mountName := "kube-api-access" -}}
|
||||
{{- range $_, $vol := (get (fromJson (include "redpanda.StatefulSetVolumes" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (hasPrefix $vol.name (printf "%s%s" "kube-api-access" "-")) -}}
|
||||
{{- $mountName = $vol.name -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $volMounts = (concat (default (list ) $volMounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" $mountName "readOnly" true "mountPath" "/var/run/secrets/kubernetes.io/serviceaccount" )))) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "name" "" "resources" (dict ) ) (dict "name" (printf `%.51s-configurator` (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r")) "image" (printf `%s:%s` $values.image.repository (get (fromJson (include "redpanda.Tag" (dict "a" (list $dot) ))) "r")) "command" (list `/bin/bash` `-c` `trap "exit 0" TERM; exec $CONFIGURATOR_SCRIPT "${SERVICE_NAME}" "${KUBERNETES_NODE_NAME}" & wait $!`) "env" (get (fromJson (include "redpanda.rpkEnvVars" (dict "a" (list $dot (list (mustMergeOverwrite (dict "name" "" ) (dict "name" "CONFIGURATOR_SCRIPT" "value" "/etc/secrets/configurator/scripts/configurator.sh" )) (mustMergeOverwrite (dict "name" "" ) (dict "name" "SERVICE_NAME" "valueFrom" (mustMergeOverwrite (dict ) (dict "fieldRef" (mustMergeOverwrite (dict "fieldPath" "" ) (dict "fieldPath" "metadata.name" )) "resourceFieldRef" (coalesce nil) "configMapKeyRef" (coalesce nil) "secretKeyRef" (coalesce nil) )) )) (mustMergeOverwrite (dict "name" "" ) (dict "name" "KUBERNETES_NODE_NAME" "valueFrom" (mustMergeOverwrite (dict ) (dict "fieldRef" (mustMergeOverwrite (dict "fieldPath" "" ) (dict "fieldPath" "spec.nodeName" )) )) )) (mustMergeOverwrite (dict "name" "" ) (dict "name" "HOST_IP_ADDRESS" "valueFrom" (mustMergeOverwrite (dict ) (dict "fieldRef" (mustMergeOverwrite (dict "fieldPath" "" ) (dict "apiVersion" "v1" "fieldPath" "status.hostIP" )) )) )))) ))) "r") "securityContext" (get (fromJson (include "redpanda.ContainerSecurityContext" (dict "a" (list $dot) ))) "r") "volumeMounts" $volMounts "resources" $values.statefulset.initContainers.configurator.resources ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.StatefulSetContainers" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $containers := (coalesce nil) -}}
|
||||
{{- $containers = (concat (default (list ) $containers) (list (get (fromJson (include "redpanda.statefulSetContainerRedpanda" (dict "a" (list $dot) ))) "r"))) -}}
|
||||
{{- $c_11 := (get (fromJson (include "redpanda.statefulSetContainerConfigWatcher" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $c_11) "null") -}}
|
||||
{{- $containers = (concat (default (list ) $containers) (list $c_11)) -}}
|
||||
{{- end -}}
|
||||
{{- $c_12 := (get (fromJson (include "redpanda.statefulSetContainerControllers" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $c_12) "null") -}}
|
||||
{{- $containers = (concat (default (list ) $containers) (list $c_12)) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $containers) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.wrapLifecycleHook" -}}
|
||||
{{- $hook := (index .a 0) -}}
|
||||
{{- $timeoutSeconds := (index .a 1) -}}
|
||||
{{- $cmd := (index .a 2) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $wrapped := (join " " $cmd) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (list "bash" "-c" (printf "timeout -v %d %s 2>&1 | sed \"s/^/lifecycle-hook %s $(date): /\" | tee /proc/1/fd/1; true" $timeoutSeconds $wrapped $hook))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.statefulSetContainerRedpanda" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $internalAdvertiseAddress := (printf "%s.%s" "$(SERVICE_NAME)" (get (fromJson (include "redpanda.InternalDomain" (dict "a" (list $dot) ))) "r")) -}}
|
||||
{{- $container := (mustMergeOverwrite (dict "name" "" "resources" (dict ) ) (dict "name" (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r") "image" (printf `%s:%s` $values.image.repository (get (fromJson (include "redpanda.Tag" (dict "a" (list $dot) ))) "r")) "env" (get (fromJson (include "redpanda.bootstrapEnvVars" (dict "a" (list $dot (get (fromJson (include "redpanda.statefulSetRedpandaEnv" (dict "a" (list ) ))) "r")) ))) "r") "lifecycle" (mustMergeOverwrite (dict ) (dict "postStart" (mustMergeOverwrite (dict ) (dict "exec" (mustMergeOverwrite (dict ) (dict "command" (get (fromJson (include "redpanda.wrapLifecycleHook" (dict "a" (list "post-start" ((div ($values.statefulset.terminationGracePeriodSeconds | int64) (2 | int64)) | int64) (list "bash" "-x" "/var/lifecycle/postStart.sh")) ))) "r") )) )) "preStop" (mustMergeOverwrite (dict ) (dict "exec" (mustMergeOverwrite (dict ) (dict "command" (get (fromJson (include "redpanda.wrapLifecycleHook" (dict "a" (list "pre-stop" ((div ($values.statefulset.terminationGracePeriodSeconds | int64) (2 | int64)) | int64) (list "bash" "-x" "/var/lifecycle/preStop.sh")) ))) "r") )) )) )) "startupProbe" (mustMergeOverwrite (dict ) (mustMergeOverwrite (dict ) (dict "exec" (mustMergeOverwrite (dict ) (dict "command" (list `/bin/sh` `-c` (join "\n" (list `set -e` (printf `RESULT=$(curl --silent --fail -k -m 5 %s "%s://%s/v1/status/ready")` (get (fromJson (include "redpanda.adminTLSCurlFlags" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.adminInternalHTTPProtocol" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.adminApiURLs" (dict "a" (list $dot) ))) "r")) `echo $RESULT` `echo $RESULT | grep ready` ``))) )) )) (dict "initialDelaySeconds" ($values.statefulset.startupProbe.initialDelaySeconds | int) "periodSeconds" ($values.statefulset.startupProbe.periodSeconds | int) "failureThreshold" ($values.statefulset.startupProbe.failureThreshold | int) )) "livenessProbe" (mustMergeOverwrite (dict ) (mustMergeOverwrite (dict ) (dict "exec" (mustMergeOverwrite (dict ) (dict "command" (list `/bin/sh` `-c` (printf `curl --silent --fail -k -m 5 %s "%s://%s/v1/status/ready"` (get (fromJson (include "redpanda.adminTLSCurlFlags" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.adminInternalHTTPProtocol" (dict "a" (list $dot) ))) "r") (get (fromJson (include "redpanda.adminApiURLs" (dict "a" (list $dot) ))) "r"))) )) )) (dict "initialDelaySeconds" ($values.statefulset.livenessProbe.initialDelaySeconds | int) "periodSeconds" ($values.statefulset.livenessProbe.periodSeconds | int) "failureThreshold" ($values.statefulset.livenessProbe.failureThreshold | int) )) "command" (list `rpk` `redpanda` `start` (printf `--advertise-rpc-addr=%s:%d` $internalAdvertiseAddress ($values.listeners.rpc.port | int))) "volumeMounts" (concat (default (list ) (get (fromJson (include "redpanda.StatefulSetVolumeMounts" (dict "a" (list $dot) ))) "r")) (default (list ) (get (fromJson (include "redpanda.templateToVolumeMounts" (dict "a" (list $dot $values.statefulset.extraVolumeMounts) ))) "r"))) "securityContext" (get (fromJson (include "redpanda.ContainerSecurityContext" (dict "a" (list $dot) ))) "r") "resources" (mustMergeOverwrite (dict ) (dict )) )) -}}
|
||||
{{- if (not (get (fromJson (include "_shims.typeassertion" (dict "a" (list "bool" (dig `recovery_mode_enabled` false $values.config.node)) ))) "r")) -}}
|
||||
{{- $_ := (set $container "readinessProbe" (mustMergeOverwrite (dict ) (mustMergeOverwrite (dict ) (dict "exec" (mustMergeOverwrite (dict ) (dict "command" (list `/bin/sh` `-c` (join "\n" (list `set -x` `RESULT=$(rpk cluster health)` `echo $RESULT` `echo $RESULT | grep 'Healthy:.*true'` ``))) )) )) (dict "initialDelaySeconds" ($values.statefulset.readinessProbe.initialDelaySeconds | int) "timeoutSeconds" ($values.statefulset.readinessProbe.timeoutSeconds | int) "periodSeconds" ($values.statefulset.readinessProbe.periodSeconds | int) "successThreshold" ($values.statefulset.readinessProbe.successThreshold | int) "failureThreshold" ($values.statefulset.readinessProbe.failureThreshold | int) ))) -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $container "ports" (concat (default (list ) $container.ports) (list (mustMergeOverwrite (dict "containerPort" 0 ) (dict "name" "admin" "containerPort" ($values.listeners.admin.port | int) ))))) -}}
|
||||
{{- range $externalName, $external := $values.listeners.admin.external -}}
|
||||
{{- if (get (fromJson (include "redpanda.AdminExternal.IsEnabled" (dict "a" (list $external) ))) "r") -}}
|
||||
{{- $_ := (set $container "ports" (concat (default (list ) $container.ports) (list (mustMergeOverwrite (dict "containerPort" 0 ) (dict "name" (printf "admin-%.8s" (lower $externalName)) "containerPort" ($external.port | int) ))))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $container "ports" (concat (default (list ) $container.ports) (list (mustMergeOverwrite (dict "containerPort" 0 ) (dict "name" "http" "containerPort" ($values.listeners.http.port | int) ))))) -}}
|
||||
{{- range $externalName, $external := $values.listeners.http.external -}}
|
||||
{{- if (get (fromJson (include "redpanda.HTTPExternal.IsEnabled" (dict "a" (list $external) ))) "r") -}}
|
||||
{{- $_ := (set $container "ports" (concat (default (list ) $container.ports) (list (mustMergeOverwrite (dict "containerPort" 0 ) (dict "name" (printf "http-%.8s" (lower $externalName)) "containerPort" ($external.port | int) ))))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $container "ports" (concat (default (list ) $container.ports) (list (mustMergeOverwrite (dict "containerPort" 0 ) (dict "name" "kafka" "containerPort" ($values.listeners.kafka.port | int) ))))) -}}
|
||||
{{- range $externalName, $external := $values.listeners.kafka.external -}}
|
||||
{{- if (get (fromJson (include "redpanda.KafkaExternal.IsEnabled" (dict "a" (list $external) ))) "r") -}}
|
||||
{{- $_ := (set $container "ports" (concat (default (list ) $container.ports) (list (mustMergeOverwrite (dict "containerPort" 0 ) (dict "name" (printf "kafka-%.8s" (lower $externalName)) "containerPort" ($external.port | int) ))))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $container "ports" (concat (default (list ) $container.ports) (list (mustMergeOverwrite (dict "containerPort" 0 ) (dict "name" "rpc" "containerPort" ($values.listeners.rpc.port | int) ))))) -}}
|
||||
{{- $_ := (set $container "ports" (concat (default (list ) $container.ports) (list (mustMergeOverwrite (dict "containerPort" 0 ) (dict "name" "schemaregistry" "containerPort" ($values.listeners.schemaRegistry.port | int) ))))) -}}
|
||||
{{- range $externalName, $external := $values.listeners.schemaRegistry.external -}}
|
||||
{{- if (get (fromJson (include "redpanda.SchemaRegistryExternal.IsEnabled" (dict "a" (list $external) ))) "r") -}}
|
||||
{{- $_ := (set $container "ports" (concat (default (list ) $container.ports) (list (mustMergeOverwrite (dict "containerPort" 0 ) (dict "name" (printf "schema-%.8s" (lower $externalName)) "containerPort" ($external.port | int) ))))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- if (and (get (fromJson (include "redpanda.Storage.IsTieredStorageEnabled" (dict "a" (list $values.storage) ))) "r") (ne (get (fromJson (include "redpanda.Storage.TieredMountType" (dict "a" (list $values.storage) ))) "r") "none")) -}}
|
||||
{{- $name := "tiered-storage-dir" -}}
|
||||
{{- if (and (ne (toJson $values.storage.persistentVolume) "null") (ne $values.storage.persistentVolume.nameOverwrite "")) -}}
|
||||
{{- $name = $values.storage.persistentVolume.nameOverwrite -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $container "volumeMounts" (concat (default (list ) $container.volumeMounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" $name "mountPath" (get (fromJson (include "redpanda.Storage.TieredCacheDirectory" (dict "a" (list $values.storage $dot) ))) "r") ))))) -}}
|
||||
{{- end -}}
|
||||
{{- $_ := (set $container.resources "limits" (dict "cpu" $values.resources.cpu.cores "memory" $values.resources.memory.container.max )) -}}
|
||||
{{- if (ne (toJson $values.resources.memory.container.min) "null") -}}
|
||||
{{- $_ := (set $container.resources "requests" (dict "cpu" $values.resources.cpu.cores "memory" $values.resources.memory.container.min )) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $container) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.adminApiURLs" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (printf `${SERVICE_NAME}.%s:%d` (get (fromJson (include "redpanda.InternalDomain" (dict "a" (list $dot) ))) "r") ($values.listeners.admin.port | int))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.statefulSetContainerConfigWatcher" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.statefulset.sideCars.configWatcher.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "name" "" "resources" (dict ) ) (dict "name" "config-watcher" "image" (printf `%s:%s` $values.image.repository (get (fromJson (include "redpanda.Tag" (dict "a" (list $dot) ))) "r")) "command" (list `/bin/sh`) "args" (list `-c` `trap "exit 0" TERM; exec /etc/secrets/config-watcher/scripts/sasl-user.sh & wait $!`) "env" (get (fromJson (include "redpanda.rpkEnvVars" (dict "a" (list $dot (coalesce nil)) ))) "r") "resources" $values.statefulset.sideCars.configWatcher.resources "securityContext" $values.statefulset.sideCars.configWatcher.securityContext "volumeMounts" (concat (default (list ) (concat (default (list ) (get (fromJson (include "redpanda.CommonMounts" (dict "a" (list $dot) ))) "r")) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" "config" "mountPath" "/etc/redpanda" )) (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" (printf `%s-config-watcher` (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) "mountPath" "/etc/secrets/config-watcher/scripts" ))))) (default (list ) (get (fromJson (include "redpanda.templateToVolumeMounts" (dict "a" (list $dot $values.statefulset.sideCars.configWatcher.extraVolumeMounts) ))) "r"))) ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.statefulSetContainerControllers" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (or (not $values.rbac.enabled) (not $values.statefulset.sideCars.controllers.enabled)) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $volumeMounts := (list ) -}}
|
||||
{{- if (and (and (and $values.rbac.enabled $values.statefulset.sideCars.controllers.enabled) $values.statefulset.sideCars.controllers.createRBAC) (not (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.serviceAccount.automountServiceAccountToken false) ))) "r"))) -}}
|
||||
{{- $mountName := "kube-api-access" -}}
|
||||
{{- range $_, $vol := (get (fromJson (include "redpanda.StatefulSetVolumes" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (hasPrefix $vol.name (printf "%s%s" "kube-api-access" "-")) -}}
|
||||
{{- $mountName = $vol.name -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $volumeMounts = (concat (default (list ) $volumeMounts) (list (mustMergeOverwrite (dict "name" "" "mountPath" "" ) (dict "name" $mountName "readOnly" true "mountPath" "/var/run/secrets/kubernetes.io/serviceaccount" )))) -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (mustMergeOverwrite (dict "name" "" "resources" (dict ) ) (dict "name" "redpanda-controllers" "image" (printf `%s:%s` $values.statefulset.sideCars.controllers.image.repository $values.statefulset.sideCars.controllers.image.tag) "command" (list `/manager`) "args" (list `--operator-mode=false` (printf `--namespace=%s` $dot.Release.Namespace) (printf `--health-probe-bind-address=%s` $values.statefulset.sideCars.controllers.healthProbeAddress) (printf `--metrics-bind-address=%s` $values.statefulset.sideCars.controllers.metricsAddress) (printf `--additional-controllers=%s` (join "," $values.statefulset.sideCars.controllers.run))) "env" (list (mustMergeOverwrite (dict "name" "" ) (dict "name" "REDPANDA_HELM_RELEASE_NAME" "value" $dot.Release.Name ))) "resources" $values.statefulset.sideCars.controllers.resources "securityContext" $values.statefulset.sideCars.controllers.securityContext "volumeMounts" $volumeMounts ))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.rpkEnvVars" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $envVars := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (and (ne (toJson $values.auth.sasl) "null") $values.auth.sasl.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (concat (default (list ) $envVars) (default (list ) (get (fromJson (include "redpanda.BootstrapUser.RpkEnvironment" (dict "a" (list $values.auth.sasl.bootstrapUser (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) ))) "r")))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $envVars) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.bootstrapEnvVars" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $envVars := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (and (ne (toJson $values.auth.sasl) "null") $values.auth.sasl.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (concat (default (list ) $envVars) (default (list ) (get (fromJson (include "redpanda.BootstrapUser.BootstrapEnvironment" (dict "a" (list $values.auth.sasl.bootstrapUser (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r")) ))) "r")))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $envVars) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.templateToVolumeMounts" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $template := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $result := (tpl $template $dot) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (fromYamlArray $result)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.templateToVolumes" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $template := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $result := (tpl $template $dot) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (fromYamlArray $result)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.templateToContainers" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- $template := (index .a 1) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $result := (tpl $template $dot) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (fromYamlArray $result)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.StatefulSet" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (and (not (get (fromJson (include "redpanda.RedpandaAtLeast_22_2_0" (dict "a" (list $dot) ))) "r")) (not $values.force)) -}}
|
||||
{{- $sv := (get (fromJson (include "redpanda.semver" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- $_ := (fail (printf "Error: The Redpanda version (%s) is no longer supported \nTo accept this risk, run the upgrade again adding `--force=true`\n" $sv)) -}}
|
||||
{{- end -}}
|
||||
{{- $ss := (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "selector" (coalesce nil) "template" (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "containers" (coalesce nil) ) ) "serviceName" "" "updateStrategy" (dict ) ) "status" (dict "replicas" 0 "availableReplicas" 0 ) ) (mustMergeOverwrite (dict ) (dict "apiVersion" "apps/v1" "kind" "StatefulSet" )) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (get (fromJson (include "redpanda.Fullname" (dict "a" (list $dot) ))) "r") "namespace" $dot.Release.Namespace "labels" (get (fromJson (include "redpanda.FullLabels" (dict "a" (list $dot) ))) "r") )) "spec" (mustMergeOverwrite (dict "selector" (coalesce nil) "template" (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "containers" (coalesce nil) ) ) "serviceName" "" "updateStrategy" (dict ) ) (dict "selector" (mustMergeOverwrite (dict ) (dict "matchLabels" (get (fromJson (include "redpanda.StatefulSetPodLabelsSelector" (dict "a" (list $dot) ))) "r") )) "serviceName" (get (fromJson (include "redpanda.ServiceName" (dict "a" (list $dot) ))) "r") "replicas" ($values.statefulset.replicas | int) "updateStrategy" $values.statefulset.updateStrategy "podManagementPolicy" "Parallel" "template" (get (fromJson (include "redpanda.StrategicMergePatch" (dict "a" (list $values.statefulset.podTemplate (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "containers" (coalesce nil) ) ) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "labels" (get (fromJson (include "redpanda.StatefulSetPodLabels" (dict "a" (list $dot) ))) "r") "annotations" (get (fromJson (include "redpanda.StatefulSetPodAnnotations" (dict "a" (list $dot (get (fromJson (include "redpanda.statefulSetChecksumAnnotation" (dict "a" (list $dot) ))) "r")) ))) "r") )) "spec" (mustMergeOverwrite (dict "containers" (coalesce nil) ) (dict "automountServiceAccountToken" false "terminationGracePeriodSeconds" ($values.statefulset.terminationGracePeriodSeconds | int64) "securityContext" (get (fromJson (include "redpanda.PodSecurityContext" (dict "a" (list $dot) ))) "r") "serviceAccountName" (get (fromJson (include "redpanda.ServiceAccountName" (dict "a" (list $dot) ))) "r") "imagePullSecrets" (default (coalesce nil) $values.imagePullSecrets) "initContainers" (get (fromJson (include "redpanda.StatefulSetInitContainers" (dict "a" (list $dot) ))) "r") "containers" (get (fromJson (include "redpanda.StatefulSetContainers" (dict "a" (list $dot) ))) "r") "volumes" (get (fromJson (include "redpanda.StatefulSetVolumes" (dict "a" (list $dot) ))) "r") "topologySpreadConstraints" (get (fromJson (include "redpanda.statefulSetTopologySpreadConstraints" (dict "a" (list $dot) ))) "r") "nodeSelector" (get (fromJson (include "redpanda.statefulSetNodeSelectors" (dict "a" (list $dot) ))) "r") "affinity" (get (fromJson (include "redpanda.statefulSetAffinity" (dict "a" (list $dot) ))) "r") "priorityClassName" $values.statefulset.priorityClassName "tolerations" (get (fromJson (include "redpanda.statefulSetTolerations" (dict "a" (list $dot) ))) "r") )) ))) ))) "r") "volumeClaimTemplates" (coalesce nil) )) )) -}}
|
||||
{{- if (or $values.storage.persistentVolume.enabled ((and (get (fromJson (include "redpanda.Storage.IsTieredStorageEnabled" (dict "a" (list $values.storage) ))) "r") (eq (get (fromJson (include "redpanda.Storage.TieredMountType" (dict "a" (list $values.storage) ))) "r") "persistentVolume")))) -}}
|
||||
{{- $t_13 := (get (fromJson (include "redpanda.volumeClaimTemplateDatadir" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $t_13) "null") -}}
|
||||
{{- $_ := (set $ss.spec "volumeClaimTemplates" (concat (default (list ) $ss.spec.volumeClaimTemplates) (list $t_13))) -}}
|
||||
{{- end -}}
|
||||
{{- $t_14 := (get (fromJson (include "redpanda.volumeClaimTemplateTieredStorageDir" (dict "a" (list $dot) ))) "r") -}}
|
||||
{{- if (ne (toJson $t_14) "null") -}}
|
||||
{{- $_ := (set $ss.spec "volumeClaimTemplates" (concat (default (list ) $ss.spec.volumeClaimTemplates) (list $t_14))) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $ss) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.semver" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (trimPrefix "v" (get (fromJson (include "redpanda.Tag" (dict "a" (list $dot) ))) "r"))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.statefulSetChecksumAnnotation" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $dependencies := (coalesce nil) -}}
|
||||
{{- $dependencies = (concat (default (list ) $dependencies) (list (get (fromJson (include "redpanda.RedpandaConfigFile" (dict "a" (list $dot false) ))) "r"))) -}}
|
||||
{{- if $values.external.enabled -}}
|
||||
{{- $dependencies = (concat (default (list ) $dependencies) (list (get (fromJson (include "_shims.ptr_Deref" (dict "a" (list $values.external.domain "") ))) "r"))) -}}
|
||||
{{- if (empty $values.external.addresses) -}}
|
||||
{{- $dependencies = (concat (default (list ) $dependencies) (list "")) -}}
|
||||
{{- else -}}
|
||||
{{- $dependencies = (concat (default (list ) $dependencies) (list $values.external.addresses)) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (sha256sum (toJson $dependencies))) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.statefulSetTolerations" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (default $values.tolerations $values.statefulset.tolerations)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.statefulSetNodeSelectors" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (default $values.statefulset.nodeSelector $values.nodeSelector)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.statefulSetAffinity" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $affinity := (mustMergeOverwrite (dict ) (dict )) -}}
|
||||
{{- if (not (empty $values.statefulset.nodeAffinity)) -}}
|
||||
{{- $_ := (set $affinity "nodeAffinity" $values.statefulset.nodeAffinity) -}}
|
||||
{{- else -}}{{- if (not (empty $values.affinity.nodeAffinity)) -}}
|
||||
{{- $_ := (set $affinity "nodeAffinity" $values.affinity.nodeAffinity) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if (not (empty $values.statefulset.podAffinity)) -}}
|
||||
{{- $_ := (set $affinity "podAffinity" $values.statefulset.podAffinity) -}}
|
||||
{{- else -}}{{- if (not (empty $values.affinity.podAffinity)) -}}
|
||||
{{- $_ := (set $affinity "podAffinity" $values.affinity.podAffinity) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if (not (empty $values.statefulset.podAntiAffinity)) -}}
|
||||
{{- $_ := (set $affinity "podAntiAffinity" (mustMergeOverwrite (dict ) (dict ))) -}}
|
||||
{{- if (eq $values.statefulset.podAntiAffinity.type "hard") -}}
|
||||
{{- $_ := (set $affinity.podAntiAffinity "requiredDuringSchedulingIgnoredDuringExecution" (list (mustMergeOverwrite (dict "topologyKey" "" ) (dict "topologyKey" $values.statefulset.podAntiAffinity.topologyKey "labelSelector" (mustMergeOverwrite (dict ) (dict "matchLabels" (get (fromJson (include "redpanda.StatefulSetPodLabelsSelector" (dict "a" (list $dot) ))) "r") )) )))) -}}
|
||||
{{- else -}}{{- if (eq $values.statefulset.podAntiAffinity.type "soft") -}}
|
||||
{{- $_ := (set $affinity.podAntiAffinity "preferredDuringSchedulingIgnoredDuringExecution" (list (mustMergeOverwrite (dict "weight" 0 "podAffinityTerm" (dict "topologyKey" "" ) ) (dict "weight" ($values.statefulset.podAntiAffinity.weight | int) "podAffinityTerm" (mustMergeOverwrite (dict "topologyKey" "" ) (dict "topologyKey" $values.statefulset.podAntiAffinity.topologyKey "labelSelector" (mustMergeOverwrite (dict ) (dict "matchLabels" (get (fromJson (include "redpanda.StatefulSetPodLabelsSelector" (dict "a" (list $dot) ))) "r") )) )) )))) -}}
|
||||
{{- else -}}{{- if (eq $values.statefulset.podAntiAffinity.type "custom") -}}
|
||||
{{- $_ := (set $affinity "podAntiAffinity" $values.statefulset.podAntiAffinity.custom) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- else -}}{{- if (not (empty $values.affinity.podAntiAffinity)) -}}
|
||||
{{- $_ := (set $affinity "podAntiAffinity" $values.affinity.podAntiAffinity) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $affinity) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.volumeClaimTemplateDatadir" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (not $values.storage.persistentVolume.enabled) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $pvc := (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "resources" (dict ) ) "status" (dict ) ) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" "datadir" "labels" (merge (dict ) (dict `app.kubernetes.io/name` (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r") `app.kubernetes.io/instance` $dot.Release.Name `app.kubernetes.io/component` (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r") ) $values.storage.persistentVolume.labels $values.commonLabels) "annotations" (default (coalesce nil) $values.storage.persistentVolume.annotations) )) "spec" (mustMergeOverwrite (dict "resources" (dict ) ) (dict "accessModes" (list "ReadWriteOnce") "resources" (mustMergeOverwrite (dict ) (dict "requests" (dict "storage" $values.storage.persistentVolume.size ) )) )) )) -}}
|
||||
{{- if (not (empty $values.storage.persistentVolume.storageClass)) -}}
|
||||
{{- if (eq $values.storage.persistentVolume.storageClass "-") -}}
|
||||
{{- $_ := (set $pvc.spec "storageClassName" "") -}}
|
||||
{{- else -}}
|
||||
{{- $_ := (set $pvc.spec "storageClassName" $values.storage.persistentVolume.storageClass) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $pvc) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.volumeClaimTemplateTieredStorageDir" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- if (or (not (get (fromJson (include "redpanda.Storage.IsTieredStorageEnabled" (dict "a" (list $values.storage) ))) "r")) (ne (get (fromJson (include "redpanda.Storage.TieredMountType" (dict "a" (list $values.storage) ))) "r") "persistentVolume")) -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (coalesce nil)) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $pvc := (mustMergeOverwrite (dict "metadata" (dict "creationTimestamp" (coalesce nil) ) "spec" (dict "resources" (dict ) ) "status" (dict ) ) (dict "metadata" (mustMergeOverwrite (dict "creationTimestamp" (coalesce nil) ) (dict "name" (default "tiered-storage-dir" $values.storage.persistentVolume.nameOverwrite) "labels" (merge (dict ) (dict `app.kubernetes.io/name` (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r") `app.kubernetes.io/instance` $dot.Release.Name `app.kubernetes.io/component` (get (fromJson (include "redpanda.Name" (dict "a" (list $dot) ))) "r") ) (get (fromJson (include "redpanda.Storage.TieredPersistentVolumeLabels" (dict "a" (list $values.storage) ))) "r") $values.commonLabels) "annotations" (default (coalesce nil) (get (fromJson (include "redpanda.Storage.TieredPersistentVolumeAnnotations" (dict "a" (list $values.storage) ))) "r")) )) "spec" (mustMergeOverwrite (dict "resources" (dict ) ) (dict "accessModes" (list "ReadWriteOnce") "resources" (mustMergeOverwrite (dict ) (dict "requests" (dict "storage" (index (get (fromJson (include "redpanda.Storage.GetTieredStorageConfig" (dict "a" (list $values.storage) ))) "r") `cloud_storage_cache_size`) ) )) )) )) -}}
|
||||
{{- $sc_15 := (get (fromJson (include "redpanda.Storage.TieredPersistentVolumeStorageClass" (dict "a" (list $values.storage) ))) "r") -}}
|
||||
{{- if (eq $sc_15 "-") -}}
|
||||
{{- $_ := (set $pvc.spec "storageClassName" "") -}}
|
||||
{{- else -}}{{- if (not (empty $sc_15)) -}}
|
||||
{{- $_ := (set $pvc.spec "storageClassName" $sc_15) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $pvc) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.statefulSetTopologySpreadConstraints" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $result := (coalesce nil) -}}
|
||||
{{- $labelSelector := (mustMergeOverwrite (dict ) (dict "matchLabels" (get (fromJson (include "redpanda.StatefulSetPodLabelsSelector" (dict "a" (list $dot) ))) "r") )) -}}
|
||||
{{- range $_, $v := $values.statefulset.topologySpreadConstraints -}}
|
||||
{{- $result = (concat (default (list ) $result) (list (mustMergeOverwrite (dict "maxSkew" 0 "topologyKey" "" "whenUnsatisfiable" "" ) (dict "maxSkew" ($v.maxSkew | int) "topologyKey" $v.topologyKey "whenUnsatisfiable" $v.whenUnsatisfiable "labelSelector" $labelSelector )))) -}}
|
||||
{{- end -}}
|
||||
{{- if $_is_returning -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" $result) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "redpanda.StorageTieredConfig" -}}
|
||||
{{- $dot := (index .a 0) -}}
|
||||
{{- range $_ := (list 1) -}}
|
||||
{{- $_is_returning := false -}}
|
||||
{{- $values := $dot.Values.AsMap -}}
|
||||
{{- $_is_returning = true -}}
|
||||
{{- (dict "r" (get (fromJson (include "redpanda.Storage.GetTieredStorageConfig" (dict "a" (list $values.storage) ))) "r")) | toJson -}}
|
||||
{{- break -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,17 @@
|
|||
{{- /*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- include "_shims.render-manifest" (list "redpanda.render" .) -}}
|
|
@ -0,0 +1,52 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- if and .Values.tests.enabled (not (or (include "tls-enabled" . | fromJson).bool (include "sasl-enabled" . | fromJson).bool)) -}}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "redpanda.fullname" . }}-test-api-status"
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
|
||||
command:
|
||||
- /usr/bin/timeout
|
||||
- "120"
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
until rpk cluster info \
|
||||
--brokers {{ include "redpanda.fullname" . }}-0.{{ include "redpanda.internal.domain" . }}:{{ .Values.listeners.kafka.port }}
|
||||
do sleep 2
|
||||
done
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
{{- end }}
|
|
@ -0,0 +1,86 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{/*
|
||||
This feature is gated by having a license, and it must have sasl enabled, we assume these conditions are met
|
||||
as part of setting auditLogging being enabled.
|
||||
*/}}
|
||||
{{- if and .Values.tests.enabled .Values.auditLogging.enabled (include "redpanda-atleast-23-3-0" . | fromJson).bool }}
|
||||
{{- $sasl := .Values.auth.sasl }}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "redpanda.fullname" . }}-test-audit-logging"
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: { { - toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
|
||||
command:
|
||||
- /usr/bin/timeout
|
||||
- "120"
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
set -xe
|
||||
old_setting=${-//[^x]/}
|
||||
audit_topic_name="_redpanda.audit_log"
|
||||
expected_partitions={{ .Values.auditLogging.partitions }}
|
||||
|
||||
# sasl configurations
|
||||
set +x
|
||||
IFS=":" read -r {{ include "rpk-sasl-environment-variables" . }} < <(grep "" $(find /etc/secrets/users/* -print))
|
||||
{{- if (include "redpanda-atleast-23-2-1" . | fromJson).bool }}
|
||||
RPK_SASL_MECHANISM=${RPK_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- else }}
|
||||
REDPANDA_SASL_MECHANISM=${REDPANDA_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- end }}
|
||||
export {{ include "rpk-sasl-environment-variables" . }}
|
||||
if [[ -n "$old_setting" ]]; then set -x; fi
|
||||
|
||||
# now run the to determine if we have the right results
|
||||
# should describe topic without error
|
||||
rpk topic describe ${audit_topic_name}
|
||||
# should get the expected values
|
||||
result=$(rpk topic list | grep ${audit_topic_name})
|
||||
name=$(echo $result | awk '{print $1}')
|
||||
partitions=$(echo $result | awk '{print $2}')
|
||||
if [ "${name}" != "${audit_topic_name}" ]; then
|
||||
echo "expected topic name does not match"
|
||||
exit 1
|
||||
fi
|
||||
if [ ${partitions} != ${expected_partitions} ]; then
|
||||
echo "expected partition size did not match"
|
||||
exit 1
|
||||
fi
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
resources:
|
||||
{{- toYaml .Values.statefulset.resources | nindent 12 }}
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
{{- end }}
|
|
@ -0,0 +1,166 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- if and .Values.tests.enabled .Values.connectors.enabled .Values.console.enabled }}
|
||||
{{- $sasl := .Values.auth.sasl }}
|
||||
{{- $values := .Values }}
|
||||
{{- $consoleValues := (merge (dict) .Values.console .Subcharts.console.Values) -}}
|
||||
{{- $consoleDot := dict "Values" (dict "AsMap" $consoleValues) "Release" .Release "Chart" .Subcharts.console.Chart -}}
|
||||
{{- $connectorsDot := dict "Values" (merge (dict) .Values.connectors .Subcharts.connectors.Values) "Release" .Release "Chart" .Subcharts.connectors.Chart -}}
|
||||
{{/* brokers */}}
|
||||
{{- $kafkaBrokers := list }}
|
||||
{{- range (include "seed-server-list" . | mustFromJson) }}
|
||||
{{- $kafkaBrokers = append $kafkaBrokers (printf "%s:%s" . ($values.listeners.kafka.port | toString)) }}
|
||||
{{- end }}
|
||||
{{- $brokersString := join "," $kafkaBrokers}}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: {{ include "redpanda.fullname" . | trunc 54 }}-test-connectors-via-console
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
test-name: test-connectors-via-console
|
||||
annotations:
|
||||
test-name: test-connectors-via-console
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
|
||||
env:
|
||||
- name: TLS_ENABLED
|
||||
value: {{ (include "kafka-internal-tls-enabled" . | fromJson).bool | quote }}
|
||||
command:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- |
|
||||
set -xe
|
||||
|
||||
trap connectorsState ERR
|
||||
|
||||
connectorsState () {
|
||||
echo check connectors expand status
|
||||
curl {{ template "curl-options" . }} http://{{ include "connectors.serviceName" $connectorsDot }}:{{ .Values.connectors.connectors.restPort }}/connectors?expand=status
|
||||
echo check connectors expand info
|
||||
curl {{ template "curl-options" . }} http://{{ include "connectors.serviceName" $connectorsDot }}:{{ .Values.connectors.connectors.restPort }}/connectors?expand=info
|
||||
echo check connector configuration
|
||||
curl {{ template "curl-options" . }} http://{{ include "connectors.serviceName" $connectorsDot }}:{{ .Values.connectors.connectors.restPort }}/connectors/$CONNECTOR_NAME
|
||||
echo check connector topics
|
||||
curl {{ template "curl-options" . }} http://{{ include "connectors.serviceName" $connectorsDot }}:{{ .Values.connectors.connectors.restPort }}/connectors/$CONNECTOR_NAME/topics
|
||||
}
|
||||
|
||||
{{- if .Values.auth.sasl.enabled }}
|
||||
set -e
|
||||
set +x
|
||||
|
||||
echo "SASL enabled: reading credentials from $(find /etc/secrets/users/* -print)"
|
||||
IFS=":" read -r {{ include "rpk-sasl-environment-variables" . }} < <(grep "" $(find /etc/secrets/users/* -print))
|
||||
{{- if (include "redpanda-atleast-23-2-1" . | fromJson).bool }}
|
||||
RPK_SASL_MECHANISM=${RPK_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- else }}
|
||||
REDPANDA_SASL_MECHANISM=${REDPANDA_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
RPK_USER="${REDPANDA_SASL_USERNAME}"
|
||||
RPK_PASS="${REDPANDA_SASL_PASSWORD}"
|
||||
RPK_SASL_MECHANISM="${REDPANDA_SASL_MECHANISM}"
|
||||
{{- end }}
|
||||
export {{ include "rpk-sasl-environment-variables" . }}
|
||||
|
||||
JAAS_CONFIG_SOURCE="\"source.cluster.sasl.jaas.config\": \"org.apache.kafka.common.security.scram.ScramLoginModule required username=\\\\"\"${RPK_USER}\\\\"\" password=\\\\"\"${RPK_PASS}\\\\"\";\","
|
||||
JAAS_CONFIG_TARGET="\"target.cluster.sasl.jaas.config\": \"org.apache.kafka.common.security.scram.ScramLoginModule required username=\\\\"\"${RPK_USER}\\\\"\" password=\\\\"\"${RPK_PASS}\\\\"\";\","
|
||||
set -x
|
||||
set +e
|
||||
{{- end }}
|
||||
|
||||
{{- $testTopic := printf "test-topic-%s" (randNumeric 3) }}
|
||||
rpk topic create {{ $testTopic }}
|
||||
rpk topic list
|
||||
echo "Test message!" | rpk topic produce {{ $testTopic }}
|
||||
|
||||
SECURITY_PROTOCOL=PLAINTEXT
|
||||
if [[ -n "$RPK_SASL_MECHANISM" && $TLS_ENABLED == "true" ]]; then
|
||||
SECURITY_PROTOCOL="SASL_SSL"
|
||||
elif [[ -n "$RPK_SASL_MECHANISM" ]]; then
|
||||
SECURITY_PROTOCOL="SASL_PLAINTEXT"
|
||||
elif [[ $TLS_ENABLED == "true" ]]; then
|
||||
SECURITY_PROTOCOL="SSL"
|
||||
fi
|
||||
|
||||
CONNECTOR_NAME=mm2-$RANDOM
|
||||
cat << 'EOF' > /tmp/mm2-conf.json
|
||||
{
|
||||
"connectorName": "CONNECTOR_NAME",
|
||||
"config": {
|
||||
"connector.class": "org.apache.kafka.connect.mirror.MirrorSourceConnector",
|
||||
"topics": "{{ $testTopic }}",
|
||||
"replication.factor": "1",
|
||||
"tasks.max": "1",
|
||||
"source.cluster.bootstrap.servers": {{ $brokersString | quote }},
|
||||
"target.cluster.bootstrap.servers": {{ $brokersString | quote }},
|
||||
"target.cluster.alias": "test-only-redpanda",
|
||||
"source.cluster.alias": "source",
|
||||
"key.converter": "org.apache.kafka.connect.converters.ByteArrayConverter",
|
||||
"value.converter": "org.apache.kafka.connect.converters.ByteArrayConverter",
|
||||
"source->target.enabled": "true",
|
||||
"target->source.enabled": "false",
|
||||
"sync.topic.configs.interval.seconds": "5",
|
||||
"sync.topics.configs.enabled": "true",
|
||||
"source.cluster.ssl.truststore.type": "PEM",
|
||||
"target.cluster.ssl.truststore.type": "PEM",
|
||||
"source.cluster.ssl.truststore.location": "/opt/kafka/connect-certs/ca/ca.crt",
|
||||
"target.cluster.ssl.truststore.location": "/opt/kafka/connect-certs/ca/ca.crt",
|
||||
JAAS_CONFIG_SOURCE
|
||||
JAAS_CONFIG_TARGET
|
||||
"source.cluster.security.protocol": "SECURITY_PROTOCOL",
|
||||
"target.cluster.security.protocol": "SECURITY_PROTOCOL",
|
||||
"source.cluster.sasl.mechanism": "SASL_MECHANISM",
|
||||
"target.cluster.sasl.mechanism": "SASL_MECHANISM"
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
sed -i "s/CONNECTOR_NAME/$CONNECTOR_NAME/g" /tmp/mm2-conf.json
|
||||
sed -i "s/SASL_MECHANISM/$RPK_SASL_MECHANISM/g" /tmp/mm2-conf.json
|
||||
sed -i "s/SECURITY_PROTOCOL/$SECURITY_PROTOCOL/g" /tmp/mm2-conf.json
|
||||
set +x
|
||||
sed -i "s/JAAS_CONFIG_SOURCE/$JAAS_CONFIG_SOURCE/g" /tmp/mm2-conf.json
|
||||
sed -i "s/JAAS_CONFIG_TARGET/$JAAS_CONFIG_TARGET/g" /tmp/mm2-conf.json
|
||||
set -x
|
||||
|
||||
URL=http://{{ get ((include "console.Fullname" (dict "a" (list $consoleDot))) | fromJson) "r" }}:{{ get (fromJson (include "console.ContainerPort" (dict "a" (list $consoleDot) ))) "r" }}/api/kafka-connect/clusters/connectors/connectors
|
||||
{{/* outputting to /dev/null because the output contains the user password */}}
|
||||
echo "Creating mm2 connector"
|
||||
curl {{ template "curl-options" . }} -H 'Content-Type: application/json' "${URL}" -d @/tmp/mm2-conf.json
|
||||
|
||||
rpk topic consume source.{{ $testTopic }} -n 1
|
||||
|
||||
echo "Destroying mm2 connector"
|
||||
curl {{ template "curl-options" . }} -X DELETE "${URL}/${CONNECTOR_NAME}"
|
||||
|
||||
rpk topic list
|
||||
rpk topic delete {{ $testTopic }} source.{{ $testTopic }} mm2-offset-syncs.test-only-redpanda.internal
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
{{- end }}
|
|
@ -0,0 +1,49 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- if and .Values.tests.enabled .Values.console.enabled -}}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "redpanda.fullname" . }}-test-console"
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
|
||||
command:
|
||||
- /usr/bin/timeout
|
||||
- "120"
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
curl {{ template "curl-options" . }} http://{{ include "redpanda.fullname" . }}-console.{{ .Release.Namespace }}.svc:{{ (get (fromJson (include "console.ContainerPort" (dict "a" (list (dict "Values" (dict "AsMap" .Values.console)) )))) "r" ) }}/api/cluster
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
{{- end }}
|
|
@ -0,0 +1,122 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- if and .Values.tests.enabled (include "tls-enabled" . | fromJson).bool ( eq .Values.external.type "NodePort" ) }}
|
||||
{{- $values := .Values }}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: {{ include "redpanda.fullname" . }}-test-internal-externals-cert-secrets
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
|
||||
command:
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
set -x
|
||||
|
||||
retry() {
|
||||
local retries="$1"
|
||||
local command="$2"
|
||||
|
||||
# Run the command, and save the exit code
|
||||
bash -c $command
|
||||
local exit_code=$?
|
||||
|
||||
# If the exit code is non-zero (i.e. command failed), and we have not
|
||||
# reached the maximum number of retries, run the command again
|
||||
if [[ $exit_code -ne 0 && $retries -gt 0 ]]; then
|
||||
retry $(($retries - 1)) "$command"
|
||||
else
|
||||
# Return the exit code from the command
|
||||
return $exit_code
|
||||
fi
|
||||
}
|
||||
|
||||
{{- range $name, $cert := $values.tls.certs }}
|
||||
{{- if $cert.secretRef }}
|
||||
echo testing cert: {{ $name | quote }}
|
||||
|
||||
{{- if eq $cert.secretRef.name "internal-tls-secret" }}
|
||||
echo "---> testing internal tls"
|
||||
retry 5 'openssl s_client -verify_return_error -prexit
|
||||
{{- if $cert.caEnabled }}
|
||||
-CAfile {{ printf "/etc/tls/certs/%s" $name }}/ca.crt
|
||||
{{- end }}
|
||||
-key {{ printf "/etc/tls/certs/%s" $name }}/tls.key
|
||||
-connect {{ include "admin-api-urls" $ }}'
|
||||
{{- end }}
|
||||
|
||||
{{- if eq $cert.secretRef.name "external-tls-secret" }}
|
||||
echo "---> testing external tls"
|
||||
|
||||
{{- if eq $values.listeners.kafka.external.default.tls.cert $name }}
|
||||
echo "-----> testing external tls: kafka api"
|
||||
{{- $port := ( first $values.listeners.kafka.external.default.advertisedPorts ) }}
|
||||
retry 5 'openssl s_client -verify_return_error -prexit
|
||||
{{- if $cert.caEnabled }}
|
||||
-CAfile {{ printf "/etc/tls/certs/%s" $name }}/ca.crt
|
||||
{{- end }}
|
||||
-key {{ printf "/etc/tls/certs/%s" $name }}/tls.key
|
||||
-connect {{ $values.external.domain }}:{{ $port }}'
|
||||
{{- end }}
|
||||
|
||||
{{- if and (eq $values.listeners.schemaRegistry.external.default.tls.cert $name) (include "redpanda-22-2-x-without-sasl" $ | fromJson).bool }}
|
||||
echo "-----> testing external tls: schema registry"
|
||||
{{- $port := ( first $values.listeners.schemaRegistry.external.default.advertisedPorts ) }}
|
||||
retry 5 'openssl s_client -verify_return_error -prexit
|
||||
{{- if $cert.caEnabled }}
|
||||
-CAfile {{ printf "/etc/tls/certs/%s" $name }}/ca.crt
|
||||
{{- end }}
|
||||
-key {{ printf "/etc/tls/certs/%s" $name }}/tls.key
|
||||
-connect {{ $values.external.domain }}:{{ $port }}'
|
||||
{{- end }}
|
||||
|
||||
{{- if and (eq $values.listeners.http.external.default.tls.cert $name) (include "redpanda-22-2-x-without-sasl" $ | fromJson).bool }}
|
||||
echo "-----> testing external tls: http api"
|
||||
{{- $port := ( first $values.listeners.http.external.default.advertisedPorts ) }}
|
||||
retry 5 'openssl s_client -verify_return_error -prexit
|
||||
{{- if $cert.caEnabled }}
|
||||
-CAfile {{ printf "/etc/tls/certs/%s" $name }}/ca.crt
|
||||
{{- end }}
|
||||
-key {{ printf "/etc/tls/certs/%s" $name }}/tls.key
|
||||
-connect {{ $values.external.domain }}:{{ $port }}'
|
||||
{{- end }}
|
||||
|
||||
{{- end }}
|
||||
echo "----"
|
||||
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
{{- end }}
|
|
@ -0,0 +1,62 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- if and .Values.tests.enabled (include "kafka-internal-tls-enabled" . | fromJson).bool (not (include "sasl-enabled" . | fromJson).bool) -}}
|
||||
{{- $service := .Values.listeners.kafka -}}
|
||||
{{- $cert := get .Values.tls.certs $service.tls.cert -}}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: {{ include "redpanda.fullname" . }}-test-kafka-internal-tls-status
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
|
||||
command:
|
||||
- /usr/bin/timeout
|
||||
- "120"
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
until rpk cluster info \
|
||||
--brokers {{ include "redpanda.fullname" .}}-0.{{ include "redpanda.internal.domain" . }}:{{ $service.port }} \
|
||||
--tls-enabled \
|
||||
{{- if $cert.caEnabled }}
|
||||
--tls-truststore /etc/tls/certs/{{ $service.tls.cert }}/ca.crt
|
||||
{{- else }}
|
||||
{{- /* This is a required field so we use the default in the redpanda debian container */}}
|
||||
--tls-truststore /etc/ssl/certs/ca-certificates.crt
|
||||
{{- end }}
|
||||
do sleep 2
|
||||
done
|
||||
resources: {{ toYaml .Values.statefulset.resources | nindent 12 }}
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
{{- end }}
|
|
@ -0,0 +1,100 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- if and .Values.tests.enabled (dig "kafka_nodelete_topics" "[]" $.Values.config.cluster) }}
|
||||
{{- $noDeleteTopics := .Values.config.cluster.kafka_nodelete_topics }}
|
||||
{{- $sasl := .Values.auth.sasl }}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: {{ include "redpanda.fullname" . }}-test-kafka-nodelete
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
|
||||
env:
|
||||
- name: REDPANDA_BROKERS
|
||||
value: "{{ include "redpanda.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain | trimSuffix "." }}:{{ .Values.listeners.kafka.port }}"
|
||||
- name: POD_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.name
|
||||
command:
|
||||
- /usr/bin/timeout
|
||||
- "120"
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
set -e
|
||||
{{- $cloudStorageFlags := "" }}
|
||||
{{- if (include "storage-tiered-config" .|fromJson).cloud_storage_enabled }}
|
||||
{{- $cloudStorageFlags = "-c retention.bytes=80 -c segment.bytes=40 -c redpanda.remote.read=true -c redpanda.remote.write=true"}}
|
||||
{{- end }}
|
||||
{{- if .Values.auth.sasl.enabled }}
|
||||
old_setting=${-//[^x]/}
|
||||
set +x
|
||||
IFS=":" read -r {{ include "rpk-sasl-environment-variables" . }} < <(grep "" $(find /etc/secrets/users/* -print))
|
||||
{{- if (include "redpanda-atleast-23-2-1" . | fromJson).bool }}
|
||||
RPK_SASL_MECHANISM=${RPK_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- else }}
|
||||
REDPANDA_SASL_MECHANISM=${REDPANDA_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- end }}
|
||||
export {{ include "rpk-sasl-environment-variables" . }}
|
||||
if [[ -n "$old_setting" ]]; then set -x; fi
|
||||
{{- end }}
|
||||
|
||||
exists=$(rpk topic list | grep my_sample_topic | awk '{print $1}')
|
||||
if [[ "$exists" != "my_sample_topic" ]]; then
|
||||
until rpk topic create my_sample_topic {{ $cloudStorageFlags }}
|
||||
do sleep 2
|
||||
done
|
||||
fi
|
||||
|
||||
{{- range $i := until 100 }}
|
||||
echo "Pandas are awesome!" | rpk topic produce my_sample_topic
|
||||
{{- end }}
|
||||
sleep 2
|
||||
rpk topic consume my_sample_topic -n 1 | grep "Pandas are awesome!"
|
||||
|
||||
# now check if we can delete the topic (we should not)
|
||||
rpk topic delete my_sample_topic
|
||||
|
||||
{{- if has "my_sample_topic" $noDeleteTopics }}
|
||||
result=$(rpk topic list | grep my_sample_topic | awk '{print $1}')
|
||||
if [[ "$result" != "my_sample_topic" ]]; then
|
||||
echo "topic should not have been deleted"
|
||||
exit 1
|
||||
fi
|
||||
{{- end }}
|
||||
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
resources: {{ toYaml .Values.statefulset.resources | nindent 12 }}
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
{{- end }}
|
|
@ -0,0 +1,83 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- if .Values.tests.enabled }}
|
||||
{{- $sasl := .Values.auth.sasl }}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: {{ include "redpanda.fullname" . }}-test-kafka-produce-consume
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
|
||||
env:
|
||||
- name: REDPANDA_BROKERS
|
||||
value: "{{ include "redpanda.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain | trimSuffix "." }}:{{ .Values.listeners.kafka.port }}"
|
||||
- name: POD_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.name
|
||||
command:
|
||||
- /usr/bin/timeout
|
||||
- "120"
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
set -e
|
||||
{{- $cloudStorageFlags := "" }}
|
||||
{{- if (include "storage-tiered-config" .|fromJson).cloud_storage_enabled }}
|
||||
{{- $cloudStorageFlags = "-c retention.bytes=80 -c segment.bytes=40 -c redpanda.remote.read=true -c redpanda.remote.write=true"}}
|
||||
{{- end }}
|
||||
{{- if .Values.auth.sasl.enabled }}
|
||||
old_setting=${-//[^x]/}
|
||||
set +x
|
||||
IFS=":" read -r {{ include "rpk-sasl-environment-variables" . }} < <(grep "" $(find /etc/secrets/users/* -print))
|
||||
{{- if (include "redpanda-atleast-23-2-1" . | fromJson).bool }}
|
||||
RPK_SASL_MECHANISM=${RPK_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- else }}
|
||||
REDPANDA_SASL_MECHANISM=${REDPANDA_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- end }}
|
||||
export {{ include "rpk-sasl-environment-variables" . }}
|
||||
if [[ -n "$old_setting" ]]; then set -x; fi
|
||||
{{- end }}
|
||||
until rpk topic create produce.consume.test.$POD_NAME {{ $cloudStorageFlags }}
|
||||
do sleep 2
|
||||
done
|
||||
{{- range $i := until 100 }}
|
||||
echo "Pandas are awesome!" | rpk topic produce produce.consume.test.$POD_NAME
|
||||
{{- end }}
|
||||
sleep 2
|
||||
rpk topic consume produce.consume.test.$POD_NAME -n 1 | grep "Pandas are awesome!"
|
||||
rpk topic delete produce.consume.test.$POD_NAME
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
resources: {{ toYaml .Values.statefulset.resources | nindent 12 }}
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
{{- end }}
|
|
@ -0,0 +1,79 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- if and .Values.tests.enabled (include "sasl-enabled" . | fromJson).bool }}
|
||||
{{- $sasl := .Values.auth.sasl }}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "redpanda.fullname" . }}-test-kafka-sasl-status"
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
|
||||
command:
|
||||
- /usr/bin/timeout
|
||||
- "120"
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
set -xe
|
||||
|
||||
{{- if .Values.auth.sasl.enabled }}
|
||||
old_setting=${-//[^x]/}
|
||||
set +x
|
||||
IFS=":" read -r {{ include "rpk-sasl-environment-variables" . }} < <(grep "" $(find /etc/secrets/users/* -print))
|
||||
{{- if (include "redpanda-atleast-23-2-1" . | fromJson).bool }}
|
||||
RPK_SASL_MECHANISM=${RPK_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- else }}
|
||||
REDPANDA_SASL_MECHANISM=${REDPANDA_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- end }}
|
||||
export {{ include "rpk-sasl-environment-variables" . }}
|
||||
if [[ -n "$old_setting" ]]; then set -x; fi
|
||||
{{- end }}
|
||||
|
||||
until rpk acl user delete myuser
|
||||
do sleep 2
|
||||
done
|
||||
sleep 3
|
||||
|
||||
{{ include "rpk-cluster-info" $ }}
|
||||
{{ include "rpk-acl-user-create" $ }}
|
||||
{{ include "rpk-acl-create" $ }}
|
||||
sleep 3
|
||||
{{ include "rpk-topic-create" $ }}
|
||||
{{ include "rpk-topic-describe" $ }}
|
||||
{{ include "rpk-topic-delete" $ }}
|
||||
rpk acl user delete myuser
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
resources:
|
||||
{{- toYaml .Values.statefulset.resources | nindent 12 }}
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
{{- end }}
|
|
@ -0,0 +1,61 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- if and .Values.tests.enabled (include "is-licensed" . | fromJson).bool .Values.console.enabled }}
|
||||
{{- $consolePort := (get (fromJson (include "console.ContainerPort" (dict "a" (list (dict "Values" (dict "AsMap" .Values.console)) )))) "r" ) }}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "redpanda.fullname" . }}-test-license-with-console"
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext:
|
||||
runAsUser: 65535
|
||||
runAsGroup: 65535
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: mintel/docker-alpine-bash-curl-jq:latest
|
||||
command: [ "/bin/bash", "-c" ]
|
||||
args:
|
||||
- |
|
||||
echo "testing that we do NOT have an open source license"
|
||||
set -xe
|
||||
|
||||
max_iteration=10
|
||||
curl -vm3 --fail --retry "120" --retry-max-time "120" http://{{ include "redpanda.fullname" . }}-console.{{ .Release.Namespace }}.svc:{{$consolePort}}/api/cluster/overview | jq .
|
||||
type=$(curl -svm3 --fail --retry "120" --retry-max-time "120" http://{{ include "redpanda.fullname" . }}-console.{{ .Release.Namespace }}.svc:{{$consolePort}}/api/cluster/overview | jq -r .console.license.type)
|
||||
while [[ $max_iteration -gt 0 && ("$type" == "open_source" || "$type" == "") ]]; do
|
||||
max_iteration=$(( max_iteration - 1 ))
|
||||
type=$(curl -svm3 --fail --retry "120" --retry-max-time "120" http://{{ include "redpanda.fullname" . }}-console.{{ .Release.Namespace }}.svc:{{$consolePort}}/api/cluster/overview | jq -r .console.license.type)
|
||||
done
|
||||
if [[ "$type" == "open_source" || "$type" == "" ]]; then
|
||||
curl -svm3 --fail --retry "120" --retry-max-time "120" http://{{ include "redpanda.fullname" . }}-console.{{ .Release.Namespace }}.svc:{{$consolePort}}/api/cluster/overview | jq .
|
||||
exit 1
|
||||
fi
|
||||
set +x
|
||||
echo "license test passed."
|
||||
{{- end }}
|
|
@ -0,0 +1,66 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- if .Values.tests.enabled }}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "redpanda.fullname" . }}-test-lifecycle"
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
helm.sh/hook: test
|
||||
helm.sh/hook-delete-policy: before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
|
||||
env:
|
||||
- name: SERVICE_NAME
|
||||
value: {{ include "redpanda.fullname" . }}-0
|
||||
command:
|
||||
- /bin/timeout
|
||||
- "{{ mul .Values.statefulset.terminationGracePeriodSeconds 2 }}"
|
||||
- bash
|
||||
- -xec
|
||||
- |
|
||||
/bin/timeout -v {{ div .Values.statefulset.terminationGracePeriodSeconds 2 }} bash -x /var/lifecycle/preStop.sh
|
||||
ls -l /tmp/preStop*
|
||||
test -f /tmp/preStopHookStarted
|
||||
test -f /tmp/preStopHookFinished
|
||||
|
||||
/bin/timeout -v {{ div .Values.statefulset.terminationGracePeriodSeconds 2 }} bash -x /var/lifecycle/postStart.sh
|
||||
ls -l /tmp/postStart*
|
||||
test -f /tmp/postStartHookStarted
|
||||
test -f /tmp/postStartHookFinished
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
- name: lifecycle-scripts
|
||||
mountPath: /var/lifecycle
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
- name: lifecycle-scripts
|
||||
secret:
|
||||
secretName: {{ (include "redpanda.fullname" . | trunc 50 ) }}-sts-lifecycle
|
||||
defaultMode: 0o775
|
||||
{{- end }}
|
|
@ -0,0 +1,173 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- if and .Values.tests.enabled .Values.tls.enabled ( eq .Values.external.type "LoadBalancer" ) -}}
|
||||
{{- $values := .Values }}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: {{ include "redpanda.fullname" . }}-test-loadbalancer-tls
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
serviceAccountName: test-loadbalancer-tls-redpanda
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: mintel/docker-alpine-bash-curl-jq:latest
|
||||
command:
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
set -x
|
||||
export APISERVER=https://kubernetes.default.svc
|
||||
export SERVICEACCOUNT=/var/run/secrets/kubernetes.io/serviceaccount
|
||||
export NAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)
|
||||
export TOKEN=$(cat ${SERVICEACCOUNT}/token)
|
||||
export CACERT=${SERVICEACCOUNT}/ca.crt
|
||||
|
||||
ip_list=""
|
||||
|
||||
replicas={{ .Values.statefulset.replicas }}
|
||||
if [ "${replicas}" -lt "1" ]; then
|
||||
echo "replicas cannot be less than 1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
range=$(expr $replicas - 1)
|
||||
ordinal_list=$(seq 0 $range)
|
||||
|
||||
set -e
|
||||
|
||||
for i in $ordinal_list
|
||||
do
|
||||
POD_DESC=$(curl --cacert ${CACERT} --header "Authorization: Bearer ${TOKEN}" \
|
||||
-X GET ${APISERVER}/api/v1/namespaces/{{ .Release.Namespace }}/services/lb-{{ template "redpanda.fullname" . }}-$i)
|
||||
ip=$(echo $POD_DESC | jq -r .status.loadBalancer.ingress[0].ip )
|
||||
ip_list="$ip $ip_list"
|
||||
done
|
||||
|
||||
echo test will be run against $ip_list
|
||||
echo testing LoadBalancer connectivity
|
||||
|
||||
{{- range $name, $cert := $values.tls.certs }}
|
||||
{{- if $cert.secretRef }}
|
||||
{{- if eq $cert.secretRef.name "external-tls-secret" }}
|
||||
echo "---> testing external tls"
|
||||
|
||||
{{- if eq $values.listeners.kafka.external.default.tls.cert $name }}
|
||||
echo "-----> testing external tls: kafka api"
|
||||
{{- $port := ( first $values.listeners.kafka.external.default.advertisedPorts ) }}
|
||||
|
||||
for ip in $ip_list
|
||||
do
|
||||
openssl s_client -verify_return_error -prexit \
|
||||
{{- if $cert.caEnabled -}}
|
||||
-CAfile {{ printf "/etc/tls/certs/%s" $name }}/ca.crt \
|
||||
{{- end -}}
|
||||
-key {{ printf "/etc/tls/certs/%s" $name }}/tls.key -connect $ip:{{ $port }}
|
||||
done
|
||||
{{- end }}
|
||||
|
||||
{{- if (include "redpanda-22-2-x-without-sasl" $ | fromJson).bool }}
|
||||
{{- if eq $values.listeners.schemaRegistry.external.default.tls.cert $name }}
|
||||
echo "-----> testing external tls: schema registry"
|
||||
{{- $port := ( first $values.listeners.schemaRegistry.external.default.advertisedPorts ) }}
|
||||
for ip in $ip_list
|
||||
do
|
||||
openssl s_client -verify_return_error -prexit \
|
||||
{{- if $cert.caEnabled -}}
|
||||
-CAfile {{ printf "/etc/tls/certs/%s" $name }}/ca.crt \
|
||||
{{- end -}}
|
||||
-key {{ printf "/etc/tls/certs/%s" $name }}/tls.key -connect $ip:{{ $port }}
|
||||
done
|
||||
{{- end }}
|
||||
|
||||
{{- if eq $values.listeners.http.external.default.tls.cert $name }}
|
||||
echo "-----> testing external tls: http api"
|
||||
{{- $port := ( first $values.listeners.http.external.default.advertisedPorts ) }}
|
||||
for ip in $ip_list
|
||||
do
|
||||
openssl s_client -verify_return_error -prexit \
|
||||
{{- if $cert.caEnabled -}}
|
||||
-CAfile {{ printf "/etc/tls/certs/%s" $name }}/ca.crt \
|
||||
{{- end -}}
|
||||
-key {{ printf "/etc/tls/certs/%s" $name }}/tls.key -connect $ip:{{ $port }}
|
||||
done
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: test-loadbalancer-tls-redpanda
|
||||
annotations:
|
||||
helm.sh/hook-weight: "-100"
|
||||
helm.sh/hook: test
|
||||
helm.sh/hook-delete-policy: before-hook-creation
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: test-loadbalancer-tls-redpanda
|
||||
annotations:
|
||||
helm.sh/hook-weight: "-100"
|
||||
helm.sh/hook: test
|
||||
helm.sh/hook-delete-policy: before-hook-creation
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: test-loadbalancer-tls-redpanda
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: test-loadbalancer-tls-redpanda
|
||||
namespace: {{ .Release.Namespace }}
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: test-loadbalancer-tls-redpanda
|
||||
annotations:
|
||||
helm.sh/hook-weight: "-100"
|
||||
helm.sh/hook: test
|
||||
helm.sh/hook-delete-policy: before-hook-creation
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- pods
|
||||
- services
|
||||
verbs:
|
||||
- get
|
||||
|
||||
{{- end -}}
|
|
@ -0,0 +1,173 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- if and .Values.tests.enabled .Values.tls.enabled ( eq .Values.external.type "NodePort" ) -}}
|
||||
{{- $values := .Values }}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: {{ include "redpanda.fullname" . }}-test-nodeport-tls
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
helm.sh/hook: test
|
||||
helm.sh/hook-delete-policy: before-hook-creation
|
||||
spec:
|
||||
serviceAccountName: test-nodeport-tls-redpanda-no-a-test
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: mintel/docker-alpine-bash-curl-jq:latest
|
||||
command:
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
set -x
|
||||
export APISERVER=https://kubernetes.default.svc
|
||||
export SERVICEACCOUNT=/var/run/secrets/kubernetes.io/serviceaccount
|
||||
export NAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)
|
||||
export TOKEN=$(cat ${SERVICEACCOUNT}/token)
|
||||
export CACERT=${SERVICEACCOUNT}/ca.crt
|
||||
|
||||
ip_list=""
|
||||
|
||||
replicas={{ .Values.statefulset.replicas }}
|
||||
if [ "${replicas}" -lt "1" ]; then
|
||||
echo "replicas cannot be less than 1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
range=$(expr $replicas - 1)
|
||||
ordinal_list=$(seq 0 $range)
|
||||
|
||||
set -e
|
||||
|
||||
for i in $ordinal_list
|
||||
do
|
||||
POD_DESC=$(curl --cacert ${CACERT} --header "Authorization: Bearer ${TOKEN}" \
|
||||
-X GET ${APISERVER}/api/v1/namespaces/{{ .Release.Namespace }}/pods/{{ template "redpanda.fullname" . }}-$i)
|
||||
ip=$(echo $POD_DESC | jq -r .status.hostIP )
|
||||
ip_list="$ip $ip_list"
|
||||
done
|
||||
|
||||
echo test will be run against $ip_list
|
||||
echo testing NodePort connectivity
|
||||
{{- range $name, $cert := $values.tls.certs }}
|
||||
{{- if $cert.secretRef }}
|
||||
{{- if eq $cert.secretRef.name "external-tls-secret" }}
|
||||
echo "---> testing external tls"
|
||||
|
||||
{{- if eq $values.listeners.kafka.external.default.tls.cert $name }}
|
||||
echo "-----> testing external tls: kafka api"
|
||||
{{- $port := ( first $values.listeners.kafka.external.default.advertisedPorts ) }}
|
||||
for ip in $ip_list
|
||||
do
|
||||
openssl s_client -verify_return_error -prexit \
|
||||
{{- if $cert.caEnabled }}
|
||||
-CAfile {{ printf "/etc/tls/certs/%s" $name }}/ca.crt \
|
||||
{{- end }}
|
||||
-key {{ printf "/etc/tls/certs/%s" $name }}/tls.key \
|
||||
-connect ${ip}:{{ $port }}
|
||||
done
|
||||
{{- end }}
|
||||
|
||||
{{- if (include "redpanda-22-2-x-without-sasl" $ | fromJson).bool }}
|
||||
{{- if eq $values.listeners.schemaRegistry.external.default.tls.cert $name }}
|
||||
echo "-----> testing external tls: schema registry"
|
||||
{{- $port := ( first $values.listeners.schemaRegistry.external.default.advertisedPorts ) }}
|
||||
for ip in $ip_list
|
||||
do
|
||||
openssl s_client -verify_return_error -prexit \
|
||||
{{- if $cert.caEnabled }}
|
||||
-CAfile {{ printf "/etc/tls/certs/%s" $name }}/ca.crt \
|
||||
{{- end }}
|
||||
-key {{ printf "/etc/tls/certs/%s" $name }}/tls.key \
|
||||
-connect ${ip}:{{ $port }}
|
||||
done
|
||||
{{- end }}
|
||||
|
||||
{{- if eq $values.listeners.http.external.default.tls.cert $name }}
|
||||
echo "-----> testing external tls: http api"
|
||||
{{- $port := ( first $values.listeners.http.external.default.advertisedPorts ) }}
|
||||
for ip in $ip_list
|
||||
do
|
||||
openssl s_client -verify_return_error -prexit \
|
||||
{{- if $cert.caEnabled }}
|
||||
-CAfile {{ printf "/etc/tls/certs/%s" $name }}/ca.crt \
|
||||
{{- end }}
|
||||
-key {{ printf "/etc/tls/certs/%s" $name }}/tls.key \
|
||||
-connect ${ip}:{{ $port }}
|
||||
done
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: test-nodeport-tls-redpanda-no-a-test
|
||||
annotations:
|
||||
helm.sh/hook: test
|
||||
helm.sh/hook-delete-policy: before-hook-creation
|
||||
helm.sh/hook-weight: "-100"
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: test-nodeport-tls-redpanda-no-a-test
|
||||
annotations:
|
||||
helm.sh/hook: test
|
||||
helm.sh/hook-delete-policy: before-hook-creation
|
||||
helm.sh/hook-weight: "-100"
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: test-nodeport-tls-redpanda-no-a-test
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: test-nodeport-tls-redpanda-no-a-test
|
||||
namespace: {{ .Release.Namespace }}
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: test-nodeport-tls-redpanda-no-a-test
|
||||
annotations:
|
||||
helm.sh/hook: test
|
||||
helm.sh/hook-delete-policy: before-hook-creation
|
||||
helm.sh/hook-weight: "-100"
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- pods
|
||||
- services
|
||||
verbs:
|
||||
- get
|
||||
{{- end -}}
|
|
@ -0,0 +1,81 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- if and .Values.tests.enabled (include "http-internal-tls-enabled" . | fromJson).bool .Values.listeners.http.enabled (include "redpanda-22-2-x-without-sasl" . | fromJson).bool -}}
|
||||
{{- $service := .Values.listeners.http -}}
|
||||
{{- $cert := get .Values.tls.certs $service.tls.cert -}}
|
||||
{{- $sasl := .Values.auth.sasl }}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: {{ include "redpanda.fullname" . }}-test-pandaproxy-internal-tls-status
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
|
||||
command: [ "/bin/bash", "-c" ]
|
||||
args:
|
||||
- |
|
||||
{{- if .Values.auth.sasl.enabled }}
|
||||
old_setting=${-//[^x]/}
|
||||
set +x
|
||||
IFS=":" read -r {{ include "rpk-sasl-environment-variables" . }} < <(grep "" $(find /etc/secrets/users/* -print))
|
||||
{{- if (include "redpanda-atleast-23-2-1" . | fromJson).bool }}
|
||||
RPK_SASL_MECHANISM=${RPK_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- else }}
|
||||
REDPANDA_SASL_MECHANISM=${REDPANDA_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- end }}
|
||||
export {{ include "rpk-sasl-environment-variables" . }}
|
||||
RPK_USER="${RPK_USER:-${REDPANDA_SASL_USERNAME}}"
|
||||
RPK_PASS="${RPK_PASS:-${REDPANDA_SASL_PASSWORD}}"
|
||||
if [[ -n "$old_setting" ]]; then set -x; fi
|
||||
{{- end }}
|
||||
|
||||
curl -svm3 --fail --retry "120" --retry-max-time "120" --retry-all-errors --ssl-reqd \
|
||||
{{- if or (include "sasl-enabled" .|fromJson).bool .Values.listeners.http.authenticationMethod }}
|
||||
-u ${RPK_USER}:${RPK_PASS} \
|
||||
{{- end }}
|
||||
{{- if $cert.caEnabled }}
|
||||
--cacert /etc/tls/certs/{{ $service.tls.cert }}/ca.crt \
|
||||
{{- end }}
|
||||
https://{{ include "redpanda.internal.domain" . }}:{{ .Values.listeners.http.port }}/brokers
|
||||
|
||||
curl -svm3 --fail --retry "120" --retry-max-time "120" --retry-all-errors --ssl-reqd \
|
||||
{{- if or (include "sasl-enabled" .|fromJson).bool .Values.listeners.http.authenticationMethod }}
|
||||
-u ${RPK_USER}:${RPK_PASS} \
|
||||
{{- end }}
|
||||
{{- if $cert.caEnabled }}
|
||||
--cacert /etc/tls/certs/{{ $service.tls.cert }}/ca.crt \
|
||||
{{- end }}
|
||||
https://{{ include "redpanda.internal.domain" . }}:{{ .Values.listeners.http.port }}/topics
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
resources: {{ toYaml .Values.statefulset.resources | nindent 12 }}
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
{{- end -}}
|
|
@ -0,0 +1,72 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- if and .Values.tests.enabled (not (include "http-internal-tls-enabled" . | fromJson).bool) .Values.listeners.http.enabled (include "redpanda-22-2-x-without-sasl" . | fromJson).bool -}}
|
||||
{{- $sasl := .Values.auth.sasl }}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "redpanda.fullname" . }}-test-pandaproxy-status"
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
|
||||
command: [ "/bin/bash", "-c" ]
|
||||
args:
|
||||
- |
|
||||
{{- if .Values.auth.sasl.enabled }}
|
||||
old_setting=${-//[^x]/}
|
||||
set +x
|
||||
IFS=: read -r {{ include "rpk-sasl-environment-variables" . }} < <(grep "" $(find /etc/secrets/users/* -print))
|
||||
{{- if (include "redpanda-atleast-23-2-1" . | fromJson).bool }}
|
||||
RPK_SASL_MECHANISM=${RPK_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- else }}
|
||||
REDPANDA_SASL_MECHANISM=${REDPANDA_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- end }}
|
||||
export {{ include "rpk-sasl-environment-variables" . }}
|
||||
RPK_USER="${RPK_USER:-${REDPANDA_SASL_USERNAME}}"
|
||||
RPK_PASS="${RPK_PASS:-${REDPANDA_SASL_PASSWORD}}"
|
||||
if [[ -n "$old_setting" ]]; then set -x; fi
|
||||
{{- end }}
|
||||
|
||||
curl {{ template "curl-options" . }} \
|
||||
{{- if or (include "sasl-enabled" .|fromJson).bool .Values.listeners.http.authenticationMethod }}
|
||||
-u ${RPK_USER}:${RPK_PASS} \
|
||||
{{- end }}
|
||||
http://{{ include "redpanda.servicename" . }}:{{ .Values.listeners.http.port }}/brokers
|
||||
|
||||
curl {{ template "curl-options" . }} \
|
||||
{{- if or (include "sasl-enabled" .|fromJson).bool .Values.listeners.http.authenticationMethod }}
|
||||
-u ${RPK_USER}:${RPK_PASS} \
|
||||
{{- end }}
|
||||
http://{{ include "redpanda.servicename" . }}:{{ .Values.listeners.http.port }}/topics
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
{{- end }}
|
|
@ -0,0 +1,84 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
|
||||
{{- if and .Values.tests.enabled .Values.monitoring.enabled }}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "redpanda.fullname" . }}-test-prometheus-targets"
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: registry.gitlab.com/gitlab-ci-utils/curl-jq:latest
|
||||
command: [ "/bin/bash", "-c" ]
|
||||
args:
|
||||
- |
|
||||
set -xe
|
||||
|
||||
HEALTHY=$( curl {{ template "curl-options" . }} http://prometheus-operated.prometheus.svc.cluster.local:9090/-/healthy)
|
||||
if [ $HEALTHY != 200 ]; then
|
||||
echo "prometheus is not healthy, exiting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "prometheus is healthy, checking if ready..."
|
||||
|
||||
READY=$( curl {{ template "curl-options" . }} http://prometheus-operated.prometheus.svc.cluster.local:9090/-/ready)
|
||||
if [ $READY != 200 ]; then
|
||||
echo "prometheus is not ready, exiting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "prometheus is ready, requesting target information..."
|
||||
|
||||
|
||||
curl_prometheus() {
|
||||
|
||||
# Run the command, and save the exit code
|
||||
# from: https://prometheus.io/docs/prometheus/latest/querying/api/
|
||||
local RESULT=$( curl {{ template "curl-options" . }} http://prometheus-operated.prometheus.svc.cluster.local:9090/api/v1/targets?scrapePool=serviceMonitor/{{ .Release.Namespace }}/{{ include "redpanda.fullname" . }}/0 | jq '.data.activeTargets[].health | select(. == "up")' | wc -l )
|
||||
|
||||
echo $RESULT
|
||||
}
|
||||
for d in $(seq 1 30); do
|
||||
RESULT=$(curl_prometheus)
|
||||
if [ $RESULT == {{ .Values.statefulset.replicas }} ]; then
|
||||
break
|
||||
fi
|
||||
sleep 15
|
||||
done
|
||||
|
||||
set +x
|
||||
if [ $RESULT != {{ .Values.statefulset.replicas }} ]; then
|
||||
curl --fail http://prometheus-operated.prometheus.svc.cluster.local:9090/api/v1/targets?scrapePool=serviceMonitor/{{ .Release.Namespace }}/{{ include "redpanda.fullname" . }}/0 | jq .
|
||||
echo "the number of targets unexpected; got ${RESULT} targets 'up', but was expecting {{ .Values.statefulset.replicas }}"
|
||||
exit 1
|
||||
fi
|
||||
{{- end }}
|
|
@ -0,0 +1,61 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
{{- if .Values.tests.enabled }}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: {{ include "redpanda.fullname" . }}-test-rack-awareness
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
{{- with include "full.labels" . }}
|
||||
labels: {{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
|
||||
command:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- |
|
||||
set -e
|
||||
{{- if and .Values.rackAwareness.enabled (include "redpanda-atleast-22-3-0" . | fromJson).bool }}
|
||||
curl {{ template "curl-options" . }} \
|
||||
{{- if (include "tls-enabled" . | fromJson).bool }}
|
||||
{{- if (dig "default" "caEnabled" false .Values.tls.certs) }}
|
||||
--cacert "/etc/tls/certs/default/ca.crt" \
|
||||
{{- end }}
|
||||
https://{{ include "redpanda.internal.domain" . }}:{{ .Values.listeners.admin.port }}/v1/node_config | grep '"rack":"rack[1-4]"'
|
||||
{{- else }}
|
||||
http://{{ include "redpanda.internal.domain" . }}:{{ .Values.listeners.admin.port }}/v1/node_config | grep '"rack":"rack[1-4]"'
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
rpk redpanda admin config print --host {{ include "redpanda.internal.domain" . }}:{{ .Values.listeners.admin.port }} | grep '"enable_rack_awareness": {{ .Values.rackAwareness.enabled }}'
|
||||
|
||||
rpk cluster config get enable_rack_awareness
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
{{- end }}
|
|
@ -0,0 +1,104 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
|
||||
{{/*
|
||||
|
||||
This test currently fails because of a bug where when multiple containers exist
|
||||
The api returns an error. We should be requesting logs from each container.
|
||||
|
||||
|
||||
{{- if and .Values.tests.enabled .Values.rbac.enabled (include "redpanda-atleast-23-1-1" .|fromJson).bool -}}
|
||||
{{- $sasl := .Values.auth.sasl }}
|
||||
{{- $useSaslSecret := and $sasl.enabled (not (empty $sasl.secretRef )) }}
|
||||
|
||||
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: {{ include "redpanda.fullname" . }}-test-rpk-debug-bundle
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
affinity:
|
||||
podAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
- labelSelector:
|
||||
matchLabels:
|
||||
statefulset.kubernetes.io/pod-name: {{ include "redpanda.fullname" . }}-0
|
||||
topologyKey: kubernetes.io/hostname
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
initContainers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: {{ .Values.image.repository}}:{{ template "redpanda.tag" . }}
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
- name: shared-data
|
||||
mountPath: /usr/share/redpanda/test
|
||||
- name: datadir
|
||||
mountPath: /var/lib/redpanda/data
|
||||
command:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- |
|
||||
set -e
|
||||
{{- if .Values.auth.sasl.enabled }}
|
||||
old_setting=${-//[^x]/}
|
||||
set +x
|
||||
IFS=: read -r {{ include "rpk-sasl-environment-variables" . }} < <(grep "" $(find /etc/secrets/users/* -print))
|
||||
{{- if (include "redpanda-atleast-23-2-1" . | fromJson).bool }}
|
||||
RPK_SASL_MECHANISM=${RPK_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- else }}
|
||||
REDPANDA_SASL_MECHANISM=${REDPANDA_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- end }}
|
||||
export {{ include "rpk-sasl-environment-variables" . }}
|
||||
if [[ -n "$old_setting" ]]; then set -x; fi
|
||||
{{- end }}
|
||||
rpk debug bundle -o /usr/share/redpanda/test/debug-test.zip -n {{ .Release.Namespace }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}-tester
|
||||
image: busybox:latest
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
- name: shared-data
|
||||
mountPath: /test
|
||||
command:
|
||||
- /bin/ash
|
||||
- -c
|
||||
- |
|
||||
set -e
|
||||
unzip /test/debug-test.zip -d /tmp/bundle
|
||||
|
||||
test -f /tmp/bundle/logs/{{ .Release.Namespace }}-0.txt
|
||||
test -f /tmp/bundle/logs/{{ .Release.Namespace }}-1.txt
|
||||
test -f /tmp/bundle/logs/{{ .Release.Namespace }}-2.txt
|
||||
|
||||
test -d /tmp/bundle/controller
|
||||
|
||||
test -f /tmp/bundle/k8s/pods.json
|
||||
test -f /tmp/bundle/k8s/configmaps.json
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
{{- end -}}
|
||||
*/}}
|
|
@ -0,0 +1,71 @@
|
|||
{{/*
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/}}
|
||||
|
||||
{{- if and .Values.tests.enabled (include "sasl-enabled" . | fromJson).bool (eq .Values.auth.sasl.secretRef "some-users") -}}
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "redpanda.fullname" . }}-test-update-sasl-users"
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
{{- with include "full.labels" . }}
|
||||
{{- . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
spec:
|
||||
restartPolicy: Never
|
||||
securityContext: {{ include "pod-security-context" . | nindent 4 }}
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets: {{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ template "redpanda.name" . }}
|
||||
image: {{ .Values.image.repository }}:{{ template "redpanda.tag" . }}
|
||||
command:
|
||||
- /usr/bin/timeout
|
||||
- "120"
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
set -e
|
||||
IFS=: read -r {{ include "rpk-sasl-environment-variables" . }} < <(grep "" $(find /etc/secrets/users/* -print))
|
||||
{{- if (include "redpanda-atleast-23-2-1" . | fromJson).bool }}
|
||||
RPK_SASL_MECHANISM=${RPK_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- else }}
|
||||
REDPANDA_SASL_MECHANISM=${REDPANDA_SASL_MECHANISM:-{{ .Values.auth.sasl.mechanism | upper }}}
|
||||
{{- end }}
|
||||
export {{ include "rpk-sasl-environment-variables" . }}
|
||||
|
||||
set -x
|
||||
|
||||
# check that the users list did update
|
||||
ready_result_exit_code=1
|
||||
while [[ ${ready_result_exit_code} -ne 0 ]]; do
|
||||
ready_result=$(rpk acl user list | grep anotheranotherme 2>&1) && ready_result_exit_code=$?
|
||||
sleep 2
|
||||
done
|
||||
|
||||
# check that sasl is not broken
|
||||
{{ include "rpk-cluster-info" $ }}
|
||||
volumeMounts: {{ include "default-mounts" . | nindent 8 }}
|
||||
resources:
|
||||
{{- toYaml .Values.statefulset.resources | nindent 12 }}
|
||||
securityContext: {{ include "container-security-context" . | nindent 8 }}
|
||||
volumes: {{ include "default-volumes" . | nindent 4 }}
|
||||
{{- end }}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
44
index.yaml
44
index.yaml
|
@ -37818,6 +37818,48 @@ entries:
|
|||
- assets/quobyte/quobyte-cluster-0.1.8.tgz
|
||||
version: 0.1.8
|
||||
redpanda:
|
||||
- annotations:
|
||||
artifacthub.io/images: |
|
||||
- name: redpanda
|
||||
image: docker.redpanda.com/redpandadata/redpanda:v24.2.7
|
||||
- name: busybox
|
||||
image: busybox:latest
|
||||
artifacthub.io/license: Apache-2.0
|
||||
artifacthub.io/links: |
|
||||
- name: Documentation
|
||||
url: https://docs.redpanda.com
|
||||
- name: "Helm (>= 3.10.0)"
|
||||
url: https://helm.sh/docs/intro/install/
|
||||
catalog.cattle.io/certified: partner
|
||||
catalog.cattle.io/display-name: Redpanda
|
||||
catalog.cattle.io/kube-version: '>=1.21-0'
|
||||
catalog.cattle.io/release-name: redpanda
|
||||
apiVersion: v2
|
||||
appVersion: v24.2.7
|
||||
created: "2024-11-23T00:02:31.850420269Z"
|
||||
dependencies:
|
||||
- condition: console.enabled
|
||||
name: console
|
||||
repository: https://charts.redpanda.com
|
||||
version: '>=0.5 <1.0'
|
||||
- condition: connectors.enabled
|
||||
name: connectors
|
||||
repository: https://charts.redpanda.com
|
||||
version: '>=0.1.2 <1.0'
|
||||
description: Redpanda is the real-time engine for modern apps.
|
||||
digest: e326d75fa671035119736ec31f29ffcfa7c53defde1cbd51261bb83a7c6e8880
|
||||
icon: file://assets/icons/redpanda.svg
|
||||
kubeVersion: '>=1.21-0'
|
||||
maintainers:
|
||||
- name: redpanda-data
|
||||
url: https://github.com/orgs/redpanda-data/people
|
||||
name: redpanda
|
||||
sources:
|
||||
- https://github.com/redpanda-data/helm-charts
|
||||
type: application
|
||||
urls:
|
||||
- assets/redpanda/redpanda-5.9.12.tgz
|
||||
version: 5.9.12
|
||||
- annotations:
|
||||
artifacthub.io/images: |
|
||||
- name: redpanda
|
||||
|
@ -49048,4 +49090,4 @@ entries:
|
|||
urls:
|
||||
- assets/netfoundry/ziti-host-1.5.1.tgz
|
||||
version: 1.5.1
|
||||
generated: "2024-11-22T00:01:48.381925448Z"
|
||||
generated: "2024-11-23T00:02:26.864074855Z"
|
||||
|
|
Loading…
Reference in New Issue