external-dns/docs/sources/f5-transportserver.md
Michel Loiseleur ac4049bf03
ci(docs): add markdown linters and editorconfig (#5055)
* ci(docs): add markdown linters

* fixes issues in md detected by the linter

* fix workflow

* pre commit

* add editor config

* fix test

* review
2025-02-09 14:07:56 -08:00

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.