Skip to content

Commit 65c4f54

Browse files
committed
Allow redis instance name to be parameterized
Allow the redis instance name to be unique to the designate service. Defaults to designate-redis. Depends-On: openstack-k8s-operators/install_yamls#946
1 parent 52a498d commit 65c4f54

File tree

13 files changed

+99
-43
lines changed

13 files changed

+99
-43
lines changed

api/bases/designate.openstack.org_designates.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1440,6 +1440,11 @@ spec:
14401440
description: RabbitMQ instance name Needed to request a transportURL
14411441
that is created and used in Designate
14421442
type: string
1443+
redisServiceName:
1444+
default: designate-redis
1445+
description: RedisServiceName is the name of the Redis instance to
1446+
be used (must be in the same namespace as designate)
1447+
type: string
14431448
resources:
14441449
description: Resources - Compute Resources required by this service
14451450
(Limits/Requests). https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
@@ -1507,6 +1512,7 @@ spec:
15071512
- designateProducer
15081513
- designateWorker
15091514
- rabbitMqClusterName
1515+
- redisServiceName
15101516
- secret
15111517
type: object
15121518
status:

api/v1beta1/designate_types.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,11 @@ type DesignateSpecBase struct {
181181
// +kubebuilder:default=designate
182182
// DesignateNetworkAttachment is a NetworkAttachment resource name for the Designate Control Network
183183
DesignateNetworkAttachment string `json:"designateNetworkAttachment"`
184+
185+
// +kubebuilder:validation:Required
186+
// +kubebuilder:default="designate-redis"
187+
// RedisServiceName is the name of the Redis instance to be used (must be in the same namespace as designate)
188+
RedisServiceName string `json:"redisServiceName"`
184189
}
185190

186191
// DesignateStatus defines the observed state of Designate

config/crd/bases/designate.openstack.org_designates.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1440,6 +1440,11 @@ spec:
14401440
description: RabbitMQ instance name Needed to request a transportURL
14411441
that is created and used in Designate
14421442
type: string
1443+
redisServiceName:
1444+
default: designate-redis
1445+
description: RedisServiceName is the name of the Redis instance to
1446+
be used (must be in the same namespace as designate)
1447+
type: string
14431448
resources:
14441449
description: Resources - Compute Resources required by this service
14451450
(Limits/Requests). https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
@@ -1507,6 +1512,7 @@ spec:
15071512
- designateProducer
15081513
- designateWorker
15091514
- rabbitMqClusterName
1515+
- redisServiceName
15101516
- secret
15111517
type: object
15121518
status:
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: redis.openstack.org/v1beta1
2+
kind: Redis
3+
metadata:
4+
name: designate-redis
5+
spec:
6+
replicas: 1
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: redis.openstack.org/v1beta1
2+
kind: Redis
3+
metadata:
4+
name: designate-redis
5+
spec:
6+
replicas: 1
7+
tls:
8+
secretName: redis-tls
9+
caBundleSecretName: redis-tls

config/samples/kustomization.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
## Append samples you want in your CSV to this file as resources ##
22
resources:
33
- designate_v1beta1_designate.yaml
4+
- designate_redis.yaml
45
#+kubebuilder:scaffold:manifestskustomizesamples

controllers/designate_controller.go

Lines changed: 9 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -592,17 +592,18 @@ func (r *DesignateReconciler) reconcileNormal(ctx context.Context, instance *des
592592
return ctrl.Result{RequeueAfter: time.Duration(10) * time.Second}, nil
593593
}
594594

595-
instance.Status.Conditions.MarkTrue(designatev1beta1.DesignateRabbitMqTransportURLReadyCondition, designatev1beta1.DesignateRabbitMqTransportURLReadyMessage)
595+
instance.Status.Conditions.MarkTrue(
596+
designatev1beta1.DesignateRabbitMqTransportURLReadyCondition,
597+
designatev1beta1.DesignateRabbitMqTransportURLReadyMessage)
596598

