Skip to content

Conversation

@abaguas
Copy link
Collaborator

@abaguas abaguas commented Mar 3, 2025

Similar to the Azure setup done in #1773

@abaguas abaguas force-pushed the aws/dnsintegration branch 4 times, most recently from fbda006 to c7bfd37 Compare March 3, 2025 18:36
abaguas added 5 commits March 11, 2025 07:14
The latest version of the external-dns image requires setting the AWS_DEFAULT_REGION environment variable.
The introduction of this variable demands changes in our chart as well as changes to the user configuration. Therefore, it is a good oportunity to introduce the upstream external-dns helm chart.
By using the upstream chart we can profit from all the features of the external dns community out-of-the-box, we no longer have to develop a wrapper on our side. These features include both authentication options and new upstream providers.

The following configuration changes should be included in the release notes:
1.
```
route53:
  enabled: true
  secret: credentials
```
becomes
```
extdns:
  enabled: true
  provider:
    name: aws
  extraVolumes:
  - name: aws-credentials
    secret:
      secretName: credentials
  extraVolumeMounts:
  - name: aws-credentials
    mountPath: /.aws
    readOnly: true
```

2.
```
route53:
  enabled: true
  irsaRole: arn:aws:iam::111111:role/external-dns
```
becomes:
```
extdns:
  enabled: true
  provider:
    name: aws
  serviceAccount:
    annotations:
      eks.amazonaws.com/role-arn: arn:aws:iam::111111:role/external-dns
```

3.
```
route53:
  enabled: true
  assumeRoleArn: role
```
becomes:
```
extdns:
  enabled: true
  provider:
    name: aws
  extraArgs:
    aws-assume-role: role
```

In addition, the AWS_DEFAULT_REGION must be specified using an environment variable, for example:
```
extdns:
  env:
  - name: AWS_DEFAULT_REGION
    value: "us-east-1"
```
And a couple of variables must be manually specified (there are helm validation function that make sure they are correct). Replace `<GEOTAG>` with the same value as `k8gb.clusterGeoTag`, and `domainFilters` with the same values as `k8gb.dnsZones.zone`/`k8gb.dnsZone`:
```
extdns:
  txtPrefix: "k8gb-<GEOTAG>"
  txtOwnerId: "k8gb-<GEOTAG>"
  domainFilters:
  - "<domain>"
```
Note: if you used to set `hostedZoneID`, then txtOwnerId will take the value `k8gb-<hostZoneID>-<GEOTAG>`.

Signed-off-by: Andre Aguas <[email protected]>
Signed-off-by: Andre Aguas <[email protected]>
The latest version of the external-dns image requires setting the AWS_DEFAULT_REGION environment variable.
The introduction of this variable demands changes in our chart as well as changes to the user configuration. Therefore, it is a good oportunity to introduce the upstream external-dns helm chart.
By using the upstream chart we can profit from all the features of the external dns community out-of-the-box, we no longer have to develop a wrapper on our side. These features include both authentication options and new upstream providers.

The following configuration changes should be included in the release notes:
1.
```
route53:
  enabled: true
  secret: credentials
```
becomes
```
extdns:
  enabled: true
  provider:
    name: aws
  extraVolumes:
  - name: aws-credentials
    secret:
      secretName: credentials
  extraVolumeMounts:
  - name: aws-credentials
    mountPath: /.aws
    readOnly: true
```

2.
```
route53:
  enabled: true
  irsaRole: arn:aws:iam::111111:role/external-dns
```
becomes:
```
extdns:
  enabled: true
  provider:
    name: aws
  serviceAccount:
    annotations:
      eks.amazonaws.com/role-arn: arn:aws:iam::111111:role/external-dns
```

3.
```
route53:
  enabled: true
  assumeRoleArn: role
```
becomes:
```
extdns:
  enabled: true
  provider:
    name: aws
  extraArgs:
    aws-assume-role: role
```

