You can use annotations in a Service YAML file to configure Classic Load Balancer (CLB) instances, listeners, and backend server groups. This lets you use a wide range of load balancing features.
Index
Categorization | Feature classification | Configuration link |
Create an SLB instance | ||
Specify an existing instance | ||
Configure an SLB instance | ||
Enable instance protection | ||
Session persistence settings | ||
Port and protocol configurations | ||
Advanced configuration | ||
Configuration management | ||
Notes on annotations
Annotations are case-sensitive.
Before you use an annotation, check the supported Cloud Controller Manager (CCM) version for the feature in this topic. To upgrade the CCM component, see Manage components. For more information about the change history of the CCM component, see Cloud Controller Manager.
As of September 11, 2019,
alicloudwas updated toalibaba-cloudin theannotationsfield.For example:
Before the update:
service.beta.kubernetes.io/alicloud-loadbalancer-idAfter the update:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idThe system remains compatible with the
alicloudformat. No changes are required.
Typical operations for CLB instances
Create an Internet-facing SLB instance
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerCreate an internal-facing SLB instance
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type
Description | Supported CCM version |
Specifies that the SLB instance is an internal-facing instance. Valid values:
Default value: | v1.9.3 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerSpecify an SLB instance type
Annotation: Multiple, as shown in the following table.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type | The billing method of the instance. Valid values:
Default value: Important
| v2.4.0 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec | The type of the SLB instance. You can use this parameter to create a CLB instance of a specific type or update the type of an existing CLB instance. Valid values:
Default value: For more information about the valid values of this parameter, see CreateLoadBalancer. Important If you modify the type of a pay-by-specification CLB instance in the CLB console, the instance type may be changed back to the original one by CCM. Proceed with caution. | v1.9.3 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: "PayBySpec"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.s1.small"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerUse an existing SLB instance
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id
Description | Supported CCM version |
Important To prevent unexpected behavior, such as cluster unavailability or traffic interruptions, do not reuse the API Server CLB instance or a CLB instance created by CCM. Manually create a new instance in the Classic Load Balancer (CLB) console. The ID of the SLB instance. Use this annotation to specify an existing CLB instance.
| v1.9.3.81-gca19cd4-aliyun and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALANCER_ID}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerUse an existing SLB instance and forcibly overwrite its existing listeners
Annotation: Multiple, as shown in the following table. This operation forcibly overwrites existing listeners. If a listener port conflict occurs, the existing listener is deleted.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id | Important To prevent unexpected behavior, such as cluster unavailability or traffic interruptions, do not reuse the API Server CLB instance or a CLB instance created by CCM. Manually create a new instance in the Classic Load Balancer (CLB) console. The ID of the SLB instance. Use this annotation to specify an existing CLB instance.
| |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners | Specifies whether to forcibly overwrite the listeners of the CLB instance when you bind the instance. Valid values:
Default value: Important If you reuse an existing CLB instance and set | v1.9.3.81-gca19cd4-aliyun and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALANCER_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerSpecify primary and secondary zones when you create an SLB instance
Annotation: Multiple, as shown in the following table. The primary and secondary zones cannot be modified after the instance is created.
SLB instances in some regions do not support primary and secondary zones. For more information, see the CLB instance creation page.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid | The ID of the zone in which the primary backend server is deployed. | v1.9.3.10-gfb99107-aliyun and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid | The ID of the zone in which the secondary backend server is deployed. | v1.9.3.10-gfb99107-aliyun and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid: "cn-hangzhou-k"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid: "cn-hangzhou-j"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerCreate an SLB instance that is billed on a pay-by-bandwidth basis
Annotation: Multiple, as shown in the following table. The following two annotations are required.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type | The billing method of the SLB instance. Valid values:
Default value: | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth | The bandwidth of the SLB instance. This parameter specifies the peak bandwidth. Default value: 50. This parameter applies only to Internet-facing SLB instances. For more information about other limits, see Modify the billing method of an Internet-facing SLB instance. | v1.9.3.10-gfb99107-aliyun and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: "paybybandwidth"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: "2"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerSpecify a vSwitch for an SLB instance
Annotation: Multiple, as shown in the following table. The following two annotations are required.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type | Specifies that the SLB instance is an internal-facing instance. Valid values:
Default value: | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id | The ID of the vSwitch to which the SLB instance belongs. The vSwitch must belong to the same VPC as the Kubernetes cluster. When you set this parameter, you must also set You can log on to the VPC console to query the vSwitch ID. | v1.9.3 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerSpecify an IP address for an internal-facing SLB instance
Annotation: Multiple, as shown in the following table. The following three annotations are required.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type | Specifies that the SLB instance is an internal-facing instance. Valid values:
Default value: | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id | The ID of the vSwitch to which the SLB instance belongs. The vSwitch must belong to the same VPC as the Kubernetes cluster. When you set this parameter, you must also set You can log on to the VPC console to query the vSwitch ID. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip | The IP address of the internal-facing SLB instance.
| v2.7.0 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip: "192.168.x.x"
name: nginx
namespace: default
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
name: http
selector:
app: nginxAdd extra tags to an SLB instance
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags
Description | Supported CCM version |
The list of tags that you want to add. Separate multiple tags with commas (,), for example, Important After you add this annotation to a Service to specify extra tags, the modifications that you make to the tags of the corresponding SLB instance in the console may be overwritten. | v1.9.3 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags: "Key1=Value1,Key2=Value2"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerCreate an IPv6 SLB instance
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version
Description | Supported CCM version |
The IP version of the SLB instance. The IP version cannot be changed after the instance is created. When you use this parameter, the proxy mode of kube-proxy in the cluster must be IPVS. Valid values:
Default value: | v1.9.3.220-g24b1885-aliyun and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "ipv6"
name: nginx
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancerEnable deletion protection for an SLB instance
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection
Description | Supported CCM version |
Deletion protection for the SLB instance. Valid values:
Default value: Important For an SLB instance created for a Service of the LoadBalancer type, if you manually enable deletion protection in the CLB console, you can still run the | v1.9.3.313-g748f81e-aliyun and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection: "on"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancerEnable configuration read-only mode for an SLB instance
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection
Description | Supported CCM version |
Configuration read-only mode for the SLB instance. Valid values:
Default value: | v1.9.3.313-g748f81e-aliyun and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection: "ConsoleProtection"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancerSpecify a name for an SLB instance
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name
Description | Supported CCM version |
The name of the SLB instance. The name must be 2 to 128 characters in length, start with a letter or a Chinese character, and can contain digits, periods (.), underscores (_), and hyphens (-). | v1.9.3.313-g748f81e-aliyun and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "your-svc-name"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancerSpecify the resource group to which an SLB instance belongs
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id
Description | Supported CCM version |
The ID of the resource group to which the SLB instance belongs. The resource group ID cannot be changed after it is specified. You can query resource group IDs on the Alibaba Cloud Resource Management platform. | v1.9.3.313-g748f81e-aliyun and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id: "rg-xxxx"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancerSet a hostname for a Service
Annotation: Multiple, as shown in the following table.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | Separate multiple values with commas (,), for example, | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname | Set a hostname for the Service. The hostname must conform to DNS naming conventions. Note the following items:
| v2.3.0 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname: "${your_service_hostname}"
name: nginx-svc
namespace: default
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancerExpected output:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-svc loadBalancer 47.100.XX.XX www.example.com 80:30248/TCP,443:32670/TCP 10sCreate an SLB instance that is billed on a pay-by-CU basis
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type
Description | Supported CCM version |
The billing method of the instance. Valid values:
Default value: Important
| v2.4.0 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: "PayByCLCU"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerRetain an automatically created SLB instance when you delete a Service
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete
Description | Supported CCM version |
When you delete a Service of the LoadBalancer type, the CLB instance created by the Service is retained, and the When this feature is enabled, a Warning event of the Valid values:
Important Perform this operation by deleting the Service instead of modifying the Service type. Otherwise, the Service may be incorrectly re-associated with the previously retained CLB instance. | v2.10.0 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-preserve-lb-on-delete: "true"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerTypical operations for listeners
Configure the session persistence timeout period for a TCP listener
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout
Description | Supported CCM version |
The session persistence timeout period. This parameter applies only to TCP listeners. If multiple TCP listener ports are configured for the SLB instance, this configuration is applied to all TCP listeners by default. Unit: seconds. Valid values: 0 to 3600. Default value: 0. A value of 0 indicates that session persistence is disabled. For more information, see CreateLoadBalancerTCPListener. | v1.9.3 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout: "1800"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerConfigure session persistence (insert cookie) for HTTP and HTTPS listeners
Annotation: Multiple, as shown in the following table. When you insert a cookie, the following four annotations are required.
This feature is supported only by SLB instances that use HTTP or HTTPS.
If you configure multiple HTTP or HTTPS listener ports, session persistence is applied to all HTTP and HTTPS listeners by default.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session | Specifies whether to enable session persistence. This parameter is valid only for HTTP and HTTPS listeners. Valid values:
Default value: For more information, see CreateLoadBalancerHTTPListener and CreateLoadBalancerHTTPSListener. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type | The method that is used to process cookies. This parameter is valid only for HTTP and HTTPS listeners. This parameter is required when
For more information, see CreateLoadBalancerHTTPListener and CreateLoadBalancerHTTPSListener. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout | The cookie timeout period. This parameter is required when For more information, see CreateLoadBalancerHTTPListener and CreateLoadBalancerHTTPSListener. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie | The name of the cookie that is configured on the server. The name must be 1 to 200 characters in length and can contain only ASCII letters and digits. It cannot contain commas (,), semicolons (;), or spaces. It cannot start with a dollar sign ($). This parameter is required when For more information, see CreateLoadBalancerHTTPListener and CreateLoadBalancerHTTPSListener. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | Separate multiple values with commas (,), for example, | v1.9.3 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type: "insert"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout: "1800"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerConfigure an access control policy group for an SLB instance
Annotation: Multiple, as shown in the following table. The following three annotations are required.
Before you use this annotation to create an SLB instance with access control enabled, you must create an access control policy group in the Classic Load Balancer (CLB) console and record its ID (acl-id).
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status | Specifies whether to enable access control. Valid values:
Default value: | v1.9.3.164-g2105d2e-aliyun and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id | The ID of the access control policy group that is bound to the listener. This parameter is required when | v1.9.3.164-g2105d2e-aliyun and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type | The type of access control. Valid values:
| v1.9.3.164-g2105d2e-aliyun and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id: "${YOUR_ACL_ID}" # You cannot configure multiple policy groups.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type: "white"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerSpecify a redirection port for an SLB instance
Port forwarding redirects requests from an HTTP port to an HTTPS port.
Annotation: Multiple, as shown in the following table. The following three annotations are required.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | Separate multiple values with commas (,), for example, | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | The ID of the certificate on Alibaba Cloud. Log on to the CLB console and view the certificate ID on the Certificate Management page. Note To create a certificate, see Select an Alibaba Cloud-issued certificate. | v1.9.3.164-g2105d2e-aliyun and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-forward-port | Redirects HTTP requests to a specified HTTPS port, for example, | v1.9.3.164-g2105d2e-aliyun and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443,http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-forward-port: "80:443"
name: nginx
namespace: default
spec:
ports:
- name: https
port: 443
protocol: TCP
targetPort: 80
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerSet the scheduling algorithm for an SLB instance
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
Description | Supported CCM version |
The scheduling algorithm. Valid values:
Default value: For more information about the valid values of this parameter, see the | v1.9.3 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wrr"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerCreate a UDP listener
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: UDP
targetPort: 80
selector:
run: nginx
type: LoadBalancerCreate an HTTP listener
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port
Description | Supported CCM version |
Separate multiple values with commas (,), for example, | v1.9.3 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerCreate an HTTPS listener
Annotation: Multiple, as shown in the following table.
HTTPS requests are decrypted at the CLB layer and then sent to backend pods as HTTP requests.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | Separate multiple values with commas (,), for example, | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | The ID of the certificate on Alibaba Cloud. Log on to the CLB console and view the certificate ID on the Certificate Management page. Note To create a certificate, see Select an Alibaba Cloud-issued certificate. | v1.9.3.164-g2105d2e-aliyun and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerSSL protocol error occurs when you access the CLB instance from within the cluster
Symptoms
After you create an HTTPS listener for a Service, you can access the Service from outside the cluster. However, when you run the curl command to access the HTTPS port of the CLB instance associated with the Service from a node or pod within the cluster, the following error is returned:
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version numberCause
This issue is caused by the IPVS rules on the node:
Service configuration: The HTTPS listener of the CLB instance supports only HTTP as a backend service. Therefore, the Service can only forward traffic from
port: 443totargetPort: 80. As a result, ACK creates an IPVS rule on the node to directly forward traffic destined for port443to the backend port80.Layer 4 forwarding: IPVS works at Layer 4 of the TCP/IP protocol stack. It only forwards TCP packets and does not parse application-layer protocols such as TLS or HTTPS.
Protocol mismatch: The HTTPS request (TLS handshake data) initiated by the client (curl) is directly forwarded by IPVS to the backend service's HTTP port
80. Because this port is not configured for TLS, it cannot parse the TLS request. As a result, an HTTP400error is returned, and the client reports an SSL protocol error.
Solution
Add the service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname annotation to the Service. This annotation prevents the generation of IPVS rules on the node and forces traffic within the cluster to be routed through the CLB instance. This ensures that TLS is correctly processed on the CLB instance. For more information about the detailed steps, see Set a hostname for a Service.
Create a listener with a health check
Configure a TCP health check
Annotation: Multiple, as shown in the following table. All of the following annotations are required.
Health checks are enabled for TCP ports by default.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch | Specifies whether to enable health checks for TCP and UDP listeners. Valid values:
Default value: | v2.6.0 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | The health check type. Valid values:
Default value: | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | The period of time to wait for a response from a health check. This parameter applies to TCP health checks. If a backend ECS instance does not respond within the specified period of time, the health check fails. Unit: seconds. Valid values: 1 to 300. If the value of | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | The number of consecutive successful health checks required before the health check status of a backend server is changed from Valid values: 2 to 10. Default value: 3. For more information, see CreateLoadBalancerTCPListener. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | The number of consecutive failed health checks required before the health check status of a backend server is changed from success to fail. Valid values: 2 to 10. Default value: 3. For more information, see CreateLoadBalancerTCPListener. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | The interval between two consecutive health checks. Unit: seconds. Valid values: 1 to 50. Default value: 2. For more information, see CreateLoadBalancerTCPListener. | v1.9.3 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type: "tcp"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "8"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "3"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerConfigure a UDP health check
Annotation: Multiple, as shown in the following table. All of the following annotations are required.
Health checks are enabled for UDP ports by default.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch | Specifies whether to enable health checks for TCP and UDP listeners. Valid values:
Default value: | v2.6.0 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | The period of time to wait for a response from a health check. This parameter applies to TCP health checks. If a backend ECS instance does not respond within the specified period of time, the health check fails. Unit: seconds. Valid values: 1 to 300. If the value of | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | The number of consecutive successful health checks required before the health check status of a backend server is changed from fail to success. Valid values: 2 to 10. Default value: 3. For more information, see CreateLoadBalancerUDPListener. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | The number of consecutive failed health checks required before the health check status of a backend server is changed from success to fail. Valid values: 2 to 10. Default value: 3. For more information, see CreateLoadBalancerUDPListener. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | The interval between two consecutive health checks. Unit: seconds. Valid values: 1 to 50. Default value: 2. For more information, see CreateLoadBalancerUDPListener. | v1.9.3 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "10"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "3"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "3"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: UDP
targetPort: 80
selector:
run: nginx
type: LoadBalancerDisable health checks for TCP and UDP listeners
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch
Description | Supported CCM version |
Specifies whether to enable health checks for TCP and UDP listeners. Valid values:
Default value: | v2.6.0 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "off" # Disable health checks.
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerConfigure an HTTP health check
Annotation: Multiple, as shown in the following table.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag | Valid values:
Default value: | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | The health check type. Valid values:
Default value: For more information, see CreateLoadBalancerHTTPListener. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri | The URI that is used for health checks. You do not need to configure this annotation for TCP health checks. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode | The HTTP status codes that indicate a successful health check. Separate multiple status codes with commas (,). Valid values:
Default value: For more information, see CreateLoadBalancerHTTPListener. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain | The domain name that is used for health checks. Valid values:
For more information, see CreateLoadBalancerHTTPListener. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout | The period of time to wait for a response from a health check. This parameter applies to HTTP health checks. If a backend ECS instance does not respond within the specified period of time, the health check fails. Unit: seconds. Valid values: 1 to 300. If the value of For more information, see CreateLoadBalancerHTTPListener. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | The number of consecutive successful health checks required before the health check status of a backend server is changed from fail to success. Valid values: 2 to 10. Default value: 3. For more information, see CreateLoadBalancerHTTPListener. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | The number of consecutive failed health checks required before the health check status of a backend server is changed from success to fail. Valid values: 2 to 10. Default value: 3. For more information, see CreateLoadBalancerHTTPListener. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | The interval between two consecutive health checks. Unit: seconds. Valid values: 1 to 50. Default value: 2. For more information, see CreateLoadBalancerHTTPListener. | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | Separate multiple values with commas (,), for example, | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method | The health check method for an HTTP listener. Valid values:
| v2.3.0 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type: "http"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri: "/test/index.html"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout: "10"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "3"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
# Optional. Set the HTTP status codes for the health check.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode: "http_4xx"
# Optional. Set the domain name for the health check.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain: "www.aliyun.com"
# Optional. Set the health check method.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method: "head"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerConfigure connection draining for a listener
Annotation: Multiple, as shown in the following table. All of the following annotations are required.
This feature is supported only by TCP and UDP.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain | Specifies whether to enable connection draining. Valid values:
| v2.0.1 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout | The connection draining timeout period. Unit: seconds. Valid values: 10 to 900. | v2.0.1 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: "30"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerConfigure additional request headers for a listener
Annotation: Multiple, as shown in the following table.
This feature is supported only by HTTP and HTTPS.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | Separate multiple values with commas (,), for example, | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-proto | Specifies whether to use the X-Forwarded-Proto header to retrieve the listener protocol of the CLB instance. Valid values:
Default value: | v2.1.0 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport | Specifies whether to use the X-Forwarded-For-SLBPORT header to retrieve the listener port of the SLB instance. Valid values:
Default value: | v2.9.1 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport | Specifies whether to use the X-Forwarded-For-ClientSrcPort header to retrieve the port of the client that accesses the SLB instance. Valid values:
Default value: | v2.9.1 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-proto: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport: "on"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerSet the idle connection timeout period for a listener
Annotation: Multiple, as shown in the following table.
This feature is supported only by HTTP and HTTPS.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | Separate multiple values with commas (,), for example, | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout | The idle connection timeout period for the listener. Unit: seconds. Valid values: 1 to 60. Default value: 15 | v2.1.0 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout: "30"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerDisable the HTTP/2 feature for a listener
Annotation: Multiple, as shown in the following table.
This feature is supported only by HTTPS.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | Separate multiple values with commas (,), for example, | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | The ID of the certificate on Alibaba Cloud. Log on to the CLB console and view the certificate ID on the Certificate Management page. Note To create a certificate, see Select an Alibaba Cloud-issued certificate. | v1.9.3.164-g2105d2e-aliyun and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-http2-enabled | Specifies whether to enable HTTP/2. Valid values:
Default value: | v2.1.0 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-http2-enabled: "off"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerSpecify the request timeout period for a listener
Annotation: Multiple, as shown in the following table.
This feature is supported only by HTTP and HTTPS.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | Separate multiple values with commas (,), for example, | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-request-timeout | The request timeout period. Unit: seconds. Valid values: 1 to 180. Default value: 60 If a backend server does not respond within the timeout period, the SLB instance stops waiting and returns an HTTP 504 error code to the client. | v2.3.0 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-request-timeout: "60"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerSpecify the connection timeout period for a listener
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout
This feature is supported only by TCP.
Description | Supported CCM version |
The connection timeout period. Unit: seconds. Valid values: 10 to 900. For more information, see CreateLoadBalancerTCPListener. | v2.3.0 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout: "60"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerConfigure a security policy for a listener
Annotation: Multiple, as shown in the following table.
This feature is supported only by HTTPS.
Annotation | Description | Supported CCM version |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | Separate multiple values with commas (,), for example, | v1.9.3 and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | The ID of the certificate on Alibaba Cloud. Log on to the CLB console and view the certificate ID on the Certificate Management page. Note To create a certificate, see Select an Alibaba Cloud-issued certificate. | v1.9.3.164-g2105d2e-aliyun and later |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy | A security policy includes the supported TLS versions and cipher suites for HTTPS. For more information, see CreateLoadBalancerHTTPSListener. Valid values:
Default value: | v2.4.0 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443,http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy: "tls_cipher_policy_1_2"
name: nginx
namespace: default
spec:
ports:
- name: https
port: 443
protocol: TCP
targetPort: 443
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerConfigure TCP and UDP protocols for a listener at the same time
This feature requires a Kubernetes cluster of v1.24 or later. For more information about how to upgrade a cluster, see Upgrade an ACK cluster.
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: udp
port: 80
protocol: UDP
targetPort: 81
selector:
app: nginx
sessionAffinity: None
type: LoadBalancerConfigure the Proxy Protocol for TCP and UDP listeners
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol
Description | Supported CCM version |
Configures the Proxy Protocol for TCP and UDP listeners. After you configure the Proxy Protocol, you can use it to pass client source IP addresses to backend servers. Valid values:
Default value: Important This feature does not support smooth online migration. To switch the Proxy Protocol, you must stop your services for the upgrade. Proceed with caution. | v2.6.0 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerTypical operations for backend server groups
Use worker nodes with a specific label as backend servers
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label
Description | Supported CCM version |
Specifies the worker nodes to be attached to the backend server group of the CLB instance based on labels. Separate multiple labels with commas (,), for example, | v1.9.3 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label: "failure-domain.beta.kubernetes.io/zone=ap-southeast-5a"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancerUse the nodes where pods reside as backend servers
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
By default, externalTrafficPolicy is set to Cluster. In this mode, all nodes in the cluster are mounted to the backend server group. If you set externalTrafficPolicy to Local, only the nodes where the pods reside are used as backend servers.
Description | Supported CCM version |
The scheduling algorithm. Valid values:
Default value: | v1.9.3 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wrr"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancerRemove unschedulable nodes from the backend server group of the CLB instance
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend
Description | Supported CCM version |
Remove SchedulingDisabled nodes from the backend server group of the CLB instance. Valid values:
Default value: | v1.9.3.164-g2105d2e-aliyun and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend: "on"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- name: http
port: 30080
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancerDirectly attach pod ENIs to the backend server group of the CLB instance
Annotation: service.beta.kubernetes.io/backend-type
Description | Default value | Supported CCM version |
The type of backend server for the CLB instance. Valid values:
|
| v1.9.3.164-g2105d2e-aliyun and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/backend-type: "eni"
name: nginx
spec:
ports:
- name: http
port: 30080
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancerReuse an existing vServer group
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port
You can reuse an existing vServer group. This feature is valid only when you reuse an existing CLB instance. For more information about usage examples, see Deploy services across clusters by reusing an SLB instance.
Set the weight of a Service to receive traffic
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight
In scenarios where multiple Services reuse the same CLB instance, you can use this annotation to set the weight of the current Service to receive traffic. This annotation is valid only when you reuse an existing vServer group. For more information about usage examples, see Deploy services across clusters by reusing an SLB instance.
Ignore backend server weight updates
Annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update
Description | Supported CCM version |
During Service synchronization, the update of backend server weights in the vServer group is skipped. This configuration is suitable for scenarios where you need to manually manage backend server weights using a mechanism other than CCM. Valid values:
Default value: | v2.11.1 and later |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update: "on"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer