mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-07 18:16:57 +02:00
* ci(docs): add markdown linters * fixes issues in md detected by the linter * fix workflow * pre commit * add editor config * fix test * review
111 lines
2.8 KiB
Markdown
111 lines
2.8 KiB
Markdown
# F5 Networks TransportServer Source
|
|
|
|
This tutorial describes how to configure ExternalDNS to use the F5 Networks TransportServer Source. It is meant to supplement the other provider-specific setup tutorials.
|
|
|
|
The F5 Networks TransportServer CRD is part of [this](https://github.com/F5Networks/k8s-bigip-ctlr) project. See more in-depth info regarding the TransportServer CRD [here](https://github.com/F5Networks/k8s-bigip-ctlr/tree/master/docs/cis-20.x/config_examples/customResource/TransportServer).
|
|
|
|
## Start with ExternalDNS with the F5 Networks TransportServer source
|
|
|
|
1. Make sure that you have the `k8s-bigip-ctlr` installed in your cluster. The needed CRDs are bundled within the controller.
|
|
|
|
2. In your Helm `values.yaml` add:
|
|
|
|
```yaml
|
|
sources:
|
|
- ...
|
|
- f5-transportserver
|
|
- ...
|
|
```
|
|
|
|
or add it in your `Deployment` if you aren't installing `external-dns` via Helm:
|
|
|
|
```yaml
|
|
args:
|
|
- --source=f5-transportserver
|
|
```
|
|
|
|
Note that, in case you're not installing via Helm, you'll need the following in the `ClusterRole` bound to the service account of `external-dns`:
|
|
|
|
```yaml
|
|
- apiGroups:
|
|
- cis.f5.com
|
|
resources:
|
|
- transportservers
|
|
verbs:
|
|
- get
|
|
- list
|
|
- watch
|
|
```
|
|
|
|
### Example TransportServer CR w/ host in spec
|
|
|
|
```yaml
|
|
apiVersion: cis.f5.com/v1
|
|
kind: TransportServer
|
|
metadata:
|
|
labels:
|
|
f5cr: 'true'
|
|
name: test-ts
|
|
namespace: test-ns
|
|
spec:
|
|
bigipRouteDomain: 0
|
|
host: test.example.com
|
|
ipamLabel: vips
|
|
mode: standard
|
|
pool:
|
|
service: test-service
|
|
servicePort: 4222
|
|
virtualServerPort: 4222
|
|
```
|
|
|
|
### Example TransportServer CR w/ target annotation set
|
|
|
|
If the `external-dns.alpha.kubernetes.io/target` annotation is set, the record created will reflect that and everything else will be ignored.
|
|
|
|
```yaml
|
|
apiVersion: cis.f5.com/v1
|
|
kind: TransportServer
|
|
metadata:
|
|
annotations:
|
|
external-dns.alpha.kubernetes.io/target: 10.172.1.12
|
|
labels:
|
|
f5cr: 'true'
|
|
name: test-ts
|
|
namespace: test-ns
|
|
spec:
|
|
bigipRouteDomain: 0
|
|
host: test.example.com
|
|
ipamLabel: vips
|
|
mode: standard
|
|
pool:
|
|
service: test-service
|
|
servicePort: 4222
|
|
virtualServerPort: 4222
|
|
```
|
|
|
|
### Example TransportServer CR w/ VirtualServerAddress set
|
|
|
|
If `virtualServerAddress` is set, the record created will reflect that. `external-dns.alpha.kubernetes.io/target` will take precedence though.
|
|
|
|
```yaml
|
|
apiVersion: cis.f5.com/v1
|
|
kind: TransportServer
|
|
metadata:
|
|
labels:
|
|
f5cr: 'true'
|
|
name: test-ts
|
|
namespace: test-ns
|
|
spec:
|
|
bigipRouteDomain: 0
|
|
host: test.example.com
|
|
ipamLabel: vips
|
|
mode: standard
|
|
pool:
|
|
service: test-service
|
|
servicePort: 4222
|
|
virtualServerPort: 4222
|
|
virtualServerAddress: 10.172.1.123
|
|
```
|
|
|
|
If there is no target annotation or `virtualServerAddress` field set, then it'll use the `VSAddress` field from the created TransportServer status to create the record.
|