diff --git a/apis/installer/v1alpha1/ace_ace_types.go b/apis/installer/v1alpha1/ace_ace_types.go
index 570a85254..b563ea485 100644
--- a/apis/installer/v1alpha1/ace_ace_types.go
+++ b/apis/installer/v1alpha1/ace_ace_types.go
@@ -259,7 +259,7 @@ type TLSIssuerAcme struct {
Email string `json:"email"`
}
-// +kubebuilder:validation:Enum=external;cloudflare;route53;cloudDNS
+// +kubebuilder:validation:Enum=external;cloudflare;route53;cloudDNS;azureDNS
type DNSProvider string
const (
@@ -267,6 +267,7 @@ const (
DNSProviderCloudflare DNSProvider = "cloudflare"
DNSProviderRoute53 DNSProvider = "route53"
DNSProviderCloudDNS DNSProvider = "cloudDNS"
+ DNSProviderAzureDNS DNSProvider = "azureDNS"
)
type InfraDns struct {
@@ -278,6 +279,7 @@ type DNSProviderAuth struct {
Cloudflare *CloudflareAuth `json:"cloudflare,omitempty"`
Route53 *Route53Auth `json:"route53,omitempty"`
CloudDNS *CloudDNSAuth `json:"cloudDNS,omitempty"`
+ AzureDNS *AzureDNSAuth `json:"azureDNS,omitempty"`
}
type CloudflareAuth struct {
@@ -297,6 +299,17 @@ type CloudDNSAuth struct {
GoogleServiceAccountJSONKey string `json:"GOOGLE_SERVICE_ACCOUNT_JSON_KEY"`
}
+type AzureDNSAuth struct {
+ SubscriptionID string `json:"subscriptionID"`
+ TenantID string `json:"tenantID"`
+ ResourceGroupName string `json:"resourceGroupName"`
+ HostedZoneName string `json:"hostedZoneName"`
+ ServicePrincipalAppID string `json:"servicePrincipalAppID"`
+ ServicePrincipalAppPassword string `json:"servicePrincipalAppPassword"`
+ // +optional
+ Environment string `json:"environment,omitempty"`
+}
+
// +kubebuilder:validation:Enum=gcs;s3;azure;swift
type ObjstoreProvider string
diff --git a/apis/installer/v1alpha1/zz_generated.deepcopy.go b/apis/installer/v1alpha1/zz_generated.deepcopy.go
index ee77b30ea..e21263648 100644
--- a/apis/installer/v1alpha1/zz_generated.deepcopy.go
+++ b/apis/installer/v1alpha1/zz_generated.deepcopy.go
@@ -1357,6 +1357,21 @@ func (in *AzureAuth) DeepCopy() *AzureAuth {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *AzureDNSAuth) DeepCopyInto(out *AzureDNSAuth) {
+ *out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureDNSAuth.
+func (in *AzureDNSAuth) DeepCopy() *AzureDNSAuth {
+ if in == nil {
+ return nil
+ }
+ out := new(AzureDNSAuth)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *B2) DeepCopyInto(out *B2) {
*out = *in
@@ -2328,6 +2343,11 @@ func (in *DNSProviderAuth) DeepCopyInto(out *DNSProviderAuth) {
*out = new(CloudDNSAuth)
**out = **in
}
+ if in.AzureDNS != nil {
+ in, out := &in.AzureDNS, &out.AzureDNS
+ *out = new(AzureDNSAuth)
+ **out = **in
+ }
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DNSProviderAuth.
diff --git a/charts/ace/templates/dns/dns-cred.yaml b/charts/ace/templates/dns/dns-cred.yaml
index 99dc1fa75..de22f3ea5 100644
--- a/charts/ace/templates/dns/dns-cred.yaml
+++ b/charts/ace/templates/dns/dns-cred.yaml
@@ -24,4 +24,16 @@ stringData:
{{- if eq .Values.global.infra.dns.provider "cloudDNS" }}
GOOGLE_SERVICE_ACCOUNT_JSON_KEY: '{{ .Values.global.infra.dns.auth.cloudDNS.GOOGLE_SERVICE_ACCOUNT_JSON_KEY }}'
{{- end }}
+{{- if eq .Values.global.infra.dns.provider "azureDNS" }}
+ SERVICE_PRINCIPAL_PASSWORD: {{ .Values.global.infra.dns.auth.azureDNS.servicePrincipalAppPassword }}
+ # https://github.com/kubeops/external-dns-operator/blob/master/examples/azure-credential.md
+ AZURE_CREDENTIAL_FILE: |
+ {
+ "tenantId": {{ .Values.global.infra.dns.auth.azureDNS.tenantID | quote }},
+ "subscriptionId": {{ .Values.global.infra.dns.auth.azureDNS.subscriptionID | quote }},
+ "resourceGroup": {{ .Values.global.infra.dns.auth.azureDNS.resourceGroupName | quote }},
+ "aadClientId": {{ .Values.global.infra.dns.auth.azureDNS.servicePrincipalAppID | quote }},
+ "aadClientSecret": {{ .Values.global.infra.dns.auth.azureDNS.servicePrincipalAppPassword | quote }}
+ }
+{{- end }}
{{- end }}
diff --git a/charts/ace/templates/ingress/issuer.yaml b/charts/ace/templates/ingress/issuer.yaml
index 359fe88b1..80afe2873 100644
--- a/charts/ace/templates/ingress/issuer.yaml
+++ b/charts/ace/templates/ingress/issuer.yaml
@@ -53,5 +53,25 @@ spec:
name: {{ include "ace.fullname" . }}-dns-cred
key: GOOGLE_SERVICE_ACCOUNT_JSON_KEY
{{- end }}
+ {{- if eq .Values.global.infra.dns.provider "route53" }}
+ route53:
+ accessKeyID: {{ .Values.global.infra.dns.auth.route53.AWS_ACCESS_KEY_ID }}
+ region: {{ .Values.global.infra.dns.auth.route53.AWS_REGION }}
+ secretAccessKeySecretRef:
+ name: {{ include "ace.fullname" . }}-dns-cred
+ key: AWS_SECRET_ACCESS_KEY
+ {{- end }}
+ {{- if eq .Values.global.infra.dns.provider "azureDNS" }}
+ azureDNS:
+ clientID: {{ .Values.global.infra.dns.auth.azureDNS.servicePrincipalAppID }}
+ clientSecretSecretRef:
+ name: {{ include "ace.fullname" . }}-dns-cred
+ key: SERVICE_PRINCIPAL_PASSWORD
+ subscriptionID: {{ .Values.global.infra.dns.auth.azureDNS.subscriptionID }}
+ tenantID: {{ .Values.global.infra.dns.auth.azureDNS.tenantID }}
+ resourceGroupName: {{ .Values.global.infra.dns.auth.azureDNS.resourceGroupName }}
+ hostedZoneName: {{ .Values.global.infra.dns.auth.azureDNS.hostedZoneName }}
+ environment: {{ default "AzurePublicCloud" .Values.global.infra.dns.auth.azureDNS.environment }}
+ {{- end }}
{{- end }}
{{- end }}
diff --git a/charts/ace/values.openapiv3_schema.yaml b/charts/ace/values.openapiv3_schema.yaml
index b9855eb91..4d41955bf 100644
--- a/charts/ace/values.openapiv3_schema.yaml
+++ b/charts/ace/values.openapiv3_schema.yaml
@@ -3702,6 +3702,30 @@ properties:
properties:
auth:
properties:
+ azureDNS:
+ properties:
+ environment:
+ type: string
+ hostedZoneName:
+ type: string
+ resourceGroupName:
+ type: string
+ servicePrincipalAppID:
+ type: string
+ servicePrincipalAppPassword:
+ type: string
+ subscriptionID:
+ type: string
+ tenantID:
+ type: string
+ required:
+ - hostedZoneName
+ - resourceGroupName
+ - servicePrincipalAppID
+ - servicePrincipalAppPassword
+ - subscriptionID
+ - tenantID
+ type: object
cloudDNS:
properties:
GOOGLE_PROJECT_ID:
@@ -3741,6 +3765,7 @@ properties:
- cloudflare
- route53
- cloudDNS
+ - azureDNS
type: string
required:
- auth
diff --git a/charts/ace/values.yaml b/charts/ace/values.yaml
index 1451e4417..bfcda89e1 100644
--- a/charts/ace/values.yaml
+++ b/charts/ace/values.yaml
@@ -150,6 +150,18 @@ global:
# cloudDNS:
# GOOGLE_PROJECT_ID: "project-id"
# GOOGLE_SERVICE_ACCOUNT_JSON_KEY: xyz
+ # azureDNS:
+ # subscriptionID: "azure-subscription-id"
+ # tenantID: "azure-tenant-id"
+ # resourceGroupName: "resource-group-name"
+ # hostedZoneName: "zone-name-for-hosted-domain"
+ # servicePrincipalAppID: "service-principal-id"
+ # servicePrincipalAppPassword: "service-principal-app"
+ # environment: AzurePublicCloud
+ # route53:
+ # AWS_ACCESS_KEY_ID: "access-id"
+ # AWS_SECRET_ACCESS_KEY: "secret-key"
+ # AWS_REGION: "us-east-1"
# KMS and Object Store services are required
# set provider to empty to disable this feature
objstore:
diff --git a/charts/opscenter-features/README.md b/charts/opscenter-features/README.md
index f6654aafd..e2abe9ec3 100644
--- a/charts/opscenter-features/README.md
+++ b/charts/opscenter-features/README.md
@@ -52,67 +52,67 @@ The following table lists the configurable parameters of the `opscenter-features
| release.channel | Release channel used for charts. Possible values: stable, testing, dev | dev
|
| repositories.stable.interval | | 30m0s
|
| repositories.stable.url | | oci://ghcr.io/appscode-charts/stable
|
-| repositories.stable.timeout | | 60s
|
+| repositories.stable.timeout | | 1m0s
|
| repositories.testing.interval | | 30m0s
|
| repositories.testing.url | | oci://ghcr.io/appscode-charts/testing
|
-| repositories.testing.timeout | | 60s
|
+| repositories.testing.timeout | | 1m0s
|
| repositories.appscode.interval | | 30m0s
|
| repositories.appscode.url | | https://charts.appscode.com/stable
|
-| repositories.appscode.timeout | | 60s
|
+| repositories.appscode.timeout | | 1m0s
|
| repositories.aws-ebs-csi-driver.interval | | 30m0s
|
| repositories.aws-ebs-csi-driver.url | | https://kubernetes-sigs.github.io/aws-ebs-csi-driver
|
-| repositories.aws-ebs-csi-driver.timeout | | 60s
|
+| repositories.aws-ebs-csi-driver.timeout | | 1m0s
|
| repositories.bytebuilders-ui.interval | | 30m0s
|
| repositories.bytebuilders-ui.url | | oci://r.byte.builders/charts
|
-| repositories.bytebuilders-ui.timeout | | 60s
|
+| repositories.bytebuilders-ui.timeout | | 1m0s
|
| repositories.bytebuilders.interval | | 30m0s
|
| repositories.bytebuilders.url | | https://charts.appscode.com/stable
|
-| repositories.bytebuilders.timeout | | 60s
|
+| repositories.bytebuilders.timeout | | 1m0s
|
| repositories.cluster-autoscaler.interval | | 30m0s
|
| repositories.cluster-autoscaler.url | | https://kubernetes.github.io/autoscaler
|
-| repositories.cluster-autoscaler.timeout | | 60s
|
+| repositories.cluster-autoscaler.timeout | | 1m0s
|
| repositories.crossplane.interval | | 30m0s
|
| repositories.crossplane.url | | https://charts.crossplane.io/stable
|
-| repositories.crossplane.timeout | | 60s
|
+| repositories.crossplane.timeout | | 1m0s
|
| repositories.falcosecurity.interval | | 30m0s
|
| repositories.falcosecurity.url | | https://falcosecurity.github.io/charts
|
-| repositories.falcosecurity.timeout | | 60s
|
+| repositories.falcosecurity.timeout | | 1m0s
|
| repositories.gatekeeper.interval | | 30m0s
|
| repositories.gatekeeper.url | | https://open-policy-agent.github.io/gatekeeper/charts
|
-| repositories.gatekeeper.timeout | | 60s
|
+| repositories.gatekeeper.timeout | | 1m0s
|
| repositories.jetstack.interval | | 30m0s
|
| repositories.jetstack.url | | https://charts.jetstack.io
|
-| repositories.jetstack.timeout | | 60s
|
+| repositories.jetstack.timeout | | 1m0s
|
| repositories.kedacore.interval | | 30m0s
|
| repositories.kedacore.url | | https://kedacore.github.io/charts
|
-| repositories.kedacore.timeout | | 60s
|
+| repositories.kedacore.timeout | | 1m0s
|
| repositories.kubedb.interval | | 30m0s
|
| repositories.kubedb.url | | https://charts.appscode.com/stable
|
-| repositories.kubedb.timeout | | 60s
|
+| repositories.kubedb.timeout | | 1m0s
|
| repositories.kubeops.interval | | 30m0s
|
| repositories.kubeops.url | | https://charts.appscode.com/stable
|
-| repositories.kubeops.timeout | | 60s
|
+| repositories.kubeops.timeout | | 1m0s
|
| repositories.kubestash.interval | | 30m0s
|
| repositories.kubestash.url | | https://charts.appscode.com/stable
|
-| repositories.kubestash.timeout | | 60s
|
+| repositories.kubestash.timeout | | 1m0s
|
| repositories.kubevault.interval | | 30m0s
|
| repositories.kubevault.url | | oci://r.byte.builders/charts
|
-| repositories.kubevault.timeout | | 60s
|
+| repositories.kubevault.timeout | | 1m0s
|
| repositories.nats.interval | | 30m0s
|
| repositories.nats.url | | https://nats-io.github.io/k8s/helm/charts/
|
-| repositories.nats.timeout | | 60s
|
+| repositories.nats.timeout | | 1m0s
|
| repositories.ocm.interval | | 30m0s
|
| repositories.ocm.url | | oci://r.byte.builders/charts
|
-| repositories.ocm.timeout | | 60s
|
+| repositories.ocm.timeout | | 1m0s
|
| repositories.opencost.interval | | 30m0s
|
| repositories.opencost.url | | oci://r.byte.builders/charts
|
-| repositories.opencost.timeout | | 60s
|
+| repositories.opencost.timeout | | 1m0s
|
| repositories.prometheus-community.interval | | 30m0s
|
| repositories.prometheus-community.url | | https://prometheus-community.github.io/helm-charts
|
-| repositories.prometheus-community.timeout | | 60s
|
+| repositories.prometheus-community.timeout | | 1m0s
|
| repositories.stashed.interval | | 30m0s
|
| repositories.stashed.url | | https://charts.appscode.com/stable
|
-| repositories.stashed.timeout | | 60s
|
+| repositories.stashed.timeout | | 1m0s
|
| registry.credentials | | {}
|
| clusterManagers | | []
|
| capi.provider | | ""
|
diff --git a/schema/ace-options/values.openapiv3_schema.yaml b/schema/ace-options/values.openapiv3_schema.yaml
index c466150d4..3f5bdb38d 100644
--- a/schema/ace-options/values.openapiv3_schema.yaml
+++ b/schema/ace-options/values.openapiv3_schema.yaml
@@ -389,6 +389,30 @@ properties:
properties:
auth:
properties:
+ azureDNS:
+ properties:
+ environment:
+ type: string
+ hostedZoneName:
+ type: string
+ resourceGroupName:
+ type: string
+ servicePrincipalAppID:
+ type: string
+ servicePrincipalAppPassword:
+ type: string
+ subscriptionID:
+ type: string
+ tenantID:
+ type: string
+ required:
+ - hostedZoneName
+ - resourceGroupName
+ - servicePrincipalAppID
+ - servicePrincipalAppPassword
+ - subscriptionID
+ - tenantID
+ type: object
cloudDNS:
properties:
GOOGLE_PROJECT_ID:
@@ -428,6 +452,7 @@ properties:
- cloudflare
- route53
- cloudDNS
+ - azureDNS
type: string
required:
- auth