Skip to content

Commit

Permalink
Update KubeDB api (#319)
Browse files Browse the repository at this point in the history
Signed-off-by: 1gtm <1gtm@appscode.com>
  • Loading branch information
1gtm committed Oct 22, 2020
1 parent 6be49e7 commit fa1438e
Show file tree
Hide file tree
Showing 5 changed files with 65 additions and 40 deletions.
2 changes: 1 addition & 1 deletion go.mod
Expand Up @@ -17,7 +17,7 @@ require (
kmodules.xyz/client-go v0.0.0-20201021051118-03dac1aea508
kmodules.xyz/custom-resources v0.0.0-20201008012351-6d8090f759d4
kmodules.xyz/webhook-runtime v0.0.0-20200922211931-8337935590de
kubedb.dev/apimachinery v0.14.0-beta.3.0.20201021115037-028d939d696f
kubedb.dev/apimachinery v0.14.0-beta.3.0.20201021175036-5f17e1b4bd32
kubedb.dev/elasticsearch v0.14.0-beta.3.0.20201019183940-c22b7f3193c0
kubedb.dev/memcached v0.7.0-beta.3.0.20201019123808-40afd78dc5cc
kubedb.dev/mongodb v0.7.0-beta.3.0.20201019184118-7e7a960e5557
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Expand Up @@ -1703,8 +1703,8 @@ kubedb.dev/apimachinery v0.14.0-beta.3.0.20201019120142-0d4040b4ef21 h1:ZSdMBGMF
kubedb.dev/apimachinery v0.14.0-beta.3.0.20201019120142-0d4040b4ef21/go.mod h1:p9LuoCgOHagyOFawD8zqZLJkRG5DDXivXRdcLC9NoMQ=
kubedb.dev/apimachinery v0.14.0-beta.3.0.20201019175817-06c2076f1e91 h1:2O+S2T4CDAICbjkW3wsB65e+vMhjotd63UXcrhhDi/k=
kubedb.dev/apimachinery v0.14.0-beta.3.0.20201019175817-06c2076f1e91/go.mod h1:p9LuoCgOHagyOFawD8zqZLJkRG5DDXivXRdcLC9NoMQ=
kubedb.dev/apimachinery v0.14.0-beta.3.0.20201021115037-028d939d696f h1:ceTWuiyzv3J/QCmH7fZ20gKZZ66EIxT3ynr0lf3w5tc=
kubedb.dev/apimachinery v0.14.0-beta.3.0.20201021115037-028d939d696f/go.mod h1:ObBlUobv1KgB7G2asn8gW9TAZWsn/1bCgvFeei3Qk+I=
kubedb.dev/apimachinery v0.14.0-beta.3.0.20201021175036-5f17e1b4bd32 h1:PDNL/iGXHWOEcyGyeq2v5RF+DWyusn9FOyMrUUPxU7s=
kubedb.dev/apimachinery v0.14.0-beta.3.0.20201021175036-5f17e1b4bd32/go.mod h1:ObBlUobv1KgB7G2asn8gW9TAZWsn/1bCgvFeei3Qk+I=
kubedb.dev/elasticsearch v0.14.0-beta.3.0.20201019183940-c22b7f3193c0 h1:ZLI+HfvzoPxuUQvKWeV3KJhhwjAiNc/E/b0wghL4TiI=
kubedb.dev/elasticsearch v0.14.0-beta.3.0.20201019183940-c22b7f3193c0/go.mod h1:YikL9l3rEd3wJKozjaoVH7QdsQ8r8NCKdH7qVl9nDzg=
kubedb.dev/memcached v0.7.0-beta.3.0.20201019123808-40afd78dc5cc h1:Xr0l3jzUyOlA5Sa5lgqJBlzuIHlWg9LNpISEX3HVHeo=
Expand Down
Expand Up @@ -328,6 +328,20 @@ func (e *Elasticsearch) SetTLSDefaults(esVersion *v1alpha1.ElasticsearchVersion)
tlsConfig = &kmapi.TLSConfig{}
}

// If the issuerRef is nil, the operator will create the CA certificate.
// It is required even if the spec.EnableSSL is false. Because, the transport
// layer is always secured with certificates. Unless you turned off all the security
// by setting spec.DisableSecurity to true.
if tlsConfig.IssuerRef == nil {
tlsConfig.Certificates = kmapi.SetMissingSpecForCertificate(tlsConfig.Certificates, kmapi.CertificateSpec{
Alias: string(ElasticsearchCACert),
SecretName: e.CertificateName(ElasticsearchCACert),
Subject: &kmapi.X509Subject{
Organizations: []string{KubeDBOrganization},
},
})
}

// transport layer is always secured with certificate
tlsConfig.Certificates = kmapi.SetMissingSpecForCertificate(tlsConfig.Certificates, kmapi.CertificateSpec{
Alias: string(ElasticsearchTransportCert),
Expand All @@ -339,18 +353,6 @@ func (e *Elasticsearch) SetTLSDefaults(esVersion *v1alpha1.ElasticsearchVersion)

// If SSL is enabled, set missing certificate spec
if e.Spec.EnableSSL {

// If the issuerRef is nil, the operator will create the CA certificate.
if tlsConfig.IssuerRef == nil {
tlsConfig.Certificates = kmapi.SetMissingSpecForCertificate(tlsConfig.Certificates, kmapi.CertificateSpec{
Alias: string(ElasticsearchCACert),
SecretName: e.CertificateName(ElasticsearchCACert),
Subject: &kmapi.X509Subject{
Organizations: []string{KubeDBOrganization},
},
})
}

// http
tlsConfig.Certificates = kmapi.SetMissingSpecForCertificate(tlsConfig.Certificates, kmapi.CertificateSpec{
Alias: string(ElasticsearchHTTPCert),
Expand Down
Expand Up @@ -18,7 +18,7 @@ package v1alpha2

import (
"fmt"
"strconv"
"strings"

"kubedb.dev/apimachinery/apis"
"kubedb.dev/apimachinery/apis/catalog/v1alpha1"
Expand Down Expand Up @@ -210,18 +210,22 @@ func (m MongoDB) GvrSvcName(name string) string {
// we used governing service name as part of host while adding members
// to replicaset.
func (m MongoDB) HostAddress() string {
host := m.ServiceName()
if m.Spec.ReplicaSet != nil {
//host = m.Spec.ReplicaSet.Name + "/" + m.Name + "-0." + m.GvrSvcName(m.OffshootName()) + "." + m.Namespace + ".svc"
host = fmt.Sprintf("%v/", m.RepSetName())
return fmt.Sprintf("%v/", m.RepSetName()) + strings.Join(m.Hosts(), ",")
}

return m.ServiceName()
}

func (m MongoDB) Hosts() []string {
hosts := []string{fmt.Sprintf("%v-0.%v.%v.svc", m.Name, m.GvrSvcName(m.OffshootName()), m.Namespace)}
if m.Spec.ReplicaSet != nil {
hosts = make([]string, *m.Spec.Replicas)
for i := 0; i < int(types.Int32(m.Spec.Replicas)); i++ {
if i != 0 {
host += ","
}
host += fmt.Sprintf("%v-%v.%v.%v.svc", m.Name, strconv.Itoa(i), m.GvrSvcName(m.OffshootName()), m.Namespace)
hosts[i] = fmt.Sprintf("%v-%d.%v.%v.svc", m.Name, i, m.GvrSvcName(m.OffshootName()), m.Namespace)
}
}
return host
return hosts
}

// ShardDSN = <shardReplName>/<host1:port>,<host2:port>,<host3:port>
Expand All @@ -230,16 +234,18 @@ func (m MongoDB) ShardDSN(nodeNum int32) string {
if m.Spec.ShardTopology == nil {
return ""
}
host := fmt.Sprintf("%v/", m.ShardRepSetName(nodeNum))
for i := 0; i < int(m.Spec.ShardTopology.Shard.Replicas); i++ {
//host += "," + m.ShardNodeName(nodeNum) + "-" + strconv.Itoa(i) + "." + m.GvrSvcName(m.ShardNodeName(nodeNum)) + "." + m.Namespace + ".svc"
return fmt.Sprintf("%v/", m.ShardRepSetName(nodeNum)) + strings.Join(m.ShardHosts(nodeNum), ",")
}

if i != 0 {
host += ","
}
host += fmt.Sprintf("%v-%v.%v.%v.svc:%v", m.ShardNodeName(nodeNum), strconv.Itoa(i), m.GvrSvcName(m.ShardNodeName(nodeNum)), m.Namespace, MongoDBShardPort)
func (m MongoDB) ShardHosts(nodeNum int32) []string {
if m.Spec.ShardTopology == nil {
return []string{}
}
return host
hosts := make([]string, m.Spec.ShardTopology.Shard.Replicas)
for i := 0; i < int(m.Spec.ShardTopology.Shard.Replicas); i++ {
hosts[i] = fmt.Sprintf("%v-%d.%v.%v.svc:%v", m.ShardNodeName(nodeNum), i, m.GvrSvcName(m.ShardNodeName(nodeNum)), m.Namespace, MongoDBShardPort)
}
return hosts
}

// ConfigSvrDSN = <configSvrReplName>/<host1:port>,<host2:port>,<host3:port>
Expand All @@ -248,15 +254,32 @@ func (m MongoDB) ConfigSvrDSN() string {
if m.Spec.ShardTopology == nil {
return ""
}
// host := m.ConfigSvrRepSetName() + "/" + m.ConfigSvrNodeName() + "-0." + m.GvrSvcName(m.ConfigSvrNodeName()) + "." + m.Namespace + ".svc"
host := fmt.Sprintf("%v/", m.ConfigSvrRepSetName())

return fmt.Sprintf("%v/", m.ConfigSvrRepSetName()) + strings.Join(m.ConfigSvrHosts(), ",")
}

func (m MongoDB) ConfigSvrHosts() []string {
if m.Spec.ShardTopology == nil {
return []string{}
}

hosts := make([]string, m.Spec.ShardTopology.ConfigServer.Replicas)
for i := 0; i < int(m.Spec.ShardTopology.ConfigServer.Replicas); i++ {
if i != 0 {
host += ","
}
host += fmt.Sprintf("%v-%v.%v.%v.svc:%v", m.ConfigSvrNodeName(), strconv.Itoa(i), m.GvrSvcName(m.ConfigSvrNodeName()), m.Namespace, MongoDBShardPort)
hosts[i] = fmt.Sprintf("%v-%d.%v.%v.svc:%v", m.ConfigSvrNodeName(), i, m.GvrSvcName(m.ConfigSvrNodeName()), m.Namespace, MongoDBShardPort)
}
return hosts
}

func (m MongoDB) MongosHosts() []string {
if m.Spec.ShardTopology == nil {
return []string{}
}

hosts := make([]string, m.Spec.ShardTopology.Mongos.Replicas)
for i := 0; i < int(m.Spec.ShardTopology.Mongos.Replicas); i++ {
hosts[i] = fmt.Sprintf("%v-%d.%v.%v.svc:%v", m.MongosNodeName(), i, m.GvrSvcName(m.MongosNodeName()), m.Namespace, MongoDBShardPort)
}
return host
return hosts
}

type mongoDBApp struct {
Expand Down
2 changes: 1 addition & 1 deletion vendor/modules.txt
Expand Up @@ -1122,7 +1122,7 @@ kmodules.xyz/prober/api/v1
# kmodules.xyz/webhook-runtime v0.0.0-20200922211931-8337935590de
kmodules.xyz/webhook-runtime/admission/v1beta1
kmodules.xyz/webhook-runtime/registry/admissionreview/v1beta1
# kubedb.dev/apimachinery v0.14.0-beta.3.0.20201021115037-028d939d696f
# kubedb.dev/apimachinery v0.14.0-beta.3.0.20201021175036-5f17e1b4bd32
kubedb.dev/apimachinery/apis
kubedb.dev/apimachinery/apis/autoscaling
kubedb.dev/apimachinery/apis/autoscaling/v1alpha1
Expand Down

0 comments on commit fa1438e

Please sign in to comment.