597599
// end transportURL
598-
599-
redis, op, err := r.redisCreateOrUpdate(ctx, instance, helper)
600+
hostIPs, err := getRedisServiceIPs(ctx, instance, helper)
600601
if err != nil {
601602
return ctrl.Result{}, err
602603
}
603-
if op != controllerutil.OperationResultNone {
604-
Log.Info(fmt.Sprintf("Redis %s successfully reconciled - operation: %s", redis.Name, string(op)))
605-
}
604+
605+
sort.Strings(hostIPs)
606+
instance.Status.RedisHostIPs = hostIPs
606607

607608
instance.Status.Conditions.MarkTrue(condition.InputReadyCondition, condition.InputReadyMessage)
608609

@@ -1874,47 +1875,12 @@ func getRedisServiceIPs(
18741875
ctx context.Context,
18751876
instance *designatev1beta1.Designate,
18761877
helper *helper.Helper,
1877-
redis *redisv1.Redis,
18781878
) ([]string, error) {
18791879
getOptions := metav1.GetOptions{}
1880-
service, err := helper.GetKClient().CoreV1().Services(instance.Namespace).Get(ctx, "redis", getOptions)
1880+
service, err := helper.GetKClient().CoreV1().Services(instance.Namespace).Get(ctx, instance.Spec.RedisServiceName, getOptions)
18811881
if err != nil {
18821882
return []string{}, err
18831883
}
1884-
// TODO Ensure that the correct port is exposed
1884+
// TODO: Ensure that the correct port is exposed
18851885
return service.Spec.ClusterIPs, nil
18861886
}
1887-
1888-
func (r *DesignateReconciler) redisCreateOrUpdate(
1889-
ctx context.Context,
1890-
instance *designatev1beta1.Designate,
1891-
helper *helper.Helper,
1892-
) (*redisv1.Redis, controllerutil.OperationResult, error) {
1893-
redis := &redisv1.Redis{
1894-
// Use the "global" redis instance.
1895-
ObjectMeta: metav1.ObjectMeta{
1896-
Name: "redis",
1897-
Namespace: instance.Namespace,
1898-
},
1899-
}
1900-
1901-
op, err := controllerutil.CreateOrUpdate(context.TODO(), r.Client, redis, func() error {
1902-
// We probably don't want to own the redis instance.
1903-
//err := controllerutil.SetControllerReference(instance, redis, r.Scheme)
1904-
//return err
1905-
return nil
1906-
})
1907-
if err != nil {
1908-
return nil, op, err
1909-
}
1910-
1911-
hostIPs, err := getRedisServiceIPs(ctx, instance, helper, redis)
1912-
if err != nil {
1913-
return redis, op, err
1914-
}
1915-
1916-
sort.Strings(hostIPs)
1917-
instance.Status.RedisHostIPs = hostIPs
1918-
1919-
return redis, op, err
1920-
}

tests/kuttl/tests/basic/01-deploy-designate.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ kind: TestStep
33
commands:
44
- script: |
55
cp ../../../../config/samples/designate_v1beta1_designate.yaml deploy
6+
cp ../../../../config/samples/designate_redis.yaml deploy
67
# Do not modify the designate network attachment if it already
78
# exists.
89
if ! (oc get -n $NAMESPACE net-attach-def | grep designate);

