mirror of
				https://github.com/kubernetes-sigs/external-dns.git
				synced 2025-11-03 20:21:23 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			153 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Setting up external-dns for BlueCat
 | 
						|
 | 
						|
The first external-dns release with with BlueCat provider support is v0.8.0.
 | 
						|
 | 
						|
## Prerequisites
 | 
						|
Install the BlueCat Gateway product and deploy the [community gateway workflows](https://github.com/bluecatlabs/gateway-workflows).
 | 
						|
 | 
						|
## Configuration Options
 | 
						|
 | 
						|
There are two ways to pass configuration options to the Bluecat Provider JSON configuration file and command line flags. Currently if a valid configuration file is used all
 | 
						|
BlueCat provider configurations will be taken from the configuration file. If a configuraiton file is not provided or cannot be read then all BlueCat provider configurations will
 | 
						|
be taken from the command line flags. In the future an enhancement will be made to merge configuration options from the configuration file and command line flags if both are provided.
 | 
						|
 | 
						|
BlueCat provider supports getting the proxy URL from the environment variables. The format is the one specified by golang's [http.ProxyFromEnvironment](https://pkg.go.dev/net/http#ProxyFromEnvironment).
 | 
						|
 | 
						|
### Using CLI Flags
 | 
						|
When using CLI flags to configure the Bluecat Provider the BlueCat Gateway credentials are passed in using environment variables `BLUECAT_USERNAME` and `BLUECAT_PASSWORD`.
 | 
						|
 | 
						|
#### Deploy
 | 
						|
Setup up namespace, deployment, and service account:
 | 
						|
```
 | 
						|
kubectl create namespace bluecat-example
 | 
						|
kubectl create secret generic bluecat-credentials --from-literal=username=bluecatuser --from-literal=password=bluecatpassword -n bluecat-example
 | 
						|
cat << EOF > ~/bluecat.yml
 | 
						|
---
 | 
						|
apiVersion: v1
 | 
						|
kind: ServiceAccount
 | 
						|
metadata:
 | 
						|
  name: external-dns
 | 
						|
---
 | 
						|
apiVersion: apps/v1
 | 
						|
kind: Deployment
 | 
						|
metadata:
 | 
						|
  name: external-dns
 | 
						|
spec:
 | 
						|
  selector:
 | 
						|
    matchLabels:
 | 
						|
      app: external-dns
 | 
						|
  strategy:
 | 
						|
    type: Recreate
 | 
						|
  template:
 | 
						|
    metadata:
 | 
						|
      labels:
 | 
						|
        app: external-dns
 | 
						|
    spec:
 | 
						|
      serviceAccountName: external-dns
 | 
						|
      containers:
 | 
						|
      - name: external-dns
 | 
						|
        image: registry.k8s.io/external-dns/external-dns:v0.14.0
 | 
						|
        args:
 | 
						|
        - --log-level=debug
 | 
						|
        - --source=service
 | 
						|
        - --provider=bluecat
 | 
						|
        - --txt-owner-id=bluecat-example
 | 
						|
        - --bluecat-dns-configuration=Example
 | 
						|
        - --bluecat-dns-view=Internal
 | 
						|
        - --bluecat-gateway-host=https://bluecatgw.example.com
 | 
						|
        - --bluecat-root-zone=example.com
 | 
						|
        env:
 | 
						|
        - name: BLUECAT_USERNAME
 | 
						|
          valueFrom:
 | 
						|
            secretKeyRef:
 | 
						|
              name: bluecat-credentials
 | 
						|
              key: username
 | 
						|
        - name: BLUECAT_PASSWORD
 | 
						|
          valueFrom:
 | 
						|
            secretKeyRef:
 | 
						|
              name: bluecat-credentials
 | 
						|
              key: password
 | 
						|
EOF
 | 
						|
kubectl apply -f ~/bluecat.yml -n bluecat-example
 | 
						|
```
 | 
						|
 | 
						|
 | 
						|
### Using JSON Configuration File
 | 
						|
The options for configuring the Bluecat Provider are available through the JSON file provided to External-DNS via the flag `--bluecat-config-file`.
 | 
						|
 | 
						|
| Key               | Required           |
 | 
						|
| ----------------- | ------------------ |
 | 
						|
| gatewayHost       | Yes                |
 | 
						|
| gatewayUsername   | No                 |
 | 
						|
| gatewayPassword   | No                 |
 | 
						|
| dnsConfiguration  | Yes                |
 | 
						|
| dnsView           | Yes                |
 | 
						|
| rootZone          | Yes                |
 | 
						|
| dnsServerName     | No                 |
 | 
						|
| dnsDeployType     | No                 |
 | 
						|
| skipTLSVerify     | No (default false) |
 | 
						|
 | 
						|
#### Deploy
 | 
						|
Setup configuration file as k8s `Secret`.
 | 
						|
```
 | 
						|
cat << EOF > ~/bluecat.json
 | 
						|
{
 | 
						|
  "gatewayHost": "https://bluecatgw.example.com",
 | 
						|
  "gatewayUsername": "user",
 | 
						|
  "gatewayPassword": "pass",
 | 
						|
  "dnsConfiguration": "Example",
 | 
						|
  "dnsView": "Internal",
 | 
						|
  "rootZone": "example.com",
 | 
						|
  "skipTLSVerify": false
 | 
						|
}
 | 
						|
EOF
 | 
						|
kubectl create secret generic bluecatconfig --from-file ~/bluecat.json -n bluecat-example
 | 
						|
```
 | 
						|
 | 
						|
Setup up namespace, deployment, and service account:
 | 
						|
```
 | 
						|
kubectl create namespace bluecat-example
 | 
						|
cat << EOF > ~/bluecat.yml
 | 
						|
---
 | 
						|
apiVersion: v1
 | 
						|
kind: ServiceAccount
 | 
						|
metadata:
 | 
						|
  name: external-dns
 | 
						|
---
 | 
						|
apiVersion: apps/v1
 | 
						|
kind: Deployment
 | 
						|
metadata:
 | 
						|
  name: external-dns
 | 
						|
spec:
 | 
						|
  selector:
 | 
						|
    matchLabels:
 | 
						|
      app: external-dns
 | 
						|
  strategy:
 | 
						|
    type: Recreate
 | 
						|
  template:
 | 
						|
    metadata:
 | 
						|
      labels:
 | 
						|
        app: external-dns
 | 
						|
    spec:
 | 
						|
      serviceAccountName: external-dns
 | 
						|
      volumes:
 | 
						|
        - name: bluecatconfig
 | 
						|
          secret:
 | 
						|
            secretName: bluecatconfig
 | 
						|
      containers:
 | 
						|
      - name: external-dns
 | 
						|
        image: registry.k8s.io/external-dns/external-dns:v0.14.0
 | 
						|
        volumeMounts:
 | 
						|
          - name: bluecatconfig
 | 
						|
            mountPath: "/etc/external-dns/"
 | 
						|
            readOnly: true
 | 
						|
        args:
 | 
						|
        - --log-level=debug
 | 
						|
        - --source=service
 | 
						|
        - --provider=bluecat
 | 
						|
        - --txt-owner-id=bluecat-example
 | 
						|
        - --bluecat-config-file=/etc/external-dns/bluecat.json
 | 
						|
EOF
 | 
						|
kubectl apply -f ~/bluecat.yml -n bluecat-example
 | 
						|
```
 |