kubernetes/kops · error

could not create record: %v

Error message

could not create record: %v

What it means

DigitalOcean resourceRecordChangeset.applyResourceRecordSet wraps a failure of the godo CreateRecord call while applying additions in a record changeset. It fires when the DO API rejects creation of an individual DNS record (invalid data, auth, rate limit); since DO lacks record sets, each record is created individually and any failure aborts the changeset.

Source

Thrown at dnsprovider/pkg/dnsprovider/providers/do/dns.go:411

// and delete any previously created records matching the same name.
// This is required for digitalocean since it's API does not handle record sets, but
// only individual records
func (r *resourceRecordChangeset) applyResourceRecordSet(rrset dnsprovider.ResourceRecordSet) error {
	deleteRecords, err := getRecordsByName(r.client, r.zone.Name(), rrset.Name())
	if err != nil {
		return fmt.Errorf("failed to get record IDs to delete")
	}

	for _, rrdata := range rrset.Rrdatas() {
		recordCreateRequest := &godo.DomainRecordEditRequest{
			Name: rrset.Name(),
			Data: rrdata,
			TTL:  int(rrset.Ttl()),
			Type: string(rrset.Type()),
		}
		err := createRecord(r.client, r.zone.Name(), recordCreateRequest)
		if err != nil {
			return fmt.Errorf("could not create record: %v", err)
		}
	}

	for _, record := range deleteRecords {
		err := deleteRecord(r.client, r.zone.Name(), record.ID)
		if err != nil {
			return fmt.Errorf("error cleaning up old records: %v", err)
		}
	}

	return nil
}

// listDomains returns a list of godo.Domain
func listDomains(c *godo.Client) ([]godo.Domain, error) {
	// TODO (andrewsykim): pagination in ListOptions
	domains, _, err := c.Domains.List(context.TODO(), &godo.ListOptions{})
	if err != nil {

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Check the record name/type/TTL against DO API constraints
  2. Verify API token permissions for the domain
  3. Retry after rate-limit pauses
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at dnsprovider/pkg/dnsprovider/providers/do/dns.go:411 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/eb760de3481eecbe. Report an issue: GitHub.