mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-05 17:16:59 +02:00
266 lines
7.6 KiB
YAML
266 lines
7.6 KiB
YAML
---
|
|
openapi: "3.0.0"
|
|
info:
|
|
version: v0.15.0
|
|
title: External DNS Webhook Server
|
|
description: >-
|
|
Implements the external DNS webhook endpoints.
|
|
contact:
|
|
url: https://github.com/kubernetes-sigs/external-dns
|
|
license:
|
|
name: Apache 2.0
|
|
url: https://www.apache.org/licenses/LICENSE-2.0.html
|
|
tags:
|
|
- name: initialization
|
|
description: Endpoints for initial negotiation.
|
|
- name: listing
|
|
description: Endpoints to get listings of DNS records.
|
|
- name: update
|
|
description: Endpoints to update DNS records.
|
|
servers:
|
|
- url: http://localhost:8888
|
|
description: Server url for a Kubernetes deployment.
|
|
paths:
|
|
/:
|
|
get:
|
|
summary: >-
|
|
Initialisation and negotiates headers and returns domain
|
|
filter.
|
|
description: |
|
|
Initialisation and negotiates headers and returns domain
|
|
filter.
|
|
operationId: negotiate
|
|
tags: [initialization]
|
|
responses:
|
|
'200':
|
|
description: |
|
|
The list of domains this DNS provider serves.
|
|
content:
|
|
application/external.dns.webhook+json;version=1:
|
|
schema:
|
|
$ref: '#/components/schemas/filters'
|
|
example:
|
|
filters:
|
|
- example.com
|
|
'500':
|
|
description: |
|
|
Negotiation failed.
|
|
|
|
/records:
|
|
get:
|
|
summary: Returns the current records.
|
|
description: |
|
|
Get the current records from the DNS provider and return them.
|
|
operationId: getRecords
|
|
tags: [listing]
|
|
responses:
|
|
'200':
|
|
description: |
|
|
Provided the list of DNS records successfully.
|
|
content:
|
|
application/external.dns.webhook+json;version=1:
|
|
schema:
|
|
$ref: '#/components/schemas/endpoints'
|
|
example:
|
|
- dnsName: "test.example.com"
|
|
recordTTL: 10
|
|
recordType: 'A'
|
|
targets:
|
|
- "1.2.3.4"
|
|
'500':
|
|
description: |
|
|
Failed to provide the list of DNS records.
|
|
|
|
post:
|
|
summary: Applies the changes.
|
|
description: |
|
|
Set the records in the DNS provider based on those supplied here.
|
|
operationId: setRecords
|
|
tags: [update]
|
|
requestBody:
|
|
description: |
|
|
This is the list of changes that need to be applied. There are
|
|
four lists of endpoints. The `create` and `delete` lists are lists
|
|
of records to create and delete respectively. The `updateOld` and
|
|
`updateNew` lists are paired. For each entry there's the old version
|
|
of the record and a new version of the record.
|
|
required: true
|
|
content:
|
|
application/external.dns.webhook+json;version=1:
|
|
schema:
|
|
$ref: '#/components/schemas/changes'
|
|
example:
|
|
create:
|
|
- dnsName: "test.example.com"
|
|
recordTTL: 10
|
|
recordType: 'A'
|
|
responses:
|
|
'204':
|
|
description: |
|
|
Changes were accepted.
|
|
'500':
|
|
description: |
|
|
Changes were not accepted.
|
|
|
|
/adjustendpoints:
|
|
post:
|
|
summary: Executes the AdjustEndpoints method.
|
|
description: |
|
|
Adjusts the records in the provider based on those supplied here.
|
|
operationId: adjustRecords
|
|
tags: [update]
|
|
requestBody:
|
|
description: |
|
|
This is the list of changes to be applied.
|
|
required: true
|
|
content:
|
|
application/external.dns.webhook+json;version=1:
|
|
schema:
|
|
$ref: '#/components/schemas/endpoints'
|
|
example:
|
|
- dnsName: "test.example.com"
|
|
recordTTL: 10
|
|
recordType: 'A'
|
|
targets:
|
|
- "1.2.3.4"
|
|
responses:
|
|
'200':
|
|
description: |
|
|
Adjustments were accepted.
|
|
content:
|
|
application/external.dns.webhook+json;version=1:
|
|
schema:
|
|
$ref: '#/components/schemas/endpoints'
|
|
example:
|
|
- dnsName: "test.example.com"
|
|
recordTTL: 0
|
|
recordType: 'A'
|
|
targets:
|
|
- "1.2.3.4"
|
|
'500':
|
|
description: |
|
|
Adjustments were not accepted.
|
|
|
|
components:
|
|
schemas:
|
|
filters:
|
|
description: |
|
|
external-dns will only create DNS records for host names (specified in ingress objects and services with the external-dns annotation) related to zones that match filters. They can set in external-dns deployment manifest.
|
|
type: object
|
|
properties:
|
|
filters:
|
|
type: array
|
|
items:
|
|
type: string
|
|
example: "foo.example.com"
|
|
example:
|
|
- ".example.com"
|
|
example:
|
|
filters:
|
|
- ".example.com"
|
|
- ".example.org"
|
|
|
|
endpoints:
|
|
description: |
|
|
This is a list of DNS records.
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/endpoint'
|
|
example:
|
|
- dnsName: foo.example.com
|
|
recordType: A
|
|
recordTTL: 60
|
|
|
|
endpoint:
|
|
description: |
|
|
This is a DNS record.
|
|
type: object
|
|
properties:
|
|
dnsName:
|
|
type: string
|
|
example: "foo.example.org"
|
|
targets:
|
|
$ref: '#/components/schemas/targets'
|
|
recordType:
|
|
type: string
|
|
example: "CNAME"
|
|
setIdentifier:
|
|
type: string
|
|
example: "v1"
|
|
recordTTL:
|
|
type: integer
|
|
format: int64
|
|
example: 60
|
|
labels:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
example: "foo"
|
|
example:
|
|
foo: bar
|
|
providerSpecific:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/providerSpecificProperty'
|
|
example:
|
|
- name: foo
|
|
value: bar
|
|
example:
|
|
dnsName: foo.example.com
|
|
recordType: A
|
|
recordTTL: 60
|
|
|
|
targets:
|
|
description: |
|
|
This is the list of targets that this DNS record points to.
|
|
So for an A record it will be a list of IP addresses.
|
|
type: array
|
|
items:
|
|
type: string
|
|
example: "::1"
|
|
example:
|
|
- "1.2.3.4"
|
|
- "test.example.org"
|
|
|
|
providerSpecificProperty:
|
|
description: |
|
|
Allows provider to pass property specific to their implementation.
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
example: foo
|
|
value:
|
|
type: string
|
|
example: bar
|
|
example:
|
|
name: foo
|
|
value: bar
|
|
|
|
changes:
|
|
description: |
|
|
This is the list of changes send by `external-dns` that need to
|
|
be applied. There are four lists of endpoints. The `create`
|
|
and `delete` lists are lists of records to create and delete
|
|
respectively. The `updateOld` and `updateNew` lists are paired.
|
|
For each entry there's the old version of the record and a new
|
|
version of the record.
|
|
type: object
|
|
properties:
|
|
create:
|
|
$ref: '#/components/schemas/endpoints'
|
|
updateOld:
|
|
$ref: '#/components/schemas/endpoints'
|
|
updateNew:
|
|
$ref: '#/components/schemas/endpoints'
|
|
delete:
|
|
$ref: '#/components/schemas/endpoints'
|
|
example:
|
|
create:
|
|
- dnsName: foo.example.com
|
|
recordType: A
|
|
recordTTL: 60
|
|
delete:
|
|
- dnsName: foo.example.org
|
|
recordType: CNAME
|