Compare commits
20 Commits
cfaba19c22
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cc28ea1ee2 | ||
|
|
8576917f7a | ||
|
|
4a8d9cd4bb | ||
|
|
785f5d9076 | ||
|
|
368b7384ff | ||
|
|
f823f2bdce | ||
|
|
d92f25a77c | ||
|
|
53564dec28 | ||
|
|
81dffe1a0a | ||
|
|
84e5df6078 | ||
|
|
ed9a031760 | ||
|
|
6fedecece9 | ||
|
|
52b9ba260a | ||
|
|
38e4d749ad | ||
|
|
282c3e52d0 | ||
|
|
01fda50a85 | ||
|
|
d231d15460 | ||
|
|
c270ee405c | ||
|
|
1fd625e22d | ||
|
|
1d670e59ea |
22
backing-services/aws-ebs-csi-driver/.helmignore
Normal file
22
backing-services/aws-ebs-csi-driver/.helmignore
Normal file
@@ -0,0 +1,22 @@
|
||||
# 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
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
382
backing-services/aws-ebs-csi-driver/CHANGELOG.md
Normal file
382
backing-services/aws-ebs-csi-driver/CHANGELOG.md
Normal file
@@ -0,0 +1,382 @@
|
||||
# Helm chart
|
||||
## v2.32.0
|
||||
* Bump driver version to `v1.32.0`
|
||||
* Bump CSI sidecar container versions
|
||||
* Add `patch` permission to `PV` to `external-provisioner` role (required by v5 and later)
|
||||
* Add terminationGracePeriodSeconds as a helm parameter ([#2060](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/2060), [@ElijahQuinones](https://github.com/ElijahQuinones))
|
||||
* Use release namespace in ClusterRoleBinding subject namespace ([#2059](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/2059), [@etutuit](https://github.com/etutuit))
|
||||
* Add parameter to override node DaemonSet namespace ([#2052](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/2052), [@RuStyC0der](https://github.com/RuStyC0der))
|
||||
* Set RuntimeDefault as default seccompProfile in securityContext ([#2061](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/2061), [@torredil](https://github.com/torredil))
|
||||
* Increase default provisioner, resizer, snapshotter `retry-interval-max` ([#2057](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/2057), [@AndrewSirenko](https://github.com/AndrewSirenko))
|
||||
|
||||
## v2.31.0
|
||||
* Bump driver version to `v1.31.0`
|
||||
* Expose dnsConfig in Helm Chart for Custom DNS Configuration ([#2034](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/2045), [@omerap12](https://github.com/omerap12))
|
||||
* Make scrape interval configurable ([#2035](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/2035), [@omerap12](https://github.com/omerap12))
|
||||
* Add defaultStorageClass parameter ([#2039](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/2039), [@torredil](https://github.com/torredil))
|
||||
* Upgrade sidecar containers ([#2041](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/2041), [@torredil](https://github.com/torredil))
|
||||
|
||||
## v2.30.0
|
||||
* Bump driver version to `v1.30.0`
|
||||
* Update voluemessnapshotcontents/status RBAC ([#1991](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1991), [@AndrewSirenko](https://github.com/AndrewSirenko))
|
||||
* Upgrade dependencies ([#2016](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/2016), [@torredil](https://github.com/torredil))
|
||||
|
||||
## v2.29.1
|
||||
* Bump driver version to `v1.29.1`
|
||||
* Remove `--reuse-values` deprecation warning
|
||||
|
||||
## v2.29.0
|
||||
### Urgent Upgrade Notes
|
||||
*(No, really, you MUST read this before you upgrade)*
|
||||
|
||||
The EBS CSI Driver Helm chart no longer supports upgrading with `--reuse-values`. This chart will not test for `--reuse-values` compatibility and upgrading with `--reuse-values` will likely fail. Users of `--reuse-values` are strongly encouraged to migrate to `--reset-then-reuse-values`.
|
||||
|
||||
For more information see [the deprecation announcement](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/issues/1864).
|
||||
|
||||
### Other Changes
|
||||
* Bump driver version to `v1.29.0` and sidecars to latest versions
|
||||
* Add helm-tester enabled flag ([#1954](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1954), [@nunodomingues-td](https://github.com/nunodomingues-td))
|
||||
|
||||
## v2.28.1
|
||||
* Add `reservedVolumeAttachments` that overrides heuristic-determined reserved attachments via `--reserved-volume-attachments` CLI option from [PR #1919](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1919) through Helm ([#1939](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1939), [@AndrewSirenko](https://github.com/AndrewSirenko))
|
||||
* Add `additionalArgs` parameter to node daemonSet ([#1939](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1939), [@AndrewSirenko](https://github.com/AndrewSirenko))
|
||||
|
||||
## v2.28.0
|
||||
### Urgent Upgrade Notes
|
||||
*(No, really, you MUST read this before you upgrade)*
|
||||
|
||||
This is the last minor version of the EBS CSI Driver Helm chart to support upgrading with `--reuse-values`. Future versions of the chart (starting with `v2.29.0`) will not test for `--reuse-values` compatibility and upgrading with `--reuse-values` will likely fail. Users of `--reuse-values` are strongly encouraged to migrate to `--reset-then-reuse-values`.
|
||||
|
||||
For more information see [the deprecation announcement](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/issues/1864).
|
||||
|
||||
### Other Changes
|
||||
* Bump driver version to `v1.28.0` and sidecars to latest versions
|
||||
* Add labels to leases role used by EBS CSI controller ([#1914](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1914), [@cHiv0rz](https://github.com/cHiv0rz))
|
||||
* Enforce `linux` and `amd64` node affinity for helm tester pod ([#1922](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1922), [@AndrewSirenko](https://github.com/AndrewSirenko))
|
||||
* Add configuration for `DaemonSet` annotations ([#1923](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1923), [@AndrewSirenko](https://github.com/AndrewSirenko))
|
||||
* Incorporate KubeLinter recommended best practices for chart tester pod ([#1924](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1924), [@torredil](https://github.com/torredil))
|
||||
* Add configuration for chart tester pod image ([#1928](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1928), [@AndrewSirenko](https://github.com/AndrewSirenko))
|
||||
|
||||
## v2.27.0
|
||||
* Bump driver version to `v1.27.0`
|
||||
* Add parameters for tuning revisionHistoryLimit and emptyDir volumes ([#1840](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1840), [@bodgit](https://github.com/bodgit))
|
||||
|
||||
## v2.26.1
|
||||
* Bump driver version to `v1.26.1`
|
||||
* Bump sidecar container versions to fix [restart bug in external attacher, provisioner, resizer, snapshotter, and node-driver-registrar](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/issues/1875) ([#1886](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1886), [@AndrewSirenko](https://github.com/AndrewSirenko))
|
||||
|
||||
## v2.26.0
|
||||
* Bump driver version to `v1.26.0`
|
||||
* Bump sidecar container versions ([#1867](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1867), [@AndrewSirenko](https://github.com/AndrewSirenko))
|
||||
* Add warning about --reuse-values deprecation to NOTES.txt ([#1865](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1865), [@ConnorJC3](https://github.com/ConnorJC3))
|
||||
|
||||
## v2.25.0
|
||||
* Bump driver version to `v1.25.0`
|
||||
* Update default sidecar timeout values ([#1824](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1824), [@torredil](https://github.com/torredil))
|
||||
* Increase default QPS and worker threads of sidecars ([#1834](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1834), [@ConnorJC3](https://github.com/ConnorJC3))
|
||||
* Node-driver-registrar sidecar fixes ([#1815](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1815), [@jukie](https://github.com/jukie))
|
||||
* Suggest eks.amazonaws.com/role-arn in values.yaml if EKS IAM for SA is used ([#1804](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1804), [@tporeba](https://github.com/tporeba))
|
||||
|
||||
## v2.24.1
|
||||
* Bump driver version to `v1.24.1`
|
||||
* Upgrade sidecar images
|
||||
|
||||
## v2.24.0
|
||||
* Bump driver version to `v1.24.0`
|
||||
* Add additionalClusterRoleRules to sidecar chart templates. ([#1757](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1757), [@AndrewSirenko](https://github.com/AndrewSirenko))
|
||||
* Allow passing template value for clusterName ([#1753](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1753), [@monicastanciu](https://github.com/monicastanciu))
|
||||
* Make hostNetwork configurable for daemonset ([#1716](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1716), [@bseenu](https://github.com/bseenu))
|
||||
* Add labels to volumesnapshotclass ([#1754](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1754), [@fad3t](https://github.com/fad3t))
|
||||
* Update default API version for PodDisruptionBudget ([#1751](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1751), [@AndrewSirenko](https://github.com/AndrewSirenko))
|
||||
|
||||
## v2.23.2
|
||||
* Bump driver version to `v1.23.2`
|
||||
* Upgrade sidecar images
|
||||
|
||||
## v2.23.1
|
||||
* Bump driver version to `v1.23.1`
|
||||
|
||||
## v2.23.0
|
||||
* Add `node.enableLinux` parameter ([#1732](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1732), [@monicastanciu](https://github.com/monicastanciu))
|
||||
* Additional Node DaemonSets bug fixes ([#1739](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1739), [@monicastanciu](https://github.com/monicastanciu))
|
||||
* Additional DaemonSets feature ([#1722](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1722), [@ConnorJC3](https://github.com/ConnorJC3))
|
||||
* Add doc of chart value additionalArgs ([#1697](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1697), [@zitudu](https://github.com/zitudu))
|
||||
|
||||
## v2.22.1
|
||||
* Bump driver version to `v1.22.1`
|
||||
|
||||
## v2.22.0
|
||||
* Default PodDisruptionBudget to policy/v1 ([#1707](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1707), [@iNoahNothing](https://github.com/iNoahNothing))
|
||||
|
||||
## v2.21.0
|
||||
* Bump driver version to `v1.21.0`
|
||||
* Enable additional volume mounts on node pods ([#1670](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1670), [@AndrewSirenko](https://github.com/AndrewSirenko))
|
||||
* Enable customization of aws-secret name and keys in Helm Chart ([#1668](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1668), [@AndrewSirenko](https://github.com/AndrewSirenko))
|
||||
* The sidecars have been updated. The new versions are:
|
||||
- csi-snapshotter: `v6.2.2`
|
||||
|
||||
## v2.20.0
|
||||
* Bump driver version to `v1.20.0`
|
||||
* Enable leader election in csi-resizer sidecar ([#1606](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1606), [@rdpsin](https://github.com/rdpsin))
|
||||
* Namespace-scoped leases permissions ([#1614](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1614), [@torredil](https://github.com/torredil))
|
||||
* Add additionalArgs parameter for sidecars ([#1627](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1627), [@ConnorJC3](https://github.com/ConnorJC3))
|
||||
* Avoid generating manifests with empty envFrom fields ([#1630](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1630), [@mvgmb](https://github.com/mvgmb))
|
||||
* Allow to set automountServiceAccountToken in ServiceAccount ([#1619](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1619), [@kahirokunn](https://github.com/kahirokunn))
|
||||
|
||||
## v2.19.0
|
||||
* Bump driver version to `v1.19.0`
|
||||
* The sidecars have been updated. The new versions are:
|
||||
- csi-provisioner: `v3.5.0`
|
||||
- csi-attacher: `v4.3.0`
|
||||
- livenessprobe: `v2.10.0`
|
||||
- csi-resizer: `v1.8.0`
|
||||
- node-driver-registrar: `v2.8.0`
|
||||
* Remove CPU limits ([#1596](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1596), [@torredil](https://github.com/torredil))
|
||||
|
||||
## v2.18.0
|
||||
### Urgent Upgrade Notes
|
||||
*(No, really, you MUST read this before you upgrade)*
|
||||
|
||||
The Helm chart now defaults to using specific releases of the EKS-D sidecars, rather than the `-latest` versions. This is done so the chart will specify an exact container image, as well as for consistency with the EKS Addons version of the driver.
|
||||
|
||||
The new sidecar tags are:
|
||||
* csi-provisioner: `v3.4.1-eks-1-26-7`
|
||||
* csi-attacher: `v4.2.0-eks-1-26-7`
|
||||
* csi-snapshotter: `v6.2.1-eks-1-26-7`
|
||||
* livenessprobe: `v2.9.0-eks-1-26-7`
|
||||
* csi-resizer: `v1.7.0-eks-1-26-7`
|
||||
* node-driver-registrar: `v2.7.0-eks-1-26-7`
|
||||
|
||||
### Improvements
|
||||
* Bump driver version to `v1.18.0`
|
||||
* Increase speed and reliability of `helm test` ([#1533](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1533), [@torredil](https://github.com/torredil))
|
||||
* Support `VolumeSnapshotClass` in helm chart ([#1540](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1540), [@hanyuel](https://github.com/hanyuel))
|
||||
|
||||
## v2.17.2
|
||||
* Bump driver version to `v1.17.0`
|
||||
* Bump `external-resizer` version to `v4.2.0`
|
||||
* All other sidecars have been updated to the latest rebuild (without an associated version change)
|
||||
|
||||
## v2.17.1
|
||||
* Bump driver version to `v1.16.1`
|
||||
|
||||
## v2.17.0
|
||||
* Bump driver version to `v1.16.0`
|
||||
* Add support for JSON logging ([#1467](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1467), [@torredil](https://github.com/torredil))
|
||||
* `--logging-format` flag has been added to set the log format. Valid values are `text` and `json`. The default value is `text`.
|
||||
* `--logtostderr` is deprecated.
|
||||
* Long arguments prefixed with `-` are no longer supported, and must be prefixed with `--`. For example, `--volume-attach-limit` instead of `-volume-attach-limit`.
|
||||
* The sidecars have been updated. The new versions are:
|
||||
- csi-provisioner: `v3.4.0`
|
||||
- csi-attacher: `v4.1.0`
|
||||
- csi-snapshotter: `v6.2.1`
|
||||
- livenessprobe: `v2.9.0`
|
||||
- csi-resizer: `v1.7.0`
|
||||
- node-driver-registrar: `v2.7.0`
|
||||
|
||||
|
||||
## v2.16.0
|
||||
* Bump driver version to `v1.15.0`
|
||||
* Change default sidecars to EKS-D ([#1475](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1475), [@ConnorJC3](https://github.com/ConnorJC3), [@torredil](https://github.com/torredil))
|
||||
* The sidecars have been updated. The new versions are:
|
||||
- csi-provisioner: `v3.3.0`
|
||||
- csi-attacher: `v4.0.0`
|
||||
- csi-snapshotter: `v6.1.0`
|
||||
- livenessprobe: `v2.8.0`
|
||||
- csi-resizer: `v1.6.0`
|
||||
- node-driver-registrar: `v2.6.2`
|
||||
|
||||
## v2.15.1
|
||||
* Bugfix: Prevent deployment of testing resources during normal installation by adding `helm.sh/hook: test` annotation.
|
||||
|
||||
## v2.15.0
|
||||
* Set sensible default resource requests/limits
|
||||
* Add sensible default update strategy
|
||||
* Add podAntiAffinity so controller pods prefer scheduling on separate nodes if possible
|
||||
* Add container registry parameter
|
||||
|
||||
## v2.14.2
|
||||
* Bump driver version to `v1.14.1`
|
||||
|
||||
## v2.14.1
|
||||
* Add `controller.sdkDebugLog` parameter
|
||||
|
||||
## v2.14.0
|
||||
* Bump driver version to `v1.14.0`
|
||||
|
||||
## v2.13.0
|
||||
* Bump app/driver to version `v1.13.0`
|
||||
* Expose volumes and volumeMounts for the ebs-csi-controller deployment ([#1400](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1436), [@cnmcavoy](https://github.com/cnmcavoy))
|
||||
* refactor: Move the default controller tolerations in the helm chart values ([#1427](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1427), [@cnmcavoy](https://github.com/Linutux42))
|
||||
* Add serviceMonitor.labels parameter ([#1419](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1419), [@torredil](https://github.com/torredil))
|
||||
* Add parameter to force enable snapshotter sidecar ([#1418](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1418), [@ConnorJC3](https://github.com/ConnorJC3))
|
||||
|
||||
## v2.12.1
|
||||
* Bump app/driver to version `v1.12.1`
|
||||
|
||||
## v2.12.0
|
||||
* Bump app/driver to version `v1.12.0`
|
||||
* Move default toleration to values.yaml so it can be overriden if desired by users ([#1400](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1400), [@cnmcavoy](https://github.com/cnmcavoy))
|
||||
* Add enableMetrics configuration ([#1380](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1380), [@torredil](https://github.com/torredil))
|
||||
* add initContainer to the controller's template ([#1379](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1379), [@InsomniaCoder](https://github.com/InsomniaCoder))
|
||||
* Add controller nodeAffinity to prefer EC2 over Fargate ([#1360](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1360), [@torredil](https://github.com/torredil))
|
||||
|
||||
## v2.11.1
|
||||
* Add `useOldCSIDriver` parameter to use old `CSIDriver` object.
|
||||
|
||||
## v2.11.0
|
||||
|
||||
**Important Notice:** This version updates the `CSIDriver` object in order to fix [a bug with static volumes and the `fsGroup` parameter](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/issues/1365). This upgrade will fail on existing clusters because the associated field in `CSIDriver` is immutable.
|
||||
|
||||
Users upgrading to this version should pre-delete the existing `CSIDriver` object (example: `kubectl delete csidriver ebs.csi.aws.com`). This will not affect any existing volumes, but will cause the EBS CSI Driver to be unavailable to handle future requests, and should be immediately followed by an upgrade. For users that cannot delete the `CSIDriver` object, v2.11.1 implements a new parameter `useOldCSIDriver` that will use the previous `CSIDriver`.
|
||||
|
||||
* Bump app/driver to version `v1.11.3`
|
||||
* Add support for leader election tuning for `csi-provisioner` and `csi-attacher` ([#1371](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1371), [@moogzy](https://github.com/moogzy))
|
||||
* Change `fsGroupPolicy` to `File` ([#1377](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1377), [@ConnorJC3](https://github.com/ConnorJC3))
|
||||
* Allow all taint for `csi-node` by default ([#1381](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1381), [@gtxu](https://github.com/gtxu))
|
||||
|
||||
## v2.10.1
|
||||
* Bump app/driver to version `v1.11.2`
|
||||
|
||||
## v2.10.0
|
||||
* Implement securityContext for containers
|
||||
* Add securityContext for node pod
|
||||
* Utilize more secure defaults for securityContext
|
||||
|
||||
## v2.9.0
|
||||
* Bump app/driver to version `v1.10.0`
|
||||
* Feature: Reference `configMaps` across multiple resources using `envFrom` ([#1312](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1312), [@jebbens](https://github.com/jebbens))
|
||||
|
||||
## v2.8.1
|
||||
* Bump app/driver to version `v1.9.0`
|
||||
* Update livenessprobe to version `v2.6.0`
|
||||
|
||||
## v2.8.0
|
||||
* Feature: Support custom affinity definition on node daemon set ([#1277](https://github.com/kubernetes-sigs/aws-ebs-csi-driver/pull/1277), [@vauchok](https://github.com/vauchok))
|
||||
|
||||
## v2.7.1
|
||||
* Bump app/driver to version `v1.8.0`
|
||||
|
||||
## v2.7.0
|
||||
* Support optional ec2 endpoint configuration.
|
||||
* Fix node driver registrar socket path.
|
||||
* Fix hardcoded kubelet path.
|
||||
|
||||
## v2.6.11
|
||||
* Bump app/driver to version `v1.7.0`
|
||||
* Set handle-volume-inuse-error to `false`
|
||||
|
||||
## v2.6.10
|
||||
|
||||
* Add quotes around the `extra-tags` argument in order to prevent special characters such as `":"` from breaking the manifest YAML after template rendering.
|
||||
|
||||
## v2.6.9
|
||||
|
||||
* Update csi-snapshotter to version `v6.0.1`
|
||||
* Update external-attacher to version `v3.4.0`
|
||||
* Update external-resizer to version `v1.4.0`
|
||||
* Update external-provisioner to version `v3.1.0`
|
||||
* Update node-driver-registrar to version `v2.5.1`
|
||||
* Update livenessprobe to version `v2.5.0`
|
||||
|
||||
## v2.6.8
|
||||
|
||||
* Bump app/driver to version `v1.6.2`
|
||||
* Bump sidecar version for nodeDriverRegistrar, provisioner to be consistent with EKS CSI Driver Add-on
|
||||
|
||||
## v2.6.7
|
||||
|
||||
* Bump app/driver to version `v1.6.1`
|
||||
|
||||
## v2.6.6
|
||||
|
||||
* Bump app/driver to version `v1.6.0`
|
||||
|
||||
## v2.6.5
|
||||
|
||||
* Bump app/driver to version `v1.5.3`
|
||||
|
||||
## v2.6.4
|
||||
|
||||
* Remove exposure all secrets to external-snapshotter-role
|
||||
|
||||
## v2.6.3
|
||||
|
||||
* Bump app/driver to version `v1.5.1`
|
||||
|
||||
## v2.6.2
|
||||
|
||||
* Update csi-resizer version to v1.1.0
|
||||
|
||||
## v2.6.1
|
||||
|
||||
* Add securityContext support for controller Deployment
|
||||
|
||||
## v2.5.0
|
||||
|
||||
* Bump app/driver version to `v1.5.0`
|
||||
|
||||
## v2.4.1
|
||||
|
||||
* Replace deprecated arg `--extra-volume-tags` by `--extra-tags`
|
||||
|
||||
## v2.4.0
|
||||
|
||||
* Bump app/driver version to `v1.4.0`
|
||||
|
||||
## v2.3.1
|
||||
|
||||
* Bump app/driver version to `v1.3.1`
|
||||
|
||||
## v2.3.0
|
||||
|
||||
* Support overriding controller `--default-fstype` flag via values
|
||||
|
||||
## v2.2.1
|
||||
|
||||
* Bump app/driver version to `v1.3.0`
|
||||
|
||||
## v2.2.0
|
||||
|
||||
* Support setting imagePullPolicy for all containers
|
||||
|
||||
## v2.1.1
|
||||
|
||||
* Bump app/driver version to `v1.2.1`
|
||||
|
||||
## v2.1.0
|
||||
|
||||
* Custom `controller.updateStrategy` to set controller deployment strategy.
|
||||
|
||||
## v2.0.4
|
||||
|
||||
* Use chart app version as default image tag
|
||||
* Add updateStrategy to daemonsets
|
||||
|
||||
## v2.0.3
|
||||
|
||||
* Bump app/driver version to `v1.2.0`
|
||||
|
||||
## v2.0.2
|
||||
|
||||
* Bump app/driver version to `v1.1.3`
|
||||
|
||||
## v2.0.1
|
||||
|
||||
* Only create Windows daemonset if enableWindows is true
|
||||
* Update Windows daemonset to align better to the Linux one
|
||||
|
||||
## v2.0.0
|
||||
|
||||
* Remove support for Helm 2
|
||||
* Remove deprecated values
|
||||
* No longer install snapshot controller or its CRDs
|
||||
* Reorganize additional values
|
||||
|
||||
[Upgrade instructions](/docs/README.md#upgrading-from-version-1x-to-2x-of-the-helm-chart)
|
||||
|
||||
## v1.2.4
|
||||
|
||||
* Bump app/driver version to `v1.1.1`
|
||||
* Install VolumeSnapshotClass, VolumeSnapshotContent, VolumeSnapshot CRDs if enableVolumeSnapshot is true
|
||||
* Only run csi-snapshotter sidecar if enableVolumeSnapshot is true or if CRDs are already installed
|
||||
16
backing-services/aws-ebs-csi-driver/Chart.yaml
Normal file
16
backing-services/aws-ebs-csi-driver/Chart.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
apiVersion: v2
|
||||
appVersion: 1.32.0
|
||||
description: A Helm chart for AWS EBS CSI Driver
|
||||
home: https://github.com/kubernetes-sigs/aws-ebs-csi-driver
|
||||
keywords:
|
||||
- aws
|
||||
- ebs
|
||||
- csi
|
||||
kubeVersion: '>=1.17.0-0'
|
||||
maintainers:
|
||||
- name: Kubernetes Authors
|
||||
url: https://github.com/kubernetes-sigs/aws-ebs-csi-driver/
|
||||
name: aws-ebs-csi-driver
|
||||
sources:
|
||||
- https://github.com/kubernetes-sigs/aws-ebs-csi-driver
|
||||
version: 2.32.0
|
||||
5
backing-services/aws-ebs-csi-driver/templates/NOTES.txt
Normal file
5
backing-services/aws-ebs-csi-driver/templates/NOTES.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
To verify that aws-ebs-csi-driver has started, run:
|
||||
|
||||
kubectl get pod -n {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "aws-ebs-csi-driver.name" . }},app.kubernetes.io/instance={{ .Release.Name }}"
|
||||
|
||||
NOTE: The [CSI Snapshotter](https://github.com/kubernetes-csi/external-snapshotter) controller and CRDs will no longer be installed as part of this chart and moving forward will be a prerequisite of using the snap shotting functionality.
|
||||
85
backing-services/aws-ebs-csi-driver/templates/_helpers.tpl
Normal file
85
backing-services/aws-ebs-csi-driver/templates/_helpers.tpl
Normal file
@@ -0,0 +1,85 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "aws-ebs-csi-driver.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- 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.
|
||||
*/}}
|
||||
{{- define "aws-ebs-csi-driver.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "aws-ebs-csi-driver.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "aws-ebs-csi-driver.labels" -}}
|
||||
{{ include "aws-ebs-csi-driver.selectorLabels" . }}
|
||||
{{- if ne .Release.Name "kustomize" }}
|
||||
helm.sh/chart: {{ include "aws-ebs-csi-driver.chart" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/component: csi-driver
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
{{- if .Values.customLabels }}
|
||||
{{ toYaml .Values.customLabels }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Common selector labels
|
||||
*/}}
|
||||
{{- define "aws-ebs-csi-driver.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "aws-ebs-csi-driver.name" . }}
|
||||
{{- if ne .Release.Name "kustomize" }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Convert the `--extra-tags` command line arg from a map.
|
||||
*/}}
|
||||
{{- define "aws-ebs-csi-driver.extra-volume-tags" -}}
|
||||
{{- $result := dict "pairs" (list) -}}
|
||||
{{- range $key, $value := .Values.controller.extraVolumeTags -}}
|
||||
{{- $noop := printf "%s=%v" $key $value | append $result.pairs | set $result "pairs" -}}
|
||||
{{- end -}}
|
||||
{{- if gt (len $result.pairs) 0 -}}
|
||||
{{- printf "- \"--extra-tags=%s\"" (join "," $result.pairs) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Handle http proxy env vars
|
||||
*/}}
|
||||
{{- define "aws-ebs-csi-driver.http-proxy" -}}
|
||||
- name: HTTP_PROXY
|
||||
value: {{ .Values.proxy.http_proxy | quote }}
|
||||
- name: HTTPS_PROXY
|
||||
value: {{ .Values.proxy.http_proxy | quote }}
|
||||
- name: NO_PROXY
|
||||
value: {{ .Values.proxy.no_proxy | quote }}
|
||||
{{- end -}}
|
||||
263
backing-services/aws-ebs-csi-driver/templates/_node-windows.tpl
Normal file
263
backing-services/aws-ebs-csi-driver/templates/_node-windows.tpl
Normal file
@@ -0,0 +1,263 @@
|
||||
{{- define "node-windows" }}
|
||||
{{- if .Values.node.enableWindows }}
|
||||
---
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ printf "%s-windows" .NodeName }}
|
||||
namespace: {{ .Values.node.namespaceOverride | default .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
spec:
|
||||
{{- if or (kindIs "float64" .Values.node.revisionHistoryLimit) (kindIs "int64" .Values.node.revisionHistoryLimit) }}
|
||||
revisionHistoryLimit: {{ .Values.node.revisionHistoryLimit }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .NodeName }}
|
||||
{{- include "aws-ebs-csi-driver.selectorLabels" . | nindent 6 }}
|
||||
updateStrategy:
|
||||
{{ toYaml .Values.node.updateStrategy | nindent 4 }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ .NodeName }}
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 8 }}
|
||||
{{- if .Values.node.podLabels }}
|
||||
{{- toYaml .Values.node.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: windows
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ .Values.node.serviceAccount.name }}
|
||||
terminationGracePeriodSeconds: {{ .Values.node.terminationGracePeriodSeconds }}
|
||||
priorityClassName: {{ .Values.node.priorityClassName | default "system-node-critical" }}
|
||||
tolerations:
|
||||
{{- if .Values.node.tolerateAllTaints }}
|
||||
- operator: Exists
|
||||
{{- else }}
|
||||
{{- with .Values.node.tolerations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.node.windowsHostProcess }}
|
||||
securityContext:
|
||||
windowsOptions:
|
||||
hostProcess: true
|
||||
runAsUserName: "NT AUTHORITY\\SYSTEM"
|
||||
hostNetwork: true
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: ebs-plugin
|
||||
image: {{ printf "%s%s:%s" (default "" .Values.image.containerRegistry) .Values.image.repository (default (printf "v%s" .Chart.AppVersion) (toString .Values.image.tag)) }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
{{- if .Values.node.windowsHostProcess }}
|
||||
command:
|
||||
- "aws-ebs-csi-driver.exe"
|
||||
{{- end }}
|
||||
args:
|
||||
- node
|
||||
- --endpoint=$(CSI_ENDPOINT)
|
||||
{{- with .Values.node.volumeAttachLimit }}
|
||||
- --volume-attach-limit={{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.loggingFormat }}
|
||||
- --logging-format={{ . }}
|
||||
{{- end }}
|
||||
- --v={{ .Values.node.logLevel }}
|
||||
{{- if .Values.node.otelTracing }}
|
||||
- --enable-otel-tracing=true
|
||||
{{- end}}
|
||||
{{- if .Values.node.windowsHostProcess }}
|
||||
- --windows-host-process=true
|
||||
{{- end }}
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
{{- if .Values.node.windowsHostProcess }}
|
||||
value: unix://C:\\var\\lib\\kubelet\\plugins\\ebs.csi.aws.com\\csi.sock
|
||||
{{- else }}
|
||||
value: unix:/csi/csi.sock
|
||||
{{- end }}
|
||||
- name: CSI_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
{{- if .Values.proxy.http_proxy }}
|
||||
{{- include "aws-ebs-csi-driver.http-proxy" . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.otelTracing }}
|
||||
- name: OTEL_SERVICE_NAME
|
||||
value: {{ .otelServiceName }}
|
||||
- name: OTEL_EXPORTER_OTLP_ENDPOINT
|
||||
value: {{ .otelExporterEndpoint }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.env }}
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: kubelet-dir
|
||||
mountPath: C:\var\lib\kubelet
|
||||
mountPropagation: "None"
|
||||
- name: plugin-dir
|
||||
mountPath: C:\csi
|
||||
{{- if not .Values.node.windowsHostProcess }}
|
||||
- name: csi-proxy-disk-pipe
|
||||
mountPath: \\.\pipe\csi-proxy-disk-v1
|
||||
- name: csi-proxy-volume-pipe
|
||||
mountPath: \\.\pipe\csi-proxy-volume-v1
|
||||
- name: csi-proxy-filesystem-pipe
|
||||
mountPath: \\.\pipe\csi-proxy-filesystem-v1
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: healthz
|
||||
containerPort: 9808
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 10
|
||||
timeoutSeconds: 3
|
||||
periodSeconds: 10
|
||||
failureThreshold: 5
|
||||
{{- with .Values.node.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- if not .Values.node.windowsHostProcess }}
|
||||
securityContext:
|
||||
windowsOptions:
|
||||
runAsUserName: "ContainerAdministrator"
|
||||
{{- end }}
|
||||
lifecycle:
|
||||
preStop:
|
||||
exec:
|
||||
command: ["/bin/aws-ebs-csi-driver", "pre-stop-hook"]
|
||||
- name: node-driver-registrar
|
||||
image: {{ printf "%s%s:%s" (default "" .Values.image.containerRegistry) .Values.sidecars.nodeDriverRegistrar.image.repository .Values.sidecars.nodeDriverRegistrar.image.tag }}
|
||||
imagePullPolicy: {{ default .Values.image.pullPolicy .Values.sidecars.nodeDriverRegistrar.image.pullPolicy }}
|
||||
{{- if .Values.node.windowsHostProcess }}
|
||||
command:
|
||||
- "csi-node-driver-registrar.exe"
|
||||
{{- end }}
|
||||
args:
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
{{- if .Values.node.windowsHostProcess }}
|
||||
- --plugin-registration-path=$(PLUGIN_REG_DIR)
|
||||
{{- end }}
|
||||
- --v={{ .Values.sidecars.nodeDriverRegistrar.logLevel }}
|
||||
env:
|
||||
- name: ADDRESS
|
||||
{{- if .Values.node.windowsHostProcess }}
|
||||
value: unix://C:\\var\\lib\\kubelet\\plugins\\ebs.csi.aws.com\\csi.sock
|
||||
{{- else }}
|
||||
value: unix:/csi/csi.sock
|
||||
{{- end }}
|
||||
- name: DRIVER_REG_SOCK_PATH
|
||||
{{- if .Values.node.windowsHostProcess }}
|
||||
value: C:\\var\\lib\\kubelet\\plugins\\ebs.csi.aws.com\\csi.sock
|
||||
{{- else }}
|
||||
value: C:\var\lib\kubelet\plugins\ebs.csi.aws.com\csi.sock
|
||||
{{- end }}
|
||||
{{- if .Values.node.windowsHostProcess }}
|
||||
- name: PLUGIN_REG_DIR
|
||||
value: C:\\var\\lib\\kubelet\\plugins_registry\\
|
||||
{{- end }}
|
||||
{{- if .Values.proxy.http_proxy }}
|
||||
{{- include "aws-ebs-csi-driver.http-proxy" . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.nodeDriverRegistrar.env }}
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- /csi-node-driver-registrar.exe
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --mode=kubelet-registration-probe
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 15
|
||||
periodSeconds: 90
|
||||
volumeMounts:
|
||||
- name: plugin-dir
|
||||
mountPath: C:\csi
|
||||
- name: registration-dir
|
||||
mountPath: C:\registration
|
||||
- name: probe-dir
|
||||
mountPath: C:\var\lib\kubelet\plugins\ebs.csi.aws.com
|
||||
{{- with default .Values.node.resources .Values.sidecars.nodeDriverRegistrar.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
- name: liveness-probe
|
||||
image: {{ printf "%s%s:%s" (default "" .Values.image.containerRegistry) .Values.sidecars.livenessProbe.image.repository .Values.sidecars.livenessProbe.image.tag }}
|
||||
imagePullPolicy: {{ default .Values.image.pullPolicy .Values.sidecars.livenessProbe.image.pullPolicy }}
|
||||
{{- if .Values.node.windowsHostProcess }}
|
||||
command:
|
||||
- "livenessprobe.exe"
|
||||
{{- end }}
|
||||
args:
|
||||
{{- if .Values.node.windowsHostProcess }}
|
||||
- --csi-address=unix://C:\\var\\lib\\kubelet\\plugins\\ebs.csi.aws.com\\csi.sock
|
||||
{{- else }}
|
||||
- --csi-address=unix:/csi/csi.sock
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: plugin-dir
|
||||
mountPath: C:\csi
|
||||
{{- with default .Values.node.resources .Values.sidecars.livenessProbe.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: kubelet-dir
|
||||
hostPath:
|
||||
path: C:\var\lib\kubelet
|
||||
type: Directory
|
||||
- name: plugin-dir
|
||||
hostPath:
|
||||
path: C:\var\lib\kubelet\plugins\ebs.csi.aws.com
|
||||
type: DirectoryOrCreate
|
||||
- name: registration-dir
|
||||
hostPath:
|
||||
path: C:\var\lib\kubelet\plugins_registry
|
||||
type: Directory
|
||||
{{- if not .Values.node.windowsHostProcess }}
|
||||
- name: csi-proxy-disk-pipe
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-disk-v1
|
||||
type: ""
|
||||
- name: csi-proxy-volume-pipe
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-volume-v1
|
||||
type: ""
|
||||
- name: csi-proxy-filesystem-pipe
|
||||
hostPath:
|
||||
path: \\.\pipe\csi-proxy-filesystem-v1
|
||||
type: ""
|
||||
{{- end }}
|
||||
- name: probe-dir
|
||||
{{- if .Values.node.probeDirVolume }}
|
||||
{{- toYaml .Values.node.probeDirVolume | nindent 10 }}
|
||||
{{- else }}
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
245
backing-services/aws-ebs-csi-driver/templates/_node.tpl
Normal file
245
backing-services/aws-ebs-csi-driver/templates/_node.tpl
Normal file
@@ -0,0 +1,245 @@
|
||||
{{- define "node" }}
|
||||
{{- if or (eq (default true .Values.node.enableLinux) true) }}
|
||||
---
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .NodeName }}
|
||||
namespace: {{ .Values.node.namespaceOverride | default .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
{{- with .Values.node.daemonSetAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if or (kindIs "float64" .Values.node.revisionHistoryLimit) (kindIs "int64" .Values.node.revisionHistoryLimit) }}
|
||||
revisionHistoryLimit: {{ .Values.node.revisionHistoryLimit }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .NodeName }}
|
||||
{{- include "aws-ebs-csi-driver.selectorLabels" . | nindent 6 }}
|
||||
updateStrategy:
|
||||
{{- toYaml .Values.node.updateStrategy | nindent 4 }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ .NodeName }}
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 8 }}
|
||||
{{- if .Values.node.podLabels }}
|
||||
{{- toYaml .Values.node.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ .Values.node.serviceAccount.name }}
|
||||
terminationGracePeriodSeconds: {{ .Values.node.terminationGracePeriodSeconds }}
|
||||
priorityClassName: {{ .Values.node.priorityClassName | default "system-node-critical" }}
|
||||
tolerations:
|
||||
{{- if .Values.node.tolerateAllTaints }}
|
||||
- operator: Exists
|
||||
{{- else }}
|
||||
{{- with .Values.node.tolerations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
- key: "ebs.csi.aws.com/agent-not-ready"
|
||||
operator: "Exists"
|
||||
{{- end }}
|
||||
hostNetwork: {{ .Values.node.hostNetwork }}
|
||||
{{- with .Values.node.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: ebs-plugin
|
||||
image: {{ printf "%s%s:%s" (default "" .Values.image.containerRegistry) .Values.image.repository (default (printf "v%s" .Chart.AppVersion) (toString .Values.image.tag)) }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
args:
|
||||
- node
|
||||
- --endpoint=$(CSI_ENDPOINT)
|
||||
{{- with .Values.node.reservedVolumeAttachments }}
|
||||
- --reserved-volume-attachments={{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.volumeAttachLimit }}
|
||||
- --volume-attach-limit={{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.loggingFormat }}
|
||||
- --logging-format={{ . }}
|
||||
{{- end }}
|
||||
- --v={{ .Values.node.logLevel }}
|
||||
{{- if .Values.node.otelTracing }}
|
||||
- --enable-otel-tracing=true
|
||||
{{- end}}
|
||||
{{- range .Values.node.additionalArgs }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:/csi/csi.sock
|
||||
- name: CSI_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
{{- if .Values.proxy.http_proxy }}
|
||||
{{- include "aws-ebs-csi-driver.http-proxy" . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.otelTracing }}
|
||||
- name: OTEL_SERVICE_NAME
|
||||
value: {{ .otelServiceName }}
|
||||
- name: OTEL_EXPORTER_OTLP_ENDPOINT
|
||||
value: {{ .otelExporterEndpoint }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.env }}
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.envFrom }}
|
||||
envFrom:
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: kubelet-dir
|
||||
mountPath: {{ .Values.node.kubeletPath }}
|
||||
mountPropagation: "Bidirectional"
|
||||
- name: plugin-dir
|
||||
mountPath: /csi
|
||||
- name: device-dir
|
||||
mountPath: /dev
|
||||
{{- with .Values.node.volumeMounts }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: healthz
|
||||
containerPort: 9808
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 10
|
||||
timeoutSeconds: 3
|
||||
periodSeconds: 10
|
||||
failureThreshold: 5
|
||||
{{- with .Values.node.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.containerSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
lifecycle:
|
||||
preStop:
|
||||
exec:
|
||||
command: ["/bin/aws-ebs-csi-driver", "pre-stop-hook"]
|
||||
- name: node-driver-registrar
|
||||
image: {{ printf "%s%s:%s" (default "" .Values.image.containerRegistry) .Values.sidecars.nodeDriverRegistrar.image.repository .Values.sidecars.nodeDriverRegistrar.image.tag }}
|
||||
imagePullPolicy: {{ default .Values.image.pullPolicy .Values.sidecars.nodeDriverRegistrar.image.pullPolicy }}
|
||||
args:
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --v={{ .Values.sidecars.nodeDriverRegistrar.logLevel }}
|
||||
{{- range .Values.sidecars.nodeDriverRegistrar.additionalArgs }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
- name: DRIVER_REG_SOCK_PATH
|
||||
value: {{ printf "%s/plugins/ebs.csi.aws.com/csi.sock" (trimSuffix "/" .Values.node.kubeletPath) }}
|
||||
{{- if .Values.proxy.http_proxy }}
|
||||
{{- include "aws-ebs-csi-driver.http-proxy" . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.nodeDriverRegistrar.env }}
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.envFrom }}
|
||||
envFrom:
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.nodeDriverRegistrar.livenessProbe }}
|
||||
livenessProbe:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: plugin-dir
|
||||
mountPath: /csi
|
||||
- name: registration-dir
|
||||
mountPath: /registration
|
||||
- name: probe-dir
|
||||
mountPath: {{ printf "%s/plugins/ebs.csi.aws.com/" (trimSuffix "/" .Values.node.kubeletPath) }}
|
||||
{{- with default .Values.node.resources .Values.sidecars.nodeDriverRegistrar.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.nodeDriverRegistrar.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
- name: liveness-probe
|
||||
image: {{ printf "%s%s:%s" (default "" .Values.image.containerRegistry) .Values.sidecars.livenessProbe.image.repository .Values.sidecars.livenessProbe.image.tag }}
|
||||
imagePullPolicy: {{ default .Values.image.pullPolicy .Values.sidecars.livenessProbe.image.pullPolicy }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
{{- range .Values.sidecars.livenessProbe.additionalArgs }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.envFrom }}
|
||||
envFrom:
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: plugin-dir
|
||||
mountPath: /csi
|
||||
{{- with default .Values.node.resources .Values.sidecars.livenessProbe.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.livenessProbe.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: kubelet-dir
|
||||
hostPath:
|
||||
path: {{ .Values.node.kubeletPath }}
|
||||
type: Directory
|
||||
- name: plugin-dir
|
||||
hostPath:
|
||||
path: {{ printf "%s/plugins/ebs.csi.aws.com/" (trimSuffix "/" .Values.node.kubeletPath) }}
|
||||
type: DirectoryOrCreate
|
||||
- name: registration-dir
|
||||
hostPath:
|
||||
path: {{ printf "%s/plugins_registry/" (trimSuffix "/" .Values.node.kubeletPath) }}
|
||||
type: Directory
|
||||
- name: device-dir
|
||||
hostPath:
|
||||
path: /dev
|
||||
type: Directory
|
||||
- name: probe-dir
|
||||
{{- if .Values.node.probeDirVolume }}
|
||||
{{- toYaml .Values.node.probeDirVolume | nindent 10 }}
|
||||
{{- else }}
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
{{- with .Values.node.volumes }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,26 @@
|
||||
---
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: ebs-external-attacher-role
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
rules:
|
||||
- apiGroups: [ "" ]
|
||||
resources: [ "persistentvolumes" ]
|
||||
verbs: [ "get", "list", "watch", "update", "patch" ]
|
||||
- apiGroups: [ "" ]
|
||||
resources: [ "nodes" ]
|
||||
verbs: [ "get", "list", "watch" ]
|
||||
- apiGroups: [ "csi.storage.k8s.io" ]
|
||||
resources: [ "csinodeinfos" ]
|
||||
verbs: [ "get", "list", "watch" ]
|
||||
- apiGroups: [ "storage.k8s.io" ]
|
||||
resources: [ "volumeattachments" ]
|
||||
verbs: [ "get", "list", "watch", "update", "patch" ]
|
||||
- apiGroups: [ "storage.k8s.io" ]
|
||||
resources: [ "volumeattachments/status" ]
|
||||
verbs: [ "patch" ]
|
||||
{{- with .Values.sidecars.attacher.additionalClusterRoleRules }}
|
||||
{{- . | toYaml | nindent 2 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: ebs-csi-node-role
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes"]
|
||||
verbs: ["get", "patch"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["volumeattachments"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["csinodes"]
|
||||
verbs: ["get"]
|
||||
@@ -0,0 +1,41 @@
|
||||
---
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: ebs-external-provisioner-role
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
rules:
|
||||
- apiGroups: [ "" ]
|
||||
resources: [ "persistentvolumes" ]
|
||||
verbs: [ "get", "list", "watch", "create", "patch", "delete" ]
|
||||
- apiGroups: [ "" ]
|
||||
resources: [ "persistentvolumeclaims" ]
|
||||
verbs: [ "get", "list", "watch", "update" ]
|
||||
- apiGroups: [ "storage.k8s.io" ]
|
||||
resources: [ "storageclasses" ]
|
||||
verbs: [ "get", "list", "watch" ]
|
||||
- apiGroups: [ "" ]
|
||||
resources: [ "events" ]
|
||||
verbs: [ "list", "watch", "create", "update", "patch" ]
|
||||
- apiGroups: [ "snapshot.storage.k8s.io" ]
|
||||
resources: [ "volumesnapshots" ]
|
||||
verbs: [ "get", "list" ]
|
||||
- apiGroups: [ "snapshot.storage.k8s.io" ]
|
||||
resources: [ "volumesnapshotcontents" ]
|
||||
verbs: [ "get", "list" ]
|
||||
- apiGroups: [ "storage.k8s.io" ]
|
||||
resources: [ "csinodes" ]
|
||||
verbs: [ "get", "list", "watch" ]
|
||||
- apiGroups: [ "" ]
|
||||
resources: [ "nodes" ]
|
||||
verbs: [ "get", "list", "watch" ]
|
||||
- apiGroups: [ "storage.k8s.io" ]
|
||||
resources: [ "volumeattachments" ]
|
||||
verbs: [ "get", "list", "watch" ]
|
||||
- apiGroups: [ "storage.k8s.io" ]
|
||||
resources: [ "volumeattributesclasses" ]
|
||||
verbs: [ "get" ]
|
||||
{{- with .Values.sidecars.provisioner.additionalClusterRoleRules }}
|
||||
{{- . | toYaml | nindent 2 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: ebs-external-resizer-role
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
rules:
|
||||
# The following rule should be uncommented for plugins that require secrets
|
||||
# for provisioning.
|
||||
# - apiGroups: [""]
|
||||
# resources: ["secrets"]
|
||||
# verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [ "" ]
|
||||
resources: [ "persistentvolumes" ]
|
||||
verbs: [ "get", "list", "watch", "update", "patch" ]
|
||||
- apiGroups: [ "" ]
|
||||
resources: [ "persistentvolumeclaims" ]
|
||||
verbs: [ "get", "list", "watch" ]
|
||||
- apiGroups: [ "" ]
|
||||
resources: [ "persistentvolumeclaims/status" ]
|
||||
verbs: [ "update", "patch" ]
|
||||
- apiGroups: [ "storage.k8s.io" ]
|
||||
resources: [ "storageclasses" ]
|
||||
verbs: [ "get", "list", "watch" ]
|
||||
- apiGroups: [ "" ]
|
||||
resources: [ "events" ]
|
||||
verbs: [ "list", "watch", "create", "update", "patch" ]
|
||||
- apiGroups: [ "" ]
|
||||
resources: [ "pods" ]
|
||||
verbs: [ "get", "list", "watch" ]
|
||||
- apiGroups: [ "storage.k8s.io" ]
|
||||
resources: [ "volumeattributesclasses" ]
|
||||
verbs: [ "get", "list", "watch" ]
|
||||
{{- with .Values.sidecars.resizer.additionalClusterRoleRules }}
|
||||
{{- . | toYaml | nindent 2 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,30 @@
|
||||
---
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: ebs-external-snapshotter-role
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
rules:
|
||||
- apiGroups: [ "" ]
|
||||
resources: [ "events" ]
|
||||
verbs: [ "list", "watch", "create", "update", "patch" ]
|
||||
# Secret permission is optional.
|
||||
# Enable it if your driver needs secret.
|
||||
# For example, `csi.storage.k8s.io/snapshotter-secret-name` is set in VolumeSnapshotClass.
|
||||
# See https://kubernetes-csi.github.io/docs/secrets-and-credentials.html for more details.
|
||||
# - apiGroups: [ "" ]
|
||||
# resources: [ "secrets" ]
|
||||
# verbs: [ "get", "list" ]
|
||||
- apiGroups: [ "snapshot.storage.k8s.io" ]
|
||||
resources: [ "volumesnapshotclasses" ]
|
||||
verbs: [ "get", "list", "watch" ]
|
||||
- apiGroups: [ "snapshot.storage.k8s.io" ]
|
||||
resources: [ "volumesnapshotcontents" ]
|
||||
verbs: [ "create", "get", "list", "watch", "update", "delete", "patch" ]
|
||||
- apiGroups: [ "snapshot.storage.k8s.io" ]
|
||||
resources: [ "volumesnapshotcontents/status" ]
|
||||
verbs: [ "update", "patch" ]
|
||||
{{- with .Values.sidecars.snapshotter.additionalClusterRoleRules }}
|
||||
{{- . | toYaml | nindent 2 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: ebs-csi-attacher-binding
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.controller.serviceAccount.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: ebs-external-attacher-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: ebs-csi-node-getter-binding
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.node.serviceAccount.name }}
|
||||
namespace: {{ .Values.node.namespaceOverride | default .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: ebs-csi-node-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: ebs-csi-provisioner-binding
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.controller.serviceAccount.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: ebs-external-provisioner-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: ebs-csi-resizer-binding
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.controller.serviceAccount.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: ebs-external-resizer-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: ebs-csi-snapshotter-binding
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.controller.serviceAccount.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: ebs-external-snapshotter-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
519
backing-services/aws-ebs-csi-driver/templates/controller.yaml
Normal file
519
backing-services/aws-ebs-csi-driver/templates/controller.yaml
Normal file
@@ -0,0 +1,519 @@
|
||||
# Controller Service
|
||||
kind: Deployment
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: ebs-csi-controller
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
{{- with .Values.controller.deploymentAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
replicas: {{ .Values.controller.replicaCount }}
|
||||
{{- if or (kindIs "float64" .Values.controller.revisionHistoryLimit) (kindIs "int64" .Values.controller.revisionHistoryLimit) }}
|
||||
revisionHistoryLimit: {{ .Values.controller.revisionHistoryLimit }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.updateStrategy }}
|
||||
strategy:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: ebs-csi-controller
|
||||
{{- include "aws-ebs-csi-driver.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: ebs-csi-controller
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 8 }}
|
||||
{{- if .Values.controller.podLabels }}
|
||||
{{- toYaml .Values.controller.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.controller.podAnnotations }}
|
||||
annotations:
|
||||
{{- tpl ( .Values.controller.podAnnotations | toYaml ) . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
{{- with .Values.controller.nodeSelector }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ .Values.controller.serviceAccount.name }}
|
||||
priorityClassName: {{ .Values.controller.priorityClassName }}
|
||||
{{- with default .Values.controller.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
tolerations:
|
||||
{{- with .Values.controller.tolerations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.controller.topologySpreadConstraints }}
|
||||
{{- $tscLabelSelector := dict "labelSelector" ( dict "matchLabels" ( dict "app" "ebs-csi-controller" ) ) }}
|
||||
{{- $constraints := list }}
|
||||
{{- range .Values.controller.topologySpreadConstraints }}
|
||||
{{- $constraints = mustAppend $constraints (mergeOverwrite . $tscLabelSelector) }}
|
||||
{{- end }}
|
||||
topologySpreadConstraints:
|
||||
{{- $constraints | toYaml | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.initContainers }}
|
||||
initContainers:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: ebs-plugin
|
||||
image: {{ printf "%s%s:%s" (default "" .Values.image.containerRegistry) .Values.image.repository (default (printf "v%s" .Chart.AppVersion) (.Values.image.tag | toString)) }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
args:
|
||||
{{- if ne .Release.Name "kustomize" }}
|
||||
- controller
|
||||
{{- else }}
|
||||
# - {all,controller,node} # specify the driver mode
|
||||
{{- end }}
|
||||
- --endpoint=$(CSI_ENDPOINT)
|
||||
{{- if .Values.controller.extraVolumeTags }}
|
||||
{{- include "aws-ebs-csi-driver.extra-volume-tags" . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with (tpl (default "" .Values.controller.k8sTagClusterId) . ) }}
|
||||
- --k8s-tag-cluster-id={{ . }}
|
||||
{{- end }}
|
||||
{{- if and (.Values.controller.enableMetrics) (not .Values.controller.httpEndpoint) }}
|
||||
- --http-endpoint=0.0.0.0:3301
|
||||
{{- end}}
|
||||
{{- with .Values.controller.httpEndpoint }}
|
||||
- --http-endpoint={{ . }}
|
||||
{{- end }}
|
||||
{{- if .Values.controller.sdkDebugLog }}
|
||||
- --aws-sdk-debug-log=true
|
||||
{{- end}}
|
||||
{{- if .Values.controller.batching }}
|
||||
- --batching=true
|
||||
{{- end}}
|
||||
{{- with .Values.controller.loggingFormat }}
|
||||
- --logging-format={{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.userAgentExtra }}
|
||||
- --user-agent-extra={{ . }}
|
||||
{{- end }}
|
||||
{{- if .Values.controller.otelTracing }}
|
||||
- --enable-otel-tracing=true
|
||||
{{- end}}
|
||||
- --v={{ .Values.controller.logLevel }}
|
||||
{{- range .Values.controller.additionalArgs }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:///var/lib/csi/sockets/pluginproxy/csi.sock
|
||||
- name: CSI_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
{{- with .Values.awsAccessSecret }}
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .name }}
|
||||
key: {{ .keyId }}
|
||||
optional: true
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .name }}
|
||||
key: {{ .accessKey }}
|
||||
optional: true
|
||||
{{- end }}
|
||||
- name: AWS_EC2_ENDPOINT
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: aws-meta
|
||||
key: endpoint
|
||||
optional: true
|
||||
{{- with .Values.controller.region }}
|
||||
- name: AWS_REGION
|
||||
value: {{ . }}
|
||||
{{- end }}
|
||||
{{- if .Values.proxy.http_proxy }}
|
||||
{{- include "aws-ebs-csi-driver.http-proxy" . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.env }}
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.otelTracing }}
|
||||
- name: OTEL_SERVICE_NAME
|
||||
value: {{ .otelServiceName }}
|
||||
- name: OTEL_EXPORTER_OTLP_ENDPOINT
|
||||
value: {{ .otelExporterEndpoint }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.envFrom }}
|
||||
envFrom:
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /var/lib/csi/sockets/pluginproxy/
|
||||
{{- with .Values.controller.volumeMounts }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: healthz
|
||||
containerPort: 9808
|
||||
protocol: TCP
|
||||
{{- if .Values.controller.enableMetrics }}
|
||||
- name: metrics
|
||||
containerPort: 3301
|
||||
protocol: TCP
|
||||
{{- end}}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 10
|
||||
timeoutSeconds: 3
|
||||
periodSeconds: 10
|
||||
failureThreshold: 5
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 10
|
||||
timeoutSeconds: 3
|
||||
periodSeconds: 10
|
||||
failureThreshold: 5
|
||||
{{- with .Values.controller.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.containerSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
- name: csi-provisioner
|
||||
image: {{ printf "%s%s:%s" (default "" .Values.image.containerRegistry) .Values.sidecars.provisioner.image.repository .Values.sidecars.provisioner.image.tag }}
|
||||
imagePullPolicy: {{ default .Values.image.pullPolicy .Values.sidecars.provisioner.image.pullPolicy }}
|
||||
args:
|
||||
{{- if not (regexMatch "(-timeout)" (join " " .Values.sidecars.provisioner.additionalArgs)) }}
|
||||
- --timeout=60s
|
||||
{{- end }}
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --v={{ .Values.sidecars.provisioner.logLevel }}
|
||||
- --feature-gates=Topology=true
|
||||
{{- if .Values.controller.extraCreateMetadata }}
|
||||
- --extra-create-metadata
|
||||
{{- end}}
|
||||
- --leader-election={{ .Values.sidecars.provisioner.leaderElection.enabled | required "leader election state for csi-provisioner is required, must be set to true || false." }}
|
||||
{{- if .Values.sidecars.provisioner.leaderElection.enabled }}
|
||||
{{- if .Values.sidecars.provisioner.leaderElection.leaseDuration }}
|
||||
- --leader-election-lease-duration={{ .Values.sidecars.provisioner.leaderElection.leaseDuration }}
|
||||
{{- end }}
|
||||
{{- if .Values.sidecars.provisioner.leaderElection.renewDeadline}}
|
||||
- --leader-election-renew-deadline={{ .Values.sidecars.provisioner.leaderElection.renewDeadline }}
|
||||
{{- end }}
|
||||
{{- if .Values.sidecars.provisioner.leaderElection.retryPeriod }}
|
||||
- --leader-election-retry-period={{ .Values.sidecars.provisioner.leaderElection.retryPeriod }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
- --default-fstype={{ .Values.controller.defaultFsType }}
|
||||
{{- if not (regexMatch "(-kube-api-qps)|(-kube-api-burst)|(-worker-threads)" (join " " .Values.sidecars.provisioner.additionalArgs)) }}
|
||||
- --kube-api-qps=20
|
||||
- --kube-api-burst=100
|
||||
- --worker-threads=100
|
||||
{{- end }}
|
||||
{{- if not (regexMatch "(-retry-interval-max)" (join " " .Values.sidecars.provisioner.additionalArgs)) }}
|
||||
- --retry-interval-max=30m
|
||||
{{- end }}
|
||||
{{- range .Values.sidecars.provisioner.additionalArgs }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /var/lib/csi/sockets/pluginproxy/csi.sock
|
||||
{{- if .Values.proxy.http_proxy }}
|
||||
{{- include "aws-ebs-csi-driver.http-proxy" . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.provisioner.env }}
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.envFrom }}
|
||||
envFrom:
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /var/lib/csi/sockets/pluginproxy/
|
||||
{{- with default .Values.controller.resources .Values.sidecars.provisioner.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.provisioner.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
- name: csi-attacher
|
||||
image: {{ printf "%s%s:%s" (default "" .Values.image.containerRegistry) .Values.sidecars.attacher.image.repository .Values.sidecars.attacher.image.tag }}
|
||||
imagePullPolicy: {{ default .Values.image.pullPolicy .Values.sidecars.attacher.image.pullPolicy }}
|
||||
args:
|
||||
{{- if not (regexMatch "(-timeout)" (join " " .Values.sidecars.attacher.additionalArgs)) }}
|
||||
- --timeout=60s
|
||||
{{- end }}
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --v={{ .Values.sidecars.attacher.logLevel }}
|
||||
- --leader-election={{ .Values.sidecars.attacher.leaderElection.enabled | required "leader election state for csi-attacher is required, must be set to true || false." }}
|
||||
{{- if .Values.sidecars.attacher.leaderElection.enabled }}
|
||||
{{- if .Values.sidecars.attacher.leaderElection.leaseDuration }}
|
||||
- --leader-election-lease-duration={{ .Values.sidecars.attacher.leaderElection.leaseDuration }}
|
||||
{{- end }}
|
||||
{{- if .Values.sidecars.attacher.leaderElection.renewDeadline}}
|
||||
- --leader-election-renew-deadline={{ .Values.sidecars.attacher.leaderElection.renewDeadline }}
|
||||
{{- end }}
|
||||
{{- if .Values.sidecars.attacher.leaderElection.retryPeriod }}
|
||||
- --leader-election-retry-period={{ .Values.sidecars.attacher.leaderElection.retryPeriod }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if not (regexMatch "(-kube-api-qps)|(-kube-api-burst)|(-worker-threads)" (join " " .Values.sidecars.attacher.additionalArgs)) }}
|
||||
- --kube-api-qps=20
|
||||
- --kube-api-burst=100
|
||||
- --worker-threads=100
|
||||
{{- end }}
|
||||
{{- if not (regexMatch "(-retry-interval-max)" (join " " .Values.sidecars.attacher.additionalArgs)) }}
|
||||
- --retry-interval-max=5m
|
||||
{{- end }}
|
||||
{{- range .Values.sidecars.attacher.additionalArgs }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /var/lib/csi/sockets/pluginproxy/csi.sock
|
||||
{{- if .Values.proxy.http_proxy }}
|
||||
{{- include "aws-ebs-csi-driver.http-proxy" . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.attacher.env }}
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.envFrom }}
|
||||
envFrom:
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /var/lib/csi/sockets/pluginproxy/
|
||||
{{- with default .Values.controller.resources .Values.sidecars.attacher.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.attacher.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- if or .Values.sidecars.snapshotter.forceEnable (.Capabilities.APIVersions.Has "snapshot.storage.k8s.io/v1beta1") (.Capabilities.APIVersions.Has "snapshot.storage.k8s.io/v1") }}
|
||||
- name: csi-snapshotter
|
||||
image: {{ printf "%s%s:%s" (default "" .Values.image.containerRegistry) .Values.sidecars.snapshotter.image.repository .Values.sidecars.snapshotter.image.tag }}
|
||||
imagePullPolicy: {{ default .Values.image.pullPolicy .Values.sidecars.snapshotter.image.pullPolicy }}
|
||||
args:
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --leader-election=true
|
||||
{{- if .Values.controller.extraCreateMetadata }}
|
||||
- --extra-create-metadata
|
||||
{{- end}}
|
||||
{{- if not (regexMatch "(-kube-api-qps)|(-kube-api-burst)|(-worker-threads)" (join " " .Values.sidecars.snapshotter.additionalArgs)) }}
|
||||
- --kube-api-qps=20
|
||||
- --kube-api-burst=100
|
||||
- --worker-threads=100
|
||||
{{- end }}
|
||||
{{- if not (regexMatch "(-retry-interval-max)" (join " " .Values.sidecars.snapshotter.additionalArgs)) }}
|
||||
- --retry-interval-max=30m
|
||||
{{- end }}
|
||||
{{- range .Values.sidecars.snapshotter.additionalArgs }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /var/lib/csi/sockets/pluginproxy/csi.sock
|
||||
{{- if .Values.proxy.http_proxy }}
|
||||
{{- include "aws-ebs-csi-driver.http-proxy" . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.snapshotter.env }}
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.envFrom }}
|
||||
envFrom:
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /var/lib/csi/sockets/pluginproxy/
|
||||
{{- with default .Values.controller.resources .Values.sidecars.snapshotter.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.snapshotter.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if (.Values.controller.volumeModificationFeature).enabled }}
|
||||
- name: volumemodifier
|
||||
image: {{ printf "%s%s:%s" (default "" .Values.image.containerRegistry) .Values.sidecars.volumemodifier.image.repository .Values.sidecars.volumemodifier.image.tag }}
|
||||
imagePullPolicy: {{ default .Values.image.pullPolicy .Values.sidecars.volumemodifier.image.pullPolicy }}
|
||||
args:
|
||||
{{- if not (regexMatch "(-timeout)" (join " " .Values.sidecars.volumemodifier.additionalArgs)) }}
|
||||
- --timeout=60s
|
||||
{{- end }}
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --v={{ .Values.sidecars.volumemodifier.logLevel }}
|
||||
- --leader-election={{ .Values.sidecars.volumemodifier.leaderElection.enabled | required "leader election state for csi-volumemodifier is required, must be set to true || false." }}
|
||||
{{- if .Values.sidecars.volumemodifier.leaderElection.enabled }}
|
||||
{{- if .Values.sidecars.volumemodifier.leaderElection.leaseDuration }}
|
||||
- --leader-election-lease-duration={{ .Values.sidecars.volumemodifier.leaderElection.leaseDuration }}
|
||||
{{- end }}
|
||||
{{- if .Values.sidecars.volumemodifier.leaderElection.renewDeadline}}
|
||||
- --leader-election-renew-deadline={{ .Values.sidecars.volumemodifier.leaderElection.renewDeadline }}
|
||||
{{- end }}
|
||||
{{- if .Values.sidecars.volumemodifier.leaderElection.retryPeriod }}
|
||||
- --leader-election-retry-period={{ .Values.sidecars.volumemodifier.leaderElection.retryPeriod }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- range .Values.sidecars.volumemodifier.additionalArgs }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /var/lib/csi/sockets/pluginproxy/csi.sock
|
||||
- name: POD_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.name
|
||||
- name: POD_NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.namespace
|
||||
{{- if .Values.proxy.http_proxy }}
|
||||
{{- include "aws-ebs-csi-driver.http-proxy" . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.volumemodifier.env }}
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.envFrom }}
|
||||
envFrom:
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /var/lib/csi/sockets/pluginproxy/
|
||||
{{- with default .Values.controller.resources .Values.sidecars.volumemodifier.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.volumemodifier.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
- name: csi-resizer
|
||||
image: {{ printf "%s%s:%s" (default "" .Values.image.containerRegistry) .Values.sidecars.resizer.image.repository .Values.sidecars.resizer.image.tag }}
|
||||
imagePullPolicy: {{ default .Values.image.pullPolicy .Values.sidecars.resizer.image.pullPolicy }}
|
||||
args:
|
||||
{{- if not (regexMatch "(-timeout)" (join " " .Values.sidecars.resizer.additionalArgs)) }}
|
||||
- --timeout=60s
|
||||
{{- end }}
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --v={{ .Values.sidecars.resizer.logLevel }}
|
||||
- --handle-volume-inuse-error=false
|
||||
{{- with .Values.sidecars.resizer.leaderElection }}
|
||||
- --leader-election={{ .enabled | default true }}
|
||||
{{- if .leaseDuration }}
|
||||
- --leader-election-lease-duration={{ .leaseDuration }}
|
||||
{{- end }}
|
||||
{{- if .renewDeadline }}
|
||||
- --leader-election-renew-deadline={{ .renewDeadline }}
|
||||
{{- end }}
|
||||
{{- if .retryPeriod }}
|
||||
- --leader-election-retry-period={{ .retryPeriod }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if not (regexMatch "(-kube-api-qps)|(-kube-api-burst)|(-workers)" (join " " .Values.sidecars.resizer.additionalArgs)) }}
|
||||
- --kube-api-qps=20
|
||||
- --kube-api-burst=100
|
||||
- --workers=100
|
||||
{{- end }}
|
||||
{{- if not (regexMatch "(-retry-interval-max)" (join " " .Values.sidecars.resizer.additionalArgs)) }}
|
||||
- --retry-interval-max=30m
|
||||
{{- end }}
|
||||
{{- range .Values.sidecars.resizer.additionalArgs }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /var/lib/csi/sockets/pluginproxy/csi.sock
|
||||
{{- if .Values.proxy.http_proxy }}
|
||||
{{- include "aws-ebs-csi-driver.http-proxy" . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.resizer.env }}
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.envFrom }}
|
||||
envFrom:
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /var/lib/csi/sockets/pluginproxy/
|
||||
{{- with default .Values.controller.resources .Values.sidecars.resizer.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.resizer.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
- name: liveness-probe
|
||||
image: {{ printf "%s%s:%s" (default "" .Values.image.containerRegistry) .Values.sidecars.livenessProbe.image.repository .Values.sidecars.livenessProbe.image.tag }}
|
||||
imagePullPolicy: {{ default .Values.image.pullPolicy .Values.sidecars.livenessProbe.image.pullPolicy }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
{{- range .Values.sidecars.livenessProbe.additionalArgs }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.envFrom }}
|
||||
envFrom:
|
||||
{{- . | toYaml | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
{{- with default .Values.controller.resources .Values.sidecars.livenessProbe.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.livenessProbe.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: socket-dir
|
||||
{{- if .Values.controller.socketDirVolume }}
|
||||
{{- toYaml .Values.controller.socketDirVolume | nindent 10 }}
|
||||
{{- else }}
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.volumes }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.controller.dnsConfig }}
|
||||
dnsConfig:
|
||||
{{- toYaml .Values.controller.dnsConfig | nindent 4 }}
|
||||
{{- end }}
|
||||
12
backing-services/aws-ebs-csi-driver/templates/csidriver.yaml
Normal file
12
backing-services/aws-ebs-csi-driver/templates/csidriver.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
apiVersion: {{ ternary "storage.k8s.io/v1" "storage.k8s.io/v1beta1" (semverCompare ">=1.18.0-0" .Capabilities.KubeVersion.Version) }}
|
||||
kind: CSIDriver
|
||||
metadata:
|
||||
name: ebs.csi.aws.com
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
spec:
|
||||
attachRequired: true
|
||||
podInfoOnMount: false
|
||||
{{- if not .Values.useOldCSIDriver }}
|
||||
fsGroupPolicy: File
|
||||
{{- end }}
|
||||
@@ -0,0 +1,11 @@
|
||||
{{- if .Values.defaultStorageClass.enabled }}
|
||||
apiVersion: storage.k8s.io/v1
|
||||
kind: StorageClass
|
||||
metadata:
|
||||
name: ebs-csi-default-sc
|
||||
annotations:
|
||||
storageclass.kubernetes.io/is-default-class: "true"
|
||||
provisioner: ebs.csi.aws.com
|
||||
volumeBindingMode: WaitForFirstConsumer
|
||||
allowVolumeExpansion: true
|
||||
{{- end }}
|
||||
42
backing-services/aws-ebs-csi-driver/templates/metrics.yaml
Normal file
42
backing-services/aws-ebs-csi-driver/templates/metrics.yaml
Normal file
@@ -0,0 +1,42 @@
|
||||
{{- if .Values.controller.enableMetrics -}}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: ebs-csi-controller
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
app: ebs-csi-controller
|
||||
spec:
|
||||
selector:
|
||||
app: ebs-csi-controller
|
||||
ports:
|
||||
- name: metrics
|
||||
port: 3301
|
||||
targetPort: 3301
|
||||
type: ClusterIP
|
||||
---
|
||||
{{- if or .Values.controller.serviceMonitor.forceEnable (.Capabilities.APIVersions.Has "monitoring.coreos.com/v1") }}
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: ServiceMonitor
|
||||
metadata:
|
||||
name: ebs-csi-controller
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
app: ebs-csi-controller
|
||||
{{- if .Values.controller.serviceMonitor.labels }}
|
||||
{{- toYaml .Values.controller.serviceMonitor.labels | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: ebs-csi-controller
|
||||
namespaceSelector:
|
||||
matchNames:
|
||||
- {{ .Release.Namespace }}
|
||||
endpoints:
|
||||
- targetPort: 3301
|
||||
path: /metrics
|
||||
interval: {{ .Values.controller.serviceMonitor.interval | default "15s"}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,13 @@
|
||||
{{$defaultArgs := dict
|
||||
"NodeName" "ebs-csi-node"
|
||||
}}
|
||||
{{- include "node-windows" (deepCopy $ | mustMerge $defaultArgs) -}}
|
||||
{{- range $name, $values := .Values.additionalDaemonSets }}
|
||||
{{$args := dict
|
||||
"NodeName" (printf "ebs-csi-node-%s" $name)
|
||||
"Values" (dict
|
||||
"node" (deepCopy $.Values.node | mustMerge $values)
|
||||
)
|
||||
}}
|
||||
{{- include "node-windows" (deepCopy $ | mustMerge $args) -}}
|
||||
{{- end }}
|
||||
46
backing-services/aws-ebs-csi-driver/templates/node.yaml
Normal file
46
backing-services/aws-ebs-csi-driver/templates/node.yaml
Normal file
@@ -0,0 +1,46 @@
|
||||
{{$defaultArgs := dict
|
||||
"NodeName" "ebs-csi-node"
|
||||
}}
|
||||
{{- include "node" (deepCopy $ | mustMerge $defaultArgs) -}}
|
||||
{{- range $name, $values := .Values.additionalDaemonSets }}
|
||||
{{$args := dict
|
||||
"NodeName" (printf "ebs-csi-node-%s" $name)
|
||||
"Values" (dict
|
||||
"node" (deepCopy $.Values.node | mustMerge $values)
|
||||
)
|
||||
}}
|
||||
{{- include "node" (deepCopy $ | mustMerge $args) -}}
|
||||
{{- end }}
|
||||
{{- if .Values.a1CompatibilityDaemonSet }}
|
||||
{{$args := dict
|
||||
"NodeName" "ebs-csi-node-a1compat"
|
||||
"Values" (dict
|
||||
"image" (dict
|
||||
"tag" (printf "%s-a1compat" (default (printf "v%s" .Chart.AppVersion) (.Values.image.tag | toString)))
|
||||
)
|
||||
"node" (dict
|
||||
"affinity" (dict
|
||||
"nodeAffinity" (dict
|
||||
"requiredDuringSchedulingIgnoredDuringExecution" (dict
|
||||
"nodeSelectorTerms" (list
|
||||
(dict "matchExpressions" (list
|
||||
(dict
|
||||
"key" "eks.amazonaws.com/compute-type"
|
||||
"operator" "NotIn"
|
||||
"values" (list "fargate")
|
||||
)
|
||||
(dict
|
||||
"key" "node.kubernetes.io/instance-type"
|
||||
"operator" "In"
|
||||
"values" (list "a1.medium" "a1.large" "a1.xlarge" "a1.2xlarge" "a1.4xlarge")
|
||||
)
|
||||
))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
}}
|
||||
{{- include "node" (deepCopy $ | mustMerge $args) -}}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,17 @@
|
||||
apiVersion: policy/v1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: ebs-csi-controller
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: ebs-csi-controller
|
||||
{{- include "aws-ebs-csi-driver.selectorLabels" . | nindent 6 }}
|
||||
{{- if le (.Values.controller.replicaCount | int) 2 }}
|
||||
maxUnavailable: 1
|
||||
{{- else }}
|
||||
minAvailable: 2
|
||||
{{- end }}
|
||||
@@ -0,0 +1,11 @@
|
||||
kind: Role
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
namespace: {{ .Release.Namespace }}
|
||||
name: ebs-csi-leases-role
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
rules:
|
||||
- apiGroups: ["coordination.k8s.io"]
|
||||
resources: ["leases"]
|
||||
verbs: ["get", "watch", "list", "delete", "update", "create"]
|
||||
@@ -0,0 +1,15 @@
|
||||
kind: RoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: ebs-csi-leases-rolebinding
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.controller.serviceAccount.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: Role
|
||||
name: ebs-csi-leases-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
@@ -0,0 +1,21 @@
|
||||
{{- if .Values.controller.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.controller.serviceAccount.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
{{- with .Values.controller.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- if eq .Release.Name "kustomize" }}
|
||||
#Enable if EKS IAM roles for service accounts (IRSA) is used. See https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html for details.
|
||||
#annotations:
|
||||
# eks.amazonaws.com/role-arn: arn:<partition>:iam::<account>:role/ebs-csi-role
|
||||
{{- end }}
|
||||
{{- if .Values.controller.serviceAccount.automountServiceAccountToken }}
|
||||
automountServiceAccountToken: {{ .Values.controller.serviceAccount.automountServiceAccountToken }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,16 @@
|
||||
{{- if .Values.node.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.node.serviceAccount.name }}
|
||||
namespace: {{ .Values.node.namespaceOverride | default .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "aws-ebs-csi-driver.labels" . | nindent 4 }}
|
||||
{{- with .Values.node.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.node.serviceAccount.automountServiceAccountToken }}
|
||||
automountServiceAccountToken: {{ .Values.node.serviceAccount.automountServiceAccountToken }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,15 @@
|
||||
{{- range .Values.storageClasses }}
|
||||
---
|
||||
kind: StorageClass
|
||||
apiVersion: storage.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ .name }}
|
||||
{{- with .annotations }}
|
||||
annotations: {{- . | toYaml | trim | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with .labels }}
|
||||
labels: {{- . | toYaml | trim | nindent 4 }}
|
||||
{{- end }}
|
||||
provisioner: ebs.csi.aws.com
|
||||
{{ omit (dict "volumeBindingMode" "WaitForFirstConsumer" | merge .) "name" "annotations" "labels" | toYaml }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,238 @@
|
||||
{{- if .Values.helmTester.enabled -}}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: ebs-csi-driver-test
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
|
||||
---
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: ebs-csi-driver-test
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
|
||||
rules:
|
||||
- apiGroups: [ "" ]
|
||||
resources:
|
||||
- events
|
||||
- nodes
|
||||
- pods
|
||||
- replicationcontrollers
|
||||
- serviceaccounts
|
||||
- configmaps
|
||||
- persistentvolumes
|
||||
- persistentvolumeclaims
|
||||
verbs: [ "list" ]
|
||||
- apiGroups: [ "" ]
|
||||
resources:
|
||||
- services
|
||||
- nodes
|
||||
- nodes/proxy
|
||||
- persistentvolumes
|
||||
- persistentvolumeclaims
|
||||
- pods
|
||||
- pods/log
|
||||
verbs: [ "get" ]
|
||||
- apiGroups: [ "" ]
|
||||
resources:
|
||||
- namespaces
|
||||
- persistentvolumes
|
||||
- persistentvolumeclaims
|
||||
- pods
|
||||
- pods/exec
|
||||
verbs: [ "create" ]
|
||||
- apiGroups: [ "" ]
|
||||
resources:
|
||||
- namespaces
|
||||
- persistentvolumes
|
||||
- persistentvolumeclaims
|
||||
- pods
|
||||
verbs: [ "delete" ]
|
||||
- apiGroups: [ "" ]
|
||||
resources:
|
||||
- persistentvolumeclaims
|
||||
verbs: [ "update" ]
|
||||
- apiGroups: [ "" ]
|
||||
resources:
|
||||
- pods/ephemeralcontainers
|
||||
verbs: [ "patch" ]
|
||||
- apiGroups: [ "" ]
|
||||
resources:
|
||||
- serviceaccounts
|
||||
- configmaps
|
||||
verbs: [ "watch" ]
|
||||
- apiGroups: [ "apps" ]
|
||||
resources:
|
||||
- replicasets
|
||||
- daemonsets
|
||||
verbs: [ "list" ]
|
||||
- apiGroups: [ "storage.k8s.io" ]
|
||||
resources:
|
||||
- storageclasses
|
||||
verbs: [ "create" ]
|
||||
- apiGroups: [ "storage.k8s.io" ]
|
||||
resources:
|
||||
- storageclasses
|
||||
- csinodes
|
||||
verbs: [ "get" ]
|
||||
- apiGroups: [ "storage.k8s.io" ]
|
||||
resources:
|
||||
- storageclasses
|
||||
verbs: [ "delete" ]
|
||||
- apiGroups: [ "snapshot.storage.k8s.io" ]
|
||||
resources:
|
||||
- volumesnapshots
|
||||
- volumesnapshotclasses
|
||||
- volumesnapshotcontents
|
||||
verbs: [ "create" ]
|
||||
- apiGroups: [ "snapshot.storage.k8s.io" ]
|
||||
resources:
|
||||
- volumesnapshots
|
||||
- volumesnapshotclasses
|
||||
- volumesnapshotcontents
|
||||
verbs: [ "get" ]
|
||||
- apiGroups: [ "snapshot.storage.k8s.io" ]
|
||||
resources:
|
||||
- volumesnapshotcontents
|
||||
verbs: [ "update" ]
|
||||
- apiGroups: [ "snapshot.storage.k8s.io" ]
|
||||
resources:
|
||||
- volumesnapshots
|
||||
- volumesnapshotclasses
|
||||
- volumesnapshotcontents
|
||||
verbs: [ "delete" ]
|
||||
- apiGroups: [ "authorization.k8s.io" ]
|
||||
resources:
|
||||
- clusterroles
|
||||
verbs: [ "list" ]
|
||||
- apiGroups: [ "authorization.k8s.io" ]
|
||||
resources:
|
||||
- subjectaccessreviews
|
||||
verbs: [ "create" ]
|
||||
- apiGroups: [ "rbac.authorization.k8s.io" ]
|
||||
resources:
|
||||
- clusterroles
|
||||
verbs: [ "list" ]
|
||||
- apiGroups: [ "rbac.authorization.k8s.io" ]
|
||||
resources:
|
||||
- clusterrolebindings
|
||||
verbs: [ "create" ]
|
||||
- apiGroups: [ "apiextensions.k8s.io" ]
|
||||
resources:
|
||||
- customresourcedefinitions
|
||||
verbs: [ "get" ]
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: ebs-csi-driver-test
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: ebs-csi-driver-test
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: ebs-csi-driver-test
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
data:
|
||||
manifests.yaml: |
|
||||
ShortName: ebs
|
||||
StorageClass:
|
||||
FromFile: storageclass.yaml
|
||||
SnapshotClass:
|
||||
FromName: true
|
||||
DriverInfo:
|
||||
Name: ebs.csi.aws.com
|
||||
SupportedSizeRange:
|
||||
Min: 1Gi
|
||||
Max: 16Ti
|
||||
SupportedFsType:
|
||||
xfs: {}
|
||||
ext4: {}
|
||||
SupportedMountOption:
|
||||
dirsync: {}
|
||||
TopologyKeys: ["topology.ebs.csi.aws.com/zone"]
|
||||
Capabilities:
|
||||
persistence: true
|
||||
fsGroup: true
|
||||
block: true
|
||||
exec: true
|
||||
snapshotDataSource: true
|
||||
pvcDataSource: false
|
||||
multipods: true
|
||||
controllerExpansion: true
|
||||
nodeExpansion: true
|
||||
volumeLimits: true
|
||||
topology: true
|
||||
storageclass.yaml: |
|
||||
kind: StorageClass
|
||||
apiVersion: storage.k8s.io/v1
|
||||
metadata:
|
||||
name: ebs.csi.aws.com
|
||||
provisioner: ebs.csi.aws.com
|
||||
volumeBindingMode: WaitForFirstConsumer
|
||||
metadata:
|
||||
name: ebs-csi-driver-test
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: ebs-csi-driver-test
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded,hook-failed
|
||||
"ignore-check.kube-linter.io/run-as-non-root": "kubetest2 image runs as root"
|
||||
"ignore-check.kube-linter.io/no-read-only-root-fs": "test pod requires privileged access"
|
||||
spec:
|
||||
containers:
|
||||
- name: kubetest2
|
||||
image: {{ .Values.helmTester.image }}
|
||||
resources:
|
||||
requests:
|
||||
cpu: 2000m
|
||||
memory: 4Gi
|
||||
limits:
|
||||
memory: 4Gi
|
||||
command: [ "/bin/sh", "-c" ]
|
||||
args:
|
||||
- |
|
||||
cp /etc/config/storageclass.yaml /workspace/storageclass.yaml
|
||||
kubectl config set-cluster cluster --server=https://kubernetes.default --certificate-authority=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
|
||||
kubectl config set-context kubetest2 --cluster=cluster
|
||||
kubectl config set-credentials sa --token=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
|
||||
kubectl config set-context kubetest2 --user=sa && kubectl config use-context kubetest2
|
||||
export FOCUS_REGEX='\bebs.csi.aws.com\b.+(validate content|resize volume|offline PVC|AllowedTopologies|store data'
|
||||
if kubectl get crd volumesnapshots.snapshot.storage.k8s.io; then
|
||||
FOCUS_REGEX="${FOCUS_REGEX}|snapshot fields)"
|
||||
else
|
||||
FOCUS_REGEX="${FOCUS_REGEX})"
|
||||
fi
|
||||
export KUBE_VERSION=$(kubectl version --output json | jq -r '.serverVersion.major + "." + .serverVersion.minor')
|
||||
kubetest2 noop --run-id='e2e-kubernetes' --test=ginkgo -- --test-package-version="$(curl -L https://dl.k8s.io/release/stable-${KUBE_VERSION}.txt)" --skip-regex='[Disruptive]|[Serial]' --focus-regex="$FOCUS_REGEX" --parallel=25 --test-args='-storage.testdriver=/etc/config/manifests.yaml'
|
||||
volumeMounts:
|
||||
- name: config-vol
|
||||
mountPath: /etc/config
|
||||
# kubekins-e2e v1 image is linux amd64 only.
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
kubernetes.io/arch: amd64
|
||||
serviceAccountName: ebs-csi-driver-test
|
||||
volumes:
|
||||
- name: config-vol
|
||||
configMap:
|
||||
name: ebs-csi-driver-test
|
||||
restartPolicy: Never
|
||||
{{- end }}
|
||||
@@ -0,0 +1,20 @@
|
||||
{{- if or .Values.sidecars.snapshotter.forceEnable (.Capabilities.APIVersions.Has "snapshot.storage.k8s.io/v1beta1") (.Capabilities.APIVersions.Has "snapshot.storage.k8s.io/v1") }}
|
||||
{{- range .Values.volumeSnapshotClasses }}
|
||||
---
|
||||
kind: VolumeSnapshotClass
|
||||
apiVersion: snapshot.storage.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ .name }}
|
||||
{{- with .annotations }}
|
||||
annotations: {{- . | toYaml | trim | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with .labels }}
|
||||
labels: {{- . | toYaml | trim | nindent 4 }}
|
||||
{{- end }}
|
||||
driver: ebs.csi.aws.com
|
||||
deletionPolicy: {{ .deletionPolicy }}
|
||||
{{- with .parameters }}
|
||||
parameters: {{- . | toYaml | trim | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
482
backing-services/aws-ebs-csi-driver/values.yaml
Normal file
482
backing-services/aws-ebs-csi-driver/values.yaml
Normal file
@@ -0,0 +1,482 @@
|
||||
# Default values for aws-ebs-csi-driver.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
|
||||
image:
|
||||
repository: public.ecr.aws/ebs-csi-driver/aws-ebs-csi-driver
|
||||
# Overrides the image tag whose default is v{{ .Chart.AppVersion }}
|
||||
tag: ""
|
||||
pullPolicy: IfNotPresent
|
||||
# -- Custom labels to add into metadata
|
||||
customLabels: {}
|
||||
# k8s-app: aws-ebs-csi-driver
|
||||
|
||||
sidecars:
|
||||
provisioner:
|
||||
env: []
|
||||
image:
|
||||
pullPolicy: IfNotPresent
|
||||
repository: public.ecr.aws/eks-distro/kubernetes-csi/external-provisioner
|
||||
tag: "v5.0.1-eks-1-30-8"
|
||||
logLevel: 2
|
||||
# Additional parameters provided by external-provisioner.
|
||||
additionalArgs: []
|
||||
# Grant additional permissions to external-provisioner
|
||||
additionalClusterRoleRules:
|
||||
resources: {}
|
||||
# Tune leader lease election for csi-provisioner.
|
||||
# Leader election is on by default.
|
||||
leaderElection:
|
||||
enabled: true
|
||||
# Optional values to tune lease behavior.
|
||||
# The arguments provided must be in an acceptable time.ParseDuration format.
|
||||
# Ref: https://pkg.go.dev/flag#Duration
|
||||
# leaseDuration: "15s"
|
||||
# renewDeadline: "10s"
|
||||
# retryPeriod: "5s"
|
||||
securityContext:
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
attacher:
|
||||
env: []
|
||||
image:
|
||||
pullPolicy: IfNotPresent
|
||||
repository: public.ecr.aws/eks-distro/kubernetes-csi/external-attacher
|
||||
tag: "v4.6.1-eks-1-30-8"
|
||||
# Tune leader lease election for csi-attacher.
|
||||
# Leader election is on by default.
|
||||
leaderElection:
|
||||
enabled: true
|
||||
# Optional values to tune lease behavior.
|
||||
# The arguments provided must be in an acceptable time.ParseDuration format.
|
||||
# Ref: https://pkg.go.dev/flag#Duration
|
||||
# leaseDuration: "15s"
|
||||
# renewDeadline: "10s"
|
||||
# retryPeriod: "5s"
|
||||
logLevel: 2
|
||||
# Additional parameters provided by external-attacher.
|
||||
additionalArgs: []
|
||||
# Grant additional permissions to external-attacher
|
||||
additionalClusterRoleRules: []
|
||||
resources: {}
|
||||
securityContext:
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
snapshotter:
|
||||
# Enables the snapshotter sidecar even if the snapshot CRDs are not installed
|
||||
forceEnable: false
|
||||
env: []
|
||||
image:
|
||||
pullPolicy: IfNotPresent
|
||||
repository: public.ecr.aws/eks-distro/kubernetes-csi/external-snapshotter/csi-snapshotter
|
||||
tag: "v8.0.1-eks-1-30-8"
|
||||
logLevel: 2
|
||||
# Additional parameters provided by csi-snapshotter.
|
||||
additionalArgs: []
|
||||
# Grant additional permissions to csi-snapshotter
|
||||
additionalClusterRoleRules: []
|
||||
resources: {}
|
||||
securityContext:
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
livenessProbe:
|
||||
image:
|
||||
pullPolicy: IfNotPresent
|
||||
repository: public.ecr.aws/eks-distro/kubernetes-csi/livenessprobe
|
||||
tag: "v2.13.0-eks-1-30-8"
|
||||
# Additional parameters provided by livenessprobe.
|
||||
additionalArgs: []
|
||||
resources: {}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
resizer:
|
||||
env: []
|
||||
image:
|
||||
pullPolicy: IfNotPresent
|
||||
repository: public.ecr.aws/eks-distro/kubernetes-csi/external-resizer
|
||||
tag: "v1.11.1-eks-1-30-8"
|
||||
# Tune leader lease election for csi-resizer.
|
||||
# Leader election is on by default.
|
||||
leaderElection:
|
||||
enabled: true
|
||||
# Optional values to tune lease behavior.
|
||||
# The arguments provided must be in an acceptable time.ParseDuration format.
|
||||
# Ref: https://pkg.go.dev/flag#Duration
|
||||
# leaseDuration: "15s"
|
||||
# renewDeadline: "10s"
|
||||
# retryPeriod: "5s"
|
||||
logLevel: 2
|
||||
# Additional parameters provided by external-resizer.
|
||||
additionalArgs: []
|
||||
# Grant additional permissions to external-resizer
|
||||
additionalClusterRoleRules: []
|
||||
resources: {}
|
||||
securityContext:
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
nodeDriverRegistrar:
|
||||
env: []
|
||||
image:
|
||||
pullPolicy: IfNotPresent
|
||||
repository: public.ecr.aws/eks-distro/kubernetes-csi/node-driver-registrar
|
||||
tag: "v2.11.0-eks-1-30-8"
|
||||
logLevel: 2
|
||||
# Additional parameters provided by node-driver-registrar.
|
||||
additionalArgs: []
|
||||
resources: {}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- /csi-node-driver-registrar
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --mode=kubelet-registration-probe
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 90
|
||||
timeoutSeconds: 15
|
||||
volumemodifier:
|
||||
env: []
|
||||
image:
|
||||
pullPolicy: IfNotPresent
|
||||
repository: public.ecr.aws/ebs-csi-driver/volume-modifier-for-k8s
|
||||
tag: "v0.3.0"
|
||||
leaderElection:
|
||||
enabled: true
|
||||
# Optional values to tune lease behavior.
|
||||
# The arguments provided must be in an acceptable time.ParseDuration format.
|
||||
# Ref: https://pkg.go.dev/flag#Duration
|
||||
# leaseDuration: "15s"
|
||||
# renewDeadline: "10s"
|
||||
# retryPeriod: "5s"
|
||||
logLevel: 2
|
||||
# Additional parameters provided by volume-modifier-for-k8s.
|
||||
additionalArgs: []
|
||||
resources: {}
|
||||
securityContext:
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
proxy:
|
||||
http_proxy:
|
||||
no_proxy:
|
||||
imagePullSecrets: []
|
||||
nameOverride:
|
||||
fullnameOverride:
|
||||
awsAccessSecret:
|
||||
name: aws-secret
|
||||
keyId: key_id
|
||||
accessKey: access_key
|
||||
controller:
|
||||
batching: true
|
||||
volumeModificationFeature:
|
||||
enabled: false
|
||||
# Additional parameters provided by aws-ebs-csi-driver controller.
|
||||
additionalArgs: []
|
||||
sdkDebugLog: false
|
||||
loggingFormat: text
|
||||
affinity:
|
||||
nodeAffinity:
|
||||
preferredDuringSchedulingIgnoredDuringExecution:
|
||||
- weight: 1
|
||||
preference:
|
||||
matchExpressions:
|
||||
- key: eks.amazonaws.com/compute-type
|
||||
operator: NotIn
|
||||
values:
|
||||
- fargate
|
||||
podAntiAffinity:
|
||||
preferredDuringSchedulingIgnoredDuringExecution:
|
||||
- podAffinityTerm:
|
||||
labelSelector:
|
||||
matchExpressions:
|
||||
- key: app
|
||||
operator: In
|
||||
values:
|
||||
- ebs-csi-controller
|
||||
topologyKey: kubernetes.io/hostname
|
||||
weight: 100
|
||||
# The default filesystem type of the volume to provision when fstype is unspecified in the StorageClass.
|
||||
# If the default is not set and fstype is unset in the StorageClass, then no fstype will be set
|
||||
defaultFsType: ext4
|
||||
env: []
|
||||
# Use envFrom to reference ConfigMaps and Secrets across all containers in the deployment
|
||||
envFrom: []
|
||||
# If set, add pv/pvc metadata to plugin create requests as parameters.
|
||||
extraCreateMetadata: true
|
||||
# Extra volume tags to attach to each dynamically provisioned volume.
|
||||
# ---
|
||||
# extraVolumeTags:
|
||||
# key1: value1
|
||||
# key2: value2
|
||||
extraVolumeTags: {}
|
||||
httpEndpoint:
|
||||
# (deprecated) The TCP network address where the prometheus metrics endpoint
|
||||
# will run (example: `:8080` which corresponds to port 8080 on local host).
|
||||
# The default is empty string, which means metrics endpoint is disabled.
|
||||
# ---
|
||||
enableMetrics: false
|
||||
serviceMonitor:
|
||||
# Enables the ServiceMonitor resource even if the prometheus-operator CRDs are not installed
|
||||
forceEnable: false
|
||||
# Additional labels for ServiceMonitor object
|
||||
labels:
|
||||
release: prometheus
|
||||
interval: "15s"
|
||||
# If set to true, AWS API call metrics will be exported to the following
|
||||
# TCP endpoint: "0.0.0.0:3301"
|
||||
# ---
|
||||
# ID of the Kubernetes cluster used for tagging provisioned EBS volumes (optional).
|
||||
k8sTagClusterId:
|
||||
logLevel: 2
|
||||
userAgentExtra: "helm"
|
||||
nodeSelector: {}
|
||||
deploymentAnnotations: {}
|
||||
podAnnotations: {}
|
||||
podLabels: {}
|
||||
priorityClassName: system-cluster-critical
|
||||
# AWS region to use. If not specified then the region will be looked up via the AWS EC2 metadata
|
||||
# service.
|
||||
# ---
|
||||
# region: us-east-1
|
||||
region:
|
||||
replicaCount: 2
|
||||
revisionHistoryLimit: 10
|
||||
socketDirVolume:
|
||||
emptyDir: {}
|
||||
updateStrategy:
|
||||
type: RollingUpdate
|
||||
rollingUpdate:
|
||||
maxUnavailable: 1
|
||||
# type: RollingUpdate
|
||||
# rollingUpdate:
|
||||
# maxSurge: 0
|
||||
# maxUnavailable: 1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
limits:
|
||||
memory: 256Mi
|
||||
serviceAccount:
|
||||
# A service account will be created for you if set to true. Set to false if you want to use your own.
|
||||
create: true
|
||||
name: ebs-csi-controller-sa
|
||||
annotations: {}
|
||||
## Enable if EKS IAM for SA is used
|
||||
# eks.amazonaws.com/role-arn: arn:<partition>:iam::<account>:role/ebs-csi-role
|
||||
automountServiceAccountToken: true
|
||||
tolerations:
|
||||
- key: CriticalAddonsOnly
|
||||
operator: Exists
|
||||
- effect: NoExecute
|
||||
operator: Exists
|
||||
tolerationSeconds: 300
|
||||
# TSCs without the label selector stanza
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# topologySpreadConstraints:
|
||||
# - maxSkew: 1
|
||||
# topologyKey: topology.kubernetes.io/zone
|
||||
# whenUnsatisfiable: ScheduleAnyway
|
||||
# - maxSkew: 1
|
||||
# topologyKey: kubernetes.io/hostname
|
||||
# whenUnsatisfiable: ScheduleAnyway
|
||||
topologySpreadConstraints: []
|
||||
# securityContext on the controller pod
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1000
|
||||
runAsGroup: 1000
|
||||
fsGroup: 1000
|
||||
# Add additional volume mounts on the controller with controller.volumes and controller.volumeMounts
|
||||
volumes: []
|
||||
# Add additional volumes to be mounted onto the controller:
|
||||
# - name: custom-dir
|
||||
# hostPath:
|
||||
# path: /path/to/dir
|
||||
# type: Directory
|
||||
volumeMounts: []
|
||||
# And add mount paths for those additional volumes:
|
||||
# - name: custom-dir
|
||||
# mountPath: /mount/path
|
||||
# ---
|
||||
# securityContext on the controller container (see sidecars for securityContext on sidecar containers)
|
||||
containerSecurityContext:
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
initContainers: []
|
||||
# containers to be run before the controller's container starts.
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# - name: wait
|
||||
# image: busybox
|
||||
# command: [ 'sh', '-c', "sleep 20" ]
|
||||
# Enable opentelemetry tracing for the plugin running on the daemonset
|
||||
otelTracing: {}
|
||||
# otelServiceName: ebs-csi-controller
|
||||
# otelExporterEndpoint: "http://localhost:4317"
|
||||
|
||||
# Enable dnsConfig for the controller and node pods
|
||||
dnsConfig: {}
|
||||
node:
|
||||
env: []
|
||||
envFrom: []
|
||||
kubeletPath: /var/lib/kubelet
|
||||
loggingFormat: text
|
||||
logLevel: 2
|
||||
priorityClassName:
|
||||
additionalArgs: []
|
||||
affinity:
|
||||
nodeAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: eks.amazonaws.com/compute-type
|
||||
operator: NotIn
|
||||
values:
|
||||
- fargate
|
||||
- key: node.kubernetes.io/instance-type
|
||||
operator: NotIn
|
||||
values:
|
||||
- a1.medium
|
||||
- a1.large
|
||||
- a1.xlarge
|
||||
- a1.2xlarge
|
||||
- a1.4xlarge
|
||||
nodeSelector: {}
|
||||
daemonSetAnnotations: {}
|
||||
podAnnotations: {}
|
||||
podLabels: {}
|
||||
terminationGracePeriodSeconds: 30
|
||||
tolerateAllTaints: true
|
||||
tolerations:
|
||||
- operator: Exists
|
||||
effect: NoExecute
|
||||
tolerationSeconds: 300
|
||||
resources:
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 40Mi
|
||||
limits:
|
||||
memory: 256Mi
|
||||
revisionHistoryLimit: 10
|
||||
probeDirVolume:
|
||||
emptyDir: {}
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: ebs-csi-node-sa
|
||||
annotations: {}
|
||||
## Enable if EKS IAM for SA is used
|
||||
# eks.amazonaws.com/role-arn: arn:<partition>:iam::<account>:role/ebs-csi-role
|
||||
automountServiceAccountToken: true
|
||||
# Enable the linux daemonset creation
|
||||
enableLinux: true
|
||||
enableWindows: false
|
||||
# The number of attachment slots to reserve for system use (and not to be used for CSI volumes)
|
||||
# When this parameter is not specified (or set to -1), the EBS CSI Driver will attempt to determine the number of reserved slots via heuristic
|
||||
# Cannot be specified at the same time as `node.volumeAttachLimit`
|
||||
reservedVolumeAttachments:
|
||||
# The "maximum number of attachable volumes" per node
|
||||
# Cannot be specified at the same time as `node.reservedVolumeAttachments`
|
||||
volumeAttachLimit:
|
||||
updateStrategy:
|
||||
type: RollingUpdate
|
||||
rollingUpdate:
|
||||
maxUnavailable: "10%"
|
||||
hostNetwork: false
|
||||
# securityContext on the node pod
|
||||
securityContext:
|
||||
# The node pod must be run as root to bind to the registration/driver sockets
|
||||
runAsNonRoot: false
|
||||
runAsUser: 0
|
||||
runAsGroup: 0
|
||||
fsGroup: 0
|
||||
# allows you to deploy aws-ebs-csi-node daemonset to separate namespace (make sure namespace exists before deploy)
|
||||
namespaceOverride: ""
|
||||
# Add additional volume mounts on the node pods with node.volumes and node.volumeMounts
|
||||
volumes: []
|
||||
# Add additional volumes to be mounted onto the node pods:
|
||||
# - name: custom-dir
|
||||
# hostPath:
|
||||
# path: /path/to/dir
|
||||
# type: Directory
|
||||
volumeMounts: []
|
||||
# And add mount paths for those additional volumes:
|
||||
# - name: custom-dir
|
||||
# mountPath: /mount/path
|
||||
# ---
|
||||
# securityContext on the node container (see sidecars for securityContext on sidecar containers)
|
||||
# Privileged containers always run as `Unconfined`, which means that they are not restricted by a seccomp profile.
|
||||
containerSecurityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
privileged: true
|
||||
# Enable opentelemetry tracing for the plugin running on the daemonset
|
||||
otelTracing: {}
|
||||
# otelServiceName: ebs-csi-node
|
||||
# otelExporterEndpoint: "http://localhost:4317"
|
||||
additionalDaemonSets:
|
||||
# Additional node DaemonSets, using the node config structure
|
||||
# See docs/additional-daemonsets.md for more information
|
||||
#
|
||||
# example:
|
||||
# nodeSelector:
|
||||
# node.kubernetes.io/instance-type: c5.large
|
||||
# volumeAttachLimit: 15
|
||||
|
||||
# Enable compatibility for the A1 instance family via use of an AL2-based image in a separate DaemonSet
|
||||
# a1CompatibilityDaemonSet: true
|
||||
storageClasses: []
|
||||
# Add StorageClass resources like:
|
||||
# - name: ebs-sc
|
||||
# # annotation metadata
|
||||
# annotations:
|
||||
# storageclass.kubernetes.io/is-default-class: "true"
|
||||
# # label metadata
|
||||
# labels:
|
||||
# my-label-is: supercool
|
||||
# # defaults to WaitForFirstConsumer
|
||||
# volumeBindingMode: WaitForFirstConsumer
|
||||
# # defaults to Delete
|
||||
# reclaimPolicy: Retain
|
||||
# parameters:
|
||||
# encrypted: "true"
|
||||
|
||||
defaultStorageClass:
|
||||
enabled: false
|
||||
volumeSnapshotClasses: []
|
||||
# Add VolumeSnapshotClass resources like:
|
||||
# - name: ebs-vsc
|
||||
# # annotation metadata
|
||||
# annotations:
|
||||
# snapshot.storage.kubernetes.io/is-default-class: "true"
|
||||
# # label metadata
|
||||
# labels:
|
||||
# my-label-is: supercool
|
||||
# # deletionPolicy must be specified
|
||||
# deletionPolicy: Delete
|
||||
# parameters:
|
||||
|
||||
# Use old CSIDriver without an fsGroupPolicy set
|
||||
# Intended for use with older clusters that cannot easily replace the CSIDriver object
|
||||
# This parameter should always be false for new installations
|
||||
useOldCSIDriver: false
|
||||
helmTester:
|
||||
enabled: true
|
||||
# Supply a custom image to the ebs-csi-driver-test pod in helm-tester.yaml
|
||||
image: "gcr.io/k8s-staging-test-infra/kubekins-e2e:v20240611-597c402033-master"
|
||||
22
backing-services/aws-efs-csi-driver/.helmignore
Normal file
22
backing-services/aws-efs-csi-driver/.helmignore
Normal file
@@ -0,0 +1,22 @@
|
||||
# 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
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
245
backing-services/aws-efs-csi-driver/CHANGELOG.md
Normal file
245
backing-services/aws-efs-csi-driver/CHANGELOG.md
Normal file
@@ -0,0 +1,245 @@
|
||||
# Helm chart
|
||||
# v3.1.5
|
||||
* Bump app/driver version to `v2.1.4`
|
||||
# v3.1.4
|
||||
* Bump app/driver version to `v2.1.3`
|
||||
# v3.1.3
|
||||
* Bump app/driver version to `v2.1.2`
|
||||
# v3.1.2
|
||||
* Bump app/driver version to `v2.1.1`
|
||||
# v3.1.1
|
||||
* Bump app/driver version to `v2.1.0`
|
||||
# v3.1.0
|
||||
* Bump app/driver version to `v2.0.9`
|
||||
# v3.0.9
|
||||
* Bump app/driver version to `v2.0.8`
|
||||
# v3.0.8
|
||||
* Bump app/driver version to `v2.0.7`
|
||||
# v3.0.7
|
||||
* Bump app/driver version to `v2.0.6`
|
||||
# v3.0.6
|
||||
* Bump app/driver version to `v2.0.5`
|
||||
# v3.0.5
|
||||
* Bump app/driver version to `v2.0.4`
|
||||
# v3.0.4
|
||||
* Bump app/driver version to `v2.0.3`
|
||||
# v3.0.3
|
||||
* Bump app/driver version to `v2.0.2`
|
||||
# v3.0.2
|
||||
* Update Helm to use the image from Public ECR rather than DockerHub
|
||||
# v3.0.1
|
||||
* Bump app/driver version to `v2.0.1`
|
||||
# v3.0.0
|
||||
* Bump app/driver version to `v2.0.0`
|
||||
# v2.5.7
|
||||
* Bump app/driver version to `v1.7.7`
|
||||
# v2.5.6
|
||||
* Bump app/driver version to `v1.7.6`
|
||||
# v2.5.5
|
||||
* Bump app/driver version to `v1.7.5`
|
||||
# v2.5.4
|
||||
* Bump app/driver version to `v1.7.4`
|
||||
# v2.5.3
|
||||
* Bump app/driver version to `v1.7.3`
|
||||
# v2.5.2
|
||||
* Bump app/driver version to `v1.7.2`
|
||||
# v2.5.1
|
||||
* Bump app/driver version to `v1.7.1`
|
||||
# v2.5.0
|
||||
* Bump app/driver version to `v1.7.0`
|
||||
# v2.4.9
|
||||
* Bump app/driver version to `v1.6.0`
|
||||
# v2.4.8
|
||||
* Bump app/driver version to `v1.5.9`
|
||||
# v2.4.7
|
||||
* Bump app/driver version to `v1.5.8`
|
||||
# v2.4.6
|
||||
* Bump app/driver version to `v1.5.7`
|
||||
# v2.4.5
|
||||
* Bump helm version for change of state-dir path to avoid losing track of state files which exists already to `v2.4.5`
|
||||
# v2.4.4
|
||||
* Bump helm version to pick the latest side-car images `v2.4.4`
|
||||
# v2.4.3
|
||||
* Bump app/driver version to `v1.5.6`
|
||||
# v2.4.2
|
||||
* Bump app/driver version to `v1.5.5`
|
||||
# v2.4.1
|
||||
* Bump app/driver version to `v1.5.4`
|
||||
# v2.4.0
|
||||
* Bump app/driver version to `v1.5.3`
|
||||
# v2.3.9
|
||||
* Bump app/driver version to `v1.5.2`
|
||||
# v2.3.8
|
||||
* Bump app/driver version to `v1.5.1`
|
||||
# v2.3.7
|
||||
* Bump app/driver version to `v1.5.0`
|
||||
# v2.3.6
|
||||
* Bump app/driver version to `v1.4.9`
|
||||
# v2.3.5
|
||||
* Bump app/driver version to `v1.4.8`
|
||||
|
||||
# v2.3.4
|
||||
* Bump app/driver version to `v1.4.7`
|
||||
|
||||
# v2.3.3
|
||||
* Bump app/driver version to `v1.4.6`
|
||||
|
||||
# v2.3.2
|
||||
* Bump app/driver version to `v1.4.5`
|
||||
|
||||
# v2.3.1
|
||||
* Bump app/driver version to `v1.4.4`
|
||||
|
||||
# v2.3.0
|
||||
* Bump app/driver version to `v1.4.3`
|
||||
|
||||
# v2.2.9
|
||||
* Bump app/driver version to `v1.4.2`
|
||||
|
||||
# v2.2.8
|
||||
* Bump app/driver version to `v1.4.1`
|
||||
|
||||
# v2.2.7
|
||||
* Bump app/driver version to `v1.4.0`
|
||||
# v2.2.6
|
||||
* Bump app/driver version to `v1.3.8`
|
||||
|
||||
# v2.2.5
|
||||
* Bump app/driver version to `v1.3.7`
|
||||
|
||||
# v2.2.4
|
||||
* Add STS regional endpoints flag to fix PV creation on private EKS
|
||||
|
||||
# v2.2.3
|
||||
* Bump app/driver version to `v1.3.6`
|
||||
|
||||
# v2.2.2
|
||||
* Add controller.volMetricsOptIn for emitting volume metrics
|
||||
* Update ECR sidecars to 1-18-13
|
||||
|
||||
# v2.2.1
|
||||
* Bump app/driver version to `v1.3.5`
|
||||
|
||||
# v2.2.0
|
||||
* Allow health ports to be configured
|
||||
* Add Missing "patch" permission for "events"
|
||||
|
||||
# v2.1.6
|
||||
* Bump app/driver version to `v1.3.4`
|
||||
|
||||
# v2.1.5
|
||||
* Bump app/driver version to `v1.3.3`
|
||||
|
||||
# v2.1.4
|
||||
* Add node.serviceAccount values for creating and/or specifying daemonset service account
|
||||
|
||||
# v2.1.3
|
||||
* Bump app/driver version to `v1.3.2`
|
||||
|
||||
# v2.1.2
|
||||
* Add extra-create-metadata
|
||||
|
||||
# v2.1.1
|
||||
* Update app/driver version to `v1.3.1`
|
||||
|
||||
# v2.1.0
|
||||
|
||||
## New features
|
||||
* Update app/driver version to `v1.3.0`
|
||||
|
||||
## Bug fixes
|
||||
* Put comments back in place inside the values file ([#475](https://github.com/kubernetes-sigs/aws-efs-csi-driver/pull/475), [@pierluigilenoci](https://github.com/pierluigilenoci))
|
||||
|
||||
# v2.0.1
|
||||
|
||||
## Bug fixes
|
||||
* Helm chart: fix reclaimPolicy and volumeBindingMode ([#464](https://github.com/kubernetes-sigs/aws-efs-csi-driver/pull/464), [@devinsmith911](https://github.com/devinsmith911))
|
||||
|
||||
|
||||
# v2.0.0
|
||||
|
||||
## Breaking changes
|
||||
|
||||
Multiple changes in values file at `sidecars`, `controller` and `node`
|
||||
|
||||
---
|
||||
```yaml
|
||||
sidecars:
|
||||
xxxxxxxxx:
|
||||
repository:
|
||||
tag:
|
||||
```
|
||||
|
||||
Moving to
|
||||
|
||||
```yaml
|
||||
sidecars:
|
||||
xxxxxxxxx:
|
||||
image:
|
||||
repository:
|
||||
tag:
|
||||
```
|
||||
|
||||
---
|
||||
```yaml
|
||||
podAnnotations:
|
||||
resources:
|
||||
nodeSelector:
|
||||
tolerations:
|
||||
affinity:
|
||||
```
|
||||
|
||||
Moving to
|
||||
|
||||
```yaml
|
||||
controller:
|
||||
podAnnotations:
|
||||
resources:
|
||||
nodeSelector:
|
||||
tolerations:
|
||||
affinity:
|
||||
```
|
||||
|
||||
---
|
||||
```yaml
|
||||
hostAliases:
|
||||
dnsPolicy:
|
||||
dnsConfig:
|
||||
```
|
||||
|
||||
Moving to
|
||||
|
||||
```yaml
|
||||
node:
|
||||
hostAliases:
|
||||
dnsPolicy:
|
||||
dnsConfig:
|
||||
```
|
||||
|
||||
---
|
||||
```yaml
|
||||
serviceAccount:
|
||||
controller:
|
||||
```
|
||||
|
||||
Moving to
|
||||
|
||||
```yaml
|
||||
controller:
|
||||
serviceAccount:
|
||||
```
|
||||
|
||||
## New features
|
||||
|
||||
* Chart API `v2` (requires Helm 3)
|
||||
* Set `resources` and `imagePullPolicy` fields independently for containers
|
||||
* Set `logLevel`, `affinity`, `nodeSelector`, `podAnnotations` and `tolerations` fields independently
|
||||
for Controller deployment and Node daemonset
|
||||
* Set `reclaimPolicy` and `volumeBindingMode` fields in storage class
|
||||
|
||||
## Fixes
|
||||
|
||||
* Fixing Controller deployment using `podAnnotations` and `tolerations` values from Node daemonset
|
||||
* Let the user define the whole `tolerations` array, default to `- operator: Exists`
|
||||
* Default `logLevel` lowered from `5` to `2`
|
||||
* Default `imagePullPolicy` everywhere set to `IfNotPresent`
|
||||
18
backing-services/aws-efs-csi-driver/Chart.yaml
Normal file
18
backing-services/aws-efs-csi-driver/Chart.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
apiVersion: v2
|
||||
appVersion: 2.1.4
|
||||
description: A Helm chart for AWS EFS CSI Driver
|
||||
home: https://github.com/kubernetes-sigs/aws-efs-csi-driver
|
||||
keywords:
|
||||
- aws
|
||||
- efs
|
||||
- csi
|
||||
kubeVersion: '>=1.17.0-0'
|
||||
maintainers:
|
||||
- name: leakingtapan
|
||||
url: https://github.com/leakingtapan
|
||||
- name: krmichel
|
||||
url: https://github.com/krmichel
|
||||
name: aws-efs-csi-driver
|
||||
sources:
|
||||
- https://github.com/kubernetes-sigs/aws-efs-csi-driver
|
||||
version: 3.1.5
|
||||
@@ -0,0 +1,28 @@
|
||||
controller:
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-node-sa
|
||||
|
||||
node:
|
||||
# Specifies whether a service account should be created
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-node-sa
|
||||
annotations:
|
||||
## Enable if EKS IAM for SA is used
|
||||
eks.amazonaws.com/role-arn: "arn:aws:iam::667294666490:role/auction-cluster-20241126163757775000000001"
|
||||
|
||||
storageClasses:
|
||||
- name: efs-sc
|
||||
annotations:
|
||||
storageclass.kubernetes.io/is-default-class: "true"
|
||||
mountOptions:
|
||||
- tls
|
||||
parameters:
|
||||
provisioningMode: efs-ap
|
||||
fileSystemId: fs-09f60032cda93f18a
|
||||
directoryPerms: "700"
|
||||
gidRangeStart: "1000"
|
||||
gidRangeEnd: "2000"
|
||||
reclaimPolicy: Delete
|
||||
volumeBindingMode: Immediate
|
||||
@@ -0,0 +1,28 @@
|
||||
controller:
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-node-sa
|
||||
|
||||
node:
|
||||
# Specifies whether a service account should be created
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-node-sa
|
||||
annotations:
|
||||
## Enable if EKS IAM for SA is used
|
||||
eks.amazonaws.com/role-arn: "arn:aws:iam::889565812003:role/schoolbuses-cluster-20241110104436981500000002"
|
||||
|
||||
storageClasses:
|
||||
- name: efs-sc
|
||||
annotations:
|
||||
storageclass.kubernetes.io/is-default-class: "true"
|
||||
mountOptions:
|
||||
- tls
|
||||
parameters:
|
||||
provisioningMode: efs-ap
|
||||
fileSystemId: fs-0a434a5de93866ab1
|
||||
directoryPerms: "700"
|
||||
gidRangeStart: "1000"
|
||||
gidRangeEnd: "2000"
|
||||
reclaimPolicy: Delete
|
||||
volumeBindingMode: Immediate
|
||||
28
backing-services/aws-efs-csi-driver/schoolbuses.values.yaml
Normal file
28
backing-services/aws-efs-csi-driver/schoolbuses.values.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
controller:
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-controller-sa
|
||||
|
||||
node:
|
||||
# Specifies whether a service account should be created
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-node-sa
|
||||
annotations:
|
||||
## Enable if EKS IAM for SA is used
|
||||
eks.amazonaws.com/role-arn: arn:aws:iam::889565812003:role/schoolbuses_Cluster_IAM
|
||||
|
||||
storageClasses:
|
||||
- name: efs-sc
|
||||
annotations:
|
||||
storageclass.kubernetes.io/is-default-class: "true"
|
||||
mountOptions:
|
||||
- tls
|
||||
parameters:
|
||||
provisioningMode: efs-ap
|
||||
fileSystemId: fs-08694c721b539abe2
|
||||
directoryPerms: "700"
|
||||
gidRangeStart: "1000"
|
||||
gidRangeEnd: "2000"
|
||||
reclaimPolicy: Delete
|
||||
volumeBindingMode: Immediate
|
||||
3
backing-services/aws-efs-csi-driver/templates/NOTES.txt
Normal file
3
backing-services/aws-efs-csi-driver/templates/NOTES.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
To verify that aws-efs-csi-driver has started, run:
|
||||
|
||||
kubectl get pod -n {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "aws-efs-csi-driver.name" . }},app.kubernetes.io/instance={{ .Release.Name }}"
|
||||
56
backing-services/aws-efs-csi-driver/templates/_helpers.tpl
Normal file
56
backing-services/aws-efs-csi-driver/templates/_helpers.tpl
Normal file
@@ -0,0 +1,56 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "aws-efs-csi-driver.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- 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.
|
||||
*/}}
|
||||
{{- define "aws-efs-csi-driver.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "aws-efs-csi-driver.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "aws-efs-csi-driver.labels" -}}
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
helm.sh/chart: {{ include "aws-efs-csi-driver.chart" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a string out of the map for controller tags flag
|
||||
*/}}
|
||||
{{- define "aws-efs-csi-driver.tags" -}}
|
||||
{{- $tags := list -}}
|
||||
{{ range $key, $val := . }}
|
||||
{{- $tags = print $key ":" $val | append $tags -}}
|
||||
{{- end -}}
|
||||
{{- join " " $tags -}}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,193 @@
|
||||
{{- if .Values.controller.create }}
|
||||
# Controller Service
|
||||
kind: Deployment
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: {{ .Values.controller.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
{{- with .Values.controller.additionalLabels }}
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
replicas: {{ .Values.controller.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.controller.name }}
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- with .Values.controller.updateStrategy }}
|
||||
strategy:
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ .Values.controller.name }}
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- with .Values.controller.podLabels }}
|
||||
{{ toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.podAnnotations }}
|
||||
annotations: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if hasKey .Values.controller "hostNetwork" }}
|
||||
hostNetwork: {{ .Values.controller.hostNetwork }}
|
||||
{{- end }}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
{{- with .Values.controller.nodeSelector }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ .Values.controller.serviceAccount.name }}
|
||||
priorityClassName: {{ .Values.controller.priorityClassName | default "system-cluster-critical" }}
|
||||
{{- with .Values.controller.tolerations }}
|
||||
tolerations: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.controller.dnsPolicy }}
|
||||
dnsPolicy: {{ .Values.controller.dnsPolicy }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.dnsConfig }}
|
||||
dnsConfig: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: efs-plugin
|
||||
{{- with .Values.controller.containerSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
image: {{ printf "%s:%s" .Values.image.repository (default (printf "v%s" .Chart.AppVersion) (toString .Values.image.tag)) }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
args:
|
||||
- --endpoint=$(CSI_ENDPOINT)
|
||||
- --logtostderr
|
||||
{{- if .Values.controller.tags }}
|
||||
- --tags={{ include "aws-efs-csi-driver.tags" .Values.controller.tags }}
|
||||
{{- end }}
|
||||
- --v={{ .Values.controller.logLevel }}
|
||||
- --delete-access-point-root-dir={{ hasKey .Values.controller "deleteAccessPointRootDir" | ternary .Values.controller.deleteAccessPointRootDir false }}
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:///var/lib/csi/sockets/pluginproxy/csi.sock
|
||||
{{- if .Values.controller.regionalStsEndpoints }}
|
||||
- name: AWS_STS_REGIONAL_ENDPOINTS
|
||||
value: regional
|
||||
{{- end }}
|
||||
- name: CSI_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
{{- if .Values.useFIPS }}
|
||||
- name: AWS_USE_FIPS_ENDPOINT
|
||||
value: "true"
|
||||
{{- end }}
|
||||
- name: PORT_RANGE_UPPER_BOUND
|
||||
value: "{{ .Values.portRangeUpperBound }}"
|
||||
{{- with .Values.controller.env }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /var/lib/csi/sockets/pluginproxy/
|
||||
{{- with .Values.controller.volumeMounts }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: healthz
|
||||
containerPort: {{ .Values.controller.healthPort }}
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 10
|
||||
timeoutSeconds: 3
|
||||
periodSeconds: 10
|
||||
failureThreshold: 5
|
||||
{{- with .Values.controller.resources }}
|
||||
resources: {{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
- name: csi-provisioner
|
||||
image: {{ printf "%s:%s" .Values.sidecars.csiProvisioner.image.repository .Values.sidecars.csiProvisioner.image.tag }}
|
||||
imagePullPolicy: {{ .Values.sidecars.csiProvisioner.image.pullPolicy }}
|
||||
args:
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --v={{ .Values.controller.logLevel }}
|
||||
- --feature-gates=Topology=true
|
||||
{{- if .Values.controller.extraCreateMetadata }}
|
||||
- --extra-create-metadata
|
||||
{{- end }}
|
||||
- --leader-election
|
||||
{{- if hasKey .Values.controller "leaderElectionRenewDeadline" }}
|
||||
- --leader-election-renew-deadline={{ .Values.controller.leaderElectionRenewDeadline }}
|
||||
{{- end }}
|
||||
{{- if hasKey .Values.controller "leaderElectionLeaseDuration" }}
|
||||
- --leader-election-lease-duration={{ .Values.controller.leaderElectionLeaseDuration }}
|
||||
{{- end }}
|
||||
{{- range .Values.sidecars.csiProvisioner.additionalArgs }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /var/lib/csi/sockets/pluginproxy/csi.sock
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /var/lib/csi/sockets/pluginproxy/
|
||||
{{- with default .Values.controller.resources .Values.sidecars.csiProvisioner.resources }}
|
||||
resources: {{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.csiProvisioner.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
- name: liveness-probe
|
||||
image: {{ printf "%s:%s" .Values.sidecars.livenessProbe.image.repository .Values.sidecars.livenessProbe.image.tag }}
|
||||
imagePullPolicy: {{ .Values.sidecars.livenessProbe.image.pullPolicy }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --health-port={{ .Values.controller.healthPort }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
{{- with .Values.controller.volumeMounts }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with default .Values.controller.resources .Values.sidecars.livenessProbe.resources }}
|
||||
resources: {{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.livenessProbe.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: socket-dir
|
||||
emptyDir: {}
|
||||
{{- with .Values.controller.volumes }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.affinity }}
|
||||
affinity: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.controller.topologySpreadConstraints }}
|
||||
{{- $tscLabelSelector := dict "labelSelector" ( dict "matchLabels" ( dict "app" "efs-csi-controller" ) ) }}
|
||||
{{- $constraints := list }}
|
||||
{{- range .Values.controller.topologySpreadConstraints }}
|
||||
{{- $constraints = mustAppend $constraints (mergeOverwrite . $tscLabelSelector) }}
|
||||
{{- end }}
|
||||
topologySpreadConstraints:
|
||||
{{- $constraints | toYaml | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,24 @@
|
||||
{{- if .Values.controller.podDisruptionBudget.enabled -}}
|
||||
apiVersion: policy/v1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: {{ .Values.controller.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "aws-efs-csi-driver.labels" . | nindent 4 }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ .Values.controller.name }}
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- if .Values.controller.podDisruptionBudget.unhealthyPodEvictionPolicy }}
|
||||
unhealthyPodEvictionPolicy: {{ .Values.controller.podDisruptionBudget.unhealthyPodEvictionPolicy }}
|
||||
{{- end }}
|
||||
{{- if .Values.controller.podDisruptionBudget.maxUnavailable }}
|
||||
maxUnavailable: {{ .Values.controller.podDisruptionBudget.maxUnavailable }}
|
||||
{{- end }}
|
||||
{{- if .Values.controller.podDisruptionBudget.minAvailable }}
|
||||
minAvailable: {{ .Values.controller.podDisruptionBudget.minAvailable }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,88 @@
|
||||
{{- if .Values.controller.serviceAccount.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.controller.serviceAccount.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
{{- with .Values.controller.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
---
|
||||
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: efs-csi-external-provisioner-role
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumes"]
|
||||
verbs: ["get", "list", "watch", "create", "patch", "delete"]
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumeclaims"]
|
||||
verbs: ["get", "list", "watch", "update"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["storageclasses"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["events"]
|
||||
verbs: ["list", "watch", "create", "patch"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["csinodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: ["coordination.k8s.io"]
|
||||
resources: ["leases"]
|
||||
verbs: ["get", "watch", "list", "delete", "update", "create"]
|
||||
---
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: efs-csi-external-provisioner-role-describe-secrets
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
rules:
|
||||
- apiGroups: [ "" ]
|
||||
resources: [ "secrets" ]
|
||||
resourceNames: ["x-account"]
|
||||
verbs: [ "get", "watch", "list" ]
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: efs-csi-provisioner-binding
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.controller.serviceAccount.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: efs-csi-external-provisioner-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
---
|
||||
# We use a RoleBinding to restrict Secret access to the namespace that the
|
||||
# RoleBinding is created in (typically kube-system)
|
||||
kind: RoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: efs-csi-provisioner-binding-describe-secrets
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.controller.serviceAccount.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: efs-csi-external-provisioner-role-describe-secrets
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
12
backing-services/aws-efs-csi-driver/templates/csidriver.yaml
Normal file
12
backing-services/aws-efs-csi-driver/templates/csidriver.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
apiVersion: {{ ternary "storage.k8s.io/v1" "storage.k8s.io/v1beta1" (semverCompare ">=1.18.0-0" .Capabilities.KubeVersion.Version) }}
|
||||
kind: CSIDriver
|
||||
metadata:
|
||||
name: efs.csi.aws.com
|
||||
annotations:
|
||||
{{- if .Values.useHelmHooksForCSIDriver }}
|
||||
"helm.sh/hook": pre-install, pre-upgrade
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
{{- end }}
|
||||
"helm.sh/resource-policy": keep
|
||||
spec:
|
||||
attachRequired: false
|
||||
@@ -0,0 +1,202 @@
|
||||
# Node Service
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: efs-csi-node
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
{{- with .Values.node.additionalLabels }}
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: efs-csi-node
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- with .Values.node.updateStrategy }}
|
||||
updateStrategy:
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: efs-csi-node
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- with .Values.node.podLabels }}
|
||||
{{ toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.node.podAnnotations }}
|
||||
annotations: {{ toYaml .Values.node.podAnnotations | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.node.hostAliases }}
|
||||
hostAliases:
|
||||
{{- range $k, $v := . }}
|
||||
- ip: {{ $v.ip }}
|
||||
hostnames:
|
||||
- {{ $k }}.efs.{{ $v.region }}.amazonaws.com
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
hostNetwork: true
|
||||
dnsPolicy: {{ .Values.node.dnsPolicy }}
|
||||
{{- with .Values.node.dnsConfig }}
|
||||
dnsConfig: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ .Values.node.serviceAccount.name }}
|
||||
priorityClassName: {{ .Values.node.priorityClassName}}
|
||||
{{- with .Values.node.tolerations }}
|
||||
tolerations: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: efs-plugin
|
||||
securityContext:
|
||||
privileged: true
|
||||
image: {{ printf "%s:%s" .Values.image.repository (default (printf "v%s" .Chart.AppVersion) (toString .Values.image.tag)) }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
args:
|
||||
- --endpoint=$(CSI_ENDPOINT)
|
||||
- --logtostderr
|
||||
- --v={{ .Values.node.logLevel }}
|
||||
- --vol-metrics-opt-in={{ hasKey .Values.node "volMetricsOptIn" | ternary .Values.node.volMetricsOptIn false }}
|
||||
- --vol-metrics-refresh-period={{ hasKey .Values.node "volMetricsRefreshPeriod" | ternary .Values.node.volMetricsRefreshPeriod 240 }}
|
||||
- --vol-metrics-fs-rate-limit={{ hasKey .Values.node "volMetricsFsRateLimit" | ternary .Values.node.volMetricsFsRateLimit 5 }}
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:/csi/csi.sock
|
||||
- name: CSI_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
{{- if .Values.useFIPS }}
|
||||
- name: AWS_USE_FIPS_ENDPOINT
|
||||
value: "true"
|
||||
{{- end }}
|
||||
- name: PORT_RANGE_UPPER_BOUND
|
||||
value: "{{ .Values.portRangeUpperBound }}"
|
||||
{{- with .Values.node.env }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: kubelet-dir
|
||||
mountPath: {{ .Values.node.kubeletPath }}
|
||||
mountPropagation: "Bidirectional"
|
||||
- name: plugin-dir
|
||||
mountPath: /csi
|
||||
- name: efs-state-dir
|
||||
mountPath: /var/run/efs
|
||||
- name: efs-utils-config
|
||||
mountPath: /var/amazon/efs
|
||||
- name: efs-utils-config-legacy
|
||||
mountPath: /etc/amazon/efs-legacy
|
||||
{{- with .Values.node.volumeMounts }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: healthz
|
||||
containerPort: {{ .Values.node.healthPort }}
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 10
|
||||
timeoutSeconds: 3
|
||||
periodSeconds: 2
|
||||
failureThreshold: 5
|
||||
{{- with .Values.node.resources }}
|
||||
resources: {{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
- name: csi-driver-registrar
|
||||
image: {{ printf "%s:%s" .Values.sidecars.nodeDriverRegistrar.image.repository .Values.sidecars.nodeDriverRegistrar.image.tag }}
|
||||
imagePullPolicy: {{ .Values.sidecars.nodeDriverRegistrar.image.pullPolicy }}
|
||||
args:
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --v={{ .Values.node.logLevel }}
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
- name: DRIVER_REG_SOCK_PATH
|
||||
value: {{ printf "%s/plugins/efs.csi.aws.com/csi.sock" (trimSuffix "/" .Values.node.kubeletPath) }}
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
volumeMounts:
|
||||
- name: plugin-dir
|
||||
mountPath: /csi
|
||||
- name: registration-dir
|
||||
mountPath: /registration
|
||||
{{- with .Values.sidecars.nodeDriverRegistrar.resources }}
|
||||
resources: {{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.nodeDriverRegistrar.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
- name: liveness-probe
|
||||
image: {{ printf "%s:%s" .Values.sidecars.livenessProbe.image.repository .Values.sidecars.livenessProbe.image.tag }}
|
||||
imagePullPolicy: {{ .Values.sidecars.livenessProbe.image.pullPolicy }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --health-port={{ .Values.node.healthPort }}
|
||||
- --v={{ .Values.node.logLevel }}
|
||||
volumeMounts:
|
||||
- name: plugin-dir
|
||||
mountPath: /csi
|
||||
{{- with .Values.sidecars.livenessProbe.resources }}
|
||||
resources: {{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.livenessProbe.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: kubelet-dir
|
||||
hostPath:
|
||||
path: {{ .Values.node.kubeletPath }}
|
||||
type: Directory
|
||||
- name: plugin-dir
|
||||
hostPath:
|
||||
path: {{ printf "%s/plugins/efs.csi.aws.com/" (trimSuffix "/" .Values.node.kubeletPath) }}
|
||||
type: DirectoryOrCreate
|
||||
- name: registration-dir
|
||||
hostPath:
|
||||
path: {{ printf "%s/plugins_registry/" (trimSuffix "/" .Values.node.kubeletPath) }}
|
||||
type: Directory
|
||||
- name: efs-state-dir
|
||||
hostPath:
|
||||
path: /var/run/efs
|
||||
type: DirectoryOrCreate
|
||||
- name: efs-utils-config
|
||||
hostPath:
|
||||
path: /var/amazon/efs
|
||||
type: DirectoryOrCreate
|
||||
- name: efs-utils-config-legacy
|
||||
hostPath:
|
||||
path: /etc/amazon/efs
|
||||
type: DirectoryOrCreate
|
||||
{{- with .Values.node.volumes }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,40 @@
|
||||
{{- if .Values.node.serviceAccount.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.node.serviceAccount.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
{{- with .Values.node.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
---
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: efs-csi-node-role
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes"]
|
||||
verbs: ["get", "list", "watch", "patch"]
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: efs-csi-node-binding
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.node.serviceAccount.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: efs-csi-node-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
{{- range .Values.storageClasses }}
|
||||
kind: StorageClass
|
||||
apiVersion: storage.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ .name }}
|
||||
{{- with .annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
provisioner: efs.csi.aws.com
|
||||
{{- with .mountOptions }}
|
||||
mountOptions:
|
||||
{{ toYaml . }}
|
||||
{{- end }}
|
||||
{{- with .parameters }}
|
||||
parameters:
|
||||
{{ toYaml . | indent 2 }}
|
||||
{{- end }}
|
||||
{{- with .reclaimPolicy }}
|
||||
reclaimPolicy: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .volumeBindingMode }}
|
||||
volumeBindingMode: {{ . }}
|
||||
{{- end }}
|
||||
---
|
||||
{{- end }}
|
||||
237
backing-services/aws-efs-csi-driver/values.yaml
Normal file
237
backing-services/aws-efs-csi-driver/values.yaml
Normal file
@@ -0,0 +1,237 @@
|
||||
# Default values for aws-efs-csi-driver.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
|
||||
nameOverride: ""
|
||||
fullnameOverride: ""
|
||||
|
||||
useFIPS: false
|
||||
|
||||
portRangeUpperBound: "21049"
|
||||
|
||||
image:
|
||||
repository: public.ecr.aws/efs-csi-driver/amazon/aws-efs-csi-driver
|
||||
tag: "v2.1.4"
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
sidecars:
|
||||
livenessProbe:
|
||||
image:
|
||||
repository: public.ecr.aws/eks-distro/kubernetes-csi/livenessprobe
|
||||
tag: v2.14.0-eks-1-31-5
|
||||
pullPolicy: IfNotPresent
|
||||
resources: {}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
nodeDriverRegistrar:
|
||||
image:
|
||||
repository: public.ecr.aws/eks-distro/kubernetes-csi/node-driver-registrar
|
||||
tag: v2.12.0-eks-1-31-5
|
||||
pullPolicy: IfNotPresent
|
||||
resources: {}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
csiProvisioner:
|
||||
image:
|
||||
repository: public.ecr.aws/eks-distro/kubernetes-csi/external-provisioner
|
||||
tag: v5.1.0-eks-1-31-5
|
||||
pullPolicy: IfNotPresent
|
||||
resources: {}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
additionalArgs: []
|
||||
|
||||
imagePullSecrets: []
|
||||
|
||||
## Controller deployment variables
|
||||
|
||||
controller:
|
||||
# Specifies whether a deployment should be created
|
||||
create: true
|
||||
# Name of the CSI controller service
|
||||
name: efs-csi-controller
|
||||
# Number of replicas for the CSI controller service deployment
|
||||
replicaCount: 2
|
||||
# Number for the log level verbosity
|
||||
logLevel: 2
|
||||
# If set, add pv/pvc metadata to plugin create requests as parameters.
|
||||
extraCreateMetadata: true
|
||||
# Add additional tags to access points
|
||||
tags:
|
||||
{}
|
||||
# environment: prod
|
||||
# region: us-east-1
|
||||
# Enable if you want the controller to also delete the
|
||||
# path on efs when deleteing an access point
|
||||
deleteAccessPointRootDir: false
|
||||
podAnnotations: {}
|
||||
podLabels: {}
|
||||
hostNetwork: false
|
||||
priorityClassName: system-cluster-critical
|
||||
dnsPolicy: ClusterFirst
|
||||
dnsConfig: {}
|
||||
additionalLabels: {}
|
||||
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 do 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
|
||||
nodeSelector: {}
|
||||
updateStrategy: {}
|
||||
tolerations:
|
||||
- key: CriticalAddonsOnly
|
||||
operator: Exists
|
||||
- key: efs.csi.aws.com/agent-not-ready
|
||||
operator: Exists
|
||||
affinity: {}
|
||||
env: []
|
||||
volumes: []
|
||||
volumeMounts: []
|
||||
# Specifies whether a service account should be created
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-controller-sa
|
||||
annotations: {}
|
||||
## Enable if EKS IAM for SA is used
|
||||
# eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/efs-csi-role
|
||||
healthPort: 9909
|
||||
regionalStsEndpoints: false
|
||||
# Pod Disruption Budget
|
||||
podDisruptionBudget:
|
||||
enabled: false
|
||||
# maxUnavailable: 1
|
||||
minAvailable: 1
|
||||
unhealthyPodEvictionPolicy: IfHealthyBudget
|
||||
# securityContext on the controller pod
|
||||
securityContext:
|
||||
runAsNonRoot: false
|
||||
runAsUser: 0
|
||||
runAsGroup: 0
|
||||
fsGroup: 0
|
||||
# securityContext on the controller container
|
||||
# Setting privileged=false will cause the "delete-access-point-root-dir" controller option to fail
|
||||
containerSecurityContext:
|
||||
privileged: true
|
||||
leaderElectionRenewDeadline: 10s
|
||||
leaderElectionLeaseDuration: 15s
|
||||
# TSCs without the label selector stanza
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# topologySpreadConstraints:
|
||||
# - maxSkew: 1
|
||||
# topologyKey: topology.kubernetes.io/zone
|
||||
# whenUnsatisfiable: ScheduleAnyway
|
||||
# - maxSkew: 1
|
||||
# topologyKey: kubernetes.io/hostname
|
||||
# whenUnsatisfiable: ScheduleAnyway
|
||||
topologySpreadConstraints: []
|
||||
|
||||
## Node daemonset variables
|
||||
|
||||
node:
|
||||
# Number for the log level verbosity
|
||||
logLevel: 2
|
||||
volMetricsOptIn: false
|
||||
volMetricsRefreshPeriod: 240
|
||||
volMetricsFsRateLimit: 5
|
||||
hostAliases:
|
||||
{}
|
||||
# For cross VPC EFS, you need to poison or overwrite the DNS for the efs volume as per
|
||||
# https://docs.aws.amazon.com/efs/latest/ug/efs-different-vpc.html#wt6-efs-utils-step3
|
||||
# implementing the suggested solution found here:
|
||||
# https://github.com/kubernetes-sigs/aws-efs-csi-driver/issues/240#issuecomment-676849346
|
||||
# EFS Vol ID, IP, Region
|
||||
# "fs-01234567":
|
||||
# ip: 10.10.2.2
|
||||
# region: us-east-2
|
||||
priorityClassName: system-node-critical
|
||||
dnsPolicy: ClusterFirst
|
||||
dnsConfig:
|
||||
{}
|
||||
# Example config which uses the AWS nameservers
|
||||
# dnsPolicy: "None"
|
||||
# dnsConfig:
|
||||
# nameservers:
|
||||
# - 169.254.169.253
|
||||
podLabels: {}
|
||||
podAnnotations: {}
|
||||
additionalLabels: {}
|
||||
resources:
|
||||
{}
|
||||
# limits:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
# requests:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
nodeSelector: {}
|
||||
updateStrategy:
|
||||
{}
|
||||
# Override default strategy (RollingUpdate) to speed up deployment.
|
||||
# This can be useful if helm timeouts are observed.
|
||||
# type: OnDelete
|
||||
tolerations:
|
||||
- operator: Exists
|
||||
affinity:
|
||||
nodeAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: eks.amazonaws.com/compute-type
|
||||
operator: NotIn
|
||||
values:
|
||||
- fargate
|
||||
- hybrid
|
||||
# Specifies whether a service account should be created
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-node-sa
|
||||
annotations: {}
|
||||
## Enable if EKS IAM for SA is used
|
||||
# eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/efs-csi-role
|
||||
healthPort: 9809
|
||||
# securityContext on the node pod
|
||||
securityContext:
|
||||
# The node pod must be run as root to bind to the registration/driver sockets
|
||||
runAsNonRoot: false
|
||||
runAsUser: 0
|
||||
runAsGroup: 0
|
||||
fsGroup: 0
|
||||
env: []
|
||||
volumes: []
|
||||
volumeMounts: []
|
||||
kubeletPath: /var/lib/kubelet
|
||||
|
||||
storageClasses: []
|
||||
# Add StorageClass resources like:
|
||||
# - name: efs-sc
|
||||
# annotations:
|
||||
# # Use that annotation if you want this to your default storageclass
|
||||
# storageclass.kubernetes.io/is-default-class: "true"
|
||||
# mountOptions:
|
||||
# - tls
|
||||
# parameters:
|
||||
# provisioningMode: efs-ap
|
||||
# fileSystemId: fs-1122aabb
|
||||
# directoryPerms: "700"
|
||||
# gidRangeStart: "1000"
|
||||
# gidRangeEnd: "2000"
|
||||
# basePath: "/dynamic_provisioning"
|
||||
# subPathPattern: "/subPath"
|
||||
# ensureUniqueDirectory: true
|
||||
# reclaimPolicy: Delete
|
||||
# volumeBindingMode: Immediate
|
||||
|
||||
# Specifies wether to use helm hooks to apply the CSI driver
|
||||
useHelmHooksForCSIDriver: true
|
||||
22
backing-services/aws-efs-csi-driverOLD/.helmignore
Normal file
22
backing-services/aws-efs-csi-driverOLD/.helmignore
Normal file
@@ -0,0 +1,22 @@
|
||||
# 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
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
231
backing-services/aws-efs-csi-driverOLD/CHANGELOG.md
Normal file
231
backing-services/aws-efs-csi-driverOLD/CHANGELOG.md
Normal file
@@ -0,0 +1,231 @@
|
||||
# Helm chart
|
||||
# v3.0.8
|
||||
* Bump app/driver version to `v2.0.7`
|
||||
# v3.0.7
|
||||
* Bump app/driver version to `v2.0.6`
|
||||
# v3.0.6
|
||||
* Bump app/driver version to `v2.0.5`
|
||||
# v3.0.5
|
||||
* Bump app/driver version to `v2.0.4`
|
||||
# v3.0.4
|
||||
* Bump app/driver version to `v2.0.3`
|
||||
# v3.0.3
|
||||
* Bump app/driver version to `v2.0.2`
|
||||
# v3.0.2
|
||||
* Update Helm to use the image from Public ECR rather than DockerHub
|
||||
# v3.0.1
|
||||
* Bump app/driver version to `v2.0.1`
|
||||
# v3.0.0
|
||||
* Bump app/driver version to `v2.0.0`
|
||||
# v2.5.7
|
||||
* Bump app/driver version to `v1.7.7`
|
||||
# v2.5.6
|
||||
* Bump app/driver version to `v1.7.6`
|
||||
# v2.5.5
|
||||
* Bump app/driver version to `v1.7.5`
|
||||
# v2.5.4
|
||||
* Bump app/driver version to `v1.7.4`
|
||||
# v2.5.3
|
||||
* Bump app/driver version to `v1.7.3`
|
||||
# v2.5.2
|
||||
* Bump app/driver version to `v1.7.2`
|
||||
# v2.5.1
|
||||
* Bump app/driver version to `v1.7.1`
|
||||
# v2.5.0
|
||||
* Bump app/driver version to `v1.7.0`
|
||||
# v2.4.9
|
||||
* Bump app/driver version to `v1.6.0`
|
||||
# v2.4.8
|
||||
* Bump app/driver version to `v1.5.9`
|
||||
# v2.4.7
|
||||
* Bump app/driver version to `v1.5.8`
|
||||
# v2.4.6
|
||||
* Bump app/driver version to `v1.5.7`
|
||||
# v2.4.5
|
||||
* Bump helm version for change of state-dir path to avoid losing track of state files which exists already to `v2.4.5`
|
||||
# v2.4.4
|
||||
* Bump helm version to pick the latest side-car images `v2.4.4`
|
||||
# v2.4.3
|
||||
* Bump app/driver version to `v1.5.6`
|
||||
# v2.4.2
|
||||
* Bump app/driver version to `v1.5.5`
|
||||
# v2.4.1
|
||||
* Bump app/driver version to `v1.5.4`
|
||||
# v2.4.0
|
||||
* Bump app/driver version to `v1.5.3`
|
||||
# v2.3.9
|
||||
* Bump app/driver version to `v1.5.2`
|
||||
# v2.3.8
|
||||
* Bump app/driver version to `v1.5.1`
|
||||
# v2.3.7
|
||||
* Bump app/driver version to `v1.5.0`
|
||||
# v2.3.6
|
||||
* Bump app/driver version to `v1.4.9`
|
||||
# v2.3.5
|
||||
* Bump app/driver version to `v1.4.8`
|
||||
|
||||
# v2.3.4
|
||||
* Bump app/driver version to `v1.4.7`
|
||||
|
||||
# v2.3.3
|
||||
* Bump app/driver version to `v1.4.6`
|
||||
|
||||
# v2.3.2
|
||||
* Bump app/driver version to `v1.4.5`
|
||||
|
||||
# v2.3.1
|
||||
* Bump app/driver version to `v1.4.4`
|
||||
|
||||
# v2.3.0
|
||||
* Bump app/driver version to `v1.4.3`
|
||||
|
||||
# v2.2.9
|
||||
* Bump app/driver version to `v1.4.2`
|
||||
|
||||
# v2.2.8
|
||||
* Bump app/driver version to `v1.4.1`
|
||||
|
||||
# v2.2.7
|
||||
* Bump app/driver version to `v1.4.0`
|
||||
# v2.2.6
|
||||
* Bump app/driver version to `v1.3.8`
|
||||
|
||||
# v2.2.5
|
||||
* Bump app/driver version to `v1.3.7`
|
||||
|
||||
# v2.2.4
|
||||
* Add STS regional endpoints flag to fix PV creation on private EKS
|
||||
|
||||
# v2.2.3
|
||||
* Bump app/driver version to `v1.3.6`
|
||||
|
||||
# v2.2.2
|
||||
* Add controller.volMetricsOptIn for emitting volume metrics
|
||||
* Update ECR sidecars to 1-18-13
|
||||
|
||||
# v2.2.1
|
||||
* Bump app/driver version to `v1.3.5`
|
||||
|
||||
# v2.2.0
|
||||
* Allow health ports to be configured
|
||||
* Add Missing "patch" permission for "events"
|
||||
|
||||
# v2.1.6
|
||||
* Bump app/driver version to `v1.3.4`
|
||||
|
||||
# v2.1.5
|
||||
* Bump app/driver version to `v1.3.3`
|
||||
|
||||
# v2.1.4
|
||||
* Add node.serviceAccount values for creating and/or specifying daemonset service account
|
||||
|
||||
# v2.1.3
|
||||
* Bump app/driver version to `v1.3.2`
|
||||
|
||||
# v2.1.2
|
||||
* Add extra-create-metadata
|
||||
|
||||
# v2.1.1
|
||||
* Update app/driver version to `v1.3.1`
|
||||
|
||||
# v2.1.0
|
||||
|
||||
## New features
|
||||
* Update app/driver version to `v1.3.0`
|
||||
|
||||
## Bug fixes
|
||||
* Put comments back in place inside the values file ([#475](https://github.com/kubernetes-sigs/aws-efs-csi-driver/pull/475), [@pierluigilenoci](https://github.com/pierluigilenoci))
|
||||
|
||||
# v2.0.1
|
||||
|
||||
## Bug fixes
|
||||
* Helm chart: fix reclaimPolicy and volumeBindingMode ([#464](https://github.com/kubernetes-sigs/aws-efs-csi-driver/pull/464), [@devinsmith911](https://github.com/devinsmith911))
|
||||
|
||||
|
||||
# v2.0.0
|
||||
|
||||
## Breaking changes
|
||||
|
||||
Multiple changes in values file at `sidecars`, `controller` and `node`
|
||||
|
||||
---
|
||||
```yaml
|
||||
sidecars:
|
||||
xxxxxxxxx:
|
||||
repository:
|
||||
tag:
|
||||
```
|
||||
|
||||
Moving to
|
||||
|
||||
```yaml
|
||||
sidecars:
|
||||
xxxxxxxxx:
|
||||
image:
|
||||
repository:
|
||||
tag:
|
||||
```
|
||||
|
||||
---
|
||||
```yaml
|
||||
podAnnotations:
|
||||
resources:
|
||||
nodeSelector:
|
||||
tolerations:
|
||||
affinity:
|
||||
```
|
||||
|
||||
Moving to
|
||||
|
||||
```yaml
|
||||
controller:
|
||||
podAnnotations:
|
||||
resources:
|
||||
nodeSelector:
|
||||
tolerations:
|
||||
affinity:
|
||||
```
|
||||
|
||||
---
|
||||
```yaml
|
||||
hostAliases:
|
||||
dnsPolicy:
|
||||
dnsConfig:
|
||||
```
|
||||
|
||||
Moving to
|
||||
|
||||
```yaml
|
||||
node:
|
||||
hostAliases:
|
||||
dnsPolicy:
|
||||
dnsConfig:
|
||||
```
|
||||
|
||||
---
|
||||
```yaml
|
||||
serviceAccount:
|
||||
controller:
|
||||
```
|
||||
|
||||
Moving to
|
||||
|
||||
```yaml
|
||||
controller:
|
||||
serviceAccount:
|
||||
```
|
||||
|
||||
## New features
|
||||
|
||||
* Chart API `v2` (requires Helm 3)
|
||||
* Set `resources` and `imagePullPolicy` fields independently for containers
|
||||
* Set `logLevel`, `affinity`, `nodeSelector`, `podAnnotations` and `tolerations` fields independently
|
||||
for Controller deployment and Node daemonset
|
||||
* Set `reclaimPolicy` and `volumeBindingMode` fields in storage class
|
||||
|
||||
## Fixes
|
||||
|
||||
* Fixing Controller deployment using `podAnnotations` and `tolerations` values from Node daemonset
|
||||
* Let the user define the whole `tolerations` array, default to `- operator: Exists`
|
||||
* Default `logLevel` lowered from `5` to `2`
|
||||
* Default `imagePullPolicy` everywhere set to `IfNotPresent`
|
||||
18
backing-services/aws-efs-csi-driverOLD/Chart.yaml
Normal file
18
backing-services/aws-efs-csi-driverOLD/Chart.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
apiVersion: v2
|
||||
appVersion: 2.0.7
|
||||
description: A Helm chart for AWS EFS CSI Driver
|
||||
home: https://github.com/kubernetes-sigs/aws-efs-csi-driver
|
||||
keywords:
|
||||
- aws
|
||||
- efs
|
||||
- csi
|
||||
kubeVersion: '>=1.17.0-0'
|
||||
maintainers:
|
||||
- name: leakingtapan
|
||||
url: https://github.com/leakingtapan
|
||||
- name: krmichel
|
||||
url: https://github.com/krmichel
|
||||
name: aws-efs-csi-driver
|
||||
sources:
|
||||
- https://github.com/kubernetes-sigs/aws-efs-csi-driver
|
||||
version: 3.0.8
|
||||
@@ -0,0 +1,28 @@
|
||||
controller:
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-node-sa
|
||||
|
||||
node:
|
||||
# Specifies whether a service account should be created
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-node-sa
|
||||
annotations:
|
||||
## Enable if EKS IAM for SA is used
|
||||
eks.amazonaws.com/role-arn: "arn:aws:iam::667294666490:role/auction-cluster-20241126163757775000000001"
|
||||
|
||||
storageClasses:
|
||||
- name: efs-sc
|
||||
annotations:
|
||||
storageclass.kubernetes.io/is-default-class: "true"
|
||||
mountOptions:
|
||||
- tls
|
||||
parameters:
|
||||
provisioningMode: efs-ap
|
||||
fileSystemId: fs-09f60032cda93f18a
|
||||
directoryPerms: "700"
|
||||
gidRangeStart: "1000"
|
||||
gidRangeEnd: "2000"
|
||||
reclaimPolicy: Delete
|
||||
volumeBindingMode: Immediate
|
||||
@@ -0,0 +1,28 @@
|
||||
controller:
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-node-sa
|
||||
|
||||
node:
|
||||
# Specifies whether a service account should be created
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-node-sa
|
||||
annotations:
|
||||
## Enable if EKS IAM for SA is used
|
||||
eks.amazonaws.com/role-arn: "arn:aws:iam::889565812003:role/schoolbuses-cluster-20241110104436981500000002"
|
||||
|
||||
storageClasses:
|
||||
- name: efs-sc
|
||||
annotations:
|
||||
storageclass.kubernetes.io/is-default-class: "true"
|
||||
mountOptions:
|
||||
- tls
|
||||
parameters:
|
||||
provisioningMode: efs-ap
|
||||
fileSystemId: fs-0a434a5de93866ab1
|
||||
directoryPerms: "700"
|
||||
gidRangeStart: "1000"
|
||||
gidRangeEnd: "2000"
|
||||
reclaimPolicy: Delete
|
||||
volumeBindingMode: Immediate
|
||||
@@ -0,0 +1,28 @@
|
||||
controller:
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-controller-sa
|
||||
|
||||
node:
|
||||
# Specifies whether a service account should be created
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-node-sa
|
||||
annotations:
|
||||
## Enable if EKS IAM for SA is used
|
||||
eks.amazonaws.com/role-arn: arn:aws:iam::889565812003:role/schoolbuses_Cluster_IAM
|
||||
|
||||
storageClasses:
|
||||
- name: efs-sc
|
||||
annotations:
|
||||
storageclass.kubernetes.io/is-default-class: "true"
|
||||
mountOptions:
|
||||
- tls
|
||||
parameters:
|
||||
provisioningMode: efs-ap
|
||||
fileSystemId: fs-08694c721b539abe2
|
||||
directoryPerms: "700"
|
||||
gidRangeStart: "1000"
|
||||
gidRangeEnd: "2000"
|
||||
reclaimPolicy: Delete
|
||||
volumeBindingMode: Immediate
|
||||
@@ -0,0 +1,3 @@
|
||||
To verify that aws-efs-csi-driver has started, run:
|
||||
|
||||
kubectl get pod -n {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "aws-efs-csi-driver.name" . }},app.kubernetes.io/instance={{ .Release.Name }}"
|
||||
@@ -0,0 +1,56 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "aws-efs-csi-driver.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- 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.
|
||||
*/}}
|
||||
{{- define "aws-efs-csi-driver.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "aws-efs-csi-driver.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "aws-efs-csi-driver.labels" -}}
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
helm.sh/chart: {{ include "aws-efs-csi-driver.chart" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a string out of the map for controller tags flag
|
||||
*/}}
|
||||
{{- define "aws-efs-csi-driver.tags" -}}
|
||||
{{- $tags := list -}}
|
||||
{{ range $key, $val := . }}
|
||||
{{- $tags = print $key ":" $val | append $tags -}}
|
||||
{{- end -}}
|
||||
{{- join " " $tags -}}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,178 @@
|
||||
{{- if .Values.controller.create }}
|
||||
# Controller Service
|
||||
kind: Deployment
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: efs-csi-controller
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
{{- with .Values.controller.additionalLabels }}
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: efs-csi-controller
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- with .Values.controller.updateStrategy }}
|
||||
strategy:
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: efs-csi-controller
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- with .Values.controller.podLabels }}
|
||||
{{ toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.podAnnotations }}
|
||||
annotations: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if hasKey .Values.controller "hostNetwork" }}
|
||||
hostNetwork: {{ .Values.controller.hostNetwork }}
|
||||
{{- end }}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
{{- with .Values.controller.nodeSelector }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ .Values.controller.serviceAccount.name }}
|
||||
priorityClassName: {{ .Values.controller.priorityClassName | default "system-cluster-critical" }}
|
||||
{{- with .Values.controller.tolerations }}
|
||||
tolerations: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.controller.dnsPolicy }}
|
||||
dnsPolicy: {{ .Values.controller.dnsPolicy }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.dnsConfig }}
|
||||
dnsConfig: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: efs-plugin
|
||||
{{- with .Values.controller.containerSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
image: {{ printf "%s:%s" .Values.image.repository (default (printf "v%s" .Chart.AppVersion) (toString .Values.image.tag)) }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
args:
|
||||
- --endpoint=$(CSI_ENDPOINT)
|
||||
- --logtostderr
|
||||
{{- if .Values.controller.tags }}
|
||||
- --tags={{ include "aws-efs-csi-driver.tags" .Values.controller.tags }}
|
||||
{{- end }}
|
||||
- --v={{ .Values.controller.logLevel }}
|
||||
- --delete-access-point-root-dir={{ hasKey .Values.controller "deleteAccessPointRootDir" | ternary .Values.controller.deleteAccessPointRootDir false }}
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:///var/lib/csi/sockets/pluginproxy/csi.sock
|
||||
{{- if .Values.controller.regionalStsEndpoints }}
|
||||
- name: AWS_STS_REGIONAL_ENDPOINTS
|
||||
value: regional
|
||||
{{- end }}
|
||||
- name: CSI_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
{{- if .Values.useFIPS }}
|
||||
- name: AWS_USE_FIPS_ENDPOINT
|
||||
value: "true"
|
||||
{{- end }}
|
||||
{{- with .Values.controller.env }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /var/lib/csi/sockets/pluginproxy/
|
||||
{{- with .Values.controller.volumeMounts }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: healthz
|
||||
containerPort: {{ .Values.controller.healthPort }}
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 10
|
||||
timeoutSeconds: 3
|
||||
periodSeconds: 10
|
||||
failureThreshold: 5
|
||||
{{- with .Values.controller.resources }}
|
||||
resources: {{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
- name: csi-provisioner
|
||||
image: {{ printf "%s:%s" .Values.sidecars.csiProvisioner.image.repository .Values.sidecars.csiProvisioner.image.tag }}
|
||||
imagePullPolicy: {{ .Values.sidecars.csiProvisioner.image.pullPolicy }}
|
||||
args:
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --v={{ .Values.controller.logLevel }}
|
||||
- --feature-gates=Topology=true
|
||||
{{- if .Values.controller.extraCreateMetadata }}
|
||||
- --extra-create-metadata
|
||||
{{- end }}
|
||||
- --leader-election
|
||||
{{- if hasKey .Values.controller "leaderElectionRenewDeadline" }}
|
||||
- --leader-election-renew-deadline={{ .Values.controller.leaderElectionRenewDeadline }}
|
||||
{{- end }}
|
||||
{{- if hasKey .Values.controller "leaderElectionLeaseDuration" }}
|
||||
- --leader-election-lease-duration={{ .Values.controller.leaderElectionLeaseDuration }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /var/lib/csi/sockets/pluginproxy/csi.sock
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /var/lib/csi/sockets/pluginproxy/
|
||||
{{- with .Values.sidecars.csiProvisioner.resources }}
|
||||
resources: {{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.csiProvisioner.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
- name: liveness-probe
|
||||
image: {{ printf "%s:%s" .Values.sidecars.livenessProbe.image.repository .Values.sidecars.livenessProbe.image.tag }}
|
||||
imagePullPolicy: {{ .Values.sidecars.livenessProbe.image.pullPolicy }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --health-port={{ .Values.controller.healthPort }}
|
||||
volumeMounts:
|
||||
- name: socket-dir
|
||||
mountPath: /csi
|
||||
{{- with .Values.controller.volumeMounts }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.livenessProbe.resources }}
|
||||
resources: {{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.livenessProbe.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: socket-dir
|
||||
emptyDir: {}
|
||||
{{- with .Values.controller.volumes }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.controller.affinity }}
|
||||
affinity: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,86 @@
|
||||
{{- if .Values.controller.serviceAccount.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.controller.serviceAccount.name }}
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
{{- with .Values.controller.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
---
|
||||
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: efs-csi-external-provisioner-role
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumes"]
|
||||
verbs: ["get", "list", "watch", "create", "patch", "delete"]
|
||||
- apiGroups: [""]
|
||||
resources: ["persistentvolumeclaims"]
|
||||
verbs: ["get", "list", "watch", "update"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["storageclasses"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["events"]
|
||||
verbs: ["list", "watch", "create", "patch"]
|
||||
- apiGroups: ["storage.k8s.io"]
|
||||
resources: ["csinodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: ["coordination.k8s.io"]
|
||||
resources: ["leases"]
|
||||
verbs: ["get", "watch", "list", "delete", "update", "create"]
|
||||
---
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: efs-csi-external-provisioner-role-describe-secrets
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
rules:
|
||||
- apiGroups: [ "" ]
|
||||
resources: [ "secrets" ]
|
||||
resourceNames: ["x-account"]
|
||||
verbs: [ "get", "watch", "list" ]
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: efs-csi-provisioner-binding
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.controller.serviceAccount.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: efs-csi-external-provisioner-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
---
|
||||
# We use a RoleBinding to restrict Secret access to the namespace that the
|
||||
# RoleBinding is created in (typically kube-system)
|
||||
kind: RoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: efs-csi-provisioner-binding-describe-secrets
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.controller.serviceAccount.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: efs-csi-external-provisioner-role-describe-secrets
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
@@ -0,0 +1,10 @@
|
||||
apiVersion: {{ ternary "storage.k8s.io/v1" "storage.k8s.io/v1beta1" (semverCompare ">=1.18.0-0" .Capabilities.KubeVersion.Version) }}
|
||||
kind: CSIDriver
|
||||
metadata:
|
||||
name: efs.csi.aws.com
|
||||
annotations:
|
||||
"helm.sh/hook": pre-install, pre-upgrade
|
||||
"helm.sh/hook-delete-policy": before-hook-creation
|
||||
"helm.sh/resource-policy": keep
|
||||
spec:
|
||||
attachRequired: false
|
||||
@@ -0,0 +1,199 @@
|
||||
# Node Service
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: efs-csi-node
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
{{- with .Values.node.additionalLabels }}
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: efs-csi-node
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- with .Values.node.updateStrategy }}
|
||||
updateStrategy:
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: efs-csi-node
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- with .Values.node.podLabels }}
|
||||
{{ toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.node.podAnnotations }}
|
||||
annotations: {{ toYaml .Values.node.podAnnotations | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.node.hostAliases }}
|
||||
hostAliases:
|
||||
{{- range $k, $v := . }}
|
||||
- ip: {{ $v.ip }}
|
||||
hostnames:
|
||||
- {{ $k }}.efs.{{ $v.region }}.amazonaws.com
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
{{- with .Values.node.nodeSelector }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.affinity }}
|
||||
affinity: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
hostNetwork: true
|
||||
dnsPolicy: {{ .Values.node.dnsPolicy }}
|
||||
{{- with .Values.node.dnsConfig }}
|
||||
dnsConfig: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ .Values.node.serviceAccount.name }}
|
||||
priorityClassName: {{ .Values.node.priorityClassName}}
|
||||
{{- with .Values.node.tolerations }}
|
||||
tolerations: {{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.node.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: efs-plugin
|
||||
securityContext:
|
||||
privileged: true
|
||||
image: {{ printf "%s:%s" .Values.image.repository (default (printf "v%s" .Chart.AppVersion) (toString .Values.image.tag)) }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
args:
|
||||
- --endpoint=$(CSI_ENDPOINT)
|
||||
- --logtostderr
|
||||
- --v={{ .Values.node.logLevel }}
|
||||
- --vol-metrics-opt-in={{ hasKey .Values.node "volMetricsOptIn" | ternary .Values.node.volMetricsOptIn false }}
|
||||
- --vol-metrics-refresh-period={{ hasKey .Values.node "volMetricsRefreshPeriod" | ternary .Values.node.volMetricsRefreshPeriod 240 }}
|
||||
- --vol-metrics-fs-rate-limit={{ hasKey .Values.node "volMetricsFsRateLimit" | ternary .Values.node.volMetricsFsRateLimit 5 }}
|
||||
env:
|
||||
- name: CSI_ENDPOINT
|
||||
value: unix:/csi/csi.sock
|
||||
- name: CSI_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
{{- if .Values.useFIPS }}
|
||||
- name: AWS_USE_FIPS_ENDPOINT
|
||||
value: "true"
|
||||
{{- end }}
|
||||
{{- with .Values.node.env }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
volumeMounts:
|
||||
- name: kubelet-dir
|
||||
mountPath: /var/lib/kubelet
|
||||
mountPropagation: "Bidirectional"
|
||||
- name: plugin-dir
|
||||
mountPath: /csi
|
||||
- name: efs-state-dir
|
||||
mountPath: /var/run/efs
|
||||
- name: efs-utils-config
|
||||
mountPath: /var/amazon/efs
|
||||
- name: efs-utils-config-legacy
|
||||
mountPath: /etc/amazon/efs-legacy
|
||||
{{- with .Values.node.volumeMounts }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: healthz
|
||||
containerPort: {{ .Values.node.healthPort }}
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: healthz
|
||||
initialDelaySeconds: 10
|
||||
timeoutSeconds: 3
|
||||
periodSeconds: 2
|
||||
failureThreshold: 5
|
||||
{{- with .Values.node.resources }}
|
||||
resources: {{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
- name: csi-driver-registrar
|
||||
image: {{ printf "%s:%s" .Values.sidecars.nodeDriverRegistrar.image.repository .Values.sidecars.nodeDriverRegistrar.image.tag }}
|
||||
imagePullPolicy: {{ .Values.sidecars.nodeDriverRegistrar.image.pullPolicy }}
|
||||
args:
|
||||
- --csi-address=$(ADDRESS)
|
||||
- --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)
|
||||
- --v={{ .Values.node.logLevel }}
|
||||
env:
|
||||
- name: ADDRESS
|
||||
value: /csi/csi.sock
|
||||
- name: DRIVER_REG_SOCK_PATH
|
||||
value: /var/lib/kubelet/plugins/efs.csi.aws.com/csi.sock
|
||||
- name: KUBE_NODE_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
volumeMounts:
|
||||
- name: plugin-dir
|
||||
mountPath: /csi
|
||||
- name: registration-dir
|
||||
mountPath: /registration
|
||||
{{- with .Values.sidecars.nodeDriverRegistrar.resources }}
|
||||
resources: {{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.nodeDriverRegistrar.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
- name: liveness-probe
|
||||
image: {{ printf "%s:%s" .Values.sidecars.livenessProbe.image.repository .Values.sidecars.livenessProbe.image.tag }}
|
||||
imagePullPolicy: {{ .Values.sidecars.livenessProbe.image.pullPolicy }}
|
||||
args:
|
||||
- --csi-address=/csi/csi.sock
|
||||
- --health-port={{ .Values.node.healthPort }}
|
||||
- --v={{ .Values.node.logLevel }}
|
||||
volumeMounts:
|
||||
- name: plugin-dir
|
||||
mountPath: /csi
|
||||
{{- with .Values.sidecars.livenessProbe.resources }}
|
||||
resources: {{ toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.sidecars.livenessProbe.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: kubelet-dir
|
||||
hostPath:
|
||||
path: /var/lib/kubelet
|
||||
type: Directory
|
||||
- name: plugin-dir
|
||||
hostPath:
|
||||
path: /var/lib/kubelet/plugins/efs.csi.aws.com/
|
||||
type: DirectoryOrCreate
|
||||
- name: registration-dir
|
||||
hostPath:
|
||||
path: /var/lib/kubelet/plugins_registry/
|
||||
type: Directory
|
||||
- name: efs-state-dir
|
||||
hostPath:
|
||||
path: /var/run/efs
|
||||
type: DirectoryOrCreate
|
||||
- name: efs-utils-config
|
||||
hostPath:
|
||||
path: /var/amazon/efs
|
||||
type: DirectoryOrCreate
|
||||
- name: efs-utils-config-legacy
|
||||
hostPath:
|
||||
path: /etc/amazon/efs
|
||||
type: DirectoryOrCreate
|
||||
{{- with .Values.node.volumes }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,39 @@
|
||||
{{- if .Values.node.serviceAccount.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ .Values.node.serviceAccount.name }}
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
{{- with .Values.node.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
---
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: efs-csi-node-role
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["nodes"]
|
||||
verbs: ["get", "list", "watch", "patch"]
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: efs-csi-node-binding
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "aws-efs-csi-driver.name" . }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Values.node.serviceAccount.name }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
roleRef:
|
||||
kind: ClusterRole
|
||||
name: efs-csi-node-role
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
{{- range .Values.storageClasses }}
|
||||
kind: StorageClass
|
||||
apiVersion: storage.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ .name }}
|
||||
{{- with .annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
provisioner: efs.csi.aws.com
|
||||
{{- with .mountOptions }}
|
||||
mountOptions:
|
||||
{{ toYaml . }}
|
||||
{{- end }}
|
||||
{{- with .parameters }}
|
||||
parameters:
|
||||
{{ toYaml . | indent 2 }}
|
||||
{{- end }}
|
||||
{{- with .reclaimPolicy }}
|
||||
reclaimPolicy: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .volumeBindingMode }}
|
||||
volumeBindingMode: {{ . }}
|
||||
{{- end }}
|
||||
---
|
||||
{{- end }}
|
||||
209
backing-services/aws-efs-csi-driverOLD/values.yaml
Normal file
209
backing-services/aws-efs-csi-driverOLD/values.yaml
Normal file
@@ -0,0 +1,209 @@
|
||||
# Default values for aws-efs-csi-driver.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
|
||||
nameOverride: ""
|
||||
fullnameOverride: ""
|
||||
|
||||
replicaCount: 2
|
||||
|
||||
useFIPS: false
|
||||
|
||||
image:
|
||||
repository: public.ecr.aws/efs-csi-driver/amazon/aws-efs-csi-driver
|
||||
tag: "v2.0.7"
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
sidecars:
|
||||
livenessProbe:
|
||||
image:
|
||||
repository: public.ecr.aws/eks-distro/kubernetes-csi/livenessprobe
|
||||
tag: v2.13.0-eks-1-30-8
|
||||
pullPolicy: IfNotPresent
|
||||
resources: {}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
nodeDriverRegistrar:
|
||||
image:
|
||||
repository: public.ecr.aws/eks-distro/kubernetes-csi/node-driver-registrar
|
||||
tag: v2.11.0-eks-1-30-8
|
||||
pullPolicy: IfNotPresent
|
||||
resources: {}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
csiProvisioner:
|
||||
image:
|
||||
repository: public.ecr.aws/eks-distro/kubernetes-csi/external-provisioner
|
||||
tag: v5.0.1-eks-1-30-8
|
||||
pullPolicy: IfNotPresent
|
||||
resources: {}
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
allowPrivilegeEscalation: false
|
||||
|
||||
imagePullSecrets: []
|
||||
|
||||
## Controller deployment variables
|
||||
|
||||
controller:
|
||||
# Specifies whether a deployment should be created
|
||||
create: true
|
||||
# Number for the log level verbosity
|
||||
logLevel: 2
|
||||
# If set, add pv/pvc metadata to plugin create requests as parameters.
|
||||
extraCreateMetadata: true
|
||||
# Add additional tags to access points
|
||||
tags:
|
||||
{}
|
||||
# environment: prod
|
||||
# region: us-east-1
|
||||
# Enable if you want the controller to also delete the
|
||||
# path on efs when deleteing an access point
|
||||
deleteAccessPointRootDir: false
|
||||
podAnnotations: {}
|
||||
podLabel: {}
|
||||
hostNetwork: false
|
||||
priorityClassName: system-cluster-critical
|
||||
dnsPolicy: ClusterFirst
|
||||
dnsConfig: {}
|
||||
additionalLabels: {}
|
||||
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 do 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
|
||||
nodeSelector: {}
|
||||
updateStrategy: {}
|
||||
tolerations:
|
||||
- key: CriticalAddonsOnly
|
||||
operator: Exists
|
||||
- key: efs.csi.aws.com/agent-not-ready
|
||||
operator: Exists
|
||||
affinity: {}
|
||||
env: []
|
||||
volumes: []
|
||||
volumeMounts: []
|
||||
# Specifies whether a service account should be created
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-controller-sa
|
||||
annotations: {}
|
||||
## Enable if EKS IAM for SA is used
|
||||
# eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/efs-csi-role
|
||||
healthPort: 9909
|
||||
regionalStsEndpoints: false
|
||||
# securityContext on the controller pod
|
||||
securityContext:
|
||||
runAsNonRoot: false
|
||||
runAsUser: 0
|
||||
runAsGroup: 0
|
||||
fsGroup: 0
|
||||
# securityContext on the controller container
|
||||
# Setting privileged=false will cause the "delete-access-point-root-dir" controller option to fail
|
||||
containerSecurityContext:
|
||||
privileged: true
|
||||
leaderElectionRenewDeadline: 10s
|
||||
leaderElectionLeaseDuration: 15s
|
||||
|
||||
|
||||
## Node daemonset variables
|
||||
|
||||
node:
|
||||
# Number for the log level verbosity
|
||||
logLevel: 2
|
||||
volMetricsOptIn: false
|
||||
volMetricsRefreshPeriod: 240
|
||||
volMetricsFsRateLimit: 5
|
||||
hostAliases:
|
||||
{}
|
||||
# For cross VPC EFS, you need to poison or overwrite the DNS for the efs volume as per
|
||||
# https://docs.aws.amazon.com/efs/latest/ug/efs-different-vpc.html#wt6-efs-utils-step3
|
||||
# implementing the suggested solution found here:
|
||||
# https://github.com/kubernetes-sigs/aws-efs-csi-driver/issues/240#issuecomment-676849346
|
||||
# EFS Vol ID, IP, Region
|
||||
# "fs-01234567":
|
||||
# ip: 10.10.2.2
|
||||
# region: us-east-2
|
||||
priorityClassName: system-node-critical
|
||||
dnsPolicy: ClusterFirst
|
||||
dnsConfig:
|
||||
{}
|
||||
# Example config which uses the AWS nameservers
|
||||
# dnsPolicy: "None"
|
||||
# dnsConfig:
|
||||
# nameservers:
|
||||
# - 169.254.169.253
|
||||
podLabels: {}
|
||||
podAnnotations: {}
|
||||
additionalLabels: {}
|
||||
resources:
|
||||
{}
|
||||
# limits:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
# requests:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
nodeSelector: {}
|
||||
updateStrategy: {}
|
||||
# Override default strategy (RollingUpdate) to speed up deployment.
|
||||
# This can be useful if helm timeouts are observed.
|
||||
# type: OnDelete
|
||||
tolerations:
|
||||
- operator: Exists
|
||||
affinity:
|
||||
nodeAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: eks.amazonaws.com/compute-type
|
||||
operator: NotIn
|
||||
values:
|
||||
- fargate
|
||||
# Specifies whether a service account should be created
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: efs-csi-node-sa
|
||||
annotations: {}
|
||||
## Enable if EKS IAM for SA is used
|
||||
# eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/efs-csi-role
|
||||
healthPort: 9809
|
||||
# securityContext on the node pod
|
||||
securityContext:
|
||||
# The node pod must be run as root to bind to the registration/driver sockets
|
||||
runAsNonRoot: false
|
||||
runAsUser: 0
|
||||
runAsGroup: 0
|
||||
fsGroup: 0
|
||||
env: []
|
||||
volumes: []
|
||||
volumeMounts: []
|
||||
|
||||
storageClasses: []
|
||||
# Add StorageClass resources like:
|
||||
# - name: efs-sc
|
||||
# annotations:
|
||||
# # Use that annotation if you want this to your default storageclass
|
||||
# storageclass.kubernetes.io/is-default-class: "true"
|
||||
# mountOptions:
|
||||
# - tls
|
||||
# parameters:
|
||||
# provisioningMode: efs-ap
|
||||
# fileSystemId: fs-1122aabb
|
||||
# directoryPerms: "700"
|
||||
# gidRangeStart: "1000"
|
||||
# gidRangeEnd: "2000"
|
||||
# basePath: "/dynamic_provisioning"
|
||||
# subPathPattern: "/subPath"
|
||||
# ensureUniqueDirectory: true
|
||||
# reclaimPolicy: Delete
|
||||
# volumeBindingMode: Immediate
|
||||
25
backing-services/aws-load-balancer-controller/.helmignore
Normal file
25
backing-services/aws-load-balancer-controller/.helmignore
Normal file
@@ -0,0 +1,25 @@
|
||||
# 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
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
crds/kustomization.yaml
|
||||
test.yaml
|
||||
22
backing-services/aws-load-balancer-controller/Chart.yaml
Normal file
22
backing-services/aws-load-balancer-controller/Chart.yaml
Normal file
@@ -0,0 +1,22 @@
|
||||
apiVersion: v2
|
||||
appVersion: v2.8.2
|
||||
description: AWS Load Balancer Controller Helm chart for Kubernetes
|
||||
home: https://github.com/aws/eks-charts
|
||||
icon: https://raw.githubusercontent.com/aws/eks-charts/master/docs/logo/aws.png
|
||||
keywords:
|
||||
- eks
|
||||
- alb
|
||||
- load balancer
|
||||
- ingress
|
||||
- nlb
|
||||
maintainers:
|
||||
- email: kishorj@users.noreply.github.com
|
||||
name: kishorj
|
||||
url: https://github.com/kishorj
|
||||
- email: m00nf1sh@users.noreply.github.com
|
||||
name: m00nf1sh
|
||||
url: https://github.com/m00nf1sh
|
||||
name: aws-load-balancer-controller
|
||||
sources:
|
||||
- https://github.com/aws/eks-charts
|
||||
version: 1.8.2
|
||||
283
backing-services/aws-load-balancer-controller/README.md
Normal file
283
backing-services/aws-load-balancer-controller/README.md
Normal file
@@ -0,0 +1,283 @@
|
||||
# AWS Load Balancer Controller
|
||||
|
||||
AWS Load Balancer controller Helm chart for Kubernetes
|
||||
|
||||
## TL;DR:
|
||||
```sh
|
||||
helm repo add eks https://aws.github.io/eks-charts
|
||||
# If using IAM Roles for service account install as follows - NOTE: you need to specify both of the chart values `serviceAccount.create=false` and `serviceAccount.name=aws-load-balancer-controller`
|
||||
helm install aws-load-balancer-controller eks/aws-load-balancer-controller --set clusterName=my-cluster -n kube-system --set serviceAccount.create=false --set serviceAccount.name=aws-load-balancer-controller
|
||||
# If not using IAM Roles for service account
|
||||
helm install aws-load-balancer-controller eks/aws-load-balancer-controller --set clusterName=my-cluster -n kube-system
|
||||
```
|
||||
|
||||
## Introduction
|
||||
AWS Load Balancer controller manages the following AWS resources
|
||||
- Application Load Balancers to satisfy Kubernetes ingress objects
|
||||
- Network Load Balancers to satisfy Kubernetes service objects of type LoadBalancer with appropriate annotations
|
||||
|
||||
## Security updates
|
||||
**Note**: Deployed chart does not receive security updates automatically. You need to manually upgrade to a newer chart.
|
||||
#### Node isolation
|
||||
As a security best practice, we recommend isolating the controller deployment pods to specific node groups which run critical components. The helm chart provides parameters ```nodeSelector```, ```tolerations``` and ```affinity``` to configure node isolation. For more information, please refer to the guidance [here](https://aws.github.io/aws-eks-best-practices/security/docs/multitenancy/#isolating-tenant-workloads-to-specific-nodes).
|
||||
|
||||
## Prerequisites
|
||||
- Supported Kubernetes Versions
|
||||
- Chart version v1.5.0+ requires Kubernetes 1.22+
|
||||
- Chart version v1.4.0+ requires Kubernetes 1.19+
|
||||
- Chart version v1.2.0 - v1.3.3 supports Kubernetes 1.16-1.21
|
||||
- Chart version v1.1.6 and before supports Kubernetes 1.15
|
||||
- IAM permissions
|
||||
- Helm v3
|
||||
- Optional dependencies
|
||||
- cert-manager
|
||||
- Prometheus Operator
|
||||
|
||||
The controller runs on the worker nodes, so it needs access to the AWS ALB/NLB resources via IAM permissions. The
|
||||
IAM permissions can either be setup via IAM roles for ServiceAccount or can be attached directly to the worker node IAM roles.
|
||||
|
||||
#### Setup IAM for ServiceAccount
|
||||
1. Create IAM OIDC provider
|
||||
```
|
||||
eksctl utils associate-iam-oidc-provider \
|
||||
--region <aws-region> \
|
||||
--cluster <your-cluster-name> \
|
||||
--approve
|
||||
```
|
||||
1. Download IAM policy for the AWS Load Balancer Controller
|
||||
```
|
||||
curl -o iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy.json
|
||||
```
|
||||
1. Create an IAM policy called AWSLoadBalancerControllerIAMPolicy
|
||||
```
|
||||
aws iam create-policy \
|
||||
--policy-name AWSLoadBalancerControllerIAMPolicy \
|
||||
--policy-document file://iam-policy.json
|
||||
```
|
||||
Take note of the policy ARN that is returned
|
||||
|
||||
1. Create a IAM role and ServiceAccount for the Load Balancer controller, use the ARN from the step above
|
||||
```
|
||||
eksctl create iamserviceaccount \
|
||||
--cluster=<cluster-name> \
|
||||
--namespace=kube-system \
|
||||
--name=aws-load-balancer-controller \
|
||||
--attach-policy-arn=arn:aws:iam::<AWS_ACCOUNT_ID>:policy/AWSLoadBalancerControllerIAMPolicy \
|
||||
--approve
|
||||
```
|
||||
#### Setup IAM manually
|
||||
If not setting up IAM for ServiceAccount, apply the IAM policies from the following URL at minimum.
|
||||
```
|
||||
https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/main/docs/install/iam_policy.json
|
||||
```
|
||||
|
||||
#### Upgrading from ALB ingress controller
|
||||
If migrating from ALB ingress controller, grant [additional IAM permissions](https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy_v1_to_v2_additional.json).
|
||||
|
||||
#### Upgrading from AWS Load Balancer controller v2.1.3 and earlier
|
||||
- Additional IAM permissions required, ensure you have granted the [required IAM permissions](https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy.json).
|
||||
- CRDs need to be updated as follows
|
||||
```shell script
|
||||
kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller//crds?ref=master"
|
||||
```
|
||||
- you can run helm upgrade without uninstalling the old chart completely
|
||||
|
||||
#### Installing cert-manager
|
||||
|
||||
If you are setting `enableCertManager: true` you need to have installed cert-manager and it's CRDs before installing this chart; to install [cert-manager](https://artifacthub.io/packages/helm/cert-manager/cert-manager) follow the installation guide.
|
||||
|
||||
The controller helm chart requires the cert-manager with apiVersion `cert-manager.io/v1`.
|
||||
|
||||
Set `cluster.dnsDomain` (default: `cluster.local`) to the actual DNS domain of your cluster to include the FQDN in requested TLS certificates.
|
||||
|
||||
#### Installing the Prometheus Operator
|
||||
|
||||
If you are setting `serviceMonitor.enabled: true` you need to have installed the Prometheus Operator ServiceMonitor CRD before installing this chart and have the operator running to collect the metrics. The easiest way to do this is to install the [kube-prometheus-stack](https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack) Helm chart using the installation guide.
|
||||
|
||||
## Installing the Chart
|
||||
**Note**: You need to uninstall aws-alb-ingress-controller. Please refer to the [upgrade](#Upgrade) section below before you proceed.
|
||||
|
||||
**Note**: Starting chart version 1.4.1, you need to explicitly set `clusterSecretsPermissions.allowAllSecrets` to true to grant the controller permission to access all secrets for OIDC feature. We recommend configuring access to individual secrets resource separately [[link](https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/examples/secrets_access/)].
|
||||
|
||||
**Note**: To ensure compatibility, we recommend installing the AWS Load Balancer controller image version with its compatible Helm chart version. Use the ```helm search repo eks/aws-load-balancer-controller --versions``` command to find the compatible versions.
|
||||
|
||||
Add the EKS repository to Helm:
|
||||
```shell script
|
||||
helm repo add eks https://aws.github.io/eks-charts
|
||||
```
|
||||
|
||||
Install the TargetGroupBinding CRDs:
|
||||
|
||||
```shell script
|
||||
kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller/crds?ref=master"
|
||||
```
|
||||
|
||||
Install the AWS Load Balancer controller, if using iamserviceaccount
|
||||
```shell script
|
||||
# NOTE: The clusterName value must be set either via the values.yaml or the Helm command line. The <k8s-cluster-name> in the command
|
||||
# below should be replaced with name of your k8s cluster before running it.
|
||||
helm upgrade -i aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system --set clusterName=<k8s-cluster-name> --set serviceAccount.create=false --set serviceAccount.name=aws-load-balancer-controller
|
||||
```
|
||||
|
||||
Install the AWS Load Balancer controller, if not using iamserviceaccount
|
||||
```shell script
|
||||
helm upgrade -i aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system --set clusterName=<k8s-cluster-name>
|
||||
```
|
||||
|
||||
## Upgrade
|
||||
The new controller is backwards compatible with the existing ingress objects. However, it will not coexist with the older aws-alb-ingress-controller.
|
||||
The old controller must be uninstalled completely before installing the new version.
|
||||
### Kubectl installation
|
||||
If you had installed the previous version via kubectl, uninstall as follows
|
||||
```shell script
|
||||
$ kubectl delete deployment -n kube-system alb-ingress-controller
|
||||
$ kubectl delete clusterRole alb-ingress-controller
|
||||
$ kubectl delete ClusterRoleBinding alb-ingress-controller
|
||||
$ kubectl delete ServiceAccount -n kube-system alb-ingress-controller
|
||||
|
||||
# Alternatively you can find the version of the controller and delete as follows
|
||||
$ kubectl describe deployment -n kube-system alb-ingress-controller |grep Image
|
||||
Image: docker.io/amazon/aws-alb-ingress-controller:v1.1.8
|
||||
# You can delete the deployment now
|
||||
$ kubectl delete deployment -n kube-system alb-ingress-controller
|
||||
# In this case, the version is v1.1.8, the rbac roles can be removed as follows
|
||||
$ kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/rbac-role.yaml
|
||||
```
|
||||
### Helm installation
|
||||
If you had installed the incubator/aws-alb-ingress-controller Helm chart, uninstall as follows
|
||||
```shell script
|
||||
# NOTE: If installed under a different chart name and namespace, please specify as appropriate
|
||||
$ helm delete aws-alb-ingress-controller -n kube-system
|
||||
```
|
||||
|
||||
If you had installed the 0.1.x version of eks-charts/aws-load-balancer-controller chart earlier, the upgrade to chart version 1.0.0 will
|
||||
not work due to incompatibility of the webhook api version, uninstall as follows
|
||||
```shell script
|
||||
$ helm delete aws-load-balancer-controller -n kube-system
|
||||
```
|
||||
|
||||
## Uninstalling the Chart
|
||||
```sh
|
||||
helm delete aws-load-balancer-controller -n kube-system
|
||||
```
|
||||
|
||||
If you setup IAM Roles for ServiceAccount, you can cleanup as follows
|
||||
```
|
||||
eksctl delete iamserviceaccount --cluster <cluster-name> --namespace kube-system --name aws-load-balancer-controller
|
||||
```
|
||||
|
||||
## HA configuration
|
||||
Chart release v1.2.0 and later enables high availability configuration by default.
|
||||
- The default number of replicas is 2. You can pass`--set replicaCount=1` flag during chart installation to disable this. Due to leader election, only one controller will actively reconcile resources.
|
||||
- The default priority class for the controller pods is `system-cluster-critical`
|
||||
- Soft pod anti-affinity is enabled for controller pods with `topologyKey: kubernetes.io/hostname` if you don't configure custom affinity and set `configureDefaultAffinity` to `true`
|
||||
- Pod disruption budget (PDB) has not been set by default. If you plan on running at least 2 controller pods, you can pass `--set podDisruptionBudget.maxUnavailable=1` flag during chart installation
|
||||
|
||||
## Configuration
|
||||
|
||||
The following tables lists the configurable parameters of the chart and their default values.
|
||||
The default values set by the application itself can be confirmed [here](https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/deploy/configurations/#controller-configuration-options).
|
||||
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
|
||||
| `image.repository` | image repository | `public.ecr.aws/eks/aws-load-balancer-controller` |
|
||||
| `image.tag` | image tag | `<VERSION>` |
|
||||
| `image.pullPolicy` | image pull policy | `IfNotPresent` |
|
||||
| `clusterName` | Kubernetes cluster name | None |
|
||||
| `cluster.dnsDomain` | DNS domain of the Kubernetes cluster, included in TLS certificate requests | `cluster.local` |
|
||||
| `securityContext` | Set to security context for pod | `{}` |
|
||||
| `resources` | Controller pod resource requests & limits | `{}` |
|
||||
| `priorityClassName` | Controller pod priority class | system-cluster-critical |
|
||||
| `nodeSelector` | Node labels for controller pod assignment | `{}` |
|
||||
| `tolerations` | Controller pod toleration for taints | `{}` |
|
||||
| `affinity` | Affinity for pod assignment | `{}` |
|
||||
| `configureDefaultAffinity` | Configure soft pod anti-affinity if custom affinity is not configured | `true` |
|
||||
| `topologySpreadConstraints` | Topology Spread Constraints for pod assignment | `{}` |
|
||||
| `deploymentAnnotations` | Annotations to add to deployment | `{}` |
|
||||
| `podAnnotations` | Annotations to add to each pod | `{}` |
|
||||
| `podLabels` | Labels to add to each pod | `{}` |
|
||||
| `additionalLabels` | Labels to add to all components | `{}` |
|
||||
| `rbac.create` | if `true`, create and use RBAC resources | `true` |
|
||||
| `serviceAccount.annotations` | optional annotations to add to service account | None |
|
||||
| `serviceAccount.automountServiceAccountToken` | Automount API credentials for a Service Account | `true` |
|
||||
| `serviceAccount.imagePullSecrets` | List of image pull secrets to add to the Service Account | `[]` |
|
||||
| `serviceAccount.create` | If `true`, create a new service account | `true` |
|
||||
| `serviceAccount.name` | Service account to be used | None |
|
||||
| `terminationGracePeriodSeconds` | Time period for controller pod to do a graceful shutdown | 10 |
|
||||
| `ingressClass` | The ingress class to satisfy | alb |
|
||||
| `createIngressClassResource` | Create ingressClass resource | true |
|
||||
| `ingressClassParams.name` | IngressClassParams resource's name, default to the aws load balancer controller's name | None |
|
||||
| `ingressClassParams.create` | If `true`, create a new ingressClassParams | true |
|
||||
| `ingressClassParams.spec` | IngressClassParams defined ingress specifications | {} |
|
||||
| `region` | The AWS region for the kubernetes cluster | None |
|
||||
| `vpcId` | The VPC ID for the Kubernetes cluster | None |
|
||||
| `awsApiEndpoints` | Custom AWS API Endpoints | None |
|
||||
| `awsApiThrottle` | Custom AWS API throttle settings | None |
|
||||
| `awsMaxRetries` | Maximum retries for AWS APIs | None |
|
||||
| `defaultTargetType` | Default target type. Used as the default value of the `alb.ingress.kubernetes.io/target-type` and `service.beta.kubernetes.io/aws-load-balancer-nlb-target-type" annotations.`Possible values are `ip` and `instance`. | `instance` |
|
||||
| `enablePodReadinessGateInject` | If enabled, targetHealth readiness gate will get injected to the pod spec for the matching endpoint pods | None |
|
||||
| `enableShield` | Enable Shield addon for ALB | None |
|
||||
| `enableWaf` | Enable WAF addon for ALB | None |
|
||||
| `enableWafv2` | Enable WAF V2 addon for ALB | None |
|
||||
| `ingressMaxConcurrentReconciles` | Maximum number of concurrently running reconcile loops for ingress | None |
|
||||
| `logLevel` | Set the controller log level - info, debug | None |
|
||||
| `metricsBindAddr` | The address the metric endpoint binds to | "" |
|
||||
| `webhookBindPort` | The TCP port the Webhook server binds to | None |
|
||||
| `webhookTLS.caCert` | TLS CA certificate for webhook (auto-generated if not provided) | "" |
|
||||
| `webhookTLS.cert` | TLS certificate for webhook (auto-generated if not provided) | "" |
|
||||
| `webhookTLS.key` | TLS private key for webhook (auto-generated if not provided) | "" |
|
||||
| `webhookNamespaceSelectors` | Namespace selectors for the wekbook | None |
|
||||
| `keepTLSSecret` | Reuse existing TLS Secret during chart upgrade | `true` |
|
||||
| `serviceAnnotations` | Annotations to be added to the provisioned webhook service resource | `{}` |
|
||||
| `serviceMaxConcurrentReconciles` | Maximum number of concurrently running reconcile loops for service | None |
|
||||
| `targetgroupbindingMaxConcurrentReconciles` | Maximum number of concurrently running reconcile loops for targetGroupBinding | None |
|
||||
| `targetgroupbindingMaxExponentialBackoffDelay` | Maximum duration of exponential backoff for targetGroupBinding reconcile failures | None |
|
||||
| `syncPeriod` | Period at which the controller forces the repopulation of its local object stores | None |
|
||||
| `watchNamespace` | Namespace the controller watches for updates to Kubernetes objects, If empty, all namespaces are watched | None |
|
||||
| `disableIngressClassAnnotation` | Disables the usage of kubernetes.io/ingress.class annotation | None |
|
||||
| `disableIngressGroupNameAnnotation` | Disables the usage of alb.ingress.kubernetes.io/group.name annotation | None |
|
||||
| `tolerateNonExistentBackendService` | whether to allow rules that reference a backend service that does not exist. (When enabled, it will return 503 error if backend service not exist) | `true` |
|
||||
| `tolerateNonExistentBackendAction` | whether to allow rules that reference a backend action that does not exist. (When enabled, it will return 503 error if backend action not exist) | `true` |
|
||||
| `defaultSSLPolicy` | Specifies the default SSL policy to use for HTTPS or TLS listeners | None |
|
||||
| `externalManagedTags` | Specifies the list of tag keys on AWS resources that are managed externally | `[]` |
|
||||
| `livenessProbe` | Liveness probe settings for the controller | (see `values.yaml`) |
|
||||
| `env` | Environment variables to set for aws-load-balancer-controller pod | None |
|
||||
| `envFrom` | Environment variables to set for aws-load-balancer-controller pod from configMap or Secret | None |
|
||||
|
||||
| `envSecretName` | AWS credentials as environment variables from Secret (Secret keys `key_id` and `access_key`). | None |
|
||||
| `hostNetwork` | If `true`, use hostNetwork | `false` |
|
||||
| `dnsPolicy` | Set dnsPolicy if required | `ClusterFirst` |
|
||||
| `extraVolumeMounts` | Extra volume mounts for the pod | `[]` |
|
||||
| `extraVolumes` | Extra volumes for the pod | `[]` |
|
||||
| `defaultTags` | Default tags to apply to all AWS resources managed by this controller | `{}` |
|
||||
| `replicaCount` | Number of controller pods to run, only one will be active due to leader election | `2` |
|
||||
| `revisionHistoryLimit` | Number of revisions to keep | `10` |
|
||||
| `podDisruptionBudget` | Limit the disruption for controller pods. Require at least 2 controller replicas and 3 worker nodes | `{}` |
|
||||
| `updateStrategy` | Defines the update strategy for the deployment | `{}` |
|
||||
| `enableCertManager` | If enabled, cert-manager issues the webhook certificates instead of the helm template, requires cert-manager and it's CRDs to be installed | `false` |
|
||||
| `enableEndpointSlices` | If enabled, controller uses k8s EndpointSlices instead of Endpoints for IP targets | `false` |
|
||||
| `enableBackendSecurityGroup` | If enabled, controller uses shared security group for backend traffic | `true` |
|
||||
| `backendSecurityGroup` | Backend security group to use instead of auto created one if the feature is enabled | `` |
|
||||
| `disableRestrictedSecurityGroupRules` | If disabled, controller will not specify port range restriction in the backend security group rules | `false` |
|
||||
| `objectSelector.matchExpressions` | Webhook configuration to select specific pods by specifying the expression to be matched | None |
|
||||
| `objectSelector.matchLabels` | Webhook configuration to select specific pods by specifying the key value label pair to be matched | None |
|
||||
| `serviceMonitor.enabled` | Specifies whether a service monitor should be created, requires the ServiceMonitor CRD to be installed | `false` |
|
||||
| `serviceMonitor.namespace` | Namespace in which to create the service monitor | None |
|
||||
| `serviceMonitor.additionalLabels` | Labels to add to the service monitor | `{}` |
|
||||
| `serviceMonitor.interval` | Prometheus scrape interval | `1m` |
|
||||
| `serviceMonitor.scrapeTimeout` | Prometheus scrape timeout | `1m` |
|
||||
| `serviceMonitor.relabelings` | Relabelings to apply to samples before ingestion | `1m` |
|
||||
| `serviceMonitor.metricRelabelings` | Metric relabelings to apply to samples before ingestion | `1m` |
|
||||
| `clusterSecretsPermissions.allowAllSecrets` | If `true`, controller has access to all secrets in the cluster. | `false` |
|
||||
| `controllerConfig.featureGates` | set of `key: value` pairs that describe AWS load balance controller features | `{}` |
|
||||
| `ingressClassConfig.default` | If `true`, the ingressclass will be the default class of the cluster. | `false` |
|
||||
| `enableServiceMutatorWebhook` | If `false`, disable the Service Mutator webhook which makes all new services of type LoadBalancer reconciled by the lb controller | `true` |
|
||||
| `serviceMutatorWebhookConfig.failurePolicy` | Failure policy for the Service Mutator webhook | `Fail` |
|
||||
| `serviceMutatorWebhookConfig.objectSelector` | Object selector(s) to limit which objects will be mutated by the Service Mutator webhook | `[]` |
|
||||
| `serviceMutatorWebhookConfig.operations` | List of operations that will trigger the the Service Mutator webhook | `[ CREATE ]` |
|
||||
| `autoscaling` | If `autoscaling.enabled=true`, enable the HPA on the controller mainly to survive load induced failure by the calls to the `aws-load-balancer-webhook-service`. Please keep in mind that the controller pods have `priorityClassName: system-cluster-critical`, enabling HPA may lead to the eviction of other low-priority pods in the node | `false` |
|
||||
| `serviceTargetENISGTags` | set of `key=value` pairs of AWS tags in addition to cluster name for finding the target ENI security group to which to add inbound rules from NLBs | None |
|
||||
| `loadBalancerClass` | Sets the AWS load balancer type to be used when the Kubernetes service requests an external load balancer | `service.k8s.aws/nlb` |
|
||||
| `creator` | if set to a `value!=helm`, it will disable the addition of default helm labels | `helm` |
|
||||
| `runtimeClassName` | Runtime class name for the controller pods , such as `gvisor` or `kata`. An unspecified `nil` or empty `""` RuntimeClassName is equivalent to the backwards-compatible default behavior as if the RuntimeClass feature is disabled. | "" |
|
||||
@@ -0,0 +1,14 @@
|
||||
replicaCount: 2
|
||||
|
||||
clusterName: auction
|
||||
|
||||
# cluster contains configurations specific to the kubernetes cluster
|
||||
cluster:
|
||||
# Cluster DNS domain (required for requesting TLS certificates)
|
||||
dnsDomain: auction.dev
|
||||
|
||||
serviceAccount:
|
||||
name: aws-load-balancer-aws-load-balancer-controller
|
||||
create: true
|
||||
annotations:
|
||||
eks.amazonaws.com/role-arn: "arn:aws:iam::667294666490:role/auction-cluster-20241126163757775000000001"
|
||||
@@ -0,0 +1 @@
|
||||
--set clusterName=k8s-ci-cluster
|
||||
@@ -0,0 +1,7 @@
|
||||
# CI testing values for aws-load-balancer-controller
|
||||
|
||||
region: us-west-2
|
||||
image:
|
||||
repository: public.ecr.aws/eks/aws-load-balancer-controller
|
||||
tag: v2.4.5
|
||||
pullPolicy: Always
|
||||
621
backing-services/aws-load-balancer-controller/crds/crds.yaml
Normal file
621
backing-services/aws-load-balancer-controller/crds/crds.yaml
Normal file
@@ -0,0 +1,621 @@
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.14.0
|
||||
name: ingressclassparams.elbv2.k8s.aws
|
||||
spec:
|
||||
group: elbv2.k8s.aws
|
||||
names:
|
||||
kind: IngressClassParams
|
||||
listKind: IngressClassParamsList
|
||||
plural: ingressclassparams
|
||||
singular: ingressclassparams
|
||||
scope: Cluster
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- description: The Ingress Group name
|
||||
jsonPath: .spec.group.name
|
||||
name: GROUP-NAME
|
||||
type: string
|
||||
- description: The AWS Load Balancer scheme
|
||||
jsonPath: .spec.scheme
|
||||
name: SCHEME
|
||||
type: string
|
||||
- description: The AWS Load Balancer ipAddressType
|
||||
jsonPath: .spec.ipAddressType
|
||||
name: IP-ADDRESS-TYPE
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
name: v1beta1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: IngressClassParams is the Schema for the IngressClassParams API
|
||||
properties:
|
||||
apiVersion:
|
||||
description: |-
|
||||
APIVersion defines the versioned schema of this representation of an object.
|
||||
Servers should convert recognized schemas to the latest internal value, and
|
||||
may reject unrecognized values.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||
type: string
|
||||
kind:
|
||||
description: |-
|
||||
Kind is a string value representing the REST resource this object represents.
|
||||
Servers may infer this from the endpoint the client submits requests to.
|
||||
Cannot be updated.
|
||||
In CamelCase.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: IngressClassParamsSpec defines the desired state of IngressClassParams
|
||||
properties:
|
||||
certificateArn:
|
||||
description: CertificateArn specifies the ARN of the certificates
|
||||
for all Ingresses that belong to IngressClass with this IngressClassParams.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
group:
|
||||
description: Group defines the IngressGroup for all Ingresses that
|
||||
belong to IngressClass with this IngressClassParams.
|
||||
properties:
|
||||
name:
|
||||
description: Name is the name of IngressGroup.
|
||||
type: string
|
||||
required:
|
||||
- name
|
||||
type: object
|
||||
inboundCIDRs:
|
||||
description: InboundCIDRs specifies the CIDRs that are allowed to
|
||||
access the Ingresses that belong to IngressClass with this IngressClassParams.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
ipAddressType:
|
||||
description: IPAddressType defines the ip address type for all Ingresses
|
||||
that belong to IngressClass with this IngressClassParams.
|
||||
enum:
|
||||
- ipv4
|
||||
- dualstack
|
||||
- dualstack-without-public-ipv4
|
||||
type: string
|
||||
loadBalancerAttributes:
|
||||
description: LoadBalancerAttributes define the custom attributes to
|
||||
LoadBalancers for all Ingress that that belong to IngressClass with
|
||||
this IngressClassParams.
|
||||
items:
|
||||
description: Attributes defines custom attributes on resources.
|
||||
properties:
|
||||
key:
|
||||
description: The key of the attribute.
|
||||
type: string
|
||||
value:
|
||||
description: The value of the attribute.
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- value
|
||||
type: object
|
||||
type: array
|
||||
namespaceSelector:
|
||||
description: |-
|
||||
NamespaceSelector restrict the namespaces of Ingresses that are allowed to specify the IngressClass with this IngressClassParams.
|
||||
* if absent or present but empty, it selects all namespaces.
|
||||
properties:
|
||||
matchExpressions:
|
||||
description: matchExpressions is a list of label selector requirements.
|
||||
The requirements are ANDed.
|
||||
items:
|
||||
description: |-
|
||||
A label selector requirement is a selector that contains values, a key, and an operator that
|
||||
relates the key and values.
|
||||
properties:
|
||||
key:
|
||||
description: key is the label key that the selector applies
|
||||
to.
|
||||
type: string
|
||||
operator:
|
||||
description: |-
|
||||
operator represents a key's relationship to a set of values.
|
||||
Valid operators are In, NotIn, Exists and DoesNotExist.
|
||||
type: string
|
||||
values:
|
||||
description: |-
|
||||
values is an array of string values. If the operator is In or NotIn,
|
||||
the values array must be non-empty. If the operator is Exists or DoesNotExist,
|
||||
the values array must be empty. This array is replaced during a strategic
|
||||
merge patch.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: |-
|
||||
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
|
||||
map is equivalent to an element of matchExpressions, whose key field is "key", the
|
||||
operator is "In", and the values array contains only "value". The requirements are ANDed.
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
scheme:
|
||||
description: Scheme defines the scheme for all Ingresses that belong
|
||||
to IngressClass with this IngressClassParams.
|
||||
enum:
|
||||
- internal
|
||||
- internet-facing
|
||||
type: string
|
||||
sslPolicy:
|
||||
description: SSLPolicy specifies the SSL Policy for all Ingresses
|
||||
that belong to IngressClass with this IngressClassParams.
|
||||
type: string
|
||||
subnets:
|
||||
description: Subnets defines the subnets for all Ingresses that belong
|
||||
to IngressClass with this IngressClassParams.
|
||||
properties:
|
||||
ids:
|
||||
description: IDs specify the resource IDs of subnets. Exactly
|
||||
one of this or `tags` must be specified.
|
||||
items:
|
||||
description: SubnetID specifies a subnet ID.
|
||||
pattern: subnet-[0-9a-f]+
|
||||
type: string
|
||||
minItems: 1
|
||||
type: array
|
||||
tags:
|
||||
additionalProperties:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
description: |-
|
||||
Tags specifies subnets in the load balancer's VPC where each
|
||||
tag specified in the map key contains one of the values in the corresponding
|
||||
value list.
|
||||
Exactly one of this or `ids` must be specified.
|
||||
type: object
|
||||
type: object
|
||||
tags:
|
||||
description: Tags defines list of Tags on AWS resources provisioned
|
||||
for Ingresses that belong to IngressClass with this IngressClassParams.
|
||||
items:
|
||||
description: Tag defines a AWS Tag on resources.
|
||||
properties:
|
||||
key:
|
||||
description: The key of the tag.
|
||||
type: string
|
||||
value:
|
||||
description: The value of the tag.
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- value
|
||||
type: object
|
||||
type: array
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources: {}
|
||||
---
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.14.0
|
||||
name: targetgroupbindings.elbv2.k8s.aws
|
||||
spec:
|
||||
group: elbv2.k8s.aws
|
||||
names:
|
||||
kind: TargetGroupBinding
|
||||
listKind: TargetGroupBindingList
|
||||
plural: targetgroupbindings
|
||||
singular: targetgroupbinding
|
||||
scope: Namespaced
|
||||
versions:
|
||||
- additionalPrinterColumns:
|
||||
- description: The Kubernetes Service's name
|
||||
jsonPath: .spec.serviceRef.name
|
||||
name: SERVICE-NAME
|
||||
type: string
|
||||
- description: The Kubernetes Service's port
|
||||
jsonPath: .spec.serviceRef.port
|
||||
name: SERVICE-PORT
|
||||
type: string
|
||||
- description: The AWS TargetGroup's TargetType
|
||||
jsonPath: .spec.targetType
|
||||
name: TARGET-TYPE
|
||||
type: string
|
||||
- description: The AWS TargetGroup's Amazon Resource Name
|
||||
jsonPath: .spec.targetGroupARN
|
||||
name: ARN
|
||||
priority: 1
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
name: v1alpha1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: TargetGroupBinding is the Schema for the TargetGroupBinding API
|
||||
properties:
|
||||
apiVersion:
|
||||
description: |-
|
||||
APIVersion defines the versioned schema of this representation of an object.
|
||||
Servers should convert recognized schemas to the latest internal value, and
|
||||
may reject unrecognized values.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||
type: string
|
||||
kind:
|
||||
description: |-
|
||||
Kind is a string value representing the REST resource this object represents.
|
||||
Servers may infer this from the endpoint the client submits requests to.
|
||||
Cannot be updated.
|
||||
In CamelCase.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: TargetGroupBindingSpec defines the desired state of TargetGroupBinding
|
||||
properties:
|
||||
networking:
|
||||
description: networking provides the networking setup for ELBV2 LoadBalancer
|
||||
to access targets in TargetGroup.
|
||||
properties:
|
||||
ingress:
|
||||
description: List of ingress rules to allow ELBV2 LoadBalancer
|
||||
to access targets in TargetGroup.
|
||||
items:
|
||||
properties:
|
||||
from:
|
||||
description: |-
|
||||
List of peers which should be able to access the targets in TargetGroup.
|
||||
At least one NetworkingPeer should be specified.
|
||||
items:
|
||||
description: NetworkingPeer defines the source/destination
|
||||
peer for networking rules.
|
||||
properties:
|
||||
ipBlock:
|
||||
description: |-
|
||||
IPBlock defines an IPBlock peer.
|
||||
If specified, none of the other fields can be set.
|
||||
properties:
|
||||
cidr:
|
||||
description: |-
|
||||
CIDR is the network CIDR.
|
||||
Both IPV4 or IPV6 CIDR are accepted.
|
||||
type: string
|
||||
required:
|
||||
- cidr
|
||||
type: object
|
||||
securityGroup:
|
||||
description: |-
|
||||
SecurityGroup defines a SecurityGroup peer.
|
||||
If specified, none of the other fields can be set.
|
||||
properties:
|
||||
groupID:
|
||||
description: GroupID is the EC2 SecurityGroupID.
|
||||
type: string
|
||||
required:
|
||||
- groupID
|
||||
type: object
|
||||
type: object
|
||||
type: array
|
||||
ports:
|
||||
description: |-
|
||||
List of ports which should be made accessible on the targets in TargetGroup.
|
||||
If ports is empty or unspecified, it defaults to all ports with TCP.
|
||||
items:
|
||||
properties:
|
||||
port:
|
||||
anyOf:
|
||||
- type: integer
|
||||
- type: string
|
||||
description: |-
|
||||
The port which traffic must match.
|
||||
When NodePort endpoints(instance TargetType) is used, this must be a numerical port.
|
||||
When Port endpoints(ip TargetType) is used, this can be either numerical or named port on pods.
|
||||
if port is unspecified, it defaults to all ports.
|
||||
x-kubernetes-int-or-string: true
|
||||
protocol:
|
||||
description: |-
|
||||
The protocol which traffic must match.
|
||||
If protocol is unspecified, it defaults to TCP.
|
||||
enum:
|
||||
- TCP
|
||||
- UDP
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
required:
|
||||
- from
|
||||
- ports
|
||||
type: object
|
||||
type: array
|
||||
type: object
|
||||
serviceRef:
|
||||
description: serviceRef is a reference to a Kubernetes Service and
|
||||
ServicePort.
|
||||
properties:
|
||||
name:
|
||||
description: Name is the name of the Service.
|
||||
type: string
|
||||
port:
|
||||
anyOf:
|
||||
- type: integer
|
||||
- type: string
|
||||
description: Port is the port of the ServicePort.
|
||||
x-kubernetes-int-or-string: true
|
||||
required:
|
||||
- name
|
||||
- port
|
||||
type: object
|
||||
targetGroupARN:
|
||||
description: targetGroupARN is the Amazon Resource Name (ARN) for
|
||||
the TargetGroup.
|
||||
type: string
|
||||
targetType:
|
||||
description: targetType is the TargetType of TargetGroup. If unspecified,
|
||||
it will be automatically inferred.
|
||||
enum:
|
||||
- instance
|
||||
- ip
|
||||
type: string
|
||||
required:
|
||||
- serviceRef
|
||||
- targetGroupARN
|
||||
type: object
|
||||
status:
|
||||
description: TargetGroupBindingStatus defines the observed state of TargetGroupBinding
|
||||
properties:
|
||||
observedGeneration:
|
||||
description: The generation observed by the TargetGroupBinding controller.
|
||||
format: int64
|
||||
type: integer
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: false
|
||||
subresources:
|
||||
status: {}
|
||||
- additionalPrinterColumns:
|
||||
- description: The Kubernetes Service's name
|
||||
jsonPath: .spec.serviceRef.name
|
||||
name: SERVICE-NAME
|
||||
type: string
|
||||
- description: The Kubernetes Service's port
|
||||
jsonPath: .spec.serviceRef.port
|
||||
name: SERVICE-PORT
|
||||
type: string
|
||||
- description: The AWS TargetGroup's TargetType
|
||||
jsonPath: .spec.targetType
|
||||
name: TARGET-TYPE
|
||||
type: string
|
||||
- description: The AWS TargetGroup's Amazon Resource Name
|
||||
jsonPath: .spec.targetGroupARN
|
||||
name: ARN
|
||||
priority: 1
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
name: v1beta1
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
description: TargetGroupBinding is the Schema for the TargetGroupBinding API
|
||||
properties:
|
||||
apiVersion:
|
||||
description: |-
|
||||
APIVersion defines the versioned schema of this representation of an object.
|
||||
Servers should convert recognized schemas to the latest internal value, and
|
||||
may reject unrecognized values.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
|
||||
type: string
|
||||
kind:
|
||||
description: |-
|
||||
Kind is a string value representing the REST resource this object represents.
|
||||
Servers may infer this from the endpoint the client submits requests to.
|
||||
Cannot be updated.
|
||||
In CamelCase.
|
||||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||
type: string
|
||||
metadata:
|
||||
type: object
|
||||
spec:
|
||||
description: TargetGroupBindingSpec defines the desired state of TargetGroupBinding
|
||||
properties:
|
||||
ipAddressType:
|
||||
description: ipAddressType specifies whether the target group is of
|
||||
type IPv4 or IPv6. If unspecified, it will be automatically inferred.
|
||||
enum:
|
||||
- ipv4
|
||||
- ipv6
|
||||
type: string
|
||||
networking:
|
||||
description: networking defines the networking rules to allow ELBV2
|
||||
LoadBalancer to access targets in TargetGroup.
|
||||
properties:
|
||||
ingress:
|
||||
description: List of ingress rules to allow ELBV2 LoadBalancer
|
||||
to access targets in TargetGroup.
|
||||
items:
|
||||
description: NetworkingIngressRule defines a particular set
|
||||
of traffic that is allowed to access TargetGroup's targets.
|
||||
properties:
|
||||
from:
|
||||
description: |-
|
||||
List of peers which should be able to access the targets in TargetGroup.
|
||||
At least one NetworkingPeer should be specified.
|
||||
items:
|
||||
description: NetworkingPeer defines the source/destination
|
||||
peer for networking rules.
|
||||
properties:
|
||||
ipBlock:
|
||||
description: |-
|
||||
IPBlock defines an IPBlock peer.
|
||||
If specified, none of the other fields can be set.
|
||||
properties:
|
||||
cidr:
|
||||
description: |-
|
||||
CIDR is the network CIDR.
|
||||
Both IPV4 or IPV6 CIDR are accepted.
|
||||
type: string
|
||||
required:
|
||||
- cidr
|
||||
type: object
|
||||
securityGroup:
|
||||
description: |-
|
||||
SecurityGroup defines a SecurityGroup peer.
|
||||
If specified, none of the other fields can be set.
|
||||
properties:
|
||||
groupID:
|
||||
description: GroupID is the EC2 SecurityGroupID.
|
||||
type: string
|
||||
required:
|
||||
- groupID
|
||||
type: object
|
||||
type: object
|
||||
type: array
|
||||
ports:
|
||||
description: |-
|
||||
List of ports which should be made accessible on the targets in TargetGroup.
|
||||
If ports is empty or unspecified, it defaults to all ports with TCP.
|
||||
items:
|
||||
description: NetworkingPort defines the port and protocol
|
||||
for networking rules.
|
||||
properties:
|
||||
port:
|
||||
anyOf:
|
||||
- type: integer
|
||||
- type: string
|
||||
description: |-
|
||||
The port which traffic must match.
|
||||
When NodePort endpoints(instance TargetType) is used, this must be a numerical port.
|
||||
When Port endpoints(ip TargetType) is used, this can be either numerical or named port on pods.
|
||||
if port is unspecified, it defaults to all ports.
|
||||
x-kubernetes-int-or-string: true
|
||||
protocol:
|
||||
description: |-
|
||||
The protocol which traffic must match.
|
||||
If protocol is unspecified, it defaults to TCP.
|
||||
enum:
|
||||
- TCP
|
||||
- UDP
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
required:
|
||||
- from
|
||||
- ports
|
||||
type: object
|
||||
type: array
|
||||
type: object
|
||||
nodeSelector:
|
||||
description: node selector for instance type target groups to only
|
||||
register certain nodes
|
||||
properties:
|
||||
matchExpressions:
|
||||
description: matchExpressions is a list of label selector requirements.
|
||||
The requirements are ANDed.
|
||||
items:
|
||||
description: |-
|
||||
A label selector requirement is a selector that contains values, a key, and an operator that
|
||||
relates the key and values.
|
||||
properties:
|
||||
key:
|
||||
description: key is the label key that the selector applies
|
||||
to.
|
||||
type: string
|
||||
operator:
|
||||
description: |-
|
||||
operator represents a key's relationship to a set of values.
|
||||
Valid operators are In, NotIn, Exists and DoesNotExist.
|
||||
type: string
|
||||
values:
|
||||
description: |-
|
||||
values is an array of string values. If the operator is In or NotIn,
|
||||
the values array must be non-empty. If the operator is Exists or DoesNotExist,
|
||||
the values array must be empty. This array is replaced during a strategic
|
||||
merge patch.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
required:
|
||||
- key
|
||||
- operator
|
||||
type: object
|
||||
type: array
|
||||
x-kubernetes-list-type: atomic
|
||||
matchLabels:
|
||||
additionalProperties:
|
||||
type: string
|
||||
description: |-
|
||||
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
|
||||
map is equivalent to an element of matchExpressions, whose key field is "key", the
|
||||
operator is "In", and the values array contains only "value". The requirements are ANDed.
|
||||
type: object
|
||||
type: object
|
||||
x-kubernetes-map-type: atomic
|
||||
serviceRef:
|
||||
description: serviceRef is a reference to a Kubernetes Service and
|
||||
ServicePort.
|
||||
properties:
|
||||
name:
|
||||
description: Name is the name of the Service.
|
||||
type: string
|
||||
port:
|
||||
anyOf:
|
||||
- type: integer
|
||||
- type: string
|
||||
description: Port is the port of the ServicePort.
|
||||
x-kubernetes-int-or-string: true
|
||||
required:
|
||||
- name
|
||||
- port
|
||||
type: object
|
||||
targetGroupARN:
|
||||
description: targetGroupARN is the Amazon Resource Name (ARN) for
|
||||
the TargetGroup.
|
||||
minLength: 1
|
||||
type: string
|
||||
targetType:
|
||||
description: targetType is the TargetType of TargetGroup. If unspecified,
|
||||
it will be automatically inferred.
|
||||
enum:
|
||||
- instance
|
||||
- ip
|
||||
type: string
|
||||
vpcID:
|
||||
description: VpcID is the VPC of the TargetGroup. If unspecified,
|
||||
it will be automatically inferred.
|
||||
type: string
|
||||
required:
|
||||
- serviceRef
|
||||
- targetGroupARN
|
||||
type: object
|
||||
status:
|
||||
description: TargetGroupBindingStatus defines the observed state of TargetGroupBinding
|
||||
properties:
|
||||
observedGeneration:
|
||||
description: The generation observed by the TargetGroupBinding controller.
|
||||
format: int64
|
||||
type: integer
|
||||
type: object
|
||||
type: object
|
||||
served: true
|
||||
storage: true
|
||||
subresources:
|
||||
status: {}
|
||||
@@ -0,0 +1,14 @@
|
||||
replicaCount: 2
|
||||
|
||||
clusterName: schoolbuses
|
||||
|
||||
# cluster contains configurations specific to the kubernetes cluster
|
||||
cluster:
|
||||
# Cluster DNS domain (required for requesting TLS certificates)
|
||||
dnsDomain: alpharoute.dev
|
||||
|
||||
serviceAccount:
|
||||
name: aws-load-balancer-aws-load-balancer-controller
|
||||
create: true
|
||||
annotations:
|
||||
eks.amazonaws.com/role-arn: "arn:aws:iam::889565812003:role/schoolbuses_Cluster_IAM"
|
||||
@@ -0,0 +1 @@
|
||||
AWS Load Balancer controller installed!
|
||||
@@ -0,0 +1,131 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "aws-load-balancer-controller.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- 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.
|
||||
*/}}
|
||||
{{- define "aws-load-balancer-controller.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "aws-load-balancer-controller.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Chart name prefix for resource names
|
||||
Strip the "-controller" suffix from the default .Chart.Name if the nameOverride is not specified.
|
||||
This enables using a shorter name for the resources, for example aws-load-balancer-webhook.
|
||||
*/}}
|
||||
{{- define "aws-load-balancer-controller.namePrefix" -}}
|
||||
{{- $defaultNamePrefix := .Chart.Name | trimSuffix "-controller" -}}
|
||||
{{- default $defaultNamePrefix .Values.nameOverride | trunc 42 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "aws-load-balancer-controller.labels" -}}
|
||||
{{- if eq (default "helm" .Values.creator) "helm" -}}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
helm.sh/chart: {{ include "aws-load-balancer-controller.chart" . }}
|
||||
{{- end }}
|
||||
{{ include "aws-load-balancer-controller.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
{{- if .Values.additionalLabels }}
|
||||
{{ toYaml .Values.additionalLabels }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "aws-load-balancer-controller.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "aws-load-balancer-controller.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "aws-load-balancer-controller.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
{{ default (include "aws-load-balancer-controller.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.serviceAccount.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the webhook service
|
||||
*/}}
|
||||
{{- define "aws-load-balancer-controller.webhookService" -}}
|
||||
{{- printf "%s-webhook-service" (include "aws-load-balancer-controller.namePrefix" .) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the webhook cert secret
|
||||
*/}}
|
||||
{{- define "aws-load-balancer-controller.webhookCertSecret" -}}
|
||||
{{- printf "%s-tls" (include "aws-load-balancer-controller.namePrefix" .) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Generate certificates for webhook
|
||||
*/}}
|
||||
{{- define "aws-load-balancer-controller.webhookCerts" -}}
|
||||
{{- $serviceName := (include "aws-load-balancer-controller.webhookService" .) -}}
|
||||
{{- $secretName := (include "aws-load-balancer-controller.webhookCertSecret" .) -}}
|
||||
{{- $secret := lookup "v1" "Secret" .Release.Namespace $secretName -}}
|
||||
{{- if (and .Values.webhookTLS.caCert .Values.webhookTLS.cert .Values.webhookTLS.key) -}}
|
||||
caCert: {{ .Values.webhookTLS.caCert | b64enc }}
|
||||
clientCert: {{ .Values.webhookTLS.cert | b64enc }}
|
||||
clientKey: {{ .Values.webhookTLS.key | b64enc }}
|
||||
{{- else if and .Values.keepTLSSecret $secret -}}
|
||||
caCert: {{ index $secret.data "ca.crt" }}
|
||||
clientCert: {{ index $secret.data "tls.crt" }}
|
||||
clientKey: {{ index $secret.data "tls.key" }}
|
||||
{{- else -}}
|
||||
{{- $altNames := list (printf "%s.%s" $serviceName .Release.Namespace) (printf "%s.%s.svc" $serviceName .Release.Namespace) (printf "%s.%s.svc.%s" $serviceName .Release.Namespace .Values.cluster.dnsDomain) -}}
|
||||
{{- $ca := genCA "aws-load-balancer-controller-ca" 3650 -}}
|
||||
{{- $cert := genSignedCert (include "aws-load-balancer-controller.fullname" .) nil $altNames 3650 $ca -}}
|
||||
caCert: {{ $ca.Cert | b64enc }}
|
||||
clientCert: {{ $cert.Cert | b64enc }}
|
||||
clientKey: {{ $cert.Key | b64enc }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Convert map to comma separated key=value string
|
||||
*/}}
|
||||
{{- define "aws-load-balancer-controller.convertMapToCsv" -}}
|
||||
{{- range $key, $value := . -}} {{ $key }}={{ $value }}, {{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the ingressClassParams
|
||||
*/}}
|
||||
{{- define "aws-load-balancer-controller.ingressClassParamsName" -}}
|
||||
{{ default .Values.ingressClass .Values.ingressClassParams.name }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,259 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "aws-load-balancer-controller.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{- if .Values.deploymentAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml .Values.deploymentAnnotations | nindent 4 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "aws-load-balancer-controller.selectorLabels" . | nindent 6 }}
|
||||
{{- with .Values.updateStrategy }}
|
||||
strategy:
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.selectorLabels" . | nindent 8 }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{- toYaml .Values.podLabels | nindent 8 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
{{- if not .Values.serviceMonitor.enabled }}
|
||||
prometheus.io/scrape: "true"
|
||||
prometheus.io/port: "{{ (split ":" .Values.metricsBindAddr)._1 | default 8080 }}"
|
||||
{{- end}}
|
||||
{{- if .Values.podAnnotations }}
|
||||
{{- toYaml .Values.podAnnotations | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.runtimeClassName }}
|
||||
runtimeClassName: {{ .Values.runtimeClassName }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "aws-load-balancer-controller.serviceAccountName" . }}
|
||||
volumes:
|
||||
- name: cert
|
||||
secret:
|
||||
defaultMode: 420
|
||||
secretName: {{ template "aws-load-balancer-controller.webhookCertSecret" . }}
|
||||
{{- with .Values.extraVolumes }}
|
||||
{{ toYaml . | nindent 6 }}
|
||||
{{- end }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
{{- if .Values.hostNetwork }}
|
||||
hostNetwork: true
|
||||
{{- end }}
|
||||
{{- if .Values.dnsPolicy }}
|
||||
dnsPolicy: {{ .Values.dnsPolicy }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
args:
|
||||
- --cluster-name={{ required "Chart cannot be installed without a valid clusterName!" (tpl (default "" .Values.clusterName) .) }}
|
||||
{{- if .Values.ingressClass }}
|
||||
- --ingress-class={{ .Values.ingressClass }}
|
||||
{{- end }}
|
||||
{{- $region := tpl (default "" .Values.region) . }}
|
||||
{{- if $region }}
|
||||
- --aws-region={{ .Values.region }}
|
||||
{{- end }}
|
||||
{{- $vpcID := tpl (default "" .Values.vpcId) . }}
|
||||
{{- if $vpcID }}
|
||||
- --aws-vpc-id={{ $vpcID }}
|
||||
{{- end }}
|
||||
{{- if .Values.awsApiEndpoints }}
|
||||
- --aws-api-endpoints={{ .Values.awsApiEndpoints }}
|
||||
{{- end }}
|
||||
{{- if .Values.awsApiThrottle }}
|
||||
- --aws-api-throttle={{ join "," .Values.awsApiThrottle }}
|
||||
{{- end }}
|
||||
{{- if .Values.awsMaxRetries }}
|
||||
- --aws-max-retries={{ .Values.awsMaxRetries }}
|
||||
{{- end }}
|
||||
{{- if kindIs "bool" .Values.enablePodReadinessGateInject }}
|
||||
- --enable-pod-readiness-gate-inject={{ .Values.enablePodReadinessGateInject }}
|
||||
{{- end }}
|
||||
{{- if kindIs "bool" .Values.enableShield }}
|
||||
- --enable-shield={{ .Values.enableShield }}
|
||||
{{- end }}
|
||||
{{- if kindIs "bool" .Values.enableWaf }}
|
||||
- --enable-waf={{ .Values.enableWaf }}
|
||||
{{- end }}
|
||||
{{- if kindIs "bool" .Values.enableWafv2 }}
|
||||
- --enable-wafv2={{ .Values.enableWafv2 }}
|
||||
{{- end }}
|
||||
{{- if .Values.metricsBindAddr }}
|
||||
- --metrics-bind-addr={{ .Values.metricsBindAddr }}
|
||||
{{- end }}
|
||||
{{- if .Values.ingressMaxConcurrentReconciles }}
|
||||
- --ingress-max-concurrent-reconciles={{ .Values.ingressMaxConcurrentReconciles }}
|
||||
{{- end }}
|
||||
{{- if .Values.serviceMaxConcurrentReconciles }}
|
||||
- --service-max-concurrent-reconciles={{ .Values.serviceMaxConcurrentReconciles }}
|
||||
{{- end }}
|
||||
{{- if .Values.targetgroupbindingMaxConcurrentReconciles }}
|
||||
- --targetgroupbinding-max-concurrent-reconciles={{ .Values.targetgroupbindingMaxConcurrentReconciles }}
|
||||
{{- end }}
|
||||
{{- if .Values.targetgroupbindingMaxExponentialBackoffDelay }}
|
||||
- --targetgroupbinding-max-exponential-backoff-delay={{ .Values.targetgroupbindingMaxExponentialBackoffDelay }}
|
||||
{{- end }}
|
||||
{{- if .Values.logLevel }}
|
||||
- --log-level={{ .Values.logLevel }}
|
||||
{{- end }}
|
||||
{{- if .Values.webhookBindPort }}
|
||||
- --webhook-bind-port={{ .Values.webhookBindPort }}
|
||||
{{- end }}
|
||||
{{- if .Values.syncPeriod }}
|
||||
- --sync-period={{ .Values.syncPeriod }}
|
||||
{{- end }}
|
||||
{{- if .Values.watchNamespace }}
|
||||
- --watch-namespace={{ .Values.watchNamespace }}
|
||||
{{- end }}
|
||||
{{- if kindIs "bool" .Values.disableIngressClassAnnotation }}
|
||||
- --disable-ingress-class-annotation={{ .Values.disableIngressClassAnnotation }}
|
||||
{{- end }}
|
||||
{{- if kindIs "bool" .Values.disableIngressGroupNameAnnotation }}
|
||||
- --disable-ingress-group-name-annotation={{ .Values.disableIngressGroupNameAnnotation }}
|
||||
{{- end }}
|
||||
{{- if kindIs "bool" .Values.tolerateNonExistentBackendService }}
|
||||
- --tolerate-non-existent-backend-service={{ .Values.tolerateNonExistentBackendService }}
|
||||
{{- end }}
|
||||
{{- if kindIs "bool" .Values.tolerateNonExistentBackendAction }}
|
||||
- --tolerate-non-existent-backend-action={{ .Values.tolerateNonExistentBackendAction }}
|
||||
{{- end }}
|
||||
{{- if .Values.defaultSSLPolicy }}
|
||||
- --default-ssl-policy={{ .Values.defaultSSLPolicy }}
|
||||
{{- end }}
|
||||
{{- if .Values.externalManagedTags }}
|
||||
- --external-managed-tags={{ join "," .Values.externalManagedTags }}
|
||||
{{- end }}
|
||||
{{- if .Values.defaultTags }}
|
||||
- --default-tags={{ include "aws-load-balancer-controller.convertMapToCsv" .Values.defaultTags | trimSuffix "," }}
|
||||
{{- end }}
|
||||
{{- if kindIs "bool" .Values.enableEndpointSlices }}
|
||||
- --enable-endpoint-slices={{ .Values.enableEndpointSlices }}
|
||||
{{- end }}
|
||||
{{- if kindIs "bool" .Values.enableBackendSecurityGroup }}
|
||||
- --enable-backend-security-group={{ .Values.enableBackendSecurityGroup }}
|
||||
{{- end }}
|
||||
{{- if .Values.backendSecurityGroup }}
|
||||
- --backend-security-group={{ .Values.backendSecurityGroup }}
|
||||
{{- end }}
|
||||
{{- if kindIs "bool" .Values.disableRestrictedSecurityGroupRules }}
|
||||
- --disable-restricted-sg-rules={{ .Values.disableRestrictedSecurityGroupRules }}
|
||||
{{- end }}
|
||||
{{- if .Values.controllerConfig.featureGates }}
|
||||
- --feature-gates={{ include "aws-load-balancer-controller.convertMapToCsv" .Values.controllerConfig.featureGates | trimSuffix "," }}
|
||||
{{- end }}
|
||||
{{- if ne .Values.defaultTargetType "instance" }}
|
||||
- --default-target-type={{ .Values.defaultTargetType }}
|
||||
{{- end }}
|
||||
{{- if .Values.serviceTargetENISGTags }}
|
||||
- --service-target-eni-security-group-tags={{ .Values.serviceTargetENISGTags }}
|
||||
{{- end }}
|
||||
{{- if .Values.certDiscovery.allowedCertificateAuthorityARNs }}
|
||||
- --allowed-certificate-authority-arns={{ .Values.certDiscovery.allowedCertificateAuthorityARNs }}
|
||||
{{- end }}
|
||||
{{- if .Values.loadBalancerClass }}
|
||||
- --load-balancer-class={{ .Values.loadBalancerClass }}
|
||||
{{- end }}
|
||||
{{- if or .Values.env .Values.envSecretName .Values.envFrom }}
|
||||
env:
|
||||
{{- if .Values.env}}
|
||||
{{- range $key, $value := .Values.env }}
|
||||
- name: {{ $key }}
|
||||
value: "{{ $value }}"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.envFrom }}
|
||||
{{ .Values.envFrom | toYaml | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.envSecretName }}
|
||||
- name: AWS_ACCESS_KEY_ID
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .Values.envSecretName }}
|
||||
key: key_id
|
||||
optional: true
|
||||
- name: AWS_SECRET_ACCESS_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ .Values.envSecretName }}
|
||||
key: access_key
|
||||
optional: true
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 10 }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
volumeMounts:
|
||||
- mountPath: /tmp/k8s-webhook-server/serving-certs
|
||||
name: cert
|
||||
readOnly: true
|
||||
{{- with .Values.extraVolumeMounts }}
|
||||
{{ toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: webhook-server
|
||||
containerPort: {{ .Values.webhookBindPort | default 9443 }}
|
||||
protocol: TCP
|
||||
- name: metrics-server
|
||||
containerPort: {{ (split ":" .Values.metricsBindAddr)._1 | default 8080 }}
|
||||
protocol: TCP
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 10 }}
|
||||
{{- with .Values.livenessProbe }}
|
||||
livenessProbe:
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- with .Values.readinessProbe }}
|
||||
readinessProbe:
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml .Values.affinity | nindent 8 }}
|
||||
{{- else if .Values.configureDefaultAffinity }}
|
||||
affinity:
|
||||
podAntiAffinity:
|
||||
preferredDuringSchedulingIgnoredDuringExecution:
|
||||
- weight: 100
|
||||
podAffinityTerm:
|
||||
labelSelector:
|
||||
matchExpressions:
|
||||
- key: app.kubernetes.io/name
|
||||
operator: In
|
||||
values:
|
||||
- {{ include "aws-load-balancer-controller.name" . }}
|
||||
topologyKey: kubernetes.io/hostname
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.priorityClassName }}
|
||||
priorityClassName: {{ .Values.priorityClassName | quote }}
|
||||
{{- end }}
|
||||
{{- with .Values.topologySpreadConstraints }}
|
||||
topologySpreadConstraints:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,34 @@
|
||||
{{- if .Values.autoscaling.enabled }}
|
||||
{{- if (semverCompare ">=1.23-0" .Capabilities.KubeVersion.GitVersion)}}
|
||||
apiVersion: autoscaling/v2
|
||||
{{- else }}
|
||||
apiVersion: autoscaling/v2beta2
|
||||
{{- end }}
|
||||
kind: HorizontalPodAutoscaler
|
||||
metadata:
|
||||
name: {{ include "aws-load-balancer-controller.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
|
||||
annotations:
|
||||
{{- .Values.annotations | toYaml | nindent 4 }}
|
||||
spec:
|
||||
scaleTargetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: {{ include "aws-load-balancer-controller.fullname" . }}
|
||||
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||
maxReplicas: {{ required "A valid .Values.autoscaling.maxReplicas value is required" .Values.autoscaling.maxReplicas }}
|
||||
metrics:
|
||||
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||
type: Utilization
|
||||
{{- end }}
|
||||
{{- if .Values.autoscaling.autoscaleBehavior }}
|
||||
behavior: {{ toYaml .Values.autoscaling.autoscaleBehavior | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,41 @@
|
||||
{{- /*
|
||||
[caution] AWSLoadBalancerController <= v2.4.2 expects referenced IngressClassParams to be created before IngressClass.
|
||||
We use a list here to force Helm create IngressClassParams(if any) before apply any IngressClass changes.
|
||||
*/}}
|
||||
{{- if .Values.createIngressClassResource }}
|
||||
apiVersion: v1
|
||||
kind: List
|
||||
metadata:
|
||||
name: ingress-class
|
||||
items:
|
||||
{{- if .Values.ingressClassParams.create }}
|
||||
- apiVersion: elbv2.k8s.aws/v1beta1
|
||||
kind: IngressClassParams
|
||||
metadata:
|
||||
name: {{ include "aws-load-balancer-controller.ingressClassParamsName" . }}
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 6 }}
|
||||
{{- with .Values.ingressClassParams.spec }}
|
||||
spec:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
- apiVersion: networking.k8s.io/v1
|
||||
kind: IngressClass
|
||||
metadata:
|
||||
name: {{ .Values.ingressClass }}
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 6 }}
|
||||
{{- if .Values.ingressClassConfig.default }}
|
||||
annotations:
|
||||
ingressclass.kubernetes.io/is-default-class: "true"
|
||||
{{- end }}
|
||||
spec:
|
||||
controller: ingress.k8s.aws/alb
|
||||
{{- if or .Values.ingressClassParams.name (and .Values.ingressClassParams.create .Values.ingressClassParams.spec) }}
|
||||
parameters:
|
||||
apiGroup: elbv2.k8s.aws
|
||||
kind: IngressClassParams
|
||||
name: {{ include "aws-load-balancer-controller.ingressClassParamsName" . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,14 @@
|
||||
{{- if and .Values.podDisruptionBudget (gt (int .Values.replicaCount) 1) }}
|
||||
apiVersion: policy/v1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: {{ include "aws-load-balancer-controller.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "aws-load-balancer-controller.selectorLabels" . | nindent 6 }}
|
||||
{{- toYaml .Values.podDisruptionBudget | nindent 2 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,104 @@
|
||||
{{- if .Values.rbac.create }}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ template "aws-load-balancer-controller.fullname" . }}-leader-election-role
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: [configmaps]
|
||||
verbs: [create]
|
||||
- apiGroups: [""]
|
||||
resources: [configmaps]
|
||||
resourceNames: [aws-load-balancer-controller-leader]
|
||||
verbs: [get, patch, update]
|
||||
- apiGroups:
|
||||
- "coordination.k8s.io"
|
||||
resources:
|
||||
- leases
|
||||
verbs:
|
||||
- create
|
||||
- apiGroups:
|
||||
- "coordination.k8s.io"
|
||||
resources:
|
||||
- leases
|
||||
resourceNames:
|
||||
- aws-load-balancer-controller-leader
|
||||
verbs:
|
||||
- get
|
||||
- update
|
||||
- patch
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ template "aws-load-balancer-controller.fullname" . }}-leader-election-rolebinding
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: {{ template "aws-load-balancer-controller.fullname" . }}-leader-election-role
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "aws-load-balancer-controller.serviceAccountName" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ template "aws-load-balancer-controller.fullname" . }}-role
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
|
||||
rules:
|
||||
- apiGroups: ["elbv2.k8s.aws"]
|
||||
resources: [targetgroupbindings]
|
||||
verbs: [create, delete, get, list, patch, update, watch]
|
||||
- apiGroups: ["elbv2.k8s.aws"]
|
||||
resources: [ingressclassparams]
|
||||
verbs: [get, list, watch]
|
||||
- apiGroups: [""]
|
||||
resources: [events]
|
||||
verbs: [create, patch]
|
||||
- apiGroups: [""]
|
||||
resources: [pods]
|
||||
verbs: [get, list, watch]
|
||||
- apiGroups: ["networking.k8s.io"]
|
||||
resources: [ingressclasses]
|
||||
verbs: [get, list, watch]
|
||||
- apiGroups: ["", "extensions", "networking.k8s.io"]
|
||||
resources: [services, ingresses]
|
||||
verbs: [get, list, patch, update, watch]
|
||||
- apiGroups: [""]
|
||||
resources: [nodes, namespaces, endpoints]
|
||||
verbs: [get, list, watch]
|
||||
{{- if .Values.clusterSecretsPermissions.allowAllSecrets }}
|
||||
- apiGroups: [""]
|
||||
resources: [secrets]
|
||||
verbs: [get, list, watch]
|
||||
{{- end }}
|
||||
- apiGroups: ["elbv2.k8s.aws", "", "extensions", "networking.k8s.io"]
|
||||
resources: [targetgroupbindings/status, pods/status, services/status, ingresses/status]
|
||||
verbs: [update, patch]
|
||||
- apiGroups: ["discovery.k8s.io"]
|
||||
resources: [endpointslices]
|
||||
verbs: [get, list, watch]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: {{ template "aws-load-balancer-controller.fullname" . }}-rolebinding
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: {{ template "aws-load-balancer-controller.fullname" . }}-role
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "aws-load-balancer-controller.serviceAccountName" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,41 @@
|
||||
{{- if.Values.serviceMonitor.enabled }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "aws-load-balancer-controller.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{- with .Values.serviceAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
|
||||
spec:
|
||||
ports:
|
||||
- port: 8080
|
||||
name: metrics-server
|
||||
targetPort: metrics-server
|
||||
selector:
|
||||
{{- include "aws-load-balancer-controller.selectorLabels" . | nindent 4 }}
|
||||
---
|
||||
{{- end }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "aws-load-balancer-controller.webhookService" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{- with .Values.serviceAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
|
||||
app.kubernetes.io/component: webhook
|
||||
prometheus.io/service-monitor: "false"
|
||||
spec:
|
||||
ports:
|
||||
- port: 443
|
||||
name: webhook-server
|
||||
targetPort: webhook-server
|
||||
selector:
|
||||
{{- include "aws-load-balancer-controller.selectorLabels" . | nindent 4 }}
|
||||
@@ -0,0 +1,18 @@
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "aws-load-balancer-controller.serviceAccountName" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
|
||||
{{- with .Values.serviceAccount.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{ toYaml . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,43 @@
|
||||
{{- if.Values.serviceMonitor.enabled -}}
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: ServiceMonitor
|
||||
metadata:
|
||||
name: {{ include "aws-load-balancer-controller.fullname" . }}
|
||||
namespace: {{ default .Release.Namespace .Values.serviceMonitor.namespace }}
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceMonitor.additionalLabels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
jobLabel: app.kubernetes.io/instance
|
||||
namespaceSelector:
|
||||
matchNames:
|
||||
- {{ .Release.Namespace }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "aws-load-balancer-controller.selectorLabels" . | nindent 6 }}
|
||||
matchExpressions:
|
||||
- key: prometheus.io/service-monitor
|
||||
operator: NotIn
|
||||
values:
|
||||
- "false"
|
||||
endpoints:
|
||||
- port: metrics-server
|
||||
path: /metrics
|
||||
scheme: http
|
||||
{{- with .Values.serviceMonitor.interval }}
|
||||
interval: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.serviceMonitor.scrapeTimeout }}
|
||||
scrapeTimeout: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.serviceMonitor.relabelings }}
|
||||
relabelings:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.serviceMonitor.metricRelabelings }}
|
||||
metricRelabelings:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,248 @@
|
||||
{{ $tls := fromYaml ( include "aws-load-balancer-controller.webhookCerts" . ) }}
|
||||
---
|
||||
apiVersion: admissionregistration.k8s.io/v1
|
||||
kind: MutatingWebhookConfiguration
|
||||
metadata:
|
||||
{{- if $.Values.enableCertManager }}
|
||||
annotations:
|
||||
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ template "aws-load-balancer-controller.namePrefix" . }}-serving-cert
|
||||
{{- end }}
|
||||
name: {{ include "aws-load-balancer-controller.namePrefix" . }}-webhook
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
|
||||
webhooks:
|
||||
- clientConfig:
|
||||
{{ if not $.Values.enableCertManager -}}
|
||||
caBundle: {{ $tls.caCert }}
|
||||
{{ end }}
|
||||
service:
|
||||
name: {{ template "aws-load-balancer-controller.webhookService" . }}
|
||||
namespace: {{ $.Release.Namespace }}
|
||||
path: /mutate-v1-pod
|
||||
failurePolicy: Fail
|
||||
name: mpod.elbv2.k8s.aws
|
||||
admissionReviewVersions:
|
||||
- v1beta1
|
||||
namespaceSelector:
|
||||
matchExpressions:
|
||||
{{ if .Values.webhookNamespaceSelectors }}
|
||||
{{ toYaml .Values.webhookNamespaceSelectors | nindent 4 }}
|
||||
{{ else }}
|
||||
- key: elbv2.k8s.aws/pod-readiness-gate-inject
|
||||
operator: In
|
||||
values:
|
||||
- enabled
|
||||
{{ end }}
|
||||
objectSelector:
|
||||
matchExpressions:
|
||||
- key: app.kubernetes.io/name
|
||||
operator: NotIn
|
||||
values:
|
||||
- {{ include "aws-load-balancer-controller.name" . }}
|
||||
{{- if .Values.objectSelector.matchExpressions }}
|
||||
{{- toYaml .Values.objectSelector.matchExpressions | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.objectSelector.matchLabels }}
|
||||
matchLabels:
|
||||
{{- toYaml .Values.objectSelector.matchLabels | nindent 6 }}
|
||||
{{- end }}
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
apiVersions:
|
||||
- v1
|
||||
operations:
|
||||
- CREATE
|
||||
resources:
|
||||
- pods
|
||||
sideEffects: None
|
||||
{{- if .Values.enableServiceMutatorWebhook }}
|
||||
- clientConfig:
|
||||
{{ if not $.Values.enableCertManager -}}
|
||||
caBundle: {{ $tls.caCert }}
|
||||
{{ end }}
|
||||
service:
|
||||
name: {{ template "aws-load-balancer-controller.webhookService" . }}
|
||||
namespace: {{ $.Release.Namespace }}
|
||||
path: /mutate-v1-service
|
||||
failurePolicy: {{ .Values.serviceMutatorWebhookConfig.failurePolicy }}
|
||||
name: mservice.elbv2.k8s.aws
|
||||
admissionReviewVersions:
|
||||
- v1beta1
|
||||
objectSelector:
|
||||
matchExpressions:
|
||||
- key: app.kubernetes.io/name
|
||||
operator: NotIn
|
||||
values:
|
||||
- {{ include "aws-load-balancer-controller.name" . }}
|
||||
{{- if .Values.serviceMutatorWebhookConfig.objectSelector.matchExpressions }}
|
||||
{{- toYaml .Values.serviceMutatorWebhookConfig.objectSelector.matchExpressions | nindent 4 }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .Values.serviceMutatorWebhookConfig.objectSelector.matchLabels }}
|
||||
matchLabels:
|
||||
{{- toYaml .Values.serviceMutatorWebhookConfig.objectSelector.matchLabels | nindent 6 }}
|
||||
{{- end }}
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
apiVersions:
|
||||
- v1
|
||||
operations:
|
||||
{{- toYaml .Values.serviceMutatorWebhookConfig.operations | nindent 4 }}
|
||||
resources:
|
||||
- services
|
||||
sideEffects: None
|
||||
{{- end }}
|
||||
- clientConfig:
|
||||
{{ if not $.Values.enableCertManager -}}
|
||||
caBundle: {{ $tls.caCert }}
|
||||
{{ end }}
|
||||
service:
|
||||
name: {{ template "aws-load-balancer-controller.webhookService" . }}
|
||||
namespace: {{ $.Release.Namespace }}
|
||||
path: /mutate-elbv2-k8s-aws-v1beta1-targetgroupbinding
|
||||
failurePolicy: Fail
|
||||
name: mtargetgroupbinding.elbv2.k8s.aws
|
||||
admissionReviewVersions:
|
||||
- v1beta1
|
||||
rules:
|
||||
- apiGroups:
|
||||
- elbv2.k8s.aws
|
||||
apiVersions:
|
||||
- v1beta1
|
||||
operations:
|
||||
- CREATE
|
||||
- UPDATE
|
||||
resources:
|
||||
- targetgroupbindings
|
||||
sideEffects: None
|
||||
---
|
||||
apiVersion: admissionregistration.k8s.io/v1
|
||||
kind: ValidatingWebhookConfiguration
|
||||
metadata:
|
||||
{{- if $.Values.enableCertManager }}
|
||||
annotations:
|
||||
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ template "aws-load-balancer-controller.namePrefix" . }}-serving-cert
|
||||
{{- end }}
|
||||
name: {{ include "aws-load-balancer-controller.namePrefix" . }}-webhook
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
|
||||
webhooks:
|
||||
- clientConfig:
|
||||
{{ if not $.Values.enableCertManager -}}
|
||||
caBundle: {{ $tls.caCert }}
|
||||
{{ end }}
|
||||
service:
|
||||
name: {{ template "aws-load-balancer-controller.webhookService" . }}
|
||||
namespace: {{ $.Release.Namespace }}
|
||||
path: /validate-elbv2-k8s-aws-v1beta1-ingressclassparams
|
||||
failurePolicy: Fail
|
||||
name: vingressclassparams.elbv2.k8s.aws
|
||||
admissionReviewVersions:
|
||||
- v1beta1
|
||||
objectSelector:
|
||||
matchExpressions:
|
||||
- key: app.kubernetes.io/name
|
||||
operator: NotIn
|
||||
values:
|
||||
- {{ include "aws-load-balancer-controller.name" . }}
|
||||
rules:
|
||||
- apiGroups:
|
||||
- elbv2.k8s.aws
|
||||
apiVersions:
|
||||
- v1beta1
|
||||
operations:
|
||||
- CREATE
|
||||
- UPDATE
|
||||
resources:
|
||||
- ingressclassparams
|
||||
sideEffects: None
|
||||
- clientConfig:
|
||||
{{ if not $.Values.enableCertManager -}}
|
||||
caBundle: {{ $tls.caCert }}
|
||||
{{ end }}
|
||||
service:
|
||||
name: {{ template "aws-load-balancer-controller.webhookService" . }}
|
||||
namespace: {{ $.Release.Namespace }}
|
||||
path: /validate-elbv2-k8s-aws-v1beta1-targetgroupbinding
|
||||
failurePolicy: Fail
|
||||
name: vtargetgroupbinding.elbv2.k8s.aws
|
||||
admissionReviewVersions:
|
||||
- v1beta1
|
||||
rules:
|
||||
- apiGroups:
|
||||
- elbv2.k8s.aws
|
||||
apiVersions:
|
||||
- v1beta1
|
||||
operations:
|
||||
- CREATE
|
||||
- UPDATE
|
||||
resources:
|
||||
- targetgroupbindings
|
||||
sideEffects: None
|
||||
- clientConfig:
|
||||
{{ if not $.Values.enableCertManager -}}
|
||||
caBundle: {{ $tls.caCert }}
|
||||
{{ end }}
|
||||
service:
|
||||
name: {{ template "aws-load-balancer-controller.webhookService" . }}
|
||||
namespace: {{ $.Release.Namespace }}
|
||||
path: /validate-networking-v1-ingress
|
||||
failurePolicy: Fail
|
||||
matchPolicy: Equivalent
|
||||
name: vingress.elbv2.k8s.aws
|
||||
admissionReviewVersions:
|
||||
- v1beta1
|
||||
rules:
|
||||
- apiGroups:
|
||||
- networking.k8s.io
|
||||
apiVersions:
|
||||
- v1
|
||||
operations:
|
||||
- CREATE
|
||||
- UPDATE
|
||||
resources:
|
||||
- ingresses
|
||||
sideEffects: None
|
||||
---
|
||||
{{- if not $.Values.enableCertManager }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ template "aws-load-balancer-controller.webhookCertSecret" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{ include "aws-load-balancer-controller.labels" . | indent 4 }}
|
||||
type: kubernetes.io/tls
|
||||
data:
|
||||
ca.crt: {{ $tls.caCert }}
|
||||
tls.crt: {{ $tls.clientCert }}
|
||||
tls.key: {{ $tls.clientKey }}
|
||||
{{- else }}
|
||||
apiVersion: cert-manager.io/v1
|
||||
kind: Certificate
|
||||
metadata:
|
||||
name: {{ template "aws-load-balancer-controller.namePrefix" . }}-serving-cert
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{ include "aws-load-balancer-controller.labels" . | indent 4 }}
|
||||
spec:
|
||||
dnsNames:
|
||||
- {{ template "aws-load-balancer-controller.webhookService" . }}.{{ .Release.Namespace }}.svc
|
||||
- {{ template "aws-load-balancer-controller.webhookService" . }}.{{ .Release.Namespace }}.svc.{{ .Values.cluster.dnsDomain }}
|
||||
issuerRef:
|
||||
kind: Issuer
|
||||
name: {{ template "aws-load-balancer-controller.namePrefix" . }}-selfsigned-issuer
|
||||
secretName: {{ template "aws-load-balancer-controller.webhookCertSecret" . }}
|
||||
---
|
||||
apiVersion: cert-manager.io/v1
|
||||
kind: Issuer
|
||||
metadata:
|
||||
name: {{ template "aws-load-balancer-controller.namePrefix" . }}-selfsigned-issuer
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{ include "aws-load-balancer-controller.labels" . | indent 4 }}
|
||||
spec:
|
||||
selfSigned: {}
|
||||
{{- end }}
|
||||
430
backing-services/aws-load-balancer-controller/values.yaml
Normal file
430
backing-services/aws-load-balancer-controller/values.yaml
Normal file
@@ -0,0 +1,430 @@
|
||||
# Default values for aws-load-balancer-controller.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
|
||||
replicaCount: 2
|
||||
|
||||
revisionHistoryLimit: 10
|
||||
|
||||
image:
|
||||
repository: public.ecr.aws/eks/aws-load-balancer-controller
|
||||
tag: v2.8.2
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
runtimeClassName: ""
|
||||
imagePullSecrets: []
|
||||
nameOverride: ""
|
||||
fullnameOverride: ""
|
||||
|
||||
# AWS LBC only has 1 main working pod, other pods are just standby
|
||||
# the purpose of enable hpa is to survive load induced failure by the calls to the aws-load-balancer-webhook-service
|
||||
# since the calls from kube-apiserver are sent round-robin to all replicas, and the failure policy on those webhooks is Fail
|
||||
# if the pods become overloaded and do not respond within the timeout that could block the creation of pods, targetgroupbindings or ingresses
|
||||
# Please keep in mind that the controller pods have `priorityClassName: system-cluster-critical`, enabling HPA may lead to the eviction of other low-priority pods in the node
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 1
|
||||
maxReplicas: 5
|
||||
targetCPUUtilizationPercentage: 80
|
||||
|
||||
serviceAccount:
|
||||
# Specifies whether a service account should be created
|
||||
create: true
|
||||
# Annotations to add to the service account
|
||||
annotations:
|
||||
eks.amazonaws.com/role-arn: "{{ .Values.serviceAccount.awsRoleArn }}"
|
||||
# The name of the service account to use.
|
||||
# If not set and create is true, a name is generated using the fullname template
|
||||
name:
|
||||
# Automount API credentials for a Service Account.
|
||||
automountServiceAccountToken: true
|
||||
# List of image pull secrets to add to the Service Account.
|
||||
imagePullSecrets:
|
||||
# - name: docker
|
||||
|
||||
rbac:
|
||||
# Specifies whether rbac resources should be created
|
||||
create: true
|
||||
|
||||
podSecurityContext:
|
||||
fsGroup: 65534
|
||||
|
||||
securityContext:
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
readOnlyRootFilesystem: true
|
||||
runAsNonRoot: true
|
||||
allowPrivilegeEscalation: false
|
||||
|
||||
# Time period for the controller pod to do a graceful shutdown
|
||||
terminationGracePeriodSeconds: 10
|
||||
|
||||
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 do 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
|
||||
|
||||
# priorityClassName specifies the PriorityClass to indicate the importance of controller pods
|
||||
# ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass
|
||||
priorityClassName: system-cluster-critical
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
# affinity specifies a custom affinity for the controller pods
|
||||
affinity: {}
|
||||
|
||||
# configureDefaultAffinity specifies whether to configure a default affinity for the controller pods to prevent
|
||||
# co-location on the same node. This will get ignored if you specify a custom affinity configuration.
|
||||
configureDefaultAffinity: true
|
||||
|
||||
# topologySpreadConstraints is a stable feature of k8s v1.19 which provides the ability to
|
||||
# control how Pods are spread across your cluster among failure-domains such as regions, zones,
|
||||
# nodes, and other user-defined topology domains.
|
||||
#
|
||||
# more details here: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
|
||||
topologySpreadConstraints: {}
|
||||
|
||||
updateStrategy: {}
|
||||
# type: RollingUpdate
|
||||
# rollingUpdate:
|
||||
# maxSurge: 1
|
||||
# maxUnavailable: 1
|
||||
|
||||
# serviceAnnotations contains annotations to be added to the provisioned webhook service resource
|
||||
serviceAnnotations: {}
|
||||
|
||||
# deploymentAnnotations contains annotations for the controller deployment
|
||||
deploymentAnnotations: {}
|
||||
|
||||
podAnnotations: {}
|
||||
|
||||
podLabels: {}
|
||||
|
||||
# additionalLabels -- Labels to add to each object of the chart.
|
||||
additionalLabels: {}
|
||||
|
||||
# Enable cert-manager
|
||||
enableCertManager: false
|
||||
|
||||
# The name of the Kubernetes cluster. A non-empty value is required
|
||||
clusterName:
|
||||
|
||||
# cluster contains configurations specific to the kubernetes cluster
|
||||
cluster:
|
||||
# Cluster DNS domain (required for requesting TLS certificates)
|
||||
dnsDomain: alpharoute.dev
|
||||
|
||||
# The ingress class this controller will satisfy. If not specified, controller will match all
|
||||
# ingresses without ingress class annotation and ingresses of type alb
|
||||
ingressClass: alb
|
||||
|
||||
# ingressClassParams specify the IngressCLassParams that enforce settings for a set of Ingresses when using with ingress Controller.
|
||||
ingressClassParams:
|
||||
create: true
|
||||
# The name of ingressClassParams resource will be referred in ingressClass
|
||||
name:
|
||||
spec: {}
|
||||
# Due to dependency issue, the validation webhook ignores this particular ingressClassParams resource.
|
||||
# We recommend creating ingressClassParams resources separately after installing this chart and the
|
||||
# controller is functional.
|
||||
#
|
||||
# You can set the specifications in the `helm install` command through `--set` or `--set-string`
|
||||
# If you do want to specify in the values.yaml, uncomment the following
|
||||
# lines, adjust them as necessary, and remove the curly braces after 'spec:'
|
||||
#
|
||||
# namespaceSelector:
|
||||
# matchLabels:
|
||||
# group:
|
||||
# scheme:
|
||||
# ipAddressType:
|
||||
# tags:
|
||||
# loadBalancerAttributes:
|
||||
# - key:
|
||||
# value:
|
||||
|
||||
# To use IngressClass resource instead of annotation, before you need to install the IngressClass resource pointing to controller.
|
||||
# If specified as true, the IngressClass resource will be created.
|
||||
createIngressClassResource: true
|
||||
|
||||
# The AWS region for the kubernetes cluster. Set to use KIAM or kube2iam for example.
|
||||
region:
|
||||
|
||||
# The VPC ID for the Kubernetes cluster. Set this manually when your pods are unable to use the metadata service to determine this automatically
|
||||
vpcId:
|
||||
|
||||
# Custom AWS API Endpoints (serviceID1=URL1,serviceID2=URL2)
|
||||
awsApiEndpoints:
|
||||
|
||||
# awsApiThrottle specifies custom AWS API throttle settings (serviceID1:operationRegex1=rate:burst,serviceID2:operationRegex2=rate:burst)
|
||||
# example: --set awsApiThrottle="{Elastic Load Balancing v2:RegisterTargets|DeregisterTargets=4:20,Elastic Load Balancing v2:.*=10:40}"
|
||||
awsApiThrottle:
|
||||
|
||||
# Maximum retries for AWS APIs (default 10)
|
||||
awsMaxRetries:
|
||||
|
||||
# Default target type. Used as the default value of the "alb.ingress.kubernetes.io/target-type" and
|
||||
# "service.beta.kubernetes.io/aws-load-balancer-nlb-target-type" annotations.
|
||||
# Possible values are "ip" and "instance"
|
||||
# The value "ip" should be used for ENI-based CNIs, such as the Amazon VPC CNI,
|
||||
# Calico with encapsulation disabled, or Cilium with masquerading disabled.
|
||||
# The value "instance" should be used for overlay-based CNIs, such as Calico in VXLAN or IPIP mode or
|
||||
# Cilium with masquerading enabled.
|
||||
defaultTargetType: instance
|
||||
|
||||
# If enabled, targetHealth readiness gate will get injected to the pod spec for the matching endpoint pods (default true)
|
||||
enablePodReadinessGateInject:
|
||||
|
||||
# Enable Shield addon for ALB (default true)
|
||||
enableShield:
|
||||
|
||||
# Enable WAF addon for ALB (default true)
|
||||
enableWaf:
|
||||
|
||||
# Enable WAF V2 addon for ALB (default true)
|
||||
enableWafv2:
|
||||
|
||||
# Maximum number of concurrently running reconcile loops for ingress (default 3)
|
||||
ingressMaxConcurrentReconciles:
|
||||
|
||||
# Set the controller log level - info(default), debug (default "info")
|
||||
logLevel:
|
||||
|
||||
# The address the metric endpoint binds to. (default ":8080")
|
||||
metricsBindAddr: ""
|
||||
|
||||
# The TCP port the Webhook server binds to. (default 9443)
|
||||
webhookBindPort:
|
||||
|
||||
# webhookTLS specifies TLS cert/key for the webhook
|
||||
webhookTLS:
|
||||
caCert:
|
||||
cert:
|
||||
key:
|
||||
|
||||
# array of namespace selectors for the pod mutator webhook
|
||||
webhookNamespaceSelectors:
|
||||
# - key: elbv2.k8s.aws/pod-readiness-gate-inject
|
||||
# operator: In
|
||||
# values:
|
||||
# - enabled
|
||||
|
||||
# keepTLSSecret specifies whether to reuse existing TLS secret for chart upgrade
|
||||
keepTLSSecret: true
|
||||
|
||||
# Maximum number of concurrently running reconcile loops for service (default 3)
|
||||
serviceMaxConcurrentReconciles:
|
||||
|
||||
# Maximum number of concurrently running reconcile loops for targetGroupBinding
|
||||
targetgroupbindingMaxConcurrentReconciles:
|
||||
|
||||
# Maximum duration of exponential backoff for targetGroupBinding reconcile failures
|
||||
targetgroupbindingMaxExponentialBackoffDelay:
|
||||
|
||||
# Period at which the controller forces the repopulation of its local object stores. (default 10h0m0s)
|
||||
syncPeriod:
|
||||
|
||||
# Namespace the controller watches for updates to Kubernetes objects, If empty, all namespaces are watched.
|
||||
watchNamespace:
|
||||
|
||||
# disableIngressClassAnnotation disables the usage of kubernetes.io/ingress.class annotation, false by default
|
||||
disableIngressClassAnnotation:
|
||||
|
||||
# disableIngressGroupNameAnnotation disables the usage of alb.ingress.kubernetes.io/group.name annotation, false by default
|
||||
disableIngressGroupNameAnnotation:
|
||||
|
||||
# tolerateNonExistentBackendService permits rules which specify backend services that don't exist, true by default (When enabled, it will return 503 error if backend service not exist)
|
||||
tolerateNonExistentBackendService:
|
||||
|
||||
# tolerateNonExistentBackendAction permits rules which specify backend actions that don't exist, true by default (When enabled, it will return 503 error if backend action not exist)
|
||||
tolerateNonExistentBackendAction:
|
||||
|
||||
# defaultSSLPolicy specifies the default SSL policy to use for TLS/HTTPS listeners
|
||||
defaultSSLPolicy:
|
||||
|
||||
# Liveness probe configuration for the controller
|
||||
livenessProbe:
|
||||
failureThreshold: 2
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: 61779
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
|
||||
# readiness probe configuration for the controller
|
||||
readinessProbe:
|
||||
failureThreshold: 2
|
||||
httpGet:
|
||||
path: /readyz
|
||||
port: 61779
|
||||
scheme: HTTP
|
||||
successThreshold: 1
|
||||
initialDelaySeconds: 10
|
||||
timeoutSeconds: 10
|
||||
|
||||
# Environment variables to set for aws-load-balancer-controller pod.
|
||||
# We strongly discourage programming access credentials in the controller environment. You should setup IRSA or
|
||||
# comparable solutions like kube2iam, kiam etc instead.
|
||||
env:
|
||||
# ENV_1: ""
|
||||
# ENV_2: ""
|
||||
|
||||
# Use Environment variables credentials from Secret (aws-secret) for aws-load-balancer-controller pod similarly as The EBS CSI Driver does.
|
||||
# envSecretName: aws-secret
|
||||
|
||||
# Use envFrom to set environment variables from a Secret or ConfigMap
|
||||
envFrom:
|
||||
# valueFrom:
|
||||
# - secretKeyRef:
|
||||
# name: aws-load-balancer-controller
|
||||
|
||||
# Specifies if aws-load-balancer-controller should be started in hostNetwork mode.
|
||||
# This is required if using a custom CNI where the managed control plane nodes are unable to initiate
|
||||
# network connections to the pods, for example using Calico CNI plugin on EKS. This is not required or
|
||||
# recommended if using the Amazon VPC CNI plugin.
|
||||
hostNetwork: false
|
||||
|
||||
# Specifies the dnsPolicy that should be used for pods in the deployment
|
||||
#
|
||||
# This may need to be used to be changed given certain conditions. For instance, if one uses the cilium CNI
|
||||
# with certain settings, one may need to set `hostNetwork: true` and webhooks won't work unless `dnsPolicy`
|
||||
# is set to `ClusterFirstWithHostNet`. See https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy
|
||||
dnsPolicy:
|
||||
|
||||
# extraVolumeMounts are the additional volume mounts. This enables setting up IRSA on non-EKS Kubernetes cluster
|
||||
extraVolumeMounts:
|
||||
# - name: aws-iam-token
|
||||
# mountPath: /var/run/secrets/eks.amazonaws.com/serviceaccount
|
||||
# readOnly: true
|
||||
|
||||
# extraVolumes for the extraVolumeMounts. Useful to mount a projected service account token for example.
|
||||
extraVolumes:
|
||||
# - name: aws-iam-token
|
||||
# projected:
|
||||
# defaultMode: 420
|
||||
# sources:
|
||||
# - serviceAccountToken:
|
||||
# audience: sts.amazonaws.com
|
||||
# expirationSeconds: 86400
|
||||
# path: token
|
||||
|
||||
# defaultTags are the tags to apply to all AWS resources managed by this controller
|
||||
defaultTags: {}
|
||||
# default_tag1: value1
|
||||
# default_tag2: value2
|
||||
|
||||
# podDisruptionBudget specifies the disruption budget for the controller pods.
|
||||
# Disruption budget will be configured only when the replicaCount is greater than 1
|
||||
podDisruptionBudget: {}
|
||||
# maxUnavailable: 1
|
||||
|
||||
# externalManagedTags is the list of tag keys on AWS resources that will be managed externally
|
||||
externalManagedTags: []
|
||||
|
||||
# enableEndpointSlices enables k8s EndpointSlices for IP targets instead of Endpoints (default false)
|
||||
enableEndpointSlices:
|
||||
|
||||
# enableBackendSecurityGroup enables shared security group for backend traffic (default true)
|
||||
enableBackendSecurityGroup:
|
||||
|
||||
# backendSecurityGroup specifies backend security group id (default controller auto create backend security group)
|
||||
backendSecurityGroup:
|
||||
|
||||
# disableRestrictedSecurityGroupRules specifies whether to disable creating port-range restricted security group rules for traffic
|
||||
disableRestrictedSecurityGroupRules:
|
||||
|
||||
# controllerConfig specifies controller configuration
|
||||
controllerConfig:
|
||||
# featureGates set of key: value pairs that describe AWS load balance controller features
|
||||
featureGates: {}
|
||||
# ListenerRulesTagging: true
|
||||
# WeightedTargetGroups: true
|
||||
# ServiceTypeLoadBalancerOnly: false
|
||||
# EndpointsFailOpen: true
|
||||
# EnableServiceController: true
|
||||
# EnableIPTargetType: true
|
||||
# SubnetsClusterTagCheck: true
|
||||
# NLBHealthCheckAdvancedConfig: true
|
||||
# ALBSingleSubnet: false
|
||||
|
||||
certDiscovery:
|
||||
allowedCertificateAuthorityARNs: "" # empty means all CAs are in scope
|
||||
|
||||
# objectSelector for webhook
|
||||
objectSelector:
|
||||
matchExpressions:
|
||||
# - key: <key>
|
||||
# operator: <operator>
|
||||
# values:
|
||||
# - <value>
|
||||
matchLabels:
|
||||
# key: value
|
||||
|
||||
serviceMonitor:
|
||||
# Specifies whether a service monitor should be created
|
||||
enabled: false
|
||||
# Namespace to create the service monitor in
|
||||
namespace:
|
||||
# Labels to add to the service monitor
|
||||
additionalLabels: {}
|
||||
# Prometheus scrape interval
|
||||
interval: 1m
|
||||
# Prometheus scrape timeout
|
||||
scrapeTimeout:
|
||||
# Relabelings to apply to samples before ingestion
|
||||
relabelings:
|
||||
# Metric relabelings to apply to samples before ingestion
|
||||
metricRelabelings:
|
||||
|
||||
# clusterSecretsPermissions lets you configure RBAC permissions for secret resources
|
||||
# Access to secrets resource is required only if you use the OIDC feature, and instead of
|
||||
# enabling access to all secrets, we recommend configuring namespaced role/rolebinding.
|
||||
# This option is for backwards compatibility only, and will potentially be deprecated in future.
|
||||
clusterSecretsPermissions:
|
||||
# allowAllSecrets allows the controller to access all secrets in the cluster.
|
||||
# This is to get backwards compatible behavior, but *NOT* recommended for security reasons
|
||||
allowAllSecrets: false
|
||||
|
||||
# ingressClassConfig contains configurations specific to the ingress class
|
||||
ingressClassConfig:
|
||||
default: false
|
||||
|
||||
# enableServiceMutatorWebhook allows you enable the webhook which makes this controller the default for all new services of type LoadBalancer
|
||||
enableServiceMutatorWebhook: true
|
||||
|
||||
# serviceMutatorWebhook contains configurations specific to the service mutator webhook
|
||||
serviceMutatorWebhookConfig:
|
||||
# whether or not to fail the service creation if the webhook fails
|
||||
failurePolicy: Fail
|
||||
# limit webhook to only mutate services matching the objectSelector
|
||||
objectSelector:
|
||||
matchExpressions: []
|
||||
# - key: <key>
|
||||
# operator: <operator>
|
||||
# values:
|
||||
# - <value>
|
||||
matchLabels: {}
|
||||
# key: value
|
||||
# which operations trigger the webhook
|
||||
operations:
|
||||
- CREATE
|
||||
# - UPDATE
|
||||
|
||||
# serviceTargetENISGTags specifies AWS tags, in addition to the cluster tags, for finding the target ENI SG to which to add inbound rules from NLBs.
|
||||
serviceTargetENISGTags:
|
||||
|
||||
# Specifies the class of load balancer to use for services. This affects how services are provisioned if type LoadBalancer is used (default service.k8s.aws/nlb)
|
||||
loadBalancerClass:
|
||||
|
||||
# creator will disable helm default labels, so you can only add yours
|
||||
# creator: "me"
|
||||
26
backing-services/cert-manager/Chart.yaml
Normal file
26
backing-services/cert-manager/Chart.yaml
Normal file
@@ -0,0 +1,26 @@
|
||||
annotations:
|
||||
artifacthub.io/category: security
|
||||
artifacthub.io/license: Apache-2.0
|
||||
artifacthub.io/prerelease: "false"
|
||||
artifacthub.io/signKey: |
|
||||
fingerprint: 1020CF3C033D4F35BAE1C19E1226061C665DF13E
|
||||
url: https://cert-manager.io/public-keys/cert-manager-keyring-2021-09-20-1020CF3C033D4F35BAE1C19E1226061C665DF13E.gpg
|
||||
apiVersion: v2
|
||||
appVersion: v1.16.2
|
||||
description: A Helm chart for cert-manager
|
||||
home: https://cert-manager.io
|
||||
icon: https://raw.githubusercontent.com/cert-manager/community/4d35a69437d21b76322157e6284be4cd64e6d2b7/logo/logo-small.png
|
||||
keywords:
|
||||
- cert-manager
|
||||
- kube-lego
|
||||
- letsencrypt
|
||||
- tls
|
||||
kubeVersion: '>= 1.22.0-0'
|
||||
maintainers:
|
||||
- email: cert-manager-maintainers@googlegroups.com
|
||||
name: cert-manager-maintainers
|
||||
url: https://cert-manager.io
|
||||
name: cert-manager
|
||||
sources:
|
||||
- https://github.com/cert-manager/cert-manager
|
||||
version: v1.16.2
|
||||
1994
backing-services/cert-manager/README.md
Normal file
1994
backing-services/cert-manager/README.md
Normal file
File diff suppressed because it is too large
Load Diff
18
backing-services/cert-manager/templates/NOTES.txt
Normal file
18
backing-services/cert-manager/templates/NOTES.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
{{- if .Values.installCRDs }}
|
||||
⚠️ WARNING: `installCRDs` is deprecated, use `crds.enabled` instead.
|
||||
{{- end }}
|
||||
cert-manager {{ .Chart.AppVersion }} has been deployed successfully!
|
||||
|
||||
In order to begin issuing certificates, you will need to set up a ClusterIssuer
|
||||
or Issuer resource (for example, by creating a 'letsencrypt-staging' issuer).
|
||||
|
||||
More information on the different types of issuers and how to configure them
|
||||
can be found in our documentation:
|
||||
|
||||
https://cert-manager.io/docs/configuration/
|
||||
|
||||
For information on how to configure cert-manager to automatically provision
|
||||
Certificates for Ingress resources, take a look at the `ingress-shim`
|
||||
documentation:
|
||||
|
||||
https://cert-manager.io/docs/usage/ingress/
|
||||
202
backing-services/cert-manager/templates/_helpers.tpl
Normal file
202
backing-services/cert-manager/templates/_helpers.tpl
Normal file
@@ -0,0 +1,202 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "cert-manager.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- 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 "cert-manager.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "cert-manager.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
{{ default (include "cert-manager.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.serviceAccount.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Webhook templates
|
||||
*/}}
|
||||
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
Manually fix the 'app' and 'name' labels to 'webhook' to maintain
|
||||
compatibility with the v0.9 deployment selector.
|
||||
*/}}
|
||||
{{- define "webhook.name" -}}
|
||||
{{- printf "webhook" -}}
|
||||
{{- 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.
|
||||
*/}}
|
||||
{{- define "webhook.fullname" -}}
|
||||
{{- $trimmedName := printf "%s" (include "cert-manager.fullname" .) | trunc 55 | trimSuffix "-" -}}
|
||||
{{- printf "%s-webhook" $trimmedName | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "webhook.caRef" -}}
|
||||
{{- template "cert-manager.namespace" }}/{{ template "webhook.fullname" . }}-ca
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "webhook.serviceAccountName" -}}
|
||||
{{- if .Values.webhook.serviceAccount.create -}}
|
||||
{{ default (include "webhook.fullname" .) .Values.webhook.serviceAccount.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.webhook.serviceAccount.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
cainjector templates
|
||||
*/}}
|
||||
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
Manually fix the 'app' and 'name' labels to 'cainjector' to maintain
|
||||
compatibility with the v0.9 deployment selector.
|
||||
*/}}
|
||||
{{- define "cainjector.name" -}}
|
||||
{{- printf "cainjector" -}}
|
||||
{{- 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.
|
||||
*/}}
|
||||
{{- define "cainjector.fullname" -}}
|
||||
{{- $trimmedName := printf "%s" (include "cert-manager.fullname" .) | trunc 52 | trimSuffix "-" -}}
|
||||
{{- printf "%s-cainjector" $trimmedName | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "cainjector.serviceAccountName" -}}
|
||||
{{- if .Values.cainjector.serviceAccount.create -}}
|
||||
{{ default (include "cainjector.fullname" .) .Values.cainjector.serviceAccount.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.cainjector.serviceAccount.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
startupapicheck templates
|
||||
*/}}
|
||||
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
Manually fix the 'app' and 'name' labels to 'startupapicheck' to maintain
|
||||
compatibility with the v0.9 deployment selector.
|
||||
*/}}
|
||||
{{- define "startupapicheck.name" -}}
|
||||
{{- printf "startupapicheck" -}}
|
||||
{{- 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.
|
||||
*/}}
|
||||
{{- define "startupapicheck.fullname" -}}
|
||||
{{- $trimmedName := printf "%s" (include "cert-manager.fullname" .) | trunc 52 | trimSuffix "-" -}}
|
||||
{{- printf "%s-startupapicheck" $trimmedName | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "startupapicheck.serviceAccountName" -}}
|
||||
{{- if .Values.startupapicheck.serviceAccount.create -}}
|
||||
{{ default (include "startupapicheck.fullname" .) .Values.startupapicheck.serviceAccount.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.startupapicheck.serviceAccount.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "chartName" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Labels that should be added on each resource
|
||||
*/}}
|
||||
{{- define "labels" -}}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- if eq .Values.creator "helm" }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
helm.sh/chart: {{ include "chartName" . }}
|
||||
{{- end -}}
|
||||
{{- if .Values.global.commonLabels}}
|
||||
{{ toYaml .Values.global.commonLabels }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Namespace for all resources to be installed into
|
||||
If not defined in values file then the helm release namespace is used
|
||||
By default this is not set so the helm release namespace will be used
|
||||
|
||||
This gets around an problem within helm discussed here
|
||||
https://github.com/helm/helm/issues/5358
|
||||
*/}}
|
||||
{{- define "cert-manager.namespace" -}}
|
||||
{{ .Values.namespace | default .Release.Namespace }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Util function for generating the image URL based on the provided options.
|
||||
IMPORTANT: This function is standardized across all charts in the cert-manager GH organization.
|
||||
Any changes to this function should also be made in cert-manager, trust-manager, approver-policy, ...
|
||||
See https://github.com/cert-manager/cert-manager/issues/6329 for a list of linked PRs.
|
||||
*/}}
|
||||
{{- define "image" -}}
|
||||
{{- $defaultTag := index . 1 -}}
|
||||
{{- with index . 0 -}}
|
||||
{{- if .registry -}}{{ printf "%s/%s" .registry .repository }}{{- else -}}{{- .repository -}}{{- end -}}
|
||||
{{- if .digest -}}{{ printf "@%s" .digest }}{{- else -}}{{ printf ":%s" (default $defaultTag .tag) }}{{- end -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Check that the user has not set both .installCRDs and .crds.enabled or
|
||||
set .installCRDs and disabled .crds.keep.
|
||||
.installCRDs is deprecated and users should use .crds.enabled and .crds.keep instead.
|
||||
*/}}
|
||||
{{- define "cert-manager.crd-check" -}}
|
||||
{{- if and (.Values.installCRDs) (.Values.crds.enabled) }}
|
||||
{{- fail "ERROR: the deprecated .installCRDs option cannot be enabled at the same time as its replacement .crds.enabled" }}
|
||||
{{- end }}
|
||||
{{- if and (.Values.installCRDs) (not .Values.crds.keep) }}
|
||||
{{- fail "ERROR: .crds.keep is not compatible with .installCRDs, please use .crds.enabled and .crds.keep instead" }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,19 @@
|
||||
{{- if .Values.cainjector.config -}}
|
||||
{{- $config := .Values.cainjector.config -}}
|
||||
{{- $_ := set $config "apiVersion" (default "cainjector.config.cert-manager.io/v1alpha1" $config.apiVersion) -}}
|
||||
{{- $_ := set $config "kind" (default "CAInjectorConfiguration" $config.kind) -}}
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ include "cainjector.fullname" . }}
|
||||
namespace: {{ include "cert-manager.namespace" . }}
|
||||
labels:
|
||||
app: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
data:
|
||||
config.yaml: |
|
||||
{{- $config | toYaml | nindent 4 }}
|
||||
{{- end -}}
|
||||
@@ -0,0 +1,160 @@
|
||||
{{- if .Values.cainjector.enabled }}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "cainjector.fullname" . }}
|
||||
namespace: {{ include "cert-manager.namespace" . }}
|
||||
labels:
|
||||
app: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
{{- with .Values.cainjector.deploymentAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
replicas: {{ .Values.cainjector.replicaCount }}
|
||||
{{- /* The if statement below is equivalent to {{- if $value }} but will also return true for 0. */ -}}
|
||||
{{- if not (has (quote .Values.global.revisionHistoryLimit) (list "" (quote ""))) }}
|
||||
revisionHistoryLimit: {{ .Values.global.revisionHistoryLimit }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- with .Values.cainjector.strategy }}
|
||||
strategy:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- include "labels" . | nindent 8 }}
|
||||
{{- with .Values.cainjector.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.cainjector.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if and .Values.prometheus.enabled (not (or .Values.prometheus.servicemonitor.enabled .Values.prometheus.podmonitor.enabled)) }}
|
||||
{{- if not .Values.cainjector.podAnnotations }}
|
||||
annotations:
|
||||
{{- end }}
|
||||
prometheus.io/path: "/metrics"
|
||||
prometheus.io/scrape: 'true'
|
||||
prometheus.io/port: '9402'
|
||||
{{- end }}
|
||||
spec:
|
||||
serviceAccountName: {{ template "cainjector.serviceAccountName" . }}
|
||||
{{- if hasKey .Values.cainjector "automountServiceAccountToken" }}
|
||||
automountServiceAccountToken: {{ .Values.cainjector.automountServiceAccountToken }}
|
||||
{{- end }}
|
||||
enableServiceLinks: {{ .Values.cainjector.enableServiceLinks }}
|
||||
{{- with .Values.global.priorityClassName }}
|
||||
priorityClassName: {{ . | quote }}
|
||||
{{- end }}
|
||||
{{- with .Values.cainjector.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}-cainjector
|
||||
image: "{{ template "image" (tuple .Values.cainjector.image $.Chart.AppVersion) }}"
|
||||
imagePullPolicy: {{ .Values.cainjector.image.pullPolicy }}
|
||||
args:
|
||||
{{- /* The if statement below is equivalent to {{- if $value }} but will also return true for 0. */ -}}
|
||||
{{- if not (has (quote .Values.global.logLevel) (list "" (quote ""))) }}
|
||||
- --v={{ .Values.global.logLevel }}
|
||||
{{- end }}
|
||||
{{- if .Values.cainjector.config }}
|
||||
- --config=/var/cert-manager/config/config.yaml
|
||||
{{- end }}
|
||||
{{- with .Values.global.leaderElection }}
|
||||
- --leader-election-namespace={{ .namespace }}
|
||||
{{- if .leaseDuration }}
|
||||
- --leader-election-lease-duration={{ .leaseDuration }}
|
||||
{{- end }}
|
||||
{{- if .renewDeadline }}
|
||||
- --leader-election-renew-deadline={{ .renewDeadline }}
|
||||
{{- end }}
|
||||
{{- if .retryPeriod }}
|
||||
- --leader-election-retry-period={{ .retryPeriod }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.cainjector.featureGates}}
|
||||
- --feature-gates={{ . }}
|
||||
{{- end}}
|
||||
{{- with .Values.cainjector.extraArgs }}
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- if not .Values.prometheus.enabled }}
|
||||
- --metrics-listen-address=0
|
||||
{{- end }}
|
||||
{{- if .Values.prometheus.enabled }}
|
||||
ports:
|
||||
- containerPort: 9402
|
||||
name: http-metrics
|
||||
protocol: TCP
|
||||
{{- end }}
|
||||
env:
|
||||
- name: POD_NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.namespace
|
||||
{{- with .Values.cainjector.extraEnv }}
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- with .Values.cainjector.containerSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.cainjector.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- if or .Values.cainjector.config .Values.cainjector.volumeMounts }}
|
||||
volumeMounts:
|
||||
{{- if .Values.cainjector.config }}
|
||||
- name: config
|
||||
mountPath: /var/cert-manager/config
|
||||
{{- end }}
|
||||
{{- with .Values.cainjector.volumeMounts }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.cainjector.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.cainjector.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.cainjector.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.cainjector.topologySpreadConstraints }}
|
||||
topologySpreadConstraints:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if or .Values.cainjector.volumes .Values.cainjector.config }}
|
||||
volumes:
|
||||
{{- if .Values.cainjector.config }}
|
||||
- name: config
|
||||
configMap:
|
||||
name: {{ include "cainjector.fullname" . }}
|
||||
{{- end }}
|
||||
{{ with .Values.cainjector.volumes }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,29 @@
|
||||
{{- if .Values.cainjector.podDisruptionBudget.enabled }}
|
||||
apiVersion: policy/v1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: {{ include "cainjector.fullname" . }}
|
||||
namespace: {{ include "cert-manager.namespace" . }}
|
||||
labels:
|
||||
app: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
|
||||
{{- if not (or (hasKey .Values.cainjector.podDisruptionBudget "minAvailable") (hasKey .Values.cainjector.podDisruptionBudget "maxUnavailable")) }}
|
||||
minAvailable: 1 # Default value because minAvailable and maxUnavailable are not set
|
||||
{{- end }}
|
||||
{{- if hasKey .Values.cainjector.podDisruptionBudget "minAvailable" }}
|
||||
minAvailable: {{ .Values.cainjector.podDisruptionBudget.minAvailable }}
|
||||
{{- end }}
|
||||
{{- if hasKey .Values.cainjector.podDisruptionBudget "maxUnavailable" }}
|
||||
maxUnavailable: {{ .Values.cainjector.podDisruptionBudget.maxUnavailable }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,20 @@
|
||||
{{- if .Values.cainjector.enabled }}
|
||||
{{- if .Values.global.podSecurityPolicy.enabled }}
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: {{ template "cainjector.fullname" . }}-psp
|
||||
labels:
|
||||
app: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
rules:
|
||||
- apiGroups: ['policy']
|
||||
resources: ['podsecuritypolicies']
|
||||
verbs: ['use']
|
||||
resourceNames:
|
||||
- {{ template "cainjector.fullname" . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,22 @@
|
||||
{{- if .Values.cainjector.enabled }}
|
||||
{{- if .Values.global.podSecurityPolicy.enabled }}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: {{ template "cainjector.fullname" . }}-psp
|
||||
labels:
|
||||
app: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: {{ template "cainjector.fullname" . }}-psp
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "cainjector.serviceAccountName" . }}
|
||||
namespace: {{ include "cert-manager.namespace" . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
51
backing-services/cert-manager/templates/cainjector-psp.yaml
Normal file
51
backing-services/cert-manager/templates/cainjector-psp.yaml
Normal file
@@ -0,0 +1,51 @@
|
||||
{{- if .Values.cainjector.enabled }}
|
||||
{{- if .Values.global.podSecurityPolicy.enabled }}
|
||||
apiVersion: policy/v1beta1
|
||||
kind: PodSecurityPolicy
|
||||
metadata:
|
||||
name: {{ template "cainjector.fullname" . }}
|
||||
labels:
|
||||
app: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
annotations:
|
||||
seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default'
|
||||
seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default'
|
||||
{{- if .Values.global.podSecurityPolicy.useAppArmor }}
|
||||
apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default'
|
||||
apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default'
|
||||
{{- end }}
|
||||
spec:
|
||||
privileged: false
|
||||
allowPrivilegeEscalation: false
|
||||
allowedCapabilities: [] # default set of capabilities are implicitly allowed
|
||||
volumes:
|
||||
- 'configMap'
|
||||
- 'emptyDir'
|
||||
- 'projected'
|
||||
- 'secret'
|
||||
- 'downwardAPI'
|
||||
hostNetwork: false
|
||||
hostIPC: false
|
||||
hostPID: false
|
||||
runAsUser:
|
||||
rule: 'MustRunAs'
|
||||
ranges:
|
||||
- min: 1000
|
||||
max: 1000
|
||||
seLinux:
|
||||
rule: 'RunAsAny'
|
||||
supplementalGroups:
|
||||
rule: 'MustRunAs'
|
||||
ranges:
|
||||
- min: 1000
|
||||
max: 1000
|
||||
fsGroup:
|
||||
rule: 'MustRunAs'
|
||||
ranges:
|
||||
- min: 1000
|
||||
max: 1000
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
156
backing-services/cert-manager/templates/cainjector-rbac.yaml
Normal file
156
backing-services/cert-manager/templates/cainjector-rbac.yaml
Normal file
@@ -0,0 +1,156 @@
|
||||
{{- if .Values.cainjector.enabled }}
|
||||
{{- if .Values.global.rbac.create }}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ template "cainjector.fullname" . }}
|
||||
labels:
|
||||
app: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
rules:
|
||||
- apiGroups: ["cert-manager.io"]
|
||||
resources: ["certificates"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
verbs: ["get", "list", "watch"]
|
||||
- apiGroups: [""]
|
||||
resources: ["events"]
|
||||
verbs: ["get", "create", "update", "patch"]
|
||||
- apiGroups: ["admissionregistration.k8s.io"]
|
||||
resources: ["validatingwebhookconfigurations", "mutatingwebhookconfigurations"]
|
||||
verbs: ["get", "list", "watch", "update", "patch"]
|
||||
- apiGroups: ["apiregistration.k8s.io"]
|
||||
resources: ["apiservices"]
|
||||
verbs: ["get", "list", "watch", "update", "patch"]
|
||||
- apiGroups: ["apiextensions.k8s.io"]
|
||||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "patch"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: {{ template "cainjector.fullname" . }}
|
||||
labels:
|
||||
app: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: {{ template "cainjector.fullname" . }}
|
||||
subjects:
|
||||
- name: {{ template "cainjector.serviceAccountName" . }}
|
||||
namespace: {{ include "cert-manager.namespace" . }}
|
||||
kind: ServiceAccount
|
||||
|
||||
---
|
||||
# leader election rules
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ template "cainjector.fullname" . }}:leaderelection
|
||||
namespace: {{ .Values.global.leaderElection.namespace }}
|
||||
labels:
|
||||
app: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
rules:
|
||||
# Used for leader election by the controller
|
||||
# cert-manager-cainjector-leader-election is used by the CertificateBased injector controller
|
||||
# see cmd/cainjector/start.go#L113
|
||||
# cert-manager-cainjector-leader-election-core is used by the SecretBased injector controller
|
||||
# see cmd/cainjector/start.go#L137
|
||||
- apiGroups: ["coordination.k8s.io"]
|
||||
resources: ["leases"]
|
||||
resourceNames: ["cert-manager-cainjector-leader-election", "cert-manager-cainjector-leader-election-core"]
|
||||
verbs: ["get", "update", "patch"]
|
||||
- apiGroups: ["coordination.k8s.io"]
|
||||
resources: ["leases"]
|
||||
verbs: ["create"]
|
||||
|
||||
---
|
||||
|
||||
# grant cert-manager permission to manage the leaderelection configmap in the
|
||||
# leader election namespace
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ include "cainjector.fullname" . }}:leaderelection
|
||||
namespace: {{ .Values.global.leaderElection.namespace }}
|
||||
labels:
|
||||
app: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: {{ template "cainjector.fullname" . }}:leaderelection
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "cainjector.serviceAccountName" . }}
|
||||
namespace: {{ include "cert-manager.namespace" . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- $certmanagerNamespace := include "cert-manager.namespace" . }}
|
||||
{{- if (.Values.cainjector.config.metricsTLSConfig).dynamic }}
|
||||
{{- if $certmanagerNamespace | eq .Values.cainjector.config.metricsTLSConfig.dynamic.secretNamespace }}
|
||||
|
||||
---
|
||||
|
||||
# Metrics server dynamic TLS serving certificate rules
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ template "cainjector.fullname" . }}:dynamic-serving
|
||||
namespace: {{ include "cert-manager.namespace" . }}
|
||||
labels:
|
||||
app: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
resourceNames:
|
||||
# Allow cainjector to read and update the metrics CA Secret when dynamic TLS is
|
||||
# enabled for the metrics server and if the Secret is configured to be in the
|
||||
# same namespace as cert-manager.
|
||||
- {{ .Values.cainjector.config.metricsTLSConfig.dynamic.secretName | quote }}
|
||||
verbs: ["get", "list", "watch", "update"]
|
||||
# It's not possible to grant CREATE permission on a single resourceName.
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
verbs: ["create"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ include "cainjector.fullname" . }}:dynamic-serving
|
||||
namespace: {{ include "cert-manager.namespace" . }}
|
||||
labels:
|
||||
app: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: {{ template "cainjector.fullname" . }}:dynamic-serving
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ template "cainjector.serviceAccountName" . }}
|
||||
namespace: {{ include "cert-manager.namespace" . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,30 @@
|
||||
{{- if and .Values.prometheus.enabled (not .Values.prometheus.podmonitor.enabled) }}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "cainjector.fullname" . }}
|
||||
namespace: {{ include "cert-manager.namespace" . }}
|
||||
{{- with .Values.cainjector.serviceAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
app: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
{{- with .Values.cainjector.serviceLabels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- protocol: TCP
|
||||
port: 9402
|
||||
name: http-metrics
|
||||
selector:
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- end }}
|
||||
@@ -0,0 +1,27 @@
|
||||
{{- if .Values.cainjector.enabled }}
|
||||
{{- if .Values.cainjector.serviceAccount.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
automountServiceAccountToken: {{ .Values.cainjector.serviceAccount.automountServiceAccountToken }}
|
||||
metadata:
|
||||
name: {{ template "cainjector.serviceAccountName" . }}
|
||||
namespace: {{ include "cert-manager.namespace" . }}
|
||||
{{- with .Values.cainjector.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
app: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cainjector.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "cainjector"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
{{- with .Values.cainjector.serviceAccount.labels }}
|
||||
{{ toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with .Values.global.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,19 @@
|
||||
{{- if .Values.config -}}
|
||||
{{- $config := .Values.config -}}
|
||||
{{- $_ := set $config "apiVersion" (default "controller.config.cert-manager.io/v1alpha1" $config.apiVersion) -}}
|
||||
{{- $_ := set $config "kind" (default "ControllerConfiguration" $config.kind) -}}
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ include "cert-manager.fullname" . }}
|
||||
namespace: {{ include "cert-manager.namespace" . }}
|
||||
labels:
|
||||
app: {{ include "cert-manager.name" . }}
|
||||
app.kubernetes.io/name: {{ include "cert-manager.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "controller"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
data:
|
||||
config.yaml: |
|
||||
{{- $config | toYaml | nindent 4 }}
|
||||
{{- end -}}
|
||||
12013
backing-services/cert-manager/templates/crds.yaml
Normal file
12013
backing-services/cert-manager/templates/crds.yaml
Normal file
File diff suppressed because it is too large
Load Diff
231
backing-services/cert-manager/templates/deployment.yaml
Normal file
231
backing-services/cert-manager/templates/deployment.yaml
Normal file
@@ -0,0 +1,231 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "cert-manager.fullname" . }}
|
||||
namespace: {{ include "cert-manager.namespace" . }}
|
||||
labels:
|
||||
app: {{ template "cert-manager.name" . }}
|
||||
app.kubernetes.io/name: {{ template "cert-manager.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "controller"
|
||||
{{- include "labels" . | nindent 4 }}
|
||||
{{- with .Values.deploymentAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
{{- /* The if statement below is equivalent to {{- if $value }} but will also return true for 0. */ -}}
|
||||
{{- if not (has (quote .Values.global.revisionHistoryLimit) (list "" (quote ""))) }}
|
||||
revisionHistoryLimit: {{ .Values.global.revisionHistoryLimit }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: {{ template "cert-manager.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "controller"
|
||||
{{- with .Values.strategy }}
|
||||
strategy:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "cert-manager.name" . }}
|
||||
app.kubernetes.io/name: {{ template "cert-manager.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/component: "controller"
|
||||
{{- include "labels" . | nindent 8 }}
|
||||
{{- with .Values.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if and .Values.prometheus.enabled (not (or .Values.prometheus.servicemonitor.enabled .Values.prometheus.podmonitor.enabled)) }}
|
||||
{{- if not .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- end }}
|
||||
prometheus.io/path: "/metrics"
|
||||
prometheus.io/scrape: 'true'
|
||||
prometheus.io/port: '9402'
|
||||
{{- end }}
|
||||
spec:
|
||||
serviceAccountName: {{ template "cert-manager.serviceAccountName" . }}
|
||||
{{- if hasKey .Values "automountServiceAccountToken" }}
|
||||
automountServiceAccountToken: {{ .Values.automountServiceAccountToken }}
|
||||
{{- end }}
|
||||
enableServiceLinks: {{ .Values.enableServiceLinks }}
|
||||
{{- with .Values.global.priorityClassName }}
|
||||
priorityClassName: {{ . | quote }}
|
||||
{{- end }}
|
||||
{{- with .Values.securityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- if or .Values.volumes .Values.config}}
|
||||
volumes:
|
||||
{{- if .Values.config }}
|
||||
- name: config
|
||||
configMap:
|
||||
name: {{ include "cert-manager.fullname" . }}
|
||||
{{- end }}
|
||||
{{ with .Values.volumes }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}-controller
|
||||
image: "{{ template "image" (tuple .Values.image $.Chart.AppVersion) }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
args:
|
||||
{{- /* The if statement below is equivalent to {{- if $value }} but will also return true for 0. */ -}}
|
||||
{{- if not (has (quote .Values.global.logLevel) (list "" (quote ""))) }}
|
||||
- --v={{ .Values.global.logLevel }}
|
||||
{{- end }}
|
||||
{{- if .Values.config }}
|
||||
- --config=/var/cert-manager/config/config.yaml
|
||||
{{- end }}
|
||||
{{- $config := default .Values.config "" }}
|
||||
{{- if .Values.clusterResourceNamespace }}
|
||||
- --cluster-resource-namespace={{ .Values.clusterResourceNamespace }}
|
||||
{{- else }}
|
||||
- --cluster-resource-namespace=$(POD_NAMESPACE)
|
||||
{{- end }}
|
||||
{{- with .Values.global.leaderElection }}
|
||||
- --leader-election-namespace={{ .namespace }}
|
||||
{{- if .leaseDuration }}
|
||||
- --leader-election-lease-duration={{ .leaseDuration }}
|
||||
{{- end }}
|
||||
{{- if .renewDeadline }}
|
||||
- --leader-election-renew-deadline={{ .renewDeadline }}
|
||||
{{- end }}
|
||||
{{- if .retryPeriod }}
|
||||
- --leader-election-retry-period={{ .retryPeriod }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.acmesolver.image }}
|
||||
- --acme-http01-solver-image={{- if .registry -}}{{ .registry }}/{{- end -}}{{ .repository }}{{- if (.digest) -}} @{{ .digest }}{{- else -}}:{{ default $.Chart.AppVersion .tag }} {{- end -}}
|
||||
{{- end }}
|
||||
{{- with .Values.extraArgs }}
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- with .Values.ingressShim }}
|
||||
{{- if .defaultIssuerName }}
|
||||
- --default-issuer-name={{ .defaultIssuerName }}
|
||||
{{- end }}
|
||||
{{- if .defaultIssuerKind }}
|
||||
- --default-issuer-kind={{ .defaultIssuerKind }}
|
||||
{{- end }}
|
||||
{{- if .defaultIssuerGroup }}
|
||||
- --default-issuer-group={{ .defaultIssuerGroup }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.featureGates }}
|
||||
- --feature-gates={{ .Values.featureGates }}
|
||||
{{- end }}
|
||||
{{- if .Values.maxConcurrentChallenges }}
|
||||
- --max-concurrent-challenges={{ .Values.maxConcurrentChallenges }}
|
||||
{{- end }}
|
||||
{{- if .Values.enableCertificateOwnerRef }}
|
||||
- --enable-certificate-owner-ref=true
|
||||
{{- end }}
|
||||
{{- if .Values.dns01RecursiveNameserversOnly }}
|
||||
- --dns01-recursive-nameservers-only=true
|
||||
{{- end }}
|
||||
{{- with .Values.dns01RecursiveNameservers }}
|
||||
- --dns01-recursive-nameservers={{ . }}
|
||||
{{- end }}
|
||||
{{- if .Values.disableAutoApproval }}
|
||||
- --controllers=-certificaterequests-approver
|
||||
{{- end }}
|
||||
ports:
|
||||
- containerPort: 9402
|
||||
name: http-metrics
|
||||
protocol: TCP
|
||||
- containerPort: 9403
|
||||
name: http-healthz
|
||||
protocol: TCP
|
||||
{{- with .Values.containerSecurityContext }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- if or .Values.config .Values.volumeMounts }}
|
||||
volumeMounts:
|
||||
{{- if .Values.config }}
|
||||
- name: config
|
||||
mountPath: /var/cert-manager/config
|
||||
{{- end }}
|
||||
{{- with .Values.volumeMounts }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: POD_NAMESPACE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.namespace
|
||||
{{- with .Values.extraEnv }}
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- with .Values.http_proxy }}
|
||||
- name: HTTP_PROXY
|
||||
value: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.https_proxy }}
|
||||
- name: HTTPS_PROXY
|
||||
value: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.no_proxy }}
|
||||
- name: NO_PROXY
|
||||
value: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.resources }}
|
||||
resources:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
|
||||
{{- with .Values.livenessProbe }}
|
||||
{{- if .enabled }}
|
||||
# LivenessProbe settings are based on those used for the Kubernetes
|
||||
# controller-manager. See:
|
||||
# https://github.com/kubernetes/kubernetes/blob/806b30170c61a38fedd54cc9ede4cd6275a1ad3b/cmd/kubeadm/app/util/staticpod/utils.go#L241-L245
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
port: http-healthz
|
||||
path: /livez
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: {{ .initialDelaySeconds }}
|
||||
periodSeconds: {{ .periodSeconds }}
|
||||
timeoutSeconds: {{ .timeoutSeconds }}
|
||||
successThreshold: {{ .successThreshold }}
|
||||
failureThreshold: {{ .failureThreshold }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.topologySpreadConstraints }}
|
||||
topologySpreadConstraints:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.podDnsPolicy }}
|
||||
dnsPolicy: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.podDnsConfig }}
|
||||
dnsConfig:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.hostAliases }}
|
||||
hostAliases: {{ toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user