Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Configure extension DNS settings in the spec.extensions section #1888

Merged
merged 24 commits into from
Jul 8, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
5b26d8b
Adapted to DNS Changes
grolu Jun 4, 2024
f4311d1
PR Feedback #1
grolu Jun 7, 2024
6d3ca6c
Removed getResourceRefName utils function
grolu Jun 10, 2024
92e0b98
PR Feedback #2
grolu Jun 10, 2024
241e679
Merge branch 'master' into enh/adapt_to_dns_changes
grolu Jun 10, 2024
ddeda97
Made custom cluster domain required if checkbox is selected
grolu Jun 10, 2024
0fdf52f
Merge branch 'enh/adapt_to_dns_changes' of github.com:gardener/dashbo…
grolu Jun 10, 2024
695ab8b
Merge branch 'master' into enh/adapt_to_dns_changes
grolu Jun 11, 2024
7bb735f
Merge branch 'master' into enh/adapt_to_dns_changes
grolu Jun 11, 2024
46cbdb7
Removed dnsState
grolu Jun 17, 2024
725db1e
Some minor code styling changes
grolu Jun 17, 2024
7a4b183
Merge branch 'master' into enh/adapt_to_dns_changes
grolu Jun 17, 2024
249942d
Feedback to `enh/adapt_to_dns_changes` (#1928)
holgerkoser Jun 20, 2024
b38102b
Some UI Feedback
grolu Jun 24, 2024
7858eff
Explicit DNS Configuration Migration
grolu Jun 24, 2024
4e42744
Merge branch 'master' into enh/adapt_to_dns_changes
grolu Jun 25, 2024
f6ce924
changed ddns vendor name to rfc2136 (as this is the correct value for…
grolu Jun 25, 2024
d03cb39
Fixed dns provider combobox chips
grolu Jun 26, 2024
f78c64d
Merge
grolu Jun 28, 2024
dc7e3a4
Reset domain input field
grolu Jun 28, 2024
d1ef970
PR Feedback
grolu Jul 8, 2024
fe33650
PR Feedback
grolu Jul 8, 2024
7ae2e82
PR Feedback
grolu Jul 8, 2024
8abb37c
Merge branch 'master' into enh/adapt_to_dns_changes
grolu Jul 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions frontend/__tests__/composables/useShootDns.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ describe('composables', () => {
shootDns = reactive(composable)
})

it('should add extension dns providers', async () => {
it('should add extension dns providers', () => {
shootDns.addDnsServiceExtensionProvider()
shootDns.dnsDomain = 'example.org'

Expand All @@ -46,7 +46,7 @@ describe('composables', () => {
expect(manifest.spec).toMatchSnapshot()
})

it('should delete extension dns providers', async () => {
it('should delete extension dns providers', () => {
shootDns.addDnsServiceExtensionProvider()
shootDns.addDnsServiceExtensionProvider()

Expand All @@ -61,15 +61,15 @@ describe('composables', () => {
expect(manifest.spec).toMatchSnapshot('last provider deleted')
})

it('should add primary dns provider', async () => {
it('should add primary dns provider', () => {
shootDns.dnsDomain = 'example.org'
shootDns.dnsPrimaryProviderType = 'foo'
shootDns.dnsPrimaryProviderSecretName = 'bar'

expect(manifest.spec).toMatchSnapshot()
})

it('should add extension custom domain dns provider', async () => {
it('should add extension custom domain dns provider', () => {
shootDns.dnsDomain = 'example.org'
shootDns.dnsPrimaryProviderType = 'foo'
shootDns.dnsPrimaryProviderSecretName = 'bar'
Expand Down
6 changes: 3 additions & 3 deletions frontend/src/components/Secrets/GSecretDialogWrapper.vue
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import VsphereDialog from '@/components/Secrets/GSecretDialogVSphere'
import CloudflareDialog from '@/components/Secrets/GSecretDialogCloudflare'
import InfobloxDialog from '@/components/Secrets/GSecretDialogInfoblox'
import NetlifyDialog from '@/components/Secrets/GSecretDialogNetlify'
import DDnsDialog from '@/components/Secrets/GSecretDialogDDNS'
import GSecretDialogDDNS from '@/components/Secrets/GSecretDialogDDNS'
grolu marked this conversation as resolved.
Show resolved Hide resolved
import DeleteDialog from '@/components/Secrets/GSecretDialogDelete'
import HcloudDialog from '@/components/Secrets/GSecretDialogHCloud'
import GenericDialog from '@/components/Secrets/GSecretDialogGeneric'
Expand All @@ -46,7 +46,7 @@ const components = {
CloudflareDialog,
InfobloxDialog,
NetlifyDialog,
DDnsDialog,
GSecretDialogDDNS,
HcloudDialog,
GenericDialog,
DeleteDialog,
Expand Down Expand Up @@ -78,7 +78,7 @@ export default {
case 'google-clouddns':
return 'GcpDialog'
case 'rfc2136':
return 'DDnsDialog'
return 'GSecretDialogDDNS'
default: {
const name = upperFirst(head(split(this.visibleDialog, '-')))
const componentName = `${name}Dialog`
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/components/Secrets/GSelectSecret.vue
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ export default {
registerVuelidateAs: {
type: String,
},
filterSecretNames: {
allowedSecretNames: {
type: Array,
default: () => [],
},
Expand Down Expand Up @@ -198,7 +198,7 @@ export default {
secrets = this.dnsSecretsByProviderKind(this.dnsProviderKind)
}
return secrets
?.filter(secret => !this.filterSecretNames.includes(secret.metadata.name))
?.filter(secret => !this.allowedSecretNames.includes(secret.metadata.name))
},
infrastructureKind () {
if (this.dnsProviderKind) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,11 +171,11 @@ SPDX-License-Identifier: Apache-2.0
<template #prepend />
<g-list-item-content label="DNS Providers">
<div
v-if="shootExtensionDnsProviders && shootExtensionDnsProviders.length"
v-if="shootDnsServiceExtensionProviders && shootDnsServiceExtensionProviders.length"
class="d-flex"
>
<g-dns-provider
v-for="({ secretName, type, domains, zones }) in shootExtensionDnsProviders"
v-for="({ secretName, type, domains, zones }) in shootDnsServiceExtensionProviders"
:key="secretName"
class="mr-2"
:secret-name="secretNameFromShootResources(secretName)"
Expand Down Expand Up @@ -313,7 +313,7 @@ export default {
nodesCidr,
podsCidr,
shootTechnicalId,
shootExtensionDnsProviders,
shootDnsServiceExtensionProviders,
shootDnsPrimaryProvider,
shootResources,
} = useShootItem()
Expand All @@ -336,7 +336,7 @@ export default {
nodesCidr,
podsCidr,
shootTechnicalId,
shootExtensionDnsProviders,
shootDnsServiceExtensionProviders,
shootDnsPrimaryProvider,
shootResources,
}
Expand Down
12 changes: 6 additions & 6 deletions frontend/src/components/ShootDns/GDnsConfiguration.vue
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ SPDX-License-Identifier: Apache-2.0
>
<template #content>
<v-card-text>
<g-manage-shoot-dns :key="componentKey" />
<g-manage-dns :key="componentKey" />
</v-card-text>
</template>
</g-action-button-dialog>
Expand All @@ -26,7 +26,7 @@ import { ref } from 'vue'
import { useVuelidate } from '@vuelidate/core'

import GActionButtonDialog from '@/components/dialogs/GActionButtonDialog'
import GManageShootDns from '@/components/ShootDns/GManageDns'
import GManageDns from '@/components/ShootDns/GManageDns'

import { useShootContext } from '@/composables/useShootContext'
import { useShootItem } from '@/composables/useShootItem'
Expand All @@ -37,7 +37,7 @@ import { v4 as uuidv4 } from '@/utils/uuid'
export default {
components: {
GActionButtonDialog,
GManageShootDns,
GManageDns,
},
inject: ['api', 'logger'],
setup () {
Expand All @@ -50,7 +50,7 @@ export default {
const {
shootManifest,
setShootManifest,
forceMigrateSyncDNSProvidersToFalse,
forceMigrateSyncDnsProvidersToFalse,
} = useShootContext()

const componentKey = ref(uuidv4())
Expand All @@ -63,7 +63,7 @@ export default {
shootManifest,
setShootManifest,
componentKey,
forceMigrateSyncDNSProvidersToFalse,
forceMigrateSyncDnsProvidersToFalse,
}
},
methods: {
Expand All @@ -77,7 +77,7 @@ export default {
async updateConfiguration () {
try {
// Remove migration logic when all dns configurations have been migrated by Gardener
this.forceMigrateSyncDNSProvidersToFalse()
this.forceMigrateSyncDnsProvidersToFalse()

const { dns, extensions, resources } = this.shootManifest.spec

Expand Down
20 changes: 9 additions & 11 deletions frontend/src/components/ShootDns/GDnsProviderRow.vue
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,12 @@ SPDX-License-Identifier: Apache-2.0
<div class="d-flex flex-wrap">
<div class="regular-input">
<v-select
v-model="dnsProviderType"
v-model="v$.dnsProviderType.$model"
color="primary"
:items="dnsProviderTypes"
:error-messages="getErrorMessages(v$.dnsProviderType)"
label="Dns Provider Type"
variant="underlined"
@change="v$.dnsProviderType.$touch()"
@blur="v$.dnsProviderType.$touch()"
>
<template #item="{ props }">
<v-list-item v-bind="props">
Expand All @@ -38,11 +36,11 @@ SPDX-License-Identifier: Apache-2.0
</div>
<div class="regular-input">
<g-select-secret
v-if="extensionDnsProviderSecret || !dnsProvider.secretName"
v-model="extensionDnsProviderSecret"
v-if="dnsServiceExtensionProviderSecret || !dnsProvider.secretName"
v-model="dnsServiceExtensionProviderSecret"
:dns-provider-kind="dnsProviderType"
:filter-secret-names="filterSecretNames"
register-vuelidate-as="extensionDnsProviderSecret"
:allowed-secret-names="allowedSecretNames"
register-vuelidate-as="dnsServiceExtensionProviderSecret"
/>
<v-text-field
v-else
Expand Down Expand Up @@ -179,10 +177,10 @@ export default {
this.dnsProvider.type = value
const dnsSecrets = this.dnsSecretsByProviderKind(value)
const defaultDnsSecret = head(dnsSecrets)
this.extensionDnsProviderSecret = defaultDnsSecret
this.dnsServiceExtensionProviderSecret = defaultDnsSecret
},
},
extensionDnsProviderSecret: {
dnsServiceExtensionProviderSecret: {
get () {
const resourceName = this.dnsProvider.secretName
const secretName = this.getResourceRefName(resourceName)
Expand Down Expand Up @@ -235,10 +233,10 @@ export default {
set(this.dnsProvider, 'zones.include', value)
},
},
filterSecretNames () {
allowedSecretNames () {
return this.dnsServiceExtensionProviders.map(provider => {
const secretName = this.getResourceRefName(provider.secretName) // provider.secretName is the resource name
if (secretName !== this.extensionDnsProviderSecret?.metadata.name) {
if (secretName !== this.dnsServiceExtensionProviderSecret?.metadata.name) {
return secretName
}
return undefined
Expand Down
24 changes: 7 additions & 17 deletions frontend/src/components/ShootDns/GManageDns.vue
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,7 @@ SPDX-License-Identifier: Apache-2.0
max-width="50%"
>
<div>
The cluster domain is used for the API server of this cluster.
To expose workload services with your cluster domain, add a DNS provider for the <code>shoot-dns-service</code> extension.
To manage DNS entries for your cluster domain, add a DNS provider for the <code>shoot-dns-service</code> extension.<br>
Click the <span class="font-weight-bold">Apply</span> button below to configure a provider for the <code>shoot-dns-service</code> extension using your cluster domain as the included domain.
</div>
<v-btn
Expand All @@ -104,7 +103,7 @@ SPDX-License-Identifier: Apache-2.0
DNS Providers for the shoot-dns-service Extension
</div>
<div class="text-caption">
Configure DNS providers for the shoot-dns-service-extension to expose cluster workloads using domains managed by the configured providers
Configure DNS providers for the shoot-dns-service extension to automatically manage and synchronize DNS entries for cluster resources like services and ingresses
</div>
<div class="alternate-row-background">
<v-expand-transition group>
Expand Down Expand Up @@ -155,6 +154,7 @@ import {
mapState,
mapActions,
} from 'pinia'
import { ref } from 'vue'

import { useGardenerExtensionStore } from '@/store/gardenerExtension'
import { useSecretStore } from '@/store/secret'
Expand Down Expand Up @@ -188,7 +188,6 @@ export default {
dnsPrimaryProviderType,
dnsPrimaryProviderSecretName,
isNewCluster,
dnsProvidersWithPrimarySupport,
dnsServiceExtensionProviders,
hasDnsServiceExtensionProviderForCustomDomain,
addDnsServiceExtensionProvider,
Expand All @@ -197,19 +196,21 @@ export default {
deleteDnsServiceExtensionProvider,
} = useShootContext()

const customDomain = ref(!!dnsDomain.value && !!dnsPrimaryProviderType.value)

return {
v$: useVuelidate(),
dnsDomain,
dnsPrimaryProviderType,
dnsPrimaryProviderSecretName,
isNewCluster,
dnsProvidersWithPrimarySupport,
dnsServiceExtensionProviders,
hasDnsServiceExtensionProviderForCustomDomain,
addDnsServiceExtensionProvider,
addDnsServiceExtensionProviderForCustomDomain,
resetDnsPrimaryProvider,
deleteDnsServiceExtensionProvider,
customDomain,
}
},
validations () {
Expand All @@ -225,11 +226,6 @@ export default {
}),
}
},
data () {
return {
customDomain: false,
}
},
computed: {
...mapState(useGardenerExtensionStore, [
'dnsProviderTypesWithPrimarySupport',
Expand All @@ -254,8 +250,7 @@ export default {
},
customDomainEnabled: {
get () {
return this.customDomain ||
(!!this.dnsDomain && !!this.dnsPrimaryProviderType)
return this.customDomain
},
set (value) {
this.customDomain = value
Expand Down Expand Up @@ -304,11 +299,6 @@ export default {
}
},
},
mounted () {
if (this.customDomainEnabled) {
this.customDomain = true
}
},
methods: {
...mapActions(useSecretStore, [
'dnsSecretsByProviderKind',
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/composables/useShootContext.js
Original file line number Diff line number Diff line change
Expand Up @@ -849,7 +849,7 @@ export function createShootContextComposable (options = {}) {
deleteDnsServiceExtensionProvider,
getDnsServiceExtensionResourceName,
resetDnsPrimaryProvider,
forceMigrateSyncDNSProvidersToFalse,
forceMigrateSyncDnsProvidersToFalse,
addExtensionDnsProviderResourceRef,
setResource,
deleteResource,
Expand Down Expand Up @@ -1005,7 +1005,7 @@ export function createShootContextComposable (options = {}) {
deleteDnsServiceExtensionProvider,
getDnsServiceExtensionResourceName,
resetDnsPrimaryProvider,
forceMigrateSyncDNSProvidersToFalse,
forceMigrateSyncDnsProvidersToFalse,
addExtensionDnsProviderResourceRef,
setResource,
deleteResource,
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/composables/useShootDns.js
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ export const useShootDns = (manifest, options) => {
}
}

function forceMigrateSyncDNSProvidersToFalse () {
function forceMigrateSyncDnsProvidersToFalse () {
if (get(dnsServiceExtension.value, 'providerConfig.syncProvidersFromShootSpecDNS') === true) {
// Migrate from old DNS configuration to new DNS configuration
set(dnsServiceExtension.value, 'providerConfig.syncProvidersFromShootSpecDNS', false)
Expand All @@ -278,7 +278,7 @@ export const useShootDns = (manifest, options) => {
dnsPrimaryProviderType,
dnsPrimaryProviderSecretName,
resetDnsPrimaryProvider,
forceMigrateSyncDNSProvidersToFalse,
forceMigrateSyncDnsProvidersToFalse,
dnsServiceExtensionProviders,
addDnsServiceExtensionProvider,
deleteDnsServiceExtensionProvider,
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/composables/useShootItem.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ export function createShootItemComposable (shootItem, options = {}) {
shootDomain,
isCustomShootDomain,
shootDnsPrimaryProvider,
shootExtensionDnsProviders,
shootDnsServiceExtensionProviders,
shootDnsProviders,
shootHibernationSchedules,
shootMaintenance,
Expand Down Expand Up @@ -218,7 +218,7 @@ export function createShootItemComposable (shootItem, options = {}) {
shootDomain,
isCustomShootDomain,
shootDnsPrimaryProvider,
shootExtensionDnsProviders,
shootDnsServiceExtensionProviders,
shootDnsProviders,
shootHibernationSchedules,
shootMaintenance,
Expand Down
6 changes: 3 additions & 3 deletions frontend/src/composables/useShootSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,10 +122,10 @@ export function useShootSpec (shootItem, options = {}) {
})

const shootDnsPrimaryProvider = computed(() => {
grolu marked this conversation as resolved.
Show resolved Hide resolved
return find(shootSpec.value.dns?.providers, { primary: true })
return find(shootSpec.value.dns?.providers, 'primary')
})

const shootExtensionDnsProviders = computed(() => {
const shootDnsServiceExtensionProviders = computed(() => {
const extensionDns = find(shootSpec.value.extensions, ['type', 'shoot-dns-service'])
return get(extensionDns, 'providerConfig.providers')
})
Expand Down Expand Up @@ -180,7 +180,7 @@ export function useShootSpec (shootItem, options = {}) {
shootDomain,
isCustomShootDomain,
shootDnsPrimaryProvider,
shootExtensionDnsProviders,
shootDnsServiceExtensionProviders,
shootHibernationSchedules,
shootMaintenance,
shootControlPlaneHighAvailabilityFailureTolerance,
Expand Down
Loading