Skip to content

Commit

Permalink
Merge pull request openstack-k8s-operators#216 from omersch381/use_tl…
Browse files Browse the repository at this point in the history
…s_in_ctrls

Use TLS in controllers, pkgs and kuttle tests
  • Loading branch information
openshift-merge-bot[bot] authored Aug 30, 2024
2 parents 551dcc5 + a2d1390 commit 40f0729
Show file tree
Hide file tree
Showing 34 changed files with 1,433 additions and 262 deletions.
70 changes: 45 additions & 25 deletions controllers/designate_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,16 @@ import (
designatev1beta1 "github.com/openstack-k8s-operators/designate-operator/api/v1beta1"
"github.com/openstack-k8s-operators/designate-operator/pkg/designate"
rabbitmqv1 "github.com/openstack-k8s-operators/infra-operator/apis/rabbitmq/v1beta1"
keystonev1 "github.com/openstack-k8s-operators/keystone-operator/api/v1beta1"
"github.com/openstack-k8s-operators/lib-common/modules/common"
"github.com/openstack-k8s-operators/lib-common/modules/common/condition"
"github.com/openstack-k8s-operators/lib-common/modules/common/endpoint"
"github.com/openstack-k8s-operators/lib-common/modules/common/env"
"github.com/openstack-k8s-operators/lib-common/modules/common/helper"
"github.com/openstack-k8s-operators/lib-common/modules/common/job"
"github.com/openstack-k8s-operators/lib-common/modules/common/labels"
nad "github.com/openstack-k8s-operators/lib-common/modules/common/networkattachment"
common_rbac "github.com/openstack-k8s-operators/lib-common/modules/common/rbac"
oko_secret "github.com/openstack-k8s-operators/lib-common/modules/common/secret"
"github.com/openstack-k8s-operators/lib-common/modules/common/tls"
"github.com/openstack-k8s-operators/lib-common/modules/common/util"
mariadbv1 "github.com/openstack-k8s-operators/mariadb-operator/api/v1beta1"

Expand Down Expand Up @@ -224,6 +223,23 @@ func (r *DesignateReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
return r.reconcileNormal(ctx, instance, helper)
}

// fields to index to reconcile when change
const (
passwordSecretField = ".spec.secret"
caBundleSecretNameField = ".spec.tls.caBundleSecretName"
tlsAPIInternalField = ".spec.tls.api.internal.secretName"
tlsAPIPublicField = ".spec.tls.api.public.secretName"
)

var (
allWatchFields = []string{
passwordSecretField,
caBundleSecretNameField,
tlsAPIInternalField,
tlsAPIPublicField,
}
)

// SetupWithManager sets up the controller with the Manager.
func (r *DesignateReconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager) error {
// transportURLSecretFn - Watch for changes made to the secret associated with the RabbitMQ
Expand Down Expand Up @@ -668,6 +684,8 @@ func (r *DesignateReconciler) reconcileNormal(ctx context.Context, instance *des
instance.Spec.DesignateAPI.NetworkAttachments, err)
}

instance.Status.Conditions.MarkTrue(condition.NetworkAttachmentsReadyCondition, condition.NetworkAttachmentsReadyMessage)

// Handle service init
ctrlResult, err := r.reconcileInit(ctx, instance, helper, serviceLabels, serviceAnnotations)
if err != nil {
Expand Down Expand Up @@ -1044,11 +1062,19 @@ func (r *DesignateReconciler) generateServiceConfigMaps(

cmLabels := labels.GetLabels(instance, labels.GetGroupLabel(designate.ServiceName), map[string]string{})

var tlsCfg *tls.Service
if instance.Spec.DesignateAPI.TLS.Ca.CaBundleSecretName != "" {
tlsCfg = &tls.Service{}
}

// customData hold any customization for the service.
// custom.conf is going to /etc/<service>/<service>.conf.d
// all other files get placed into /etc/<service> to allow overwrite of e.g. policy.json
// TODO: make sure custom.conf can not be overwritten
customData := map[string]string{common.CustomServiceConfigFileName: instance.Spec.CustomServiceConfig}
customData := map[string]string{
common.CustomServiceConfigFileName: instance.Spec.CustomServiceConfig,
"my.cnf": designateDb.GetDatabaseClientConfig(tlsCfg), //(oschwart) for now just get the default my.cnf
}

for key, data := range instance.Spec.DefaultConfigOverwrite {
customData[key] = data
Expand All @@ -1057,29 +1083,18 @@ func (r *DesignateReconciler) generateServiceConfigMaps(
databaseAccount := designateDb.GetAccount()
dbSecret := designateDb.GetSecret()

keystoneAPI, err := keystonev1.GetKeystoneAPI(ctx, h, instance.Namespace, map[string]string{})
if err != nil {
return err
}
keystoneInternalURL, err := keystoneAPI.GetEndpoint(endpoint.EndpointInternal)
if err != nil {
return err
// We only need a minimal 00-config.conf that is only used by db-sync job,
// hence only passing the database related parameters
templateParameters := map[string]interface{}{
"MinimalConfig": true, // This tells the template to generate a minimal config
"DatabaseConnection": fmt.Sprintf("mysql+pymysql://%s:%s@%s/%s?read_default_file=/etc/my.cnf",
databaseAccount.Spec.UserName,
string(dbSecret.Data[mariadbv1.DatabasePasswordSelector]),
instance.Status.DatabaseHostname,
designate.DatabaseName,
),
}
keystonePublicURL, err := keystoneAPI.GetEndpoint(endpoint.EndpointPublic)
if err != nil {
return err
}

templateParameters := make(map[string]interface{})
templateParameters["ServiceUser"] = instance.Spec.ServiceUser
templateParameters["KeystoneInternalURL"] = keystoneInternalURL
templateParameters["KeystonePublicURL"] = keystonePublicURL
templateParameters["DatabaseConnection"] = fmt.Sprintf("mysql+pymysql://%s:%s@%s/%s?read_default_file=/etc/my.cnf",
databaseAccount.Spec.UserName,
string(dbSecret.Data[mariadbv1.DatabasePasswordSelector]),
instance.Status.DatabaseHostname,
designate.DatabaseName,
)

cms := []util.Template{
// ScriptsConfigMap
Expand All @@ -1103,7 +1118,7 @@ func (r *DesignateReconciler) generateServiceConfigMaps(
},
}

err = oko_secret.EnsureSecrets(ctx, h, instance, cms, envVars)
err := oko_secret.EnsureSecrets(ctx, h, instance, cms, envVars)
if err != nil {
return err
}
Expand Down Expand Up @@ -1175,6 +1190,7 @@ func (r *DesignateReconciler) apiDeploymentCreateOrUpdate(ctx context.Context, i
deployment.Spec.DatabaseAccount = instance.Spec.DatabaseAccount
deployment.Spec.Secret = instance.Spec.Secret
deployment.Spec.ServiceAccount = instance.RbacResourceName()
deployment.Spec.TLS = instance.Spec.DesignateAPI.TLS
deployment.Spec.TransportURLSecret = instance.Status.TransportURLSecret
if len(deployment.Spec.NodeSelector) == 0 {
deployment.Spec.NodeSelector = instance.Spec.NodeSelector
Expand Down Expand Up @@ -1209,6 +1225,7 @@ func (r *DesignateReconciler) centralDeploymentCreateOrUpdate(ctx context.Contex
deployment.Spec.Secret = instance.Spec.Secret
deployment.Spec.TransportURLSecret = instance.Status.TransportURLSecret
deployment.Spec.ServiceAccount = instance.RbacResourceName()
deployment.Spec.TLS = instance.Spec.DesignateAPI.TLS.Ca
if len(deployment.Spec.NodeSelector) == 0 {
deployment.Spec.NodeSelector = instance.Spec.NodeSelector
}
Expand Down Expand Up @@ -1242,6 +1259,7 @@ func (r *DesignateReconciler) workerDeploymentCreateOrUpdate(ctx context.Context
deployment.Spec.Secret = instance.Spec.Secret
deployment.Spec.TransportURLSecret = instance.Status.TransportURLSecret
deployment.Spec.ServiceAccount = instance.RbacResourceName()
deployment.Spec.TLS = instance.Spec.DesignateAPI.TLS.Ca
if len(deployment.Spec.NodeSelector) == 0 {
deployment.Spec.NodeSelector = instance.Spec.NodeSelector
}
Expand Down Expand Up @@ -1275,6 +1293,7 @@ func (r *DesignateReconciler) mdnsDaemonSetCreateOrUpdate(ctx context.Context, i
daemonset.Spec.Secret = instance.Spec.Secret
daemonset.Spec.TransportURLSecret = instance.Status.TransportURLSecret
daemonset.Spec.ServiceAccount = instance.RbacResourceName()
daemonset.Spec.TLS = instance.Spec.DesignateAPI.TLS.Ca
if len(daemonset.Spec.NodeSelector) == 0 {
daemonset.Spec.NodeSelector = instance.Spec.NodeSelector
}
Expand Down Expand Up @@ -1308,6 +1327,7 @@ func (r *DesignateReconciler) producerDeploymentCreateOrUpdate(ctx context.Conte
deployment.Spec.Secret = instance.Spec.Secret
deployment.Spec.TransportURLSecret = instance.Status.TransportURLSecret
deployment.Spec.ServiceAccount = instance.RbacResourceName()
deployment.Spec.TLS = instance.Spec.DesignateAPI.TLS.Ca
if len(deployment.Spec.NodeSelector) == 0 {
deployment.Spec.NodeSelector = instance.Spec.NodeSelector
}
Expand Down
Loading

0 comments on commit 40f0729

Please sign in to comment.