In addition, the AWS_DEFAULT_REGION must be specified using an environment variable, for example:
```
extdns:
  env:
  - name: AWS_DEFAULT_REGION
    value: "us-east-1"
```
And a couple of variables must be manually specified (there are helm validation function that make sure they are correct). Replace `<GEOTAG>` with the same value as `k8gb.clusterGeoTag`, and `domainFilters` with the same values as `k8gb.dnsZones.zone`/`k8gb.dnsZone`:
```
extdns:
  txtPrefix: "k8gb-<GEOTAG>"
  txtOwnerId: "k8gb-<GEOTAG>"
  domainFilters:
  - "<domain>"
```
Note: if you used to set `hostedZoneID`, then txtOwnerId will take the value `k8gb-<hostZoneID>-<GEOTAG>`.

Signed-off-by: Andre Aguas <[email protected]>
Signed-off-by: Andre Aguas <[email protected]>
The latest version of the external-dns image requires setting the AWS_DEFAULT_REGION environment variable.
The introduction of this variable demands changes in our chart as well as changes to the user configuration. Therefore, it is a good oportunity to introduce the upstream external-dns helm chart.
By using the upstream chart we can profit from all the features of the external dns community out-of-the-box, we no longer have to develop a wrapper on our side. These features include both authentication options and new upstream providers.

The following configuration changes should be included in the release notes:
1.
```
route53:
  enabled: true
  secret: credentials
```
becomes
```
extdns:
  enabled: true
  provider:
    name: aws
  extraVolumes:
  - name: aws-credentials
    secret:
      secretName: credentials
  extraVolumeMounts:
  - name: aws-credentials
    mountPath: /.aws
    readOnly: true
```

2.
```
route53:
  enabled: true
  irsaRole: arn:aws:iam::111111:role/external-dns
```
becomes:
```
extdns:
  enabled: true
  provider:
    name: aws
  serviceAccount:
    annotations:
      eks.amazonaws.com/role-arn: arn:aws:iam::111111:role/external-dns
```

3.
```
route53:
  enabled: true
  assumeRoleArn: role
```
becomes:
```
extdns:
  enabled: true
  provider:
    name: aws
  extraArgs:
    aws-assume-role: role
```

In addition, the AWS_DEFAULT_REGION must be specified using an environment variable, for example:
```
extdns:
  env:
  - name: AWS_DEFAULT_REGION
    value: "us-east-1"
```
And a couple of variables must be manually specified (there are helm validation function that make sure they are correct). Replace `<GEOTAG>` with the same value as `k8gb.clusterGeoTag`, and `domainFilters` with the same values as `k8gb.dnsZones.zone`/`k8gb.dnsZone`:
```
extdns:
  txtPrefix: "k8gb-<GEOTAG>"
  txtOwnerId: "k8gb-<GEOTAG>"
  domainFilters:
  - "<domain>"
```
Note: if you used to set `hostedZoneID`, then txtOwnerId will take the value `k8gb-<hostZoneID>-<GEOTAG>`.

Signed-off-by: Andre Aguas <[email protected]>
@abaguas abaguas force-pushed the aws/dnsintegration branch from c7bfd37 to 03c33c2 Compare March 11, 2025 06:20
Similar to the Azure setup done in k8gb-io#1773

Signed-off-by: Andre Aguas <[email protected]>
@abaguas abaguas force-pushed the aws/dnsintegration branch from 03c33c2 to 5e11934 Compare March 11, 2025 06:30
abaguas added a commit that referenced this pull request May 28, 2025
Automates testing of k8gb's integration with AWS route53. Previously this required manual steps (#1849), now fully automated.

To test, simply install opentofu, create an AWS account, retrieve credentials and run `./test.sh`.

---------

Signed-off-by: Andre Aguas <[email protected]>
@abaguas
Copy link
Collaborator Author

abaguas commented Aug 30, 2025

Tackled in #1897

@abaguas abaguas closed this Aug 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant