split service docs

This commit is contained in:
Stavros kois
2023-02-09 18:14:11 +02:00
parent 9940fcdf3d
commit 37d1e36a7b
7 changed files with 297 additions and 185 deletions
-185
View File
@@ -1,185 +0,0 @@
# Service
| Key | Type | Required | Helm Template | Default | Description |
| :------------------------------------------------------------------- | :-------: | :-----------------------: | :----------------: | :----------------: | :------------------------------------------------------------------------------------------------------------------------------------ |
| service | `dict` | ❌ | ❌ | `{}` | Define the service as dicts |
| service.[service-name] | `dict` | ✅ | ❌ | `{}` | Holds service definition |
| service.[service-name].enabled | `boolean` | ✅ | ❌ | `false` | Enables or Disables the service |
| service.[service-name].labels | `dict` | ❌ | ✅ (On value only) | `{}` | Additional labels for service |
| service.[service-name].annotations | `dict` | ❌ | ✅ (On value only) | `{}` | Additional annotations for service |
| service.[service-name].type | `string` | ❌ | ✅ | `ClusterIP` | Define the service type (ClusterIP, LoadBalancer, NodePort, ExternalIP, ExternalName) |
| service.[service-name].publishNotReadyAddresses | `boolean` | ❌ | ❌ | `false` | Define whether to publishNotReadyAddresses or not |
| service.[service-name].externalIP | `string` | ✅ (Only ExternalIP type) | ✅ | | Define External IP for headless service |
| service.[service-name].addressType | `string` | ✅ (Only ExternalIP type) | ✅ | `IPv4` | Define the addressType for External IP |
| service.[service-name].externalIPs | `list` | ❌ | ❌ | | Define externalIPs |
| service.[service-name].externalIPs.[externalIP] | `string` | ✅ | ✅ | | The external IP |
| service.[service-name].sharedKey | `string` | ❌ | ✅ | `$FullName` | Custom Shared Key for MetalLB Annotation |
| service.[service-name].clusterIP | `string` | ❌ | ✅ | | Custom Cluster IP |
| service.[service-name].ipFamilyPolicy | `string` | ❌ | ✅ | | Define the ipFamilyPolicy (SingleStack, PreferDualStack, RequireDualStack) |
| service.[service-name].ipFamilies | `list` | ❌ | ❌ | | Define the ipFamilies |
| service.[service-name].ipFamilies.[ipFamily] | `string` | ✅ | ✅ | | Define the ipFamily (IPv4, IPv6) |
| service.[service-name].loadBalancerIP | `string` | ❌ | ✅ | | Define the load balancer IP |
| service.[service-name].loadBalancerSourceRanges | `list` | ❌ | ❌ | | Define the load balancer source ranges |
| service.[service-name].loadBalancerSourceRanges.[source-range] | `string` | ✅ | ✅ | | Define the load balancer source range |
| service.[service-name].externalTrafficPolicy | `string` | ❌ | ✅ | | Define the external traffic policy (Cluster, Local) |
| service.[service-name].sessionAffinity | `string` | ❌ | ✅ | | Define the session affinity (ClientIP, None) |
| service.[service-name].sessionAffinityConfig.clientIP.timeoutSeconds | `int` | ❌ | ✅ | | Define the timeout for ClientIP session affinity (0-86400) |
| service.[service-name].targetSelector | `string` | ❌ | ❌ | `""` | Define the pod to link the service, by default will use the primary pod |
| service.[service-name].ports | `list` | ✅ | ❌ | `{}` | Define the ports of the service |
| service.[service-name].ports.[port-name] | `dict` | ✅ | ❌ | `{}` | Define the port dict |
| service.[service-name].ports.[port-name].port | `int` | ✅ | ✅ | | Define the port that will be exposed by the service |
| service.[service-name].ports.[port-name].nodePort | `int` | ✅ (Only NodePort type) | ✅ | | Define the node port that will be exposed on the node |
| service.[service-name].ports.[port-name].targetPort | `int` | ❌ | ✅ | `[port-name].port` | Define the target port (No named ports, as this will be used to assign the containerPort to containers) |
| service.[service-name].ports.[port-name].protocol | `string` | ❌ | ✅ | `TCP` | Define the port protocol (HTTP, HTTPS, TCP, UDP). (Also used by the container probes, HTTP and HTTPS are converted to TCP on service) |
| service.[service-name].ports.[port-name].targetSelector | `string` | ❌ | ❌ | `TCP` | Define the container to link this port (Must be on under the pod linked above) |
---
Appears in:
- `.Values.service`
---
Naming scheme:
- Primary: `$FullName` (release-name-chart-name)
- Non-Primary: `$FullName-$ServiceName` (release-name-chart-name-ServiceName)
---
Examples:
```yaml
service:
service-clusterip:
enabled: true
primary: true
publishNotReadyAddresses: true
clusterIP: 172.16.20.233
publishNotReadyAddresses: true
ipFamilyPolicy: SingleStack
ipFamilies:
- IPv4
externalIPs:
- 10.200.230.34
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 86400
targetSelector: pod-name
ports:
port-name:
enabled: true
primary: true
targetSelector: container-name
port: 80
protocol: HTTP
targetPort: 8080
service-lb:
enabled: true
primary: true
type: LoadBalancer
loadBalancerIP: 10.100.100.2
loadBalancerSourceRanges:
- 10.100.100.0/24
clusterIP: 172.16.20.233
sharedKey: custom-shared-key
publishNotReadyAddresses: true
ipFamilyPolicy: SingleStack
ipFamilies:
- IPv4
externalIPs:
- 10.200.230.34
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 86400
externalTrafficPolicy: Cluster
targetSelector: pod-name
ports:
port-name:
enabled: true
primary: true
targetSelector: container-name
port: 80
protocol: HTTP
targetPort: 8080
service-nodeport:
enabled: true
primary: true
type: NodePort
clusterIP: 172.16.20.233
publishNotReadyAddresses: true
externalIPs:
- 10.200.230.34
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 86400
externalTrafficPolicy: Cluster
targetSelector: pod-name
ports:
port-name:
enabled: true
primary: true
targetSelector: container-name
port: 80
protocol: HTTP
targetPort: 8080
nodePort: 30080
# Special type
service-externalname:
enabled: true
primary: true
type: ExternalName
externalName: external-name
clusterIP: 172.16.20.233
publishNotReadyAddresses: true
externalIPs:
- 10.200.230.34
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 86400
externalTrafficPolicy: Cluster
ports:
port-name:
enabled: true
primary: true
targetSelector: container-name
port: 80
protocol: HTTP
# Special type
service-externalip:
enabled: true
primary: true
type: ExternalIP
externalIP: 1.1.1.1
addressType: IPv4
publishNotReadyAddresses: true
externalIPs:
- 10.200.230.34
sessionAffinity: ClientIP
externalTrafficPolicy: Cluster
ports:
port-name:
enabled: true
primary: true
targetSelector: container-name
port: 80
targetPort: 8080
protocol: HTTP
other-service-name:
enabled: true
type: ClusterIP
ports:
other-port-name:
enabled: true
primary: true
```
@@ -0,0 +1,50 @@
# ClusterIP
| Key | Type | Required | Helm Template | Default | Description |
| :------------------------------------------------------------------- | :-------: | :------: | :-----------: | :-----: | :------------------------------------------------------------------------- |
| service.[service-name].clusterIP | `string` | ❌ | ✅ | | Custom Cluster IP |
| service.[service-name].ipFamilyPolicy | `string` | ❌ | ✅ | | Define the ipFamilyPolicy (SingleStack, PreferDualStack, RequireDualStack) |
| service.[service-name].ipFamilies | `list` | ❌ | ❌ | | Define the ipFamilies |
| service.[service-name].ipFamilies.[ipFamily] | `string` | ✅ | ✅ | | Define the ipFamily (IPv4, IPv6) |
| service.[service-name].sessionAffinity | `string` | ❌ | ✅ | | Define the session affinity (ClientIP, None) |
| service.[service-name].sessionAffinityConfig.clientIP.timeoutSeconds | `int` | ❌ | ✅ | | Define the timeout for ClientIP session affinity (0-86400) |
| service.[service-name].externalIPs | `list` | ❌ | ❌ | | Define externalIPs |
| service.[service-name].externalIPs.[externalIP] | `string` | ✅ | ✅ | | The external IP |
---
Notes:
View common `keys` of `service` in [service Documentation](README.md).
---
Examples:
```yaml
service:
service-clusterip:
enabled: true
primary: true
publishNotReadyAddresses: true
clusterIP: 172.16.20.233
publishNotReadyAddresses: true
ipFamilyPolicy: SingleStack
ipFamilies:
- IPv4
externalIPs:
- 10.200.230.34
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 86400
targetSelector: pod-name
ports:
port-name:
enabled: true
primary: true
targetSelector: container-name
port: 80
protocol: HTTP
targetPort: 8080
```
@@ -0,0 +1,45 @@
# ExternalIP
| Key | Type | Required | Helm Template | Default | Description |
| :------------------------------------------------------------------- | :-------: | :------: | :-----------: | :-----: | :--------------------------------------------------------- |
| service.[service-name].externalIP | `string` | ✅ | ✅ | | Define External IP for headless service |
| service.[service-name].addressType | `string` | ❌ | ✅ | `IPv4` | Define the addressType for External IP |
| service.[service-name].sessionAffinity | `string` | ❌ | ✅ | | Define the session affinity (ClientIP, None) |
| service.[service-name].sessionAffinityConfig.clientIP.timeoutSeconds | `int` | ❌ | ✅ | | Define the timeout for ClientIP session affinity (0-86400) |
| service.[service-name].externalIPs | `list` | ❌ | ❌ | | Define externalIPs |
| service.[service-name].externalIPs.[externalIP] | `string` | ✅ | ✅ | | The external IP |
| service.[service-name].externalTrafficPolicy | `string` | ❌ | ✅ | | Define the external traffic policy (Cluster, Local) |
---
Notes:
View common `keys` of `service` in [service Documentation](README.md).
---
Examples:
```yaml
service:
# Special type
service-externalip:
enabled: true
primary: true
type: ExternalIP
externalIP: 1.1.1.1
addressType: IPv4
publishNotReadyAddresses: true
externalIPs:
- 10.200.230.34
sessionAffinity: ClientIP
externalTrafficPolicy: Cluster
ports:
port-name:
enabled: true
primary: true
targetSelector: container-name
port: 80
targetPort: 8080
protocol: HTTP
```
@@ -0,0 +1,47 @@
# ExternalName
| Key | Type | Required | Helm Template | Default | Description |
| :------------------------------------------------------------------- | :-------: | :------: | :-----------: | :-----: | :------------------------------------------------------------------------- |
| service.[service-name].externalName | `string` | ✅ | ✅ | `""` | Define the external name |
| service.[service-name].clusterIP | `string` | ❌ | ✅ | | Custom Cluster IP |
| service.[service-name].sessionAffinity | `string` | ❌ | ✅ | | Define the session affinity (ClientIP, None) |
| service.[service-name].sessionAffinityConfig.clientIP.timeoutSeconds | `int` | ❌ | ✅ | | Define the timeout for ClientIP session affinity (0-86400) |
| service.[service-name].externalIPs | `list` | ❌ | ❌ | | Define externalIPs |
| service.[service-name].externalIPs.[externalIP] | `string` | ✅ | ✅ | | The external IP |
| service.[service-name].externalTrafficPolicy | `string` | ❌ | ✅ | | Define the external traffic policy (Cluster, Local) |
---
Notes:
View common `keys` of `service` in [service Documentation](README.md).
---
Examples:
```yaml
service:
# Special type
service-external-name:
enabled: true
primary: true
type: ExternalName
externalName: external-name
clusterIP: 172.16.20.233
publishNotReadyAddresses: true
externalIPs:
- 10.200.230.34
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 86400
externalTrafficPolicy: Cluster
ports:
port-name:
enabled: true
primary: true
targetSelector: container-name
port: 80
protocol: HTTP
```
@@ -0,0 +1,60 @@
# LoadBalancer
| Key | Type | Required | Helm Template | Default | Description |
| :------------------------------------------------------------------- | :-------: | :------: | :-----------: | :---------: | :------------------------------------------------------------------------- |
| service.[service-name].sharedKey | `string` | ❌ | ✅ | `$FullName` | Custom Shared Key for MetalLB Annotation |
| service.[service-name].clusterIP | `string` | ❌ | ✅ | | Custom Cluster IP |
| service.[service-name].ipFamilyPolicy | `string` | ❌ | ✅ | | Define the ipFamilyPolicy (SingleStack, PreferDualStack, RequireDualStack) |
| service.[service-name].ipFamilies | `list` | ❌ | ❌ | | Define the ipFamilies |
| service.[service-name].ipFamilies.[ipFamily] | `string` | ✅ | ✅ | | Define the ipFamily (IPv4, IPv6) |
| service.[service-name].sessionAffinity | `string` | ❌ | ✅ | | Define the session affinity (ClientIP, None) |
| service.[service-name].sessionAffinityConfig.clientIP.timeoutSeconds | `int` | ❌ | ✅ | | Define the timeout for ClientIP session affinity (0-86400) |
| service.[service-name].externalIPs | `list` | ❌ | ❌ | | Define externalIPs |
| service.[service-name].externalIPs.[externalIP] | `string` | ✅ | ✅ | | The external IP |
| service.[service-name].loadBalancerIP | `string` | ❌ | ✅ | | Define the load balancer IP |
| service.[service-name].loadBalancerSourceRanges | `list` | ❌ | ❌ | | Define the load balancer source ranges |
| service.[service-name].loadBalancerSourceRanges.[source-range] | `string` | ✅ | ✅ | | Define the load balancer source range |
| service.[service-name].externalTrafficPolicy | `string` | ❌ | ✅ | | Define the external traffic policy (Cluster, Local) |
---
Notes:
View common `keys` of `service` in [service Documentation](README.md).
---
Examples:
```yaml
service:
service-lb:
enabled: true
primary: true
type: LoadBalancer
loadBalancerIP: 10.100.100.2
loadBalancerSourceRanges:
- 10.100.100.0/24
clusterIP: 172.16.20.233
sharedKey: custom-shared-key
publishNotReadyAddresses: true
ipFamilyPolicy: SingleStack
ipFamilies:
- IPv4
externalIPs:
- 10.200.230.34
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 86400
externalTrafficPolicy: Cluster
targetSelector: pod-name
ports:
port-name:
enabled: true
primary: true
targetSelector: container-name
port: 80
protocol: HTTP
targetPort: 8080
```
@@ -0,0 +1,51 @@
# NodePort
| Key | Type | Required | Helm Template | Default | Description |
| :------------------------------------------------------------------- | :-------: | :------: | :-----------: | :-----: | :------------------------------------------------------------------------- |
| service.[service-name].clusterIP | `string` | ❌ | ✅ | | Custom Cluster IP |
| service.[service-name].ipFamilyPolicy | `string` | ❌ | ✅ | | Define the ipFamilyPolicy (SingleStack, PreferDualStack, RequireDualStack) |
| service.[service-name].ipFamilies | `list` | ❌ | ❌ | | Define the ipFamilies |
| service.[service-name].ipFamilies.[ipFamily] | `string` | ✅ | ✅ | | Define the ipFamily (IPv4, IPv6) |
| service.[service-name].sessionAffinity | `string` | ❌ | ✅ | | Define the session affinity (ClientIP, None) |
| service.[service-name].sessionAffinityConfig.clientIP.timeoutSeconds | `int` | ❌ | ✅ | | Define the timeout for ClientIP session affinity (0-86400) |
| service.[service-name].externalIPs | `list` | ❌ | ❌ | | Define externalIPs |
| service.[service-name].externalIPs.[externalIP] | `string` | ✅ | ✅ | | The external IP |
| service.[service-name].externalTrafficPolicy | `string` | ❌ | ✅ | | Define the external traffic policy (Cluster, Local) |
| service.[service-name].ports.[port-name].nodePort | `int` | ✅ | ✅ | | Define the node port that will be exposed on the node |
---
Notes:
View common `keys` of `service` in [service Documentation](README.md).
---
Examples:
```yaml
service:
service-nodeport:
enabled: true
primary: true
type: NodePort
clusterIP: 172.16.20.233
publishNotReadyAddresses: true
externalIPs:
- 10.200.230.34
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 86400
externalTrafficPolicy: Cluster
targetSelector: pod-name
ports:
port-name:
enabled: true
primary: true
targetSelector: container-name
port: 80
protocol: HTTP
targetPort: 8080
nodePort: 30080
```
@@ -0,0 +1,44 @@
# Service
| Key | Type | Required | Helm Template | Default | Description |
| :------------------------------------------------------ | :-------: | :------: | :----------------: | :----------------: | :------------------------------------------------------------------------------------------------------------------------------------ |
| service | `dict` | ❌ | ❌ | `{}` | Define the service as dicts |
| service.[service-name] | `dict` | ✅ | ❌ | `{}` | Holds service definition |
| service.[service-name].enabled | `boolean` | ✅ | ❌ | `false` | Enables or Disables the service |
| service.[service-name].labels | `dict` | ❌ | ✅ (On value only) | `{}` | Additional labels for service |
| service.[service-name].annotations | `dict` | ❌ | ✅ (On value only) | `{}` | Additional annotations for service |
| service.[service-name].type | `string` | ❌ | ✅ | `ClusterIP` | Define the service type (ClusterIP, LoadBalancer, NodePort, ExternalIP, ExternalName) |
| service.[service-name].publishNotReadyAddresses | `boolean` | ❌ | ❌ | `false` | Define whether to publishNotReadyAddresses or not |
| service.[service-name].targetSelector | `string` | ❌ | ❌ | `""` | Define the pod to link the service, by default will use the primary pod |
| service.[service-name].ports | `list` | ✅ | ❌ | `{}` | Define the ports of the service |
| service.[service-name].ports.[port-name] | `dict` | ✅ | ❌ | `{}` | Define the port dict |
| service.[service-name].ports.[port-name].port | `int` | ✅ | ✅ | | Define the port that will be exposed by the service |
| service.[service-name].ports.[port-name].targetPort | `int` | ❌ | ✅ | `[port-name].port` | Define the target port (No named ports, as this will be used to assign the containerPort to containers) |
| service.[service-name].ports.[port-name].protocol | `string` | ❌ | ✅ | `TCP` | Define the port protocol (HTTP, HTTPS, TCP, UDP). (Also used by the container probes, HTTP and HTTPS are converted to TCP on service) |
| service.[service-name].ports.[port-name].targetSelector | `string` | ❌ | ❌ | `TCP` | Define the container to link this port (Must be on under the pod linked above) |
> When `targetSelector`(s) is empty, it will define auto-select the primary pod/container
---
Appears in:
- `.Values.service`
---
Naming scheme:
- Primary: `$FullName` (release-name-chart-name)
- Non-Primary: `$FullName-$ServiceName` (release-name-chart-name-ServiceName)
---
> Those are the common `keys` for all **service**.
> Additional keys, information and examples, see on the specific kind of service.
- [ClusterIP](ClusterIP.md)
- [LoadBalancer](LoadBalancer.md)
- [NodePort](NodePort.md)
- [ExternalName](ExternalName.md)
- [ExternalIP](ExternalIP.md)