tests/kuttl/tests/basic/deploy/kustomization.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ kind: Kustomization
33
resources:
44
- ./designate_nad.yaml
55
- ./designate_v1beta1_designate.yaml
6+
- ./designate_redis.yaml
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# hardcode the secret generated by the certificate CR below,
2+
# to avoid kuttl from depending on cert-manager at runtime
3+
# the ca.crt key has been renamed to tls-ca-bundle.pem
4+
# ---
5+
# apiVersion: cert-manager.io/v1
6+
# kind: Certificate
7+
# metadata:
8+
# name: kuttl-redis-cert
9+
# spec:
10+
# secretName: kuttl-redis-tls
11+
# duration: 12720h
12+
# renewBefore: 1h
13+
# subject:
14+
# organizations:
15+
# - cluster.local
16+
# commonName: openstack-redis
17+
# isCA: false
18+
# privateKey:
19+
# algorithm: RSA
20+
# encoding: PKCS8
21+
# size: 2048
22+
# usages:
23+
# - server auth
24+
# - client auth
25+
# dnsNames:
26+
# - "redis.openstack.svc"
27+
# - "redis.openstack.svc.cluster.local"
28+
# - "*.redis-redis"
29+
# - "*.redis-redis.openstack"
30+
# - "*.redis-redis.openstack.svc"
31+
# - "*.redis-redis.openstack.svc.cluster"
32+
# - "*.redis-redis.openstack.svc.cluster.local"
33+
# issuerRef:
34+
# name: kuttl-ca-issuer
35+
# group: cert-manager.io
36+
# kind: Issuer
37+
# ---
38+
apiVersion: v1
39+
kind: Secret
40+
metadata:
41+
name: kuttl-redis-tls
42+
data:
43+
tls-ca-bundle.pem: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmRENDQVNLZ0F3SUJBZ0lRSlUrQTRBYUpDRFowRDYzbDF5UXNFVEFLQmdncWhrak9QUVFEQWpBZU1Sd3cKR2dZRFZRUURFeE5yZFhSMGJDMXpaV3htYzJsbmJtVmtMV05oTUI0WERUSTBNREV4T0RFek1UazBNbG9YRFRJMQpNRGN3TVRFek1UazBNbG93SGpFY01Cb0dBMVVFQXhNVGEzVjBkR3d0YzJWc1puTnBaMjVsWkMxallUQlpNQk1HCkJ5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSTJKUWdYME1oZUNHSjQ2OHFSNE9wMGJYWGFuTWZSMWRpd3EKR1VtcXlrM20vdHVNZ2hxZlJNNmdWYXFpekNLMjQyNjJUL2dIamdsaDNJTEQ4UnByQXFlalFqQkFNQTRHQTFVZApEd0VCL3dRRUF3SUNwREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlFMbThjamY3dmc5ZjRxCjdsMzVmN1YxUXNsRDlqQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpQUZkdEhUbkdiMWtQVlJlZmcvbmNHaThoR2UKVlh5UVZycFJjRStNSXZMeUpRSWhBS2VLZHNleE9LUElQSDVOT0VBUHNxOTQ5cWlFVHU4ZlJEVUdkanozSkZSKwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
44+
tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURTVENDQXUrZ0F3SUJBZ0lSQVBDL0JSbFZNQ1VKTW52WFZRVittc0V3Q2dZSUtvWkl6ajBFQXdJd0hqRWMKTUJvR0ExVUVBeE1UYTNWMGRHd3RjMlZzWm5OcFoyNWxaQzFqWVRBZUZ3MHlOREF4TXpFd09USTFNRFZhRncweQpOVEEzTVRRd09USTFNRFZhTURJeEZqQVVCZ05WQkFvVERXTnNkWE4wWlhJdWJHOWpZV3d4R0RBV0JnTlZCQU1UCkQyOXdaVzV6ZEdGamF5MXlaV1JwY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUIKQUwrU29pVWZ5eldmRjhxdURGcGFqS1NVR2hNS0I3dGJkRU9tNWpPWWtLL0VZV3d0K3dTN3ZJbU0rZUVBS3FvcApoQVFkOUQrL0I0ZFY0QkhjUjBGdVg0eXhBZWxEc05hNWN0UEswUGcwdkpqZ1JJeUZ5a29MSEtrQVIvM1RqYUR3CmxuUk5ZRDVjSUc0YUxkdkcwSkF4elhDZ1k0bkFPdVJObzQ0MXNsTDJtZkRXdi9FbFdTZFlvU0lQUk40Ly83K0YKcEdOcHkxUzkyY0ZxNVRaRFgwSlFFU20vcmRNWko5TGwrdlBJd0RFU2VpQm85bE5MWkhlVnEwcVRHM1h6QVVWUQp2aHY1ekNIc052bklxZ1BlNC9RQlk3VFFSUDNML215bUNSNEo1ZUFoUDE0N2RxRUVaY0hrQWhIdkFvUVcvTXNRCnhCMFVDMzRBUGdZZ3F0bGdPSGxuSTM4Q0F3RUFBYU9DQVMwd2dnRXBNQjBHQTFVZEpRUVdNQlFHQ0NzR0FRVUYKQndNQkJnZ3JCZ0VGQlFjREFqQU1CZ05WSFJNQkFmOEVBakFBTUI4R0ExVWRJd1FZTUJhQUZBdWJ4eU4vdStEMQovaXJ1WGZsL3RYVkN5VVAyTUlIWUJnTlZIUkVFZ2RBd2djMkNFM0psWkdsekxtOXdaVzV6ZEdGamF5NXpkbU9DCklYSmxaR2x6TG05d1pXNXpkR0ZqYXk1emRtTXVZMngxYzNSbGNpNXNiMk5oYklJTktpNXlaV1JwY3kxeVpXUnAKYzRJWEtpNXlaV1JwY3kxeVpXUnBjeTV2Y0dWdWMzUmhZMnVDR3lvdWNtVmthWE10Y21Wa2FYTXViM0JsYm5OMApZV05yTG5OMlk0SWpLaTV5WldScGN5MXlaV1JwY3k1dmNHVnVjM1JoWTJzdWMzWmpMbU5zZFhOMFpYS0NLU291CmNtVmthWE10Y21Wa2FYTXViM0JsYm5OMFlXTnJMbk4yWXk1amJIVnpkR1Z5TG14dlkyRnNNQW9HQ0NxR1NNNDkKQkFNQ0EwZ0FNRVVDSVFDbXQ1R2VuWVNWZllxYUE5dVkrUjZkbi9GUG83N0x6ZmhJaE5TMS9HbzB6d0lnTG5FaQpOQkpwRmg3YkZkcmpnY0xETE5SRm1RTkllaGR6Qm5NRnVSa0ZXMHc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
45+
tls.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2Z0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktnd2dnU2tBZ0VBQW9JQkFRQy9rcUlsSDhzMW54ZksKcmd4YVdveWtsQm9UQ2dlN1czUkRwdVl6bUpDdnhHRnNMZnNFdTd5SmpQbmhBQ3FxS1lRRUhmUS92d2VIVmVBUgozRWRCYmwrTXNRSHBRN0RXdVhMVHl0RDROTHlZNEVTTWhjcEtDeHlwQUVmOTA0Mmc4SlowVFdBK1hDQnVHaTNiCnh0Q1FNYzF3b0dPSndEcmtUYU9PTmJKUzlwbncxci94SlZrbldLRWlEMFRlUC8rL2hhUmphY3RVdmRuQmF1VTIKUTE5Q1VCRXB2NjNUR1NmUzVmcnp5TUF4RW5vZ2FQWlRTMlIzbGF0S2t4dDE4d0ZGVUw0Yitjd2g3RGI1eUtvRAozdVAwQVdPMDBFVDl5LzVzcGdrZUNlWGdJVDllTzNhaEJHWEI1QUlSN3dLRUZ2ekxFTVFkRkF0K0FENEdJS3JaCllEaDVaeU4vQWdNQkFBRUNnZ0VBVkwzS1Y5MnVpRE90MUl3VkRzckxOK29EZHJTVEl2K2JlR21WbnZFMzMyaGgKSi9kVytJc0xKVlZsRzNCMWJ2d2FWNi9nWVdwaExDNkNoYVFKS1JwbnpkWm00QVovYlJ4dmZOeFVmOWJrTGtQVwpUc3JINXVUdmNwcWJQZDZjNGJwSzgzdGV2WGNIS1cwUEtBN1VKMVRBYWJlcEVFQW1UT05ESEI4SW1NWlk1ajF6CithNXVocm91akROSG16Q3lna3JKQWVNRjgyZkh2RStFOFBxM3JxTjg2YWxuSkZhNTgyRmZsbmhya3hhcG9XQmEKT1VIR0hWRFlpSkJlbm52K0ZqZWVvZDhYbEk3VlhnVlpuRjNWeHBrQThwRmF1SER5R2xKU2lKMUMzbHRpc01xcQpvSmJvSFBsNWZGRGtJSDVNQzA1NkxIVEp1bTVGM3gzSGllVG81Ym01RVFLQmdRRE0yRU1TeGd4bVRpRmxsR3FxCjJ3MHdwQVFEVWUyVCtEQUNYK01vQVNMaFNZeGMxR01KZGl3WWQvM2h5cE5Iamh5Uy9aZnVGQy85WlFRREZ6dkIKU0lXb3NQYlhEazNnNGYraklhTDJXTlMzcTVkd3N2dGFId0VvWWVyVWtCUHJ3VUhNODZVQ05RUnprM0N2TVJUOAozLzdmQmRwdm0vVXJwWHBZKzdubUViWXRXd0tCZ1FEdmFlUjdFaS9OTTNYaUlMS1RyK3ExZ3lNWUEwSHBxZ0x4CkduSURObWtVajdLWUVQQmhhOHdSTjNZQmlIQ1JVdVVGS3hvaUIwa0VNZUlLS2F4ME1UdHY1cklnWng0SEk3ZksKOGFPOVl4ZlY4ekliU3RYcTcrbDNkeWZycFFTbFM0SnZ6czg3UDVMVS8rMzFXcWJCd1F5VlhBcmdKcEdsMzBRdwpJcnlSYnJjSHJRS0JnUURKOTAvcWFxby9GRG1KVmRQMXNSUklLTzVyOTVNdW1UMThtZDMxeTJrQWh1dUZlMEpLClNlRWdIdTZLZUpqTnJDZ3dKU2h1N0NpRXhkdzJ6K2x5b0habjVGTDdwbmJTaXdEcGJuaW1PdDlBV0Vad0w0ZnoKU3k1eENsbm1Ta2ZaNGlsbVViTVhnZjVwbGEwOGprQUxNeTZ2NWEyQTdWdkZOTnAwY1h6UWdoWUVrUUtCZ0JTbQpxS3VvL1BDUlVNakprejNEL2RYY1V1bWVWbEFtZHd4L0FIaWdkOTNyS3plTXRuOWd3Z0IyTFRxaW56c1owR0ZxCnYxMVNEWTFNRkRoV01lYnYzRFdoeTVtWjYzQW9ONUZNMkpmY2RWRGlJbDlTVEROd3NFMjZ2SG5LQ1NXTTV0cG8KRjEzLzlOVmtvZ3o0M2N0MnNIUXR0VTV5WlR2T2oxNHJrT0ptajJrZEFvR0JBS05tK2RjZUlGWDI4OHpzc1FGZgpWK1d3c0RDUzVKOGs2eEFlNVJ6OXNQZ2hXbzVvYUJDRkNZQVZ2dkhiZm1tTmMrQVBOSjlMeTI5R1c1N0ZtN0haCmF5YkkrY3dPS2hOQXJlWGlnQTBTVmx2SUNSeDhyYWpXYVFMY3JBMFR0ODl2aEg1SjcvVVJOcFVwcXpzZDhySFUKZTR5RHFTdHhraXJUa2ZZY3lZSlFjUDRaCi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K

0 commit comments

Comments
 (0)