mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-04-20 07:25:51 -04:00
deps: update aws-load-balancer-controller Helm chart
This commit is contained in:
parent
1faf2dd1b8
commit
ba91b91977
@ -1,8 +1,8 @@
|
||||
apiVersion: v2
|
||||
name: aws-load-balancer-controller
|
||||
description: AWS Load Balancer Controller Helm chart for Kubernetes
|
||||
version: 1.5.4
|
||||
appVersion: v2.5.3
|
||||
version: 1.11.0
|
||||
appVersion: v2.11.0
|
||||
home: https://github.com/aws/eks-charts
|
||||
icon: https://raw.githubusercontent.com/aws/eks-charts/master/docs/logo/aws.png
|
||||
sources:
|
||||
|
@ -22,7 +22,11 @@ AWS Load Balancer controller manages the following AWS resources
|
||||
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
|
||||
- Kubernetes >= 1.19
|
||||
- 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
|
||||
@ -74,7 +78,7 @@ If migrating from ALB ingress controller, grant [additional IAM permissions](htt
|
||||
- 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"
|
||||
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
|
||||
|
||||
@ -92,8 +96,11 @@ If you are setting `serviceMonitor.enabled: true` you need to have installed the
|
||||
|
||||
## 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
|
||||
@ -102,7 +109,7 @@ 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"
|
||||
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
|
||||
@ -171,88 +178,106 @@ Chart release v1.2.0 and later enables high availability configuration by defaul
|
||||
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 |
|
||||
| `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 |
|
||||
| `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` |
|
||||
| `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.additionalLabels` | Labels to add to the service account | `{}` |
|
||||
| `serviceMonitor.interval` | Prometheus scrape interval | `1m` |
|
||||
| `serviceMonitor.namespace` | Namespace in which Prometheus is running | None |
|
||||
| `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` |
|
||||
|
||||
| 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 | "" |
|
||||
| `webhookConfig.disableIngressValidation` | Disables the validation of resources of kind Ingress | None |
|
||||
| `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. | "" |
|
||||
|
@ -2,8 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.11.1
|
||||
creationTimestamp: null
|
||||
controller-gen.kubebuilder.io/version: v0.14.0
|
||||
name: ingressclassparams.elbv2.k8s.aws
|
||||
spec:
|
||||
group: elbv2.k8s.aws
|
||||
@ -36,20 +35,31 @@ spec:
|
||||
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'
|
||||
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'
|
||||
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.
|
||||
@ -72,7 +82,38 @@ spec:
|
||||
enum:
|
||||
- ipv4
|
||||
- dualstack
|
||||
- dualstack-without-public-ipv4
|
||||
type: string
|
||||
listeners:
|
||||
description: Listeners define a list of listeners with their protocol,
|
||||
port and attributes.
|
||||
items:
|
||||
properties:
|
||||
listenerAttributes:
|
||||
description: The attributes of the listener
|
||||
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
|
||||
port:
|
||||
description: The port of the listener
|
||||
format: int32
|
||||
type: integer
|
||||
protocol:
|
||||
description: The protocol of the listener
|
||||
type: string
|
||||
type: object
|
||||
type: array
|
||||
loadBalancerAttributes:
|
||||
description: LoadBalancerAttributes define the custom attributes to
|
||||
LoadBalancers for all Ingress that that belong to IngressClass with
|
||||
@ -91,50 +132,63 @@ spec:
|
||||
- value
|
||||
type: object
|
||||
type: array
|
||||
minimumLoadBalancerCapacity:
|
||||
description: MinimumLoadBalancerCapacity define the capacity reservation
|
||||
for LoadBalancers for all Ingress that belong to IngressClass with
|
||||
this IngressClassParams.
|
||||
properties:
|
||||
capacityUnits:
|
||||
description: The Capacity Units Value.
|
||||
format: int32
|
||||
type: integer
|
||||
required:
|
||||
- capacityUnits
|
||||
type: object
|
||||
namespaceSelector:
|
||||
description: NamespaceSelector restrict the namespaces of Ingresses
|
||||
that are allowed to specify the IngressClass with this IngressClassParams.
|
||||
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.
|
||||
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.
|
||||
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
|
||||
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.
|
||||
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
|
||||
@ -167,10 +221,11 @@ spec:
|
||||
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.
|
||||
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:
|
||||
@ -200,8 +255,7 @@ apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
annotations:
|
||||
controller-gen.kubebuilder.io/version: v0.11.1
|
||||
creationTimestamp: null
|
||||
controller-gen.kubebuilder.io/version: v0.14.0
|
||||
name: targetgroupbindings.elbv2.k8s.aws
|
||||
spec:
|
||||
group: elbv2.k8s.aws
|
||||
@ -230,6 +284,11 @@ spec:
|
||||
name: ARN
|
||||
priority: 1
|
||||
type: string
|
||||
- description: The AWS TargetGroup's Name
|
||||
jsonPath: .spec.targetGroupName
|
||||
name: NAME
|
||||
priority: 2
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
@ -239,20 +298,29 @@ spec:
|
||||
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'
|
||||
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'
|
||||
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:
|
||||
multiClusterTargetGroup:
|
||||
description: MultiClusterTargetGroup Denotes if the TargetGroup is
|
||||
shared among multiple clusters
|
||||
type: boolean
|
||||
networking:
|
||||
description: networking provides the networking setup for ELBV2 LoadBalancer
|
||||
to access targets in TargetGroup.
|
||||
@ -263,28 +331,30 @@ spec:
|
||||
items:
|
||||
properties:
|
||||
from:
|
||||
description: List of peers which should be able to access
|
||||
the targets in TargetGroup. At least one NetworkingPeer
|
||||
should be specified.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
description: |-
|
||||
SecurityGroup defines a SecurityGroup peer.
|
||||
If specified, none of the other fields can be set.
|
||||
properties:
|
||||
groupID:
|
||||
description: GroupID is the EC2 SecurityGroupID.
|
||||
@ -295,24 +365,24 @@ spec:
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
description: |-
|
||||
The protocol which traffic must match.
|
||||
If protocol is unspecified, it defaults to TCP.
|
||||
enum:
|
||||
- TCP
|
||||
@ -347,6 +417,9 @@ spec:
|
||||
description: targetGroupARN is the Amazon Resource Name (ARN) for
|
||||
the TargetGroup.
|
||||
type: string
|
||||
targetGroupName:
|
||||
description: targetGroupName is the Name of the TargetGroup.
|
||||
type: string
|
||||
targetType:
|
||||
description: targetType is the TargetType of TargetGroup. If unspecified,
|
||||
it will be automatically inferred.
|
||||
@ -356,7 +429,6 @@ spec:
|
||||
type: string
|
||||
required:
|
||||
- serviceRef
|
||||
- targetGroupARN
|
||||
type: object
|
||||
status:
|
||||
description: TargetGroupBindingStatus defines the observed state of TargetGroupBinding
|
||||
@ -389,6 +461,11 @@ spec:
|
||||
name: ARN
|
||||
priority: 1
|
||||
type: string
|
||||
- description: The AWS TargetGroup's Name
|
||||
jsonPath: .spec.targetGroupName
|
||||
name: NAME
|
||||
priority: 2
|
||||
type: string
|
||||
- jsonPath: .metadata.creationTimestamp
|
||||
name: AGE
|
||||
type: date
|
||||
@ -398,14 +475,19 @@ spec:
|
||||
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'
|
||||
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'
|
||||
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
|
||||
@ -419,6 +501,10 @@ spec:
|
||||
- ipv4
|
||||
- ipv6
|
||||
type: string
|
||||
multiClusterTargetGroup:
|
||||
description: MultiClusterTargetGroup Denotes if the TargetGroup is
|
||||
shared among multiple clusters
|
||||
type: boolean
|
||||
networking:
|
||||
description: networking defines the networking rules to allow ELBV2
|
||||
LoadBalancer to access targets in TargetGroup.
|
||||
@ -431,28 +517,30 @@ spec:
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
description: |-
|
||||
SecurityGroup defines a SecurityGroup peer.
|
||||
If specified, none of the other fields can be set.
|
||||
properties:
|
||||
groupID:
|
||||
description: GroupID is the EC2 SecurityGroupID.
|
||||
@ -463,9 +551,9 @@ spec:
|
||||
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.
|
||||
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.
|
||||
@ -474,15 +562,15 @@ spec:
|
||||
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.
|
||||
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.
|
||||
description: |-
|
||||
The protocol which traffic must match.
|
||||
If protocol is unspecified, it defaults to TCP.
|
||||
enum:
|
||||
- TCP
|
||||
@ -504,41 +592,42 @@ spec:
|
||||
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.
|
||||
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.
|
||||
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
|
||||
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.
|
||||
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
|
||||
@ -562,7 +651,9 @@ spec:
|
||||
targetGroupARN:
|
||||
description: targetGroupARN is the Amazon Resource Name (ARN) for
|
||||
the TargetGroup.
|
||||
minLength: 1
|
||||
type: string
|
||||
targetGroupName:
|
||||
description: targetGroupName is the Name of the TargetGroup.
|
||||
type: string
|
||||
targetType:
|
||||
description: targetType is the TargetType of TargetGroup. If unspecified,
|
||||
@ -571,9 +662,12 @@ spec:
|
||||
- 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
|
||||
|
@ -45,12 +45,14 @@ This enables using a shorter name for the resources, for example aws-load-balanc
|
||||
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 }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- if .Values.additionalLabels }}
|
||||
{{ toYaml .Values.additionalLabels }}
|
||||
{{- end -}}
|
||||
|
@ -11,6 +11,7 @@ metadata:
|
||||
{{- 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 }}
|
||||
@ -37,6 +38,9 @@ spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.runtimeClassName }}
|
||||
runtimeClassName: {{ .Values.runtimeClassName }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "aws-load-balancer-controller.serviceAccountName" . }}
|
||||
volumes:
|
||||
@ -58,15 +62,17 @@ spec:
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
args:
|
||||
- --cluster-name={{ required "Chart cannot be installed without a valid clusterName!" .Values.clusterName }}
|
||||
- --cluster-name={{ required "Chart cannot be installed without a valid clusterName!" (tpl (default "" .Values.clusterName) .) }}
|
||||
{{- if .Values.ingressClass }}
|
||||
- --ingress-class={{ .Values.ingressClass }}
|
||||
{{- end }}
|
||||
{{- if .Values.region }}
|
||||
{{- $region := tpl (default "" .Values.region) . }}
|
||||
{{- if $region }}
|
||||
- --aws-region={{ .Values.region }}
|
||||
{{- end }}
|
||||
{{- if .Values.vpcId }}
|
||||
- --aws-vpc-id={{ .Values.vpcId }}
|
||||
{{- $vpcID := tpl (default "" .Values.vpcId) . }}
|
||||
{{- if $vpcID }}
|
||||
- --aws-vpc-id={{ $vpcID }}
|
||||
{{- end }}
|
||||
{{- if .Values.awsApiEndpoints }}
|
||||
- --aws-api-endpoints={{ .Values.awsApiEndpoints }}
|
||||
@ -104,6 +110,9 @@ spec:
|
||||
{{- if .Values.targetgroupbindingMaxExponentialBackoffDelay }}
|
||||
- --targetgroupbinding-max-exponential-backoff-delay={{ .Values.targetgroupbindingMaxExponentialBackoffDelay }}
|
||||
{{- end }}
|
||||
{{- if .Values.lbStabilizationMonitorInterval }}
|
||||
- --lb-stabilization-monitor-interval={{ .Values.lbStabilizationMonitorInterval }}
|
||||
{{- end }}
|
||||
{{- if .Values.logLevel }}
|
||||
- --log-level={{ .Values.logLevel }}
|
||||
{{- end }}
|
||||
@ -122,6 +131,12 @@ spec:
|
||||
{{- 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 }}
|
||||
@ -149,13 +164,42 @@ spec:
|
||||
{{- if ne .Values.defaultTargetType "instance" }}
|
||||
- --default-target-type={{ .Values.defaultTargetType }}
|
||||
{{- end }}
|
||||
{{- if .Values.env }}
|
||||
{{- 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 }}
|
||||
env:
|
||||
{{- if .Values.env}}
|
||||
{{- range $key, $value := .Values.env }}
|
||||
- name: {{ $key }}
|
||||
value: "{{ $value }}"
|
||||
{{- end }}
|
||||
{{- 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 }}
|
||||
{{- if .Values.envFrom }}
|
||||
envFrom:
|
||||
{{- toYaml .Values.envFrom | nindent 10 }}
|
||||
{{- end }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 10 }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
@ -180,6 +224,10 @@ spec:
|
||||
livenessProbe:
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
{{- with .Values.readinessProbe }}
|
||||
readinessProbe:
|
||||
{{- toYaml . | nindent 10 }}
|
||||
{{- end }}
|
||||
terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
|
@ -0,0 +1,34 @@
|
||||
{{- if .Values.autoscaling.enabled }}
|
||||
{{- if (semverCompare ">=1.23-0" .Capabilities.KubeVersion.Version)}}
|
||||
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 }}
|
@ -75,6 +75,9 @@ rules:
|
||||
- apiGroups: [""]
|
||||
resources: [nodes, namespaces, endpoints]
|
||||
verbs: [get, list, watch]
|
||||
- apiGroups: [""]
|
||||
resources: [configmaps]
|
||||
verbs: [get, delete, create, update]
|
||||
{{- if .Values.clusterSecretsPermissions.allowAllSecrets }}
|
||||
- apiGroups: [""]
|
||||
resources: [secrets]
|
||||
|
@ -3,18 +3,14 @@ apiVersion: monitoring.coreos.com/v1
|
||||
kind: ServiceMonitor
|
||||
metadata:
|
||||
name: {{ include "aws-load-balancer-controller.fullname" . }}
|
||||
{{- if .Values.serviceMonitor.namespace }}
|
||||
namespace: {{ .Values.serviceMonitor.namespace }}
|
||||
{{- else }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
{{- end }}
|
||||
namespace: {{ default .Release.Namespace .Values.serviceMonitor.namespace }}
|
||||
labels:
|
||||
{{- include "aws-load-balancer-controller.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceMonitor.additionalLabels }}
|
||||
{{- with .Values.serviceMonitor.additionalLabels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
spec:
|
||||
jobLabel: {{ .Release.Name }}
|
||||
jobLabel: app.kubernetes.io/instance
|
||||
namespaceSelector:
|
||||
matchNames:
|
||||
- {{ .Release.Namespace }}
|
||||
@ -29,7 +25,19 @@ spec:
|
||||
endpoints:
|
||||
- port: metrics-server
|
||||
path: /metrics
|
||||
{{- with .Values.serviceMonitor.interval }}
|
||||
scheme: http
|
||||
{{- with .Values.serviceMonitor.interval }}
|
||||
interval: {{ . }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
{{- 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 -}}
|
||||
|
@ -65,7 +65,7 @@ webhooks:
|
||||
name: {{ template "aws-load-balancer-controller.webhookService" . }}
|
||||
namespace: {{ $.Release.Namespace }}
|
||||
path: /mutate-v1-service
|
||||
failurePolicy: Fail
|
||||
failurePolicy: {{ .Values.serviceMutatorWebhookConfig.failurePolicy }}
|
||||
name: mservice.elbv2.k8s.aws
|
||||
admissionReviewVersions:
|
||||
- v1beta1
|
||||
@ -75,13 +75,21 @@ webhooks:
|
||||
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:
|
||||
- CREATE
|
||||
{{- toYaml .Values.serviceMutatorWebhookConfig.operations | nindent 4 }}
|
||||
resources:
|
||||
- services
|
||||
sideEffects: None
|
||||
@ -173,6 +181,7 @@ webhooks:
|
||||
resources:
|
||||
- targetgroupbindings
|
||||
sideEffects: None
|
||||
{{- if not $.Values.webhookConfig.disableIngressValidation }}
|
||||
- clientConfig:
|
||||
{{ if not $.Values.enableCertManager -}}
|
||||
caBundle: {{ $tls.caCert }}
|
||||
@ -197,6 +206,7 @@ webhooks:
|
||||
resources:
|
||||
- ingresses
|
||||
sideEffects: None
|
||||
{{- end }}
|
||||
---
|
||||
{{- if not $.Values.enableCertManager }}
|
||||
apiVersion: v1
|
||||
|
@ -4,15 +4,29 @@
|
||||
|
||||
replicaCount: 2
|
||||
|
||||
revisionHistoryLimit: 10
|
||||
|
||||
image:
|
||||
repository: public.ecr.aws/eks/aws-load-balancer-controller
|
||||
tag: v2.5.3
|
||||
tag: v2.11.0
|
||||
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
|
||||
@ -106,8 +120,8 @@ clusterName:
|
||||
|
||||
# cluster contains configurations specific to the kubernetes cluster
|
||||
cluster:
|
||||
# Cluster DNS domain (required for requesting TLS certificates)
|
||||
dnsDomain: cluster.local
|
||||
# Cluster DNS domain (required for requesting TLS certificates)
|
||||
dnsDomain: cluster.local
|
||||
|
||||
# The ingress class this controller will satisfy. If not specified, controller will match all
|
||||
# ingresses without ingress class annotation and ingresses of type alb
|
||||
@ -187,6 +201,10 @@ logLevel:
|
||||
# The address the metric endpoint binds to. (default ":8080")
|
||||
metricsBindAddr: ""
|
||||
|
||||
webhookConfig:
|
||||
# disableIngressValidation disables the validation of resources of kind Ingress, false by default
|
||||
disableIngressValidation:
|
||||
|
||||
# The TCP port the Webhook server binds to. (default 9443)
|
||||
webhookBindPort:
|
||||
|
||||
@ -196,7 +214,7 @@ webhookTLS:
|
||||
cert:
|
||||
key:
|
||||
|
||||
# array of namespace selectors for the webhook
|
||||
# array of namespace selectors for the pod mutator webhook
|
||||
webhookNamespaceSelectors:
|
||||
# - key: elbv2.k8s.aws/pod-readiness-gate-inject
|
||||
# operator: In
|
||||
@ -215,7 +233,10 @@ 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 1h0m0s)
|
||||
# Interval at which the controller monitors the state of load balancer after creation for stabilization
|
||||
lbStabilizationMonitorInterval:
|
||||
|
||||
# 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.
|
||||
@ -227,6 +248,12 @@ 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:
|
||||
|
||||
@ -240,6 +267,17 @@ livenessProbe:
|
||||
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.
|
||||
@ -247,8 +285,15 @@ 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:
|
||||
# - secretRef:
|
||||
# name: my-secret
|
||||
|
||||
# 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.
|
||||
@ -315,6 +360,11 @@ controllerConfig:
|
||||
# EnableIPTargetType: true
|
||||
# SubnetsClusterTagCheck: true
|
||||
# NLBHealthCheckAdvancedConfig: true
|
||||
# ALBSingleSubnet: false
|
||||
# LBCapacityReservation: true
|
||||
|
||||
certDiscovery:
|
||||
allowedCertificateAuthorityARNs: "" # empty means all CAs are in scope
|
||||
|
||||
# objectSelector for webhook
|
||||
objectSelector:
|
||||
@ -329,12 +379,18 @@ objectSelector:
|
||||
serviceMonitor:
|
||||
# Specifies whether a service monitor should be created
|
||||
enabled: false
|
||||
# Labels to add to the service account
|
||||
# Namespace to create the service monitor in
|
||||
namespace:
|
||||
# Labels to add to the service monitor
|
||||
additionalLabels: {}
|
||||
# Prometheus scrape interval
|
||||
interval: 1m
|
||||
# Namespace to create the service monitor in
|
||||
namespace:
|
||||
# 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
|
||||
@ -351,3 +407,30 @@ ingressClassConfig:
|
||||
|
||||
# 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"
|
||||
|
@ -8,7 +8,7 @@ set -o errtrace
|
||||
shopt -s inherit_errexit
|
||||
|
||||
echo "Updating AWS Load Balancer Controller Helm chart..."
|
||||
branch="v0.0.140" # releases can update the AWS load-balancer-controller chart
|
||||
branch="v0.0.190" # releases can update the AWS load-balancer-controller chart
|
||||
# Required tools
|
||||
if ! command -v git &> /dev/null; then
|
||||
echo "git could not be found"
|
||||
|
Loading…
x
Reference in New Issue
Block a user