You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -9,27 +9,143 @@ This page is created to document the behaviour of CIS in CRD Mode(ALPHA Release)
9
9
* A custom resource is an extension of the Kubernetes API that is not necessarily available in a default Kubernetes installation. It represents a customization of a particular Kubernetes installation. However, many core Kubernetes functions are now built using custom resources, making Kubernetes more modular.
10
10
* Custom resources can appear and disappear in a running cluster through dynamic registration, and cluster admins can update custom resources independently of the cluster itself. Once a custom resource is installed, users can create and access its objects using kubectl, just as they do for built-in resources like Pods.
11
11
12
+
## Contents
13
+
* CIS supports 2 Custom Resources at this point of time.
14
+
- VirtualServer
15
+
- TLSProfile
16
+
17
+
## VirtualServer
18
+
19
+
* VirtualServer resource defines load balancing configuration for a domain name.
20
+
```
21
+
apiVersion: "cis.f5.com/v1"
22
+
kind: VirtualServer
23
+
metadata:
24
+
name: coffee-virtual-server
25
+
labels:
26
+
f5cr: "true"
27
+
spec:
28
+
host: coffee.example.com
29
+
virtualServerAddress: "172.16.3.4"
30
+
pools:
31
+
- path: /coffee
32
+
service: svc-2
33
+
servicePort: 80
34
+
```
35
+
36
+
**Note: The above VirtualServer is insecure, Attach a TLSProfile to make it secure**
37
+
38
+
## TLSProfile
39
+
40
+
* TLSProfile is used to specify the TLS termination for a single/list of services in a VirtualServer Custom Resource. TLS termination relies on SNI. Any non-SNI traffic received on port 443 may result in connection issues.
41
+
* TLSProfile can be created either with certificates stored as k8s secrets or can be referenced to profiles existing in BIG-IP
42
+
43
+
```
44
+
apiVersion: cis.f5.com/v1
45
+
kind: TLSProfile
46
+
metadata:
47
+
name: reencrypt-tls
48
+
labels:
49
+
f5cr: "true"
50
+
spec:
51
+
tls:
52
+
termination: reencrypt
53
+
clientSSL: /common/clientssl
54
+
serverSSL: /common/serverssl
55
+
reference: bigip # --> reference profiles created in BIG-IP by User
56
+
hosts:
57
+
- coffee.example.com
58
+
```
59
+
60
+
## VirtualServer with TLSProfile
61
+
62
+
* VirtualServer with TLSProfile is used to specify the TLS termination. TLS termination relies on SNI. Any non-SNI traffic received on port 443 may result in connection issues. Below example shows how to attach a TLSProfile to a VirtualServer.
63
+
64
+
```
65
+
apiVersion: cis.f5.com/v1
66
+
kind: VirtualServer
67
+
metadata:
68
+
name: coffee-virtual-server
69
+
labels:
70
+
f5cr: "true"
71
+
namespace: default
72
+
spec:
73
+
host: coffee.example.com
74
+
tlsProfileName: reencrypt-tls. # --> This will attach reencrypt-tls TLSProfile
75
+
virtualServerAddress: "172.16.3.4"
76
+
pools:
77
+
- path: /coffee
78
+
service: svc
79
+
servicePort: 80
80
+
```
81
+
82
+
* CIS has a 1:1 mapping for a domain(CommonName) and BIG-IP-VirtualServer.
83
+
* User can create any number of custom resources for a single domain. For example, User is flexible to create 2 VirtualServers with
84
+
different terminations(for same domain), one with edge and another with re-encrypt. Todo this he needs to create two VirtualServers one with edge TLSProfile and another with re-encrypt TLSProfile.
85
+
- Both the VirutalServers should be created with same virtualServerAddress
86
+
* Single or Group of VirtualServers(with same virtualServerAddress) will be created as one common BIG-IP-VirtualServer.
87
+
12
88
## How CIS works with CRDs
13
89
14
-
* CIS registers to the kubernetes client-go using informers to retrieve Virtual Server, Service, Endpoint and Node creation, updation and deletion events. Resources identified from such events
15
-
will be pushed to a Resource Queue maintained by CIS.
90
+
* CIS registers to the kubernetes client-go using informers to retrieve Virtual Server, TLSProfile, Service, Endpoint and Node creation, updation and deletion events. Resources identified from such events will be pushed to a Resource Queue maintained by CIS.
16
91
* Resource Queue holds the resources to be processed.
17
-
* Virtual Server is the Primary citizen. Any changes in Service, Endpoint, Node will indirectly affect Virtual Server.
18
-
* Worker fetches the affected Virtual Servers from Resource Queue to populate a common structure which holds the configuration of all the Virtual Servers such as Virtual Server IP, Pool Members and L7 LTM policy actions.
92
+
* Virtual Server is the Primary citizen. Any changes in TLSProfile, Service, Endpoint, Node will process their affected Virtual Servers. For Example, If svc-a is part of foo-VirtualServer and bar-VirtualServer, Any changes in svc-a will put foo-VirtualServer and bar-VirtualServer in resource queue.
93
+
* Worker fetches the affected Virtual Servers from Resource Queue to populate a common structure which holds the configuration of all the Virtual Servers such as TLSProfile, Virtual Server IP, Pool Members and L7 LTM policy actions.
19
94
* Vxlan Manager prepares the BIG-IP NET configuration as AS3 cannot process FDB and ARP entries.
20
95
* LTM Configuration(using AS3) and NET Configuration(using CCCL) will be created in CIS Managed Partition defined by the User.
21
96
22
-
## Alpha Release
23
-
**Supported Features**
24
97
25
-
* Supports Custom Resource type: VirtualServer.
26
-
* Responds to changes in VirtualServer resources.
27
-
* Responds to changes in Services and Endpoints.
28
-
* Creates a common partition in BIG-IP for both LTM and NET objects.
| path | String | required | NA | Path to access the service |
120
+
| service | String | required | NA | Service deployed in kubernetes cluster |
121
+
| nodeMemberLabel | String | optional | NA | List of Nodes to consider in NodePort Mode as BIG-IP pool members. This Option is only applicable for NodePort Mode |
122
+
| servicePort | String | required | NA | Port to access Service |
123
+
| monitor | String | Optional | NA | Health Monitor to check the health of Pool Members |
0 commit comments