Move AWS Service annotation details to reference page
parent
b16f8db668
commit
5a9803346c
|
@ -787,269 +787,6 @@ metadata:
|
|||
{{% /tab %}}
|
||||
{{< /tabs >}}
|
||||
|
||||
#### TLS support on AWS {#ssl-support-on-aws}
|
||||
|
||||
For partial TLS / SSL support on clusters running on AWS, you can add three
|
||||
annotations to a `LoadBalancer` service:
|
||||
|
||||
```yaml
|
||||
metadata:
|
||||
name: my-service
|
||||
annotations:
|
||||
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012
|
||||
```
|
||||
|
||||
The first specifies the ARN of the certificate to use. It can be either a
|
||||
certificate from a third party issuer that was uploaded to IAM or one created
|
||||
within AWS Certificate Manager.
|
||||
|
||||
```yaml
|
||||
metadata:
|
||||
name: my-service
|
||||
annotations:
|
||||
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: (https|http|ssl|tcp)
|
||||
```
|
||||
|
||||
The second annotation specifies which protocol a Pod speaks. For HTTPS and
|
||||
SSL, the ELB expects the Pod to authenticate itself over the encrypted
|
||||
connection, using a certificate.
|
||||
|
||||
HTTP and HTTPS selects layer 7 proxying: the ELB terminates
|
||||
the connection with the user, parses headers, and injects the `X-Forwarded-For`
|
||||
header with the user's IP address (Pods only see the IP address of the
|
||||
ELB at the other end of its connection) when forwarding requests.
|
||||
|
||||
TCP and SSL selects layer 4 proxying: the ELB forwards traffic without
|
||||
modifying the headers.
|
||||
|
||||
In a mixed-use environment where some ports are secured and others are left unencrypted,
|
||||
you can use the following annotations:
|
||||
|
||||
```yaml
|
||||
metadata:
|
||||
name: my-service
|
||||
annotations:
|
||||
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
|
||||
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443,8443"
|
||||
```
|
||||
|
||||
In the above example, if the Service contained three ports, `80`, `443`, and
|
||||
`8443`, then `443` and `8443` would use the SSL certificate, but `80` would be proxied HTTP.
|
||||
|
||||
From Kubernetes v1.9 onwards you can use
|
||||
[predefined AWS SSL policies](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-policy-table.html)
|
||||
with HTTPS or SSL listeners for your Services.
|
||||
To see which policies are available for use, you can use the `aws` command line tool:
|
||||
|
||||
```bash
|
||||
aws elb describe-load-balancer-policies --query 'PolicyDescriptions[].PolicyName'
|
||||
```
|
||||
|
||||
You can then specify any one of those policies using the
|
||||
"`service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy`"
|
||||
annotation; for example:
|
||||
|
||||
```yaml
|
||||
metadata:
|
||||
name: my-service
|
||||
annotations:
|
||||
service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy: "ELBSecurityPolicy-TLS-1-2-2017-01"
|
||||
```
|
||||
|
||||
#### PROXY protocol support on AWS
|
||||
|
||||
To enable [PROXY protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt)
|
||||
support for clusters running on AWS, you can use the following service
|
||||
annotation:
|
||||
|
||||
```yaml
|
||||
metadata:
|
||||
name: my-service
|
||||
annotations:
|
||||
service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*"
|
||||
```
|
||||
|
||||
Since version 1.3.0, the use of this annotation applies to all ports proxied by the ELB
|
||||
and cannot be configured otherwise.
|
||||
|
||||
#### ELB Access Logs on AWS
|
||||
|
||||
There are several annotations to manage access logs for ELB Services on AWS.
|
||||
|
||||
The annotation `service.beta.kubernetes.io/aws-load-balancer-access-log-enabled`
|
||||
controls whether access logs are enabled.
|
||||
|
||||
The annotation `service.beta.kubernetes.io/aws-load-balancer-access-log-emit-interval`
|
||||
controls the interval in minutes for publishing the access logs. You can specify
|
||||
an interval of either 5 or 60 minutes.
|
||||
|
||||
The annotation `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name`
|
||||
controls the name of the Amazon S3 bucket where load balancer access logs are
|
||||
stored.
|
||||
|
||||
The annotation `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix`
|
||||
specifies the logical hierarchy you created for your Amazon S3 bucket.
|
||||
|
||||
```yaml
|
||||
metadata:
|
||||
name: my-service
|
||||
annotations:
|
||||
# Specifies whether access logs are enabled for the load balancer
|
||||
service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: "true"
|
||||
|
||||
# The interval for publishing the access logs. You can specify an interval of either 5 or 60 (minutes).
|
||||
service.beta.kubernetes.io/aws-load-balancer-access-log-emit-interval: "60"
|
||||
|
||||
# The name of the Amazon S3 bucket where the access logs are stored
|
||||
service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name: "my-bucket"
|
||||
|
||||
# The logical hierarchy you created for your Amazon S3 bucket, for example `my-bucket-prefix/prod`
|
||||
service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix: "my-bucket-prefix/prod"
|
||||
```
|
||||
|
||||
#### Connection Draining on AWS
|
||||
|
||||
Connection draining for Classic ELBs can be managed with the annotation
|
||||
`service.beta.kubernetes.io/aws-load-balancer-connection-draining-enabled` set
|
||||
to the value of `"true"`. The annotation
|
||||
`service.beta.kubernetes.io/aws-load-balancer-connection-draining-timeout` can
|
||||
also be used to set maximum time, in seconds, to keep the existing connections open before
|
||||
deregistering the instances.
|
||||
|
||||
```yaml
|
||||
metadata:
|
||||
name: my-service
|
||||
annotations:
|
||||
service.beta.kubernetes.io/aws-load-balancer-connection-draining-enabled: "true"
|
||||
service.beta.kubernetes.io/aws-load-balancer-connection-draining-timeout: "60"
|
||||
```
|
||||
|
||||
#### Other ELB annotations
|
||||
|
||||
There are other annotations to manage Classic Elastic Load Balancers that are described below.
|
||||
|
||||
```yaml
|
||||
metadata:
|
||||
name: my-service
|
||||
annotations:
|
||||
# The time, in seconds, that the connection is allowed to be idle (no data has been sent
|
||||
# over the connection) before it is closed by the load balancer
|
||||
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"
|
||||
|
||||
# Specifies whether cross-zone load balancing is enabled for the load balancer
|
||||
service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"
|
||||
|
||||
# A comma-separated list of key-value pairs which will be recorded as
|
||||
# additional tags in the ELB.
|
||||
service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: "environment=prod,owner=devops"
|
||||
|
||||
# The number of successive successful health checks required for a backend to
|
||||
# be considered healthy for traffic. Defaults to 2, must be between 2 and 10
|
||||
service.beta.kubernetes.io/aws-load-balancer-healthcheck-healthy-threshold: ""
|
||||
|
||||
# The number of unsuccessful health checks required for a backend to be
|
||||
# considered unhealthy for traffic. Defaults to 6, must be between 2 and 10
|
||||
service.beta.kubernetes.io/aws-load-balancer-healthcheck-unhealthy-threshold: "3"
|
||||
|
||||
# The approximate interval, in seconds, between health checks of an
|
||||
# individual instance. Defaults to 10, must be between 5 and 300
|
||||
service.beta.kubernetes.io/aws-load-balancer-healthcheck-interval: "20"
|
||||
|
||||
# The amount of time, in seconds, during which no response means a failed
|
||||
# health check. This value must be less than the service.beta.kubernetes.io/aws-load-balancer-healthcheck-interval
|
||||
# value. Defaults to 5, must be between 2 and 60
|
||||
service.beta.kubernetes.io/aws-load-balancer-healthcheck-timeout: "5"
|
||||
|
||||
# A list of existing security groups to be configured on the ELB created. Unlike the annotation
|
||||
# service.beta.kubernetes.io/aws-load-balancer-extra-security-groups, this replaces all other
|
||||
# security groups previously assigned to the ELB and also overrides the creation
|
||||
# of a uniquely generated security group for this ELB.
|
||||
# The first security group ID on this list is used as a source to permit incoming traffic to
|
||||
# target worker nodes (service traffic and health checks).
|
||||
# If multiple ELBs are configured with the same security group ID, only a single permit line
|
||||
# will be added to the worker node security groups, that means if you delete any
|
||||
# of those ELBs it will remove the single permit line and block access for all ELBs that shared the same security group ID.
|
||||
# This can cause a cross-service outage if not used properly
|
||||
service.beta.kubernetes.io/aws-load-balancer-security-groups: "sg-53fae93f"
|
||||
|
||||
# A list of additional security groups to be added to the created ELB, this leaves the uniquely
|
||||
# generated security group in place, this ensures that every ELB
|
||||
# has a unique security group ID and a matching permit line to allow traffic to the target worker nodes
|
||||
# (service traffic and health checks).
|
||||
# Security groups defined here can be shared between services.
|
||||
service.beta.kubernetes.io/aws-load-balancer-extra-security-groups: "sg-53fae93f,sg-42efd82e"
|
||||
|
||||
# A comma separated list of key-value pairs which are used
|
||||
# to select the target nodes for the load balancer
|
||||
service.beta.kubernetes.io/aws-load-balancer-target-node-labels: "ingress-gw,gw-name=public-api"
|
||||
```
|
||||
|
||||
#### Network Load Balancer support on AWS {#aws-nlb-support}
|
||||
|
||||
{{< feature-state for_k8s_version="v1.15" state="beta" >}}
|
||||
|
||||
To use a Network Load Balancer on AWS, use the annotation `service.beta.kubernetes.io/aws-load-balancer-type` with the value set to `nlb`.
|
||||
|
||||
```yaml
|
||||
metadata:
|
||||
name: my-service
|
||||
annotations:
|
||||
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
|
||||
```
|
||||
|
||||
{{< note >}}
|
||||
NLB only works with certain instance classes; see the
|
||||
[AWS documentation](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-register-targets.html#register-deregister-targets)
|
||||
on Elastic Load Balancing for a list of supported instance types.
|
||||
{{< /note >}}
|
||||
|
||||
Unlike Classic Elastic Load Balancers, Network Load Balancers (NLBs) forward the
|
||||
client's IP address through to the node. If a Service's `.spec.externalTrafficPolicy`
|
||||
is set to `Cluster`, the client's IP address is not propagated to the end
|
||||
Pods.
|
||||
|
||||
By setting `.spec.externalTrafficPolicy` to `Local`, the client IP addresses is
|
||||
propagated to the end Pods, but this could result in uneven distribution of
|
||||
traffic. Nodes without any Pods for a particular LoadBalancer Service will fail
|
||||
the NLB Target Group's health check on the auto-assigned
|
||||
`.spec.healthCheckNodePort` and not receive any traffic.
|
||||
|
||||
In order to achieve even traffic, either use a DaemonSet or specify a
|
||||
[pod anti-affinity](/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity)
|
||||
to not locate on the same node.
|
||||
|
||||
You can also use NLB Services with the [internal load balancer](/docs/concepts/services-networking/service/#internal-load-balancer)
|
||||
annotation.
|
||||
|
||||
In order for client traffic to reach instances behind an NLB, the Node security
|
||||
groups are modified with the following IP rules:
|
||||
|
||||
| Rule | Protocol | Port(s) | IpRange(s) | IpRange Description |
|
||||
|------|----------|---------|------------|---------------------|
|
||||
| Health Check | TCP | NodePort(s) (`.spec.healthCheckNodePort` for `.spec.externalTrafficPolicy = Local`) | Subnet CIDR | kubernetes.io/rule/nlb/health=\<loadBalancerName\> |
|
||||
| Client Traffic | TCP | NodePort(s) | `.spec.loadBalancerSourceRanges` (defaults to `0.0.0.0/0`) | kubernetes.io/rule/nlb/client=\<loadBalancerName\> |
|
||||
| MTU Discovery | ICMP | 3,4 | `.spec.loadBalancerSourceRanges` (defaults to `0.0.0.0/0`) | kubernetes.io/rule/nlb/mtu=\<loadBalancerName\> |
|
||||
|
||||
In order to limit which client IP's can access the Network Load Balancer,
|
||||
specify `loadBalancerSourceRanges`.
|
||||
|
||||
```yaml
|
||||
spec:
|
||||
loadBalancerSourceRanges:
|
||||
- "143.231.0.0/16"
|
||||
```
|
||||
|
||||
{{< note >}}
|
||||
If `.spec.loadBalancerSourceRanges` is not set, Kubernetes
|
||||
allows traffic from `0.0.0.0/0` to the Node Security Group(s). If nodes have
|
||||
public IP addresses, be aware that non-NLB traffic can also reach all instances
|
||||
in those modified security groups.
|
||||
|
||||
{{< /note >}}
|
||||
|
||||
Further documentation on annotations for Elastic IPs and other common use-cases may be found
|
||||
in the [AWS Load Balancer Controller documentation](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/).
|
||||
|
||||
### `type: ExternalName` {#externalname}
|
||||
|
||||
|
||||
|
|
|
@ -1388,6 +1388,422 @@ To learn more about NFD and its components go to its official
|
|||
[documentation](https://kubernetes-sigs.github.io/node-feature-discovery/stable/get-started/).
|
||||
{{< /note >}}
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-access-log-emit-interval (beta) {#service-beta-kubernetes-io-aws-load-balancer-access-log-emit-interval}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-access-log-emit-interval: "5"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
the load balancer for a Service based on this annotation. The value determines
|
||||
how often the load balancer writes log entries. For example, if you set the value
|
||||
to 5, the log writes occur 5 seconds apart.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-access-log-enabled (beta) {#service-beta-kubernetes-io-aws-load-balancer-access-log-enabled}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: "false"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
the load balancer for a Service based on this annotation. Access logging is enabled
|
||||
if you set the annotation to "true".
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name (beta) {#service-beta-kubernetes-io-aws-load-balancer-access-log-s3-bucket-name}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: example`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
the load balancer for a Service based on this annotation. The load balancer
|
||||
writes logs to an S3 bucket with the name you specify.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix (beta) {#service-beta-kubernetes-io-aws-load-balancer-access-log-s3-bucket-prefix}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: "/example"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
the load balancer for a Service based on this annotation. The load balancer
|
||||
writes log objects with the prefix that you specify.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags (beta) {#service-beta-kubernetes-io-aws-load-balancer-additional-resource-tags}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: "Environment=demo,Project=example"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
tags (an AWS concept) for a load balancer based on the comma-separated key/value
|
||||
pairs in the value of this annotation.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-alpn-policy (beta) {#service-beta-kubernetes-io-aws-load-balancer-alpn-policy}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-alpn-policy: HTTP2Optional`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The [AWS load balancer controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/)
|
||||
uses this annotation.
|
||||
See [annotations](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/)
|
||||
in the AWS load balancer controller documentation.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-attributes (beta) {#service-beta-kubernetes-io-aws-load-balancer-attributes}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-attributes: "deletion_protection.enabled=true"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The [AWS load balancer controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/)
|
||||
uses this annotation.
|
||||
See [annotations](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/)
|
||||
in the AWS load balancer controller documentation.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-backend-protocol (beta) {#service-beta-kubernetes-io-aws-load-balancer-backend-protocol}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
the load balancer listener based on the value of this annotation.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-connection-draining-enabled (beta) {#service-beta-kubernetes-io-aws-load-balancer-connection-draining-enabled}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-connection-draining-enabled: "false"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
the load balancer based on this annotation. The load balancer's connection draining
|
||||
setting depends on the value you set.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-connection-draining-timeout (beta) {#service-beta-kubernetes-io-aws-load-balancer-connection-draining-timeout}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-connection-draining-timeout: "60"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
If you configure [connection draining](#service-beta-kubernetes-io-aws-load-balancer-connection-draining-enabled)
|
||||
for a Service of `type: LoadBalancer`, and you use the AWS cloud, the integration configures
|
||||
the draining period based on this annotation. The value you set determines the draining
|
||||
timeout in seconds.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-ip-address-type (beta) {#service-beta-kubernetes-io-aws-load-balancer-ip-address-type}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-ip-address-type: ipv4`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The [AWS load balancer controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/)
|
||||
uses this annotation.
|
||||
See [annotations](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/)
|
||||
in the AWS load balancer controller documentation.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout (beta) {#service-beta-kubernetes-io-aws-load-balancer-connection-idle-timeout}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
a load balancer based on this annotation. The load balancer has a configured idle
|
||||
timeout period (in seconds) that applies to its connections. If no data has been
|
||||
sent or received by the time that the idle timeout period elapses, the load balancer
|
||||
closes the connection.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled (beta) {#service-beta-kubernetes-io-aws-load-balancer-cross-zone-load-balancing-enabled}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
a load balancer based on this annotation. If you set this annotation to "true",
|
||||
each load balancer node distributes requests evenly across the registered targets
|
||||
in all enabled [availability zones](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones).
|
||||
If you disable cross-zone load balancing, each load balancer node distributes requests
|
||||
evenly across the registered targets in its availability zone only.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-eip-allocations (beta) {#service-beta-kubernetes-io-aws-load-balancer-eip-allocations}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-eip-allocations: "eipalloc-01bcdef23bcdef456,eipalloc-def1234abc4567890"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
a load balancer based on this annotation. The value is a comma-separated list
|
||||
of elastic IP address allocation IDs.
|
||||
|
||||
This annotation is only relevant for Services of `type: LoadBalancer`, where
|
||||
the load balancer is an AWS Network Load Balancer.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-extra-security-groups (beta) {#service-beta-kubernetes-io-aws-load-balancer-extra-security-groups}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-extra-security-groups: "sg-12abcd3456,sg-34dcba6543"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
a load balancer based on this annotation. The annotation value is a comma-separated
|
||||
list of extra AWS VPC security groups to configure for the load balancer.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-healthcheck-healthy-threshold (beta) {#service-beta-kubernetes-io-aws-load-balancer-healthcheck-healthy-threshold}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-healthcheck-healthy-threshold: "3"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
a load balancer based on this annotation. The annotation value specifies the number of
|
||||
successive successful health checks required for a backend to be considered healthy
|
||||
for traffic.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-healthcheck-interval (beta) {#service-beta-kubernetes-io-aws-load-balancer-healthcheck-interval}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-healthcheck-interval: "30"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
a load balancer based on this annotation. The annotation value specifies the interval,
|
||||
in seconds, between health check probes made by the load balancer.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-healthcheck-path (beta) {#service-beta-kubernetes-io-aws-load-balancer-healthcheck-papth}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-healthcheck-path: /healthcheck`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
a load balancer based on this annotation. The annotation value determines the
|
||||
path part of the URL that is used for HTTP health checks.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-healthcheck-port (beta) {#service-beta-kubernetes-io-aws-load-balancer-healthcheck-port}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "24"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
a load balancer based on this annotation. The annotation value determines which
|
||||
port the load balancer connects to when performing health checks.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-healthcheck-protocol (beta) {#service-beta-kubernetes-io-aws-load-balancer-healthcheck-protocol}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-healthcheck-protocol: TCP`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
a load balancer based on this annotation. The annotation value determines how the
|
||||
load balancer checks the health of backend targets.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-healthcheck-timeout (beta) {#service-beta-kubernetes-io-aws-load-balancer-healthcheck-timeout}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-healthcheck-timeout: "3"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
a load balancer based on this annotation. The annotation value specifies the number
|
||||
of seconds before a probe that hasn't yet succeeded is automatically treated as
|
||||
having failed.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-healthcheck-unhealthy-threshold (beta) {#service-beta-kubernetes-io-aws-load-balancer-healthcheck-unhealthy-threshold}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-healthcheck-unhealthy-threshold: "3"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
a load balancer based on this annotation. The annotation value specifies the number of
|
||||
successive unsuccessful health checks required for a backend to be considered unhealthy
|
||||
for traffic.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-internal (beta) {#service-beta-kubernetes-io-aws-load-balancer-internal}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-internal: "true"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The cloud controller manager integration with AWS elastic load balancing configures
|
||||
a load balancer based on this annotation. When you set this annotation to "true",
|
||||
the integration configures an internal load balancer.
|
||||
|
||||
If you use the [AWS load balancer controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/),
|
||||
see [`service.beta.kubernetes.io/aws-load-balancer-scheme`](#service-beta-kubernetes-io-aws-load-balancer-scheme).
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-manage-backend-security-group-rules (beta) {#service-beta-kubernetes-io-aws-load-balancer-manage-backend-security-group-rules)
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-manage-backend-security-group-rules: "true"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The [AWS load balancer controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/)
|
||||
uses this annotation.
|
||||
See [annotations](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/)
|
||||
in the AWS load balancer controller documentation.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-name (beta) {#service-beta-kubernetes-io-aws-load-balancer-name}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-name: my-elb`
|
||||
|
||||
Used on: Service
|
||||
|
||||
If you set this annotation on a Service, and you also annotate that Service with
|
||||
`service.beta.kubernetes.io/aws-load-balancer-type: "external"`, and you use the
|
||||
[AWS load balancer controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/)
|
||||
in your cluster, then the AWS load balancer controller sets the name of that load
|
||||
balancer to the value you set for _this_ annotation.
|
||||
|
||||
See [annotations](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/)
|
||||
in the AWS load balancer controller documentation.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-nlb-target-type (beta) {#service-beta-kubernetes-io-aws-load-balancer-nlb-target-type)
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "true"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The [AWS load balancer controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/)
|
||||
uses this annotation.
|
||||
See [annotations](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/)
|
||||
in the AWS load balancer controller documentation.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-private-ipv4-addresses (beta) {#service-beta-kubernetes-io-aws-load-balancer-private-ipv4-addresses}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-private-ipv4-addresses: "198.51.100.0,198.51.100.64"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The [AWS load balancer controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/)
|
||||
uses this annotation.
|
||||
See [annotations](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/)
|
||||
in the AWS load balancer controller documentation.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-proxy-protocol (beta) {#service-beta-kubernetes-io-aws-load-balancer-proxy-protocol}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The official Kubernetes integration with AWS elastic load balancing configures
|
||||
a load balancer based on this annotation. The only permitted value is `"*"`,
|
||||
which indicates that the load balancer should wrap TCP connections to the backend
|
||||
Pod with the PROXY protocol.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-scheme (beta) {#service-beta-kubernetes-io-aws-load-balancer-scheme}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-scheme: internal`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The [AWS load balancer controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/)
|
||||
uses this annotation.
|
||||
See [annotations](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/)
|
||||
in the AWS load balancer controller documentation.
|
||||
|
||||
### service.beta.kubernetes.io/load-balancer-source-ranges (deprecated) {#service-beta-kubernetes-io-load-balancer-source-ranges}
|
||||
|
||||
Example: `service.beta.kubernetes.io/load-balancer-source-ranges: "192.0.2.0/25"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The [AWS load balancer controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/)
|
||||
uses this annotation. You should set `.spec.loadBalancerSourceRanges` for the Service instead.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-ssl-cert (beta) {#service-beta-kubernetes-io-aws-load-balancer-ssl-cert}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The official integration with AWS elastic load balancing configures TLS for a Service of
|
||||
`type: LoadBalancer` based on this annotation. The value of the annotation is the
|
||||
AWS Resource Name (ARN) of the X.509 certificate that the load balancer listener should
|
||||
use.
|
||||
|
||||
(The TLS protocol is based on an older technology that abbreviates to SSL.)
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy (beta) {#service-beta-kubernetes-io-aws-load-balancer-ssl-negotiation-policy}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy: ELBSecurityPolicy-TLS-1-2-2017-01`
|
||||
|
||||
The official integration with AWS elastic load balancing configures TLS for a Service of
|
||||
`type: LoadBalancer` based on this annotation. The value of the annotation is the name
|
||||
of an AWS policy for negotiating TLS with a client peer.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-ssl-ports (beta) {#service-beta-kubernetes-io-aws-load-balancer-ssl-ports}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "*"`
|
||||
|
||||
The official integration with AWS elastic load balancing configures TLS for a Service of
|
||||
`type: LoadBalancer` based on this annotation. The value of the annotation is either `"*"`,
|
||||
which means that all the load balancer's ports should use TLS, or it is a comma separated
|
||||
list of port numbers.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-subnets (beta) {#service-beta-kubernetes-io-aws-load-balancer-subnets}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-subnets: "private-a,private-b"`
|
||||
|
||||
Kubernetes' official integration with AWS uses this annotation to configure a
|
||||
load balancer and determine in which AWS availability zones to deploy the managed
|
||||
load balancing service. The value is either a comma separated list of subnet names, or a
|
||||
comma separated list of subnet IDs.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-target-group-attributes (beta) {#service-beta-kubernetes-io-aws-load-balancer-target-group-attributes}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: "stickiness.enabled=true,stickiness.type=source_ip"`
|
||||
|
||||
Used on: Service
|
||||
|
||||
The [AWS load balancer controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/)
|
||||
uses this annotation.
|
||||
See [annotations](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/)
|
||||
in the AWS load balancer controller documentation.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-target-node-labels (beta) {#service-beta-kubernetes-io-aws-target-node-labels}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-target-node-labels: "kubernetes.io/os=Linux,topology.kubernetes.io/region=us-east-2"`
|
||||
|
||||
Kubernetes' official integration with AWS uses this annotation to determine which
|
||||
nodes in your cluster should be considered as valid targets for the load balancer.
|
||||
|
||||
### service.beta.kubernetes.io/aws-load-balancer-type (beta) {#service-beta-kubernetes-io-aws-load-balancer-type}
|
||||
|
||||
Example: `service.beta.kubernetes.io/aws-load-balancer-type: external`
|
||||
|
||||
Kubernetes' official integrations with AWS use this annotation to determine
|
||||
whether the AWS cloud provider integration should manage a Service of
|
||||
`type: LoadBalancer`.
|
||||
|
||||
There are two permitted values:
|
||||
|
||||
`nlb`
|
||||
: the cloud controller manager configures a Network Load Balancer
|
||||
|
||||
`external`
|
||||
: the cloud controller manager does not configure any load balancer
|
||||
|
||||
If you deploy a Service of `type: LoadBalancer` on AWS, and you don't set any
|
||||
`service.beta.kubernetes.io/aws-load-balancer-type` annotation,
|
||||
the AWS integration deploys a classic Elastic Load Balancer. This behavior,
|
||||
with no annotation present, is the default unless you specify otherwise.
|
||||
|
||||
When you set this annotation to `external` on a Service of `type: LoadBalancer`,
|
||||
and your cluster has a working deployment of the AWS Load Balancer controller,
|
||||
then the AWS Load Balancer controller attempts to deploy a load balancer based
|
||||
on the Service specification.
|
||||
|
||||
{{< caution >}}
|
||||
Do not modify or add the `service.beta.kubernetes.io/aws-load-balancer-type` annotation
|
||||
on an existing Service object. See the AWS documentation on this topic for more
|
||||
details.
|
||||
{{< /caution >}}
|
||||
|
||||
### pod-security.kubernetes.io/enforce
|
||||
|
||||
Type: Label
|
||||
|
|
Loading…
Reference in New Issue