diff --git a/CHANGELOG.md b/CHANGELOG.md index cf375b340..f0056061f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ - (Refactor) Configurable throttle inspector - (Bugfix) Skip Replace operation on DBServer if they need to be scaled down - (Feature) Upgrade procedure steps +- (Refactor) Remove API and Core cross-dependency ## [1.2.8](https://github.com/arangodb/kube-arangodb/tree/1.2.8) (2022-02-24) - Do not check License V2 on Community images diff --git a/cmd/admin.go b/cmd/admin.go index 26310c364..241554f1c 100644 --- a/cmd/admin.go +++ b/cmd/admin.go @@ -43,6 +43,7 @@ import ( "github.com/arangodb/go-driver/jwt" "github.com/arangodb/go-driver/v2/connection" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/constants" "github.com/arangodb/kube-arangodb/pkg/util/errors" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" @@ -222,10 +223,10 @@ func getDeploymentAndCredentials(ctx context.Context, // getArangoEndpoint returns ArangoDB endpoint with scheme and port for the given dnsName. func getArangoEndpoint(secure bool, dnsName string) string { if secure { - return "https://" + net.JoinHostPort(dnsName, strconv.Itoa(k8sutil.ArangoPort)) + return "https://" + net.JoinHostPort(dnsName, strconv.Itoa(shared.ArangoPort)) } - return "http://" + net.JoinHostPort(dnsName, strconv.Itoa(k8sutil.ArangoPort)) + return "http://" + net.JoinHostPort(dnsName, strconv.Itoa(shared.ArangoPort)) } // getAgencyLeader returns the leader ID of the agency. diff --git a/cmd/lifecycle.go b/cmd/lifecycle.go index 5928435b5..74e009673 100644 --- a/cmd/lifecycle.go +++ b/cmd/lifecycle.go @@ -38,6 +38,7 @@ import ( "github.com/spf13/cobra" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/constants" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" "github.com/arangodb/kube-arangodb/pkg/util/kclient" @@ -187,7 +188,7 @@ type cmdLifecyclePreStopRunPort struct { // Wait until port 8529 is closed. func (c *cmdLifecyclePreStopRunPort) run(cmd *cobra.Command, args []string) error { - address := net.JoinHostPort("127.0.0.1", strconv.Itoa(k8sutil.ArangoPort)) + address := net.JoinHostPort("127.0.0.1", strconv.Itoa(shared.ArangoPort)) // Get environment namespace := os.Getenv(constants.EnvOperatorPodNamespace) diff --git a/cmd/lifecycle_probes.go b/cmd/lifecycle_probes.go index 937feb2d5..0b503da37 100644 --- a/cmd/lifecycle_probes.go +++ b/cmd/lifecycle_probes.go @@ -29,9 +29,9 @@ import ( "path" "github.com/arangodb/go-driver/jwt" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/deployment/pod" "github.com/arangodb/kube-arangodb/pkg/util/constants" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" "github.com/pkg/errors" "github.com/rs/zerolog/log" "github.com/spf13/cobra" @@ -57,7 +57,7 @@ func init() { f.BoolVarP(&probeInput.SSL, "ssl", "", false, "Determines if SSL is enabled") f.BoolVarP(&probeInput.Auth, "auth", "", false, "Determines if authentication is enabled") f.StringVarP(&probeInput.Endpoint, "endpoint", "", "/_api/version", "Endpoint (path) to call for lifecycle probe") - f.StringVarP(&probeInput.JWTPath, "jwt", "", k8sutil.ClusterJWTSecretVolumeMountDir, "Path to the JWT tokens") + f.StringVarP(&probeInput.JWTPath, "jwt", "", shared.ClusterJWTSecretVolumeMountDir, "Path to the JWT tokens") } func probeClient() *http.Client { @@ -80,7 +80,7 @@ func probeEndpoint(endpoint string) string { proto = "https" } - return fmt.Sprintf("%s://%s:%d%s", proto, "127.0.0.1", k8sutil.ArangoPort, endpoint) + return fmt.Sprintf("%s://%s:%d%s", proto, "127.0.0.1", shared.ArangoPort, endpoint) } func readJWTFile(file string) ([]byte, error) { diff --git a/pkg/apis/deployment/v1/architecture.go b/pkg/apis/deployment/v1/architecture.go index cf998d073..7151417cf 100644 --- a/pkg/apis/deployment/v1/architecture.go +++ b/pkg/apis/deployment/v1/architecture.go @@ -23,8 +23,7 @@ package v1 import ( "runtime" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" - + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/pkg/errors" core "k8s.io/api/core/v1" ) @@ -77,7 +76,7 @@ func (a ArangoDeploymentArchitectureType) AsNodeSelectorRequirement() core.NodeS return core.NodeSelectorTerm{ MatchExpressions: []core.NodeSelectorRequirement{ { - Key: k8sutil.NodeArchAffinityLabel, + Key: shared.NodeArchAffinityLabel, Operator: "In", Values: []string{string(a)}, }, @@ -90,7 +89,7 @@ func GetArchsFromNodeSelector(selectors []core.NodeSelectorTerm) map[ArangoDeplo for _, selector := range selectors { if selector.MatchExpressions != nil { for _, req := range selector.MatchExpressions { - if req.Key == k8sutil.NodeArchAffinityLabel || req.Key == k8sutil.NodeArchAffinityLabelBeta { + if req.Key == shared.NodeArchAffinityLabel || req.Key == shared.NodeArchAffinityLabelBeta { for _, arch := range req.Values { result[ArangoDeploymentArchitectureType(arch)] = true } diff --git a/pkg/apis/deployment/v1/authentication_spec.go b/pkg/apis/deployment/v1/authentication_spec.go index 791c1b6fc..2f5c5cac2 100644 --- a/pkg/apis/deployment/v1/authentication_spec.go +++ b/pkg/apis/deployment/v1/authentication_spec.go @@ -21,9 +21,9 @@ package v1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // AuthenticationSpec holds authentication specific configuration settings @@ -53,7 +53,7 @@ func (s AuthenticationSpec) Validate(required bool) error { return errors.WithStack(errors.Wrap(ValidationError, "JWT secret is required")) } if s.IsAuthenticated() { - if err := k8sutil.ValidateResourceName(s.GetJWTSecretName()); err != nil { + if err := shared.ValidateResourceName(s.GetJWTSecretName()); err != nil { return errors.WithStack(err) } } diff --git a/pkg/apis/deployment/v1/bootstrap.go b/pkg/apis/deployment/v1/bootstrap.go index 8777f4f43..9b8ecbab0 100644 --- a/pkg/apis/deployment/v1/bootstrap.go +++ b/pkg/apis/deployment/v1/bootstrap.go @@ -23,7 +23,7 @@ package v1 import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" ) const ( @@ -76,7 +76,7 @@ func (s PasswordSecretNameList) GetSecretName(user string) PasswordSecretName { // getSecretNameForUserPassword returns the default secret name for the given user func getSecretNameForUserPassword(deploymentname, username string) PasswordSecretName { - return PasswordSecretName(k8sutil.FixupResourceName(deploymentname + "-" + username + "-password")) + return PasswordSecretName(shared.FixupResourceName(deploymentname + "-" + username + "-password")) } // Validate the specification. @@ -92,7 +92,7 @@ func (b *BootstrapSpec) Validate() error { return errors.Newf("magic value None not allowed for %s", username) } } else { - if err := k8sutil.ValidateResourceName(string(secretname)); err != nil { + if err := shared.ValidateResourceName(string(secretname)); err != nil { return errors.WithStack(err) } } diff --git a/pkg/apis/deployment/v1/deployment_metrics_spec.go b/pkg/apis/deployment/v1/deployment_metrics_spec.go index 5f741db09..f3a00a6a3 100644 --- a/pkg/apis/deployment/v1/deployment_metrics_spec.go +++ b/pkg/apis/deployment/v1/deployment_metrics_spec.go @@ -22,8 +22,8 @@ package v1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" v1 "k8s.io/api/core/v1" ) @@ -44,9 +44,9 @@ func (m MetricsMode) New() *MetricsMode { func (m MetricsMode) GetMetricsEndpoint() string { switch m { case MetricsModeInternal: - return k8sutil.ArangoExporterInternalEndpoint + return shared.ArangoExporterInternalEndpoint default: - return k8sutil.ArangoExporterDefaultEndpoint + return shared.ArangoExporterDefaultEndpoint } } @@ -94,7 +94,7 @@ func (s *MetricsSpec) IsTLS() bool { func (s *MetricsSpec) GetPort() uint16 { if s == nil || s.Port == nil { - return k8sutil.ArangoExporterPort + return shared.ArangoExporterPort } return *s.Port @@ -156,7 +156,7 @@ func (s *MetricsSpec) SetDefaultsFrom(source MetricsSpec) { func (s *MetricsSpec) Validate() error { if s.HasJWTTokenSecretName() { - if err := k8sutil.ValidateResourceName(s.GetJWTTokenSecretName()); err != nil { + if err := shared.ValidateResourceName(s.GetJWTTokenSecretName()); err != nil { return err } } diff --git a/pkg/apis/deployment/v1/deployment_spec.go b/pkg/apis/deployment/v1/deployment_spec.go index ce6868a2b..d9040e81e 100644 --- a/pkg/apis/deployment/v1/deployment_spec.go +++ b/pkg/apis/deployment/v1/deployment_spec.go @@ -28,10 +28,10 @@ import ( core "k8s.io/api/core/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/handlers/utils" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) var ( @@ -547,12 +547,12 @@ func (s DeploymentSpec) Checksum() (string, error) { func (s DeploymentSpec) GetCoreContainers(group ServerGroup) utils.StringList { groupSpec := s.GetServerGroupSpec(group) if len(groupSpec.SidecarCoreNames) == 0 { - return utils.StringList{k8sutil.ServerContainerName} + return utils.StringList{shared.ServerContainerName} } result := make(utils.StringList, 0, len(groupSpec.SidecarCoreNames)+1) - if !utils.StringList(groupSpec.SidecarCoreNames).Has(k8sutil.ServerContainerName) { - result = append(result, k8sutil.ServerContainerName) + if !utils.StringList(groupSpec.SidecarCoreNames).Has(shared.ServerContainerName) { + result = append(result, shared.ServerContainerName) } result = append(result, groupSpec.SidecarCoreNames...) diff --git a/pkg/apis/deployment/v1/license_spec.go b/pkg/apis/deployment/v1/license_spec.go index a5b56a09c..f98584d0b 100644 --- a/pkg/apis/deployment/v1/license_spec.go +++ b/pkg/apis/deployment/v1/license_spec.go @@ -21,8 +21,8 @@ package v1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // LicenseSpec holds the license related information @@ -43,7 +43,7 @@ func (s LicenseSpec) GetSecretName() string { // Validate validates the LicenseSpec func (s LicenseSpec) Validate() error { if s.HasSecretName() { - if err := k8sutil.ValidateResourceName(s.GetSecretName()); err != nil { + if err := shared.ValidateResourceName(s.GetSecretName()); err != nil { return err } } diff --git a/pkg/apis/deployment/v1/member_status.go b/pkg/apis/deployment/v1/member_status.go index 3201b88cd..573f38df0 100644 --- a/pkg/apis/deployment/v1/member_status.go +++ b/pkg/apis/deployment/v1/member_status.go @@ -23,11 +23,10 @@ package v1 import ( "time" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" - "k8s.io/apimachinery/pkg/types" driver "github.com/arangodb/go-driver" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -174,5 +173,5 @@ func (s MemberStatus) IsNotReadySince(timestamp time.Time) bool { // ArangoMemberName create member name from given member func (s MemberStatus) ArangoMemberName(deploymentName string, group ServerGroup) string { - return k8sutil.CreatePodHostName(deploymentName, group.AsRole(), s.ID) + return shared.CreatePodHostName(deploymentName, group.AsRole(), s.ID) } diff --git a/pkg/apis/deployment/v1/rocksdb_spec.go b/pkg/apis/deployment/v1/rocksdb_spec.go index 7624caa37..b9f7fcf6d 100644 --- a/pkg/apis/deployment/v1/rocksdb_spec.go +++ b/pkg/apis/deployment/v1/rocksdb_spec.go @@ -21,9 +21,9 @@ package v1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // RocksDBEncryptionSpec holds rocksdb encryption at rest specific configuration settings @@ -55,7 +55,7 @@ func (s RocksDBSpec) IsEncrypted() bool { // Validate the given spec func (s RocksDBSpec) Validate() error { - if err := k8sutil.ValidateOptionalResourceName(s.Encryption.GetKeySecretName()); err != nil { + if err := shared.ValidateOptionalResourceName(s.Encryption.GetKeySecretName()); err != nil { return errors.WithStack(err) } return nil diff --git a/pkg/apis/deployment/v1/server_group_spec.go b/pkg/apis/deployment/v1/server_group_spec.go index c6791d5f4..eee9f55c0 100644 --- a/pkg/apis/deployment/v1/server_group_spec.go +++ b/pkg/apis/deployment/v1/server_group_spec.go @@ -35,7 +35,6 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util" arangodOptions "github.com/arangodb/kube-arangodb/pkg/util/arangod/options" arangosyncOptions "github.com/arangodb/kube-arangodb/pkg/util/arangosync/options" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // ServerGroupShutdownMethod enum of possible shutdown methods @@ -492,12 +491,12 @@ func (s ServerGroupSpec) Validate(group ServerGroup, used bool, mode DeploymentM return errors.WithStack(errors.Wrapf(ValidationError, "Invalid count value %d. Expected 1", s.GetCount())) } if name := s.GetServiceAccountName(); name != "" { - if err := k8sutil.ValidateOptionalResourceName(name); err != nil { + if err := shared.ValidateOptionalResourceName(name); err != nil { return errors.WithStack(errors.Wrapf(ValidationError, "Invalid serviceAccountName: %s", err)) } } if name := s.GetStorageClassName(); name != "" { - if err := k8sutil.ValidateOptionalResourceName(name); err != nil { + if err := shared.ValidateOptionalResourceName(name); err != nil { return errors.WithStack(errors.Wrapf(ValidationError, "Invalid storageClassName: %s", err)) } } diff --git a/pkg/apis/deployment/v1/server_group_volume.go b/pkg/apis/deployment/v1/server_group_volume.go index 94c48ae2a..16ce7ff0e 100644 --- a/pkg/apis/deployment/v1/server_group_volume.go +++ b/pkg/apis/deployment/v1/server_group_volume.go @@ -28,21 +28,19 @@ import ( "github.com/arangodb/kube-arangodb/pkg/apis/shared" sharedv1 "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" - core "k8s.io/api/core/v1" ) var ( restrictedVolumeNames = []string{ - k8sutil.ArangodVolumeName, - k8sutil.TlsKeyfileVolumeName, - k8sutil.RocksdbEncryptionVolumeName, - k8sutil.ExporterJWTVolumeName, - k8sutil.ClusterJWTSecretVolumeName, - k8sutil.LifecycleVolumeName, - k8sutil.FoxxAppEphemeralVolumeName, - k8sutil.TMPEphemeralVolumeName, + shared.ArangodVolumeName, + shared.TlsKeyfileVolumeName, + shared.RocksdbEncryptionVolumeName, + shared.ExporterJWTVolumeName, + shared.ClusterJWTSecretVolumeName, + shared.LifecycleVolumeName, + shared.FoxxAppEphemeralVolumeName, + shared.TMPEphemeralVolumeName, } ) diff --git a/pkg/apis/deployment/v1/sync_authentication_spec.go b/pkg/apis/deployment/v1/sync_authentication_spec.go index 185c61635..60d5de418 100644 --- a/pkg/apis/deployment/v1/sync_authentication_spec.go +++ b/pkg/apis/deployment/v1/sync_authentication_spec.go @@ -21,9 +21,9 @@ package v1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // SyncAuthenticationSpec holds dc2dc sync authentication specific configuration settings @@ -44,10 +44,10 @@ func (s SyncAuthenticationSpec) GetClientCASecretName() string { // Validate the given spec func (s SyncAuthenticationSpec) Validate() error { - if err := k8sutil.ValidateResourceName(s.GetJWTSecretName()); err != nil { + if err := shared.ValidateResourceName(s.GetJWTSecretName()); err != nil { return errors.WithStack(err) } - if err := k8sutil.ValidateResourceName(s.GetClientCASecretName()); err != nil { + if err := shared.ValidateResourceName(s.GetClientCASecretName()); err != nil { return errors.WithStack(err) } return nil diff --git a/pkg/apis/deployment/v1/sync_external_access_spec.go b/pkg/apis/deployment/v1/sync_external_access_spec.go index d424ad2f9..1e143c629 100644 --- a/pkg/apis/deployment/v1/sync_external_access_spec.go +++ b/pkg/apis/deployment/v1/sync_external_access_spec.go @@ -25,9 +25,8 @@ import ( "net/url" "strconv" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/errors" - - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // SyncExternalAccessSpec holds configuration for the external access provided for the sync deployment. @@ -69,7 +68,7 @@ func (s SyncExternalAccessSpec) Validate() error { } } for _, name := range s.AccessPackageSecretNames { - if err := k8sutil.ValidateResourceName(name); err != nil { + if err := shared.ValidateResourceName(name); err != nil { return errors.WithStack(errors.Newf("Invalid name '%s' in accessPackageSecretNames: %s", name, err)) } } diff --git a/pkg/apis/deployment/v1/sync_monitoring_spec.go b/pkg/apis/deployment/v1/sync_monitoring_spec.go index 0571af728..a3ec07f6a 100644 --- a/pkg/apis/deployment/v1/sync_monitoring_spec.go +++ b/pkg/apis/deployment/v1/sync_monitoring_spec.go @@ -21,9 +21,9 @@ package v1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // MonitoringSpec holds monitoring specific configuration settings @@ -38,7 +38,7 @@ func (s MonitoringSpec) GetTokenSecretName() string { // Validate the given spec func (s MonitoringSpec) Validate() error { - if err := k8sutil.ValidateOptionalResourceName(s.GetTokenSecretName()); err != nil { + if err := shared.ValidateOptionalResourceName(s.GetTokenSecretName()); err != nil { return errors.WithStack(err) } return nil diff --git a/pkg/apis/deployment/v1/tls_spec.go b/pkg/apis/deployment/v1/tls_spec.go index 2991827c2..b83f0f57d 100644 --- a/pkg/apis/deployment/v1/tls_spec.go +++ b/pkg/apis/deployment/v1/tls_spec.go @@ -25,8 +25,8 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" "github.com/arangodb/kube-arangodb/pkg/util/validation" ) @@ -115,7 +115,7 @@ func (s TLSSpec) GetParsedAltNames() (dnsNames, ipAddresses, emailAddresses []st // Validate the given spec func (s TLSSpec) Validate() error { if s.IsSecure() { - if err := k8sutil.ValidateResourceName(s.GetCASecretName()); err != nil { + if err := shared.ValidateResourceName(s.GetCASecretName()); err != nil { return errors.WithStack(err) } if _, _, _, err := s.GetParsedAltNames(); err != nil { diff --git a/pkg/apis/deployment/v2alpha1/architecture.go b/pkg/apis/deployment/v2alpha1/architecture.go index 2f1cf2974..5939d64fd 100644 --- a/pkg/apis/deployment/v2alpha1/architecture.go +++ b/pkg/apis/deployment/v2alpha1/architecture.go @@ -23,8 +23,7 @@ package v2alpha1 import ( "runtime" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" - + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/pkg/errors" core "k8s.io/api/core/v1" ) @@ -77,7 +76,7 @@ func (a ArangoDeploymentArchitectureType) AsNodeSelectorRequirement() core.NodeS return core.NodeSelectorTerm{ MatchExpressions: []core.NodeSelectorRequirement{ { - Key: k8sutil.NodeArchAffinityLabel, + Key: shared.NodeArchAffinityLabel, Operator: "In", Values: []string{string(a)}, }, @@ -90,7 +89,7 @@ func GetArchsFromNodeSelector(selectors []core.NodeSelectorTerm) map[ArangoDeplo for _, selector := range selectors { if selector.MatchExpressions != nil { for _, req := range selector.MatchExpressions { - if req.Key == k8sutil.NodeArchAffinityLabel || req.Key == k8sutil.NodeArchAffinityLabelBeta { + if req.Key == shared.NodeArchAffinityLabel || req.Key == shared.NodeArchAffinityLabelBeta { for _, arch := range req.Values { result[ArangoDeploymentArchitectureType(arch)] = true } diff --git a/pkg/apis/deployment/v2alpha1/authentication_spec.go b/pkg/apis/deployment/v2alpha1/authentication_spec.go index d6f338bc7..c7ab9b006 100644 --- a/pkg/apis/deployment/v2alpha1/authentication_spec.go +++ b/pkg/apis/deployment/v2alpha1/authentication_spec.go @@ -21,9 +21,9 @@ package v2alpha1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // AuthenticationSpec holds authentication specific configuration settings @@ -53,7 +53,7 @@ func (s AuthenticationSpec) Validate(required bool) error { return errors.WithStack(errors.Wrap(ValidationError, "JWT secret is required")) } if s.IsAuthenticated() { - if err := k8sutil.ValidateResourceName(s.GetJWTSecretName()); err != nil { + if err := shared.ValidateResourceName(s.GetJWTSecretName()); err != nil { return errors.WithStack(err) } } diff --git a/pkg/apis/deployment/v2alpha1/bootstrap.go b/pkg/apis/deployment/v2alpha1/bootstrap.go index 2689f2556..126f86461 100644 --- a/pkg/apis/deployment/v2alpha1/bootstrap.go +++ b/pkg/apis/deployment/v2alpha1/bootstrap.go @@ -23,7 +23,7 @@ package v2alpha1 import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" ) const ( @@ -76,7 +76,7 @@ func (s PasswordSecretNameList) GetSecretName(user string) PasswordSecretName { // getSecretNameForUserPassword returns the default secret name for the given user func getSecretNameForUserPassword(deploymentname, username string) PasswordSecretName { - return PasswordSecretName(k8sutil.FixupResourceName(deploymentname + "-" + username + "-password")) + return PasswordSecretName(shared.FixupResourceName(deploymentname + "-" + username + "-password")) } // Validate the specification. @@ -92,7 +92,7 @@ func (b *BootstrapSpec) Validate() error { return errors.Newf("magic value None not allowed for %s", username) } } else { - if err := k8sutil.ValidateResourceName(string(secretname)); err != nil { + if err := shared.ValidateResourceName(string(secretname)); err != nil { return errors.WithStack(err) } } diff --git a/pkg/apis/deployment/v2alpha1/deployment_metrics_spec.go b/pkg/apis/deployment/v2alpha1/deployment_metrics_spec.go index 7a53fdc2e..9a34ec2bd 100644 --- a/pkg/apis/deployment/v2alpha1/deployment_metrics_spec.go +++ b/pkg/apis/deployment/v2alpha1/deployment_metrics_spec.go @@ -22,8 +22,8 @@ package v2alpha1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" v1 "k8s.io/api/core/v1" ) @@ -44,9 +44,9 @@ func (m MetricsMode) New() *MetricsMode { func (m MetricsMode) GetMetricsEndpoint() string { switch m { case MetricsModeInternal: - return k8sutil.ArangoExporterInternalEndpoint + return shared.ArangoExporterInternalEndpoint default: - return k8sutil.ArangoExporterDefaultEndpoint + return shared.ArangoExporterDefaultEndpoint } } @@ -94,7 +94,7 @@ func (s *MetricsSpec) IsTLS() bool { func (s *MetricsSpec) GetPort() uint16 { if s == nil || s.Port == nil { - return k8sutil.ArangoExporterPort + return shared.ArangoExporterPort } return *s.Port @@ -156,7 +156,7 @@ func (s *MetricsSpec) SetDefaultsFrom(source MetricsSpec) { func (s *MetricsSpec) Validate() error { if s.HasJWTTokenSecretName() { - if err := k8sutil.ValidateResourceName(s.GetJWTTokenSecretName()); err != nil { + if err := shared.ValidateResourceName(s.GetJWTTokenSecretName()); err != nil { return err } } diff --git a/pkg/apis/deployment/v2alpha1/deployment_spec.go b/pkg/apis/deployment/v2alpha1/deployment_spec.go index 874cb361a..19bb9395f 100644 --- a/pkg/apis/deployment/v2alpha1/deployment_spec.go +++ b/pkg/apis/deployment/v2alpha1/deployment_spec.go @@ -28,10 +28,10 @@ import ( core "k8s.io/api/core/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/handlers/utils" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) var ( @@ -547,12 +547,12 @@ func (s DeploymentSpec) Checksum() (string, error) { func (s DeploymentSpec) GetCoreContainers(group ServerGroup) utils.StringList { groupSpec := s.GetServerGroupSpec(group) if len(groupSpec.SidecarCoreNames) == 0 { - return utils.StringList{k8sutil.ServerContainerName} + return utils.StringList{shared.ServerContainerName} } result := make(utils.StringList, 0, len(groupSpec.SidecarCoreNames)+1) - if !utils.StringList(groupSpec.SidecarCoreNames).Has(k8sutil.ServerContainerName) { - result = append(result, k8sutil.ServerContainerName) + if !utils.StringList(groupSpec.SidecarCoreNames).Has(shared.ServerContainerName) { + result = append(result, shared.ServerContainerName) } result = append(result, groupSpec.SidecarCoreNames...) diff --git a/pkg/apis/deployment/v2alpha1/license_spec.go b/pkg/apis/deployment/v2alpha1/license_spec.go index 49607d3a5..951941553 100644 --- a/pkg/apis/deployment/v2alpha1/license_spec.go +++ b/pkg/apis/deployment/v2alpha1/license_spec.go @@ -21,8 +21,8 @@ package v2alpha1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // LicenseSpec holds the license related information @@ -43,7 +43,7 @@ func (s LicenseSpec) GetSecretName() string { // Validate validates the LicenseSpec func (s LicenseSpec) Validate() error { if s.HasSecretName() { - if err := k8sutil.ValidateResourceName(s.GetSecretName()); err != nil { + if err := shared.ValidateResourceName(s.GetSecretName()); err != nil { return err } } diff --git a/pkg/apis/deployment/v2alpha1/member_status.go b/pkg/apis/deployment/v2alpha1/member_status.go index 78724c469..a71d15bcf 100644 --- a/pkg/apis/deployment/v2alpha1/member_status.go +++ b/pkg/apis/deployment/v2alpha1/member_status.go @@ -23,11 +23,10 @@ package v2alpha1 import ( "time" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" - "k8s.io/apimachinery/pkg/types" driver "github.com/arangodb/go-driver" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -174,5 +173,5 @@ func (s MemberStatus) IsNotReadySince(timestamp time.Time) bool { // ArangoMemberName create member name from given member func (s MemberStatus) ArangoMemberName(deploymentName string, group ServerGroup) string { - return k8sutil.CreatePodHostName(deploymentName, group.AsRole(), s.ID) + return shared.CreatePodHostName(deploymentName, group.AsRole(), s.ID) } diff --git a/pkg/apis/deployment/v2alpha1/rocksdb_spec.go b/pkg/apis/deployment/v2alpha1/rocksdb_spec.go index 5d614d1e6..35221fe25 100644 --- a/pkg/apis/deployment/v2alpha1/rocksdb_spec.go +++ b/pkg/apis/deployment/v2alpha1/rocksdb_spec.go @@ -21,9 +21,9 @@ package v2alpha1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // RocksDBEncryptionSpec holds rocksdb encryption at rest specific configuration settings @@ -55,7 +55,7 @@ func (s RocksDBSpec) IsEncrypted() bool { // Validate the given spec func (s RocksDBSpec) Validate() error { - if err := k8sutil.ValidateOptionalResourceName(s.Encryption.GetKeySecretName()); err != nil { + if err := shared.ValidateOptionalResourceName(s.Encryption.GetKeySecretName()); err != nil { return errors.WithStack(err) } return nil diff --git a/pkg/apis/deployment/v2alpha1/server_group_spec.go b/pkg/apis/deployment/v2alpha1/server_group_spec.go index e1af3e143..f3c7a76f9 100644 --- a/pkg/apis/deployment/v2alpha1/server_group_spec.go +++ b/pkg/apis/deployment/v2alpha1/server_group_spec.go @@ -35,7 +35,6 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util" arangodOptions "github.com/arangodb/kube-arangodb/pkg/util/arangod/options" arangosyncOptions "github.com/arangodb/kube-arangodb/pkg/util/arangosync/options" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // ServerGroupShutdownMethod enum of possible shutdown methods @@ -492,12 +491,12 @@ func (s ServerGroupSpec) Validate(group ServerGroup, used bool, mode DeploymentM return errors.WithStack(errors.Wrapf(ValidationError, "Invalid count value %d. Expected 1", s.GetCount())) } if name := s.GetServiceAccountName(); name != "" { - if err := k8sutil.ValidateOptionalResourceName(name); err != nil { + if err := shared.ValidateOptionalResourceName(name); err != nil { return errors.WithStack(errors.Wrapf(ValidationError, "Invalid serviceAccountName: %s", err)) } } if name := s.GetStorageClassName(); name != "" { - if err := k8sutil.ValidateOptionalResourceName(name); err != nil { + if err := shared.ValidateOptionalResourceName(name); err != nil { return errors.WithStack(errors.Wrapf(ValidationError, "Invalid storageClassName: %s", err)) } } diff --git a/pkg/apis/deployment/v2alpha1/server_group_volume.go b/pkg/apis/deployment/v2alpha1/server_group_volume.go index 397b2859a..b7abab579 100644 --- a/pkg/apis/deployment/v2alpha1/server_group_volume.go +++ b/pkg/apis/deployment/v2alpha1/server_group_volume.go @@ -28,21 +28,19 @@ import ( "github.com/arangodb/kube-arangodb/pkg/apis/shared" sharedv1 "github.com/arangodb/kube-arangodb/pkg/apis/shared/v1" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" - core "k8s.io/api/core/v1" ) var ( restrictedVolumeNames = []string{ - k8sutil.ArangodVolumeName, - k8sutil.TlsKeyfileVolumeName, - k8sutil.RocksdbEncryptionVolumeName, - k8sutil.ExporterJWTVolumeName, - k8sutil.ClusterJWTSecretVolumeName, - k8sutil.LifecycleVolumeName, - k8sutil.FoxxAppEphemeralVolumeName, - k8sutil.TMPEphemeralVolumeName, + shared.ArangodVolumeName, + shared.TlsKeyfileVolumeName, + shared.RocksdbEncryptionVolumeName, + shared.ExporterJWTVolumeName, + shared.ClusterJWTSecretVolumeName, + shared.LifecycleVolumeName, + shared.FoxxAppEphemeralVolumeName, + shared.TMPEphemeralVolumeName, } ) diff --git a/pkg/apis/deployment/v2alpha1/sync_authentication_spec.go b/pkg/apis/deployment/v2alpha1/sync_authentication_spec.go index 436473d91..44ffe7d87 100644 --- a/pkg/apis/deployment/v2alpha1/sync_authentication_spec.go +++ b/pkg/apis/deployment/v2alpha1/sync_authentication_spec.go @@ -21,9 +21,9 @@ package v2alpha1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // SyncAuthenticationSpec holds dc2dc sync authentication specific configuration settings @@ -44,10 +44,10 @@ func (s SyncAuthenticationSpec) GetClientCASecretName() string { // Validate the given spec func (s SyncAuthenticationSpec) Validate() error { - if err := k8sutil.ValidateResourceName(s.GetJWTSecretName()); err != nil { + if err := shared.ValidateResourceName(s.GetJWTSecretName()); err != nil { return errors.WithStack(err) } - if err := k8sutil.ValidateResourceName(s.GetClientCASecretName()); err != nil { + if err := shared.ValidateResourceName(s.GetClientCASecretName()); err != nil { return errors.WithStack(err) } return nil diff --git a/pkg/apis/deployment/v2alpha1/sync_external_access_spec.go b/pkg/apis/deployment/v2alpha1/sync_external_access_spec.go index f09d75407..515ec71e6 100644 --- a/pkg/apis/deployment/v2alpha1/sync_external_access_spec.go +++ b/pkg/apis/deployment/v2alpha1/sync_external_access_spec.go @@ -25,9 +25,8 @@ import ( "net/url" "strconv" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/errors" - - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // SyncExternalAccessSpec holds configuration for the external access provided for the sync deployment. @@ -69,7 +68,7 @@ func (s SyncExternalAccessSpec) Validate() error { } } for _, name := range s.AccessPackageSecretNames { - if err := k8sutil.ValidateResourceName(name); err != nil { + if err := shared.ValidateResourceName(name); err != nil { return errors.WithStack(errors.Newf("Invalid name '%s' in accessPackageSecretNames: %s", name, err)) } } diff --git a/pkg/apis/deployment/v2alpha1/sync_monitoring_spec.go b/pkg/apis/deployment/v2alpha1/sync_monitoring_spec.go index 53c4c76f1..2cf73a968 100644 --- a/pkg/apis/deployment/v2alpha1/sync_monitoring_spec.go +++ b/pkg/apis/deployment/v2alpha1/sync_monitoring_spec.go @@ -21,9 +21,9 @@ package v2alpha1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // MonitoringSpec holds monitoring specific configuration settings @@ -38,7 +38,7 @@ func (s MonitoringSpec) GetTokenSecretName() string { // Validate the given spec func (s MonitoringSpec) Validate() error { - if err := k8sutil.ValidateOptionalResourceName(s.GetTokenSecretName()); err != nil { + if err := shared.ValidateOptionalResourceName(s.GetTokenSecretName()); err != nil { return errors.WithStack(err) } return nil diff --git a/pkg/apis/deployment/v2alpha1/tls_spec.go b/pkg/apis/deployment/v2alpha1/tls_spec.go index 11893123a..d881c04be 100644 --- a/pkg/apis/deployment/v2alpha1/tls_spec.go +++ b/pkg/apis/deployment/v2alpha1/tls_spec.go @@ -25,8 +25,8 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" "github.com/arangodb/kube-arangodb/pkg/util/validation" ) @@ -115,7 +115,7 @@ func (s TLSSpec) GetParsedAltNames() (dnsNames, ipAddresses, emailAddresses []st // Validate the given spec func (s TLSSpec) Validate() error { if s.IsSecure() { - if err := k8sutil.ValidateResourceName(s.GetCASecretName()); err != nil { + if err := shared.ValidateResourceName(s.GetCASecretName()); err != nil { return errors.WithStack(err) } if _, _, _, err := s.GetParsedAltNames(); err != nil { diff --git a/pkg/apis/replication/v1/endpoint_authentication_spec.go b/pkg/apis/replication/v1/endpoint_authentication_spec.go index 85f70635a..096b82215 100644 --- a/pkg/apis/replication/v1/endpoint_authentication_spec.go +++ b/pkg/apis/replication/v1/endpoint_authentication_spec.go @@ -21,9 +21,9 @@ package v1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // EndpointAuthenticationSpec contains the specification to authentication with the syncmasters @@ -52,10 +52,10 @@ func (s EndpointAuthenticationSpec) GetUserSecretName() string { // Validate the given spec, returning an error on validation // problems or nil if all ok. func (s EndpointAuthenticationSpec) Validate(keyfileSecretNameRequired bool) error { - if err := k8sutil.ValidateOptionalResourceName(s.GetKeyfileSecretName()); err != nil { + if err := shared.ValidateOptionalResourceName(s.GetKeyfileSecretName()); err != nil { return errors.WithStack(err) } - if err := k8sutil.ValidateOptionalResourceName(s.GetUserSecretName()); err != nil { + if err := shared.ValidateOptionalResourceName(s.GetUserSecretName()); err != nil { return errors.WithStack(err) } if keyfileSecretNameRequired && s.GetKeyfileSecretName() == "" { diff --git a/pkg/apis/replication/v1/endpoint_spec.go b/pkg/apis/replication/v1/endpoint_spec.go index dd6d4b09f..aeb9a851a 100644 --- a/pkg/apis/replication/v1/endpoint_spec.go +++ b/pkg/apis/replication/v1/endpoint_spec.go @@ -25,8 +25,8 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // EndpointSpec contains the specification used to reach the syncmasters @@ -56,7 +56,7 @@ func (s EndpointSpec) HasDeploymentName() bool { // Validate the given spec, returning an error on validation // problems or nil if all ok. func (s EndpointSpec) Validate(isSourceEndpoint bool) error { - if err := k8sutil.ValidateOptionalResourceName(s.GetDeploymentName()); err != nil { + if err := shared.ValidateOptionalResourceName(s.GetDeploymentName()); err != nil { return errors.WithStack(err) } for _, ep := range s.MasterEndpoint { diff --git a/pkg/apis/replication/v1/endpoint_tls_spec.go b/pkg/apis/replication/v1/endpoint_tls_spec.go index d06ca2329..7ed98518a 100644 --- a/pkg/apis/replication/v1/endpoint_tls_spec.go +++ b/pkg/apis/replication/v1/endpoint_tls_spec.go @@ -21,9 +21,9 @@ package v1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // EndpointTLSSpec contains the specification regarding the TLS connection to the syncmasters @@ -41,7 +41,7 @@ func (s EndpointTLSSpec) GetCASecretName() string { // Validate the given spec, returning an error on validation // problems or nil if all ok. func (s EndpointTLSSpec) Validate(caSecretNameRequired bool) error { - if err := k8sutil.ValidateOptionalResourceName(s.GetCASecretName()); err != nil { + if err := shared.ValidateOptionalResourceName(s.GetCASecretName()); err != nil { return errors.WithStack(err) } if caSecretNameRequired && s.GetCASecretName() == "" { diff --git a/pkg/apis/replication/v2alpha1/endpoint_authentication_spec.go b/pkg/apis/replication/v2alpha1/endpoint_authentication_spec.go index 0c567ba23..c8a76563d 100644 --- a/pkg/apis/replication/v2alpha1/endpoint_authentication_spec.go +++ b/pkg/apis/replication/v2alpha1/endpoint_authentication_spec.go @@ -21,9 +21,9 @@ package v2alpha1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // EndpointAuthenticationSpec contains the specification to authentication with the syncmasters @@ -52,10 +52,10 @@ func (s EndpointAuthenticationSpec) GetUserSecretName() string { // Validate the given spec, returning an error on validation // problems or nil if all ok. func (s EndpointAuthenticationSpec) Validate(keyfileSecretNameRequired bool) error { - if err := k8sutil.ValidateOptionalResourceName(s.GetKeyfileSecretName()); err != nil { + if err := shared.ValidateOptionalResourceName(s.GetKeyfileSecretName()); err != nil { return errors.WithStack(err) } - if err := k8sutil.ValidateOptionalResourceName(s.GetUserSecretName()); err != nil { + if err := shared.ValidateOptionalResourceName(s.GetUserSecretName()); err != nil { return errors.WithStack(err) } if keyfileSecretNameRequired && s.GetKeyfileSecretName() == "" { diff --git a/pkg/apis/replication/v2alpha1/endpoint_spec.go b/pkg/apis/replication/v2alpha1/endpoint_spec.go index 0db894356..4473b6376 100644 --- a/pkg/apis/replication/v2alpha1/endpoint_spec.go +++ b/pkg/apis/replication/v2alpha1/endpoint_spec.go @@ -25,8 +25,8 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // EndpointSpec contains the specification used to reach the syncmasters @@ -56,7 +56,7 @@ func (s EndpointSpec) HasDeploymentName() bool { // Validate the given spec, returning an error on validation // problems or nil if all ok. func (s EndpointSpec) Validate(isSourceEndpoint bool) error { - if err := k8sutil.ValidateOptionalResourceName(s.GetDeploymentName()); err != nil { + if err := shared.ValidateOptionalResourceName(s.GetDeploymentName()); err != nil { return errors.WithStack(err) } for _, ep := range s.MasterEndpoint { diff --git a/pkg/apis/replication/v2alpha1/endpoint_tls_spec.go b/pkg/apis/replication/v2alpha1/endpoint_tls_spec.go index 85155cd5a..f22a327b7 100644 --- a/pkg/apis/replication/v2alpha1/endpoint_tls_spec.go +++ b/pkg/apis/replication/v2alpha1/endpoint_tls_spec.go @@ -21,9 +21,9 @@ package v2alpha1 import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // EndpointTLSSpec contains the specification regarding the TLS connection to the syncmasters @@ -41,7 +41,7 @@ func (s EndpointTLSSpec) GetCASecretName() string { // Validate the given spec, returning an error on validation // problems or nil if all ok. func (s EndpointTLSSpec) Validate(caSecretNameRequired bool) error { - if err := k8sutil.ValidateOptionalResourceName(s.GetCASecretName()); err != nil { + if err := shared.ValidateOptionalResourceName(s.GetCASecretName()); err != nil { return errors.WithStack(err) } if caSecretNameRequired && s.GetCASecretName() == "" { diff --git a/pkg/util/k8sutil/constants.go b/pkg/apis/shared/constants.go similarity index 52% rename from pkg/util/k8sutil/constants.go rename to pkg/apis/shared/constants.go index bf470319e..e49c033b9 100644 --- a/pkg/util/k8sutil/constants.go +++ b/pkg/apis/shared/constants.go @@ -18,7 +18,7 @@ // Copyright holder is ArangoDB GmbH, Cologne, Germany // -package k8sutil +package shared const ( // Arango constants @@ -37,6 +37,31 @@ const ( ClusterIPNone = "None" TopologyKeyHostname = "kubernetes.io/hostname" + NodeArchAffinityLabel = "kubernetes.io/arch" + NodeArchAffinityLabelBeta = "beta.kubernetes.io/arch" + // Internal constants ImageIDAndVersionRole = "id" // Role use by identification pods + + // Pod constants + ServerContainerName = "server" + ExporterContainerName = "exporter" + ArangodVolumeName = "arangod-data" + TlsKeyfileVolumeName = "tls-keyfile" + ClientAuthCAVolumeName = "client-auth-ca" + ClusterJWTSecretVolumeName = "cluster-jwt" + MasterJWTSecretVolumeName = "master-jwt" + LifecycleVolumeName = "lifecycle" + FoxxAppEphemeralVolumeName = "ephemeral-apps" + TMPEphemeralVolumeName = "ephemeral-tmp" + RocksdbEncryptionVolumeName = "rocksdb-encryption" + ExporterJWTVolumeName = "exporter-jwt" + ArangodVolumeMountDir = "/data" + RocksDBEncryptionVolumeMountDir = "/secrets/rocksdb/encryption" + TLSKeyfileVolumeMountDir = "/secrets/tls" + TLSSNIKeyfileVolumeMountDir = "/secrets/sni" + ClientAuthCAVolumeMountDir = "/secrets/client-auth/ca" + ClusterJWTSecretVolumeMountDir = "/secrets/cluster/jwt" + ExporterJWTVolumeMountDir = "/secrets/exporter/jwt" + MasterJWTSecretVolumeMountDir = "/secrets/master/jwt" ) diff --git a/pkg/util/k8sutil/names.go b/pkg/apis/shared/names.go similarity index 67% rename from pkg/util/k8sutil/names.go rename to pkg/apis/shared/names.go index c980342c0..7d9837429 100644 --- a/pkg/util/k8sutil/names.go +++ b/pkg/apis/shared/names.go @@ -18,48 +18,19 @@ // Copyright holder is ArangoDB GmbH, Cologne, Germany // -package k8sutil +package shared import ( "crypto/sha1" "fmt" - "regexp" "strings" "unicode" - - "github.com/arangodb/kube-arangodb/pkg/util/errors" ) var ( - resourceNameRE = regexp.MustCompile(`^([0-9\-\.a-z])+$`) arangodPrefixes = []string{"CRDN-", "PRMR-", "AGNT-", "SNGL-"} ) -// ValidateOptionalResourceName validates a kubernetes resource name. -// If not empty and not valid, an error is returned. -func ValidateOptionalResourceName(name string) error { - if name == "" { - return nil - } - if err := ValidateResourceName(name); err != nil { - return errors.WithStack(err) - } - return nil -} - -// ValidateResourceName validates a kubernetes resource name. -// If not valid, an error is returned. -// See https://kubernetes.io/docs/concepts/overview/working-with-objects/names/ -func ValidateResourceName(name string) error { - if len(name) > 253 { - return errors.WithStack(errors.Newf("Name '%s' is too long", name)) - } - if resourceNameRE.MatchString(name) { - return nil - } - return errors.WithStack(errors.Newf("Name '%s' is not a valid resource name", name)) -} - // stripArangodPrefix removes well know arangod ID prefixes from the given id. func stripArangodPrefix(id string) string { for _, prefix := range arangodPrefixes { @@ -100,3 +71,15 @@ func FixupResourceName(name string) string { } return result } + +// CreatePodHostName returns the hostname of the pod for a member with +// a given id in a deployment with a given name. +func CreatePodHostName(deploymentName, role, id string) string { + return deploymentName + "-" + role + "-" + stripArangodPrefix(id) +} + +// CreatePersistentVolumeClaimName returns the name of the persistent volume claim for a member with +// a given id in a deployment with a given name. +func CreatePersistentVolumeClaimName(deploymentName, role, id string) string { + return deploymentName + "-" + role + "-" + stripArangodPrefix(id) +} diff --git a/pkg/apis/shared/validate.go b/pkg/apis/shared/validate.go new file mode 100644 index 000000000..8e7533822 --- /dev/null +++ b/pkg/apis/shared/validate.go @@ -0,0 +1,56 @@ +// +// DISCLAIMER +// +// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright holder is ArangoDB GmbH, Cologne, Germany +// + +package shared + +import ( + "regexp" + + "github.com/arangodb/kube-arangodb/pkg/util/errors" +) + +var ( + resourceNameRE = regexp.MustCompile(`^([0-9\-\.a-z])+$`) +) + +// ValidateResourceName validates a kubernetes resource name. +// If not valid, an error is returned. +// See https://kubernetes.io/docs/concepts/overview/working-with-objects/names/ +func ValidateResourceName(name string) error { + if len(name) > 253 { + return errors.WithStack(errors.Newf("Name '%s' is too long", name)) + } + if resourceNameRE.MatchString(name) { + return nil + } + return errors.WithStack(errors.Newf("Name '%s' is not a valid resource name", name)) +} + +// ValidateOptionalResourceName validates a kubernetes resource name. +// If not empty and not valid, an error is returned. +func ValidateOptionalResourceName(name string) error { + if name == "" { + return nil + } + if err := ValidateResourceName(name); err != nil { + return errors.WithStack(err) + } + return nil +} diff --git a/pkg/apis/storage/v1alpha/storage_class_spec.go b/pkg/apis/storage/v1alpha/storage_class_spec.go index 93a047942..3364355fa 100644 --- a/pkg/apis/storage/v1alpha/storage_class_spec.go +++ b/pkg/apis/storage/v1alpha/storage_class_spec.go @@ -21,8 +21,8 @@ package v1alpha import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/errors" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) // StorageClassSpec contains specification for create StorageClass. @@ -34,7 +34,7 @@ type StorageClassSpec struct { // Validate the given spec, returning an error on validation // problems or nil if all ok. func (s StorageClassSpec) Validate() error { - if err := k8sutil.ValidateResourceName(s.Name); err != nil { + if err := shared.ValidateResourceName(s.Name); err != nil { return errors.WithStack(err) } return nil diff --git a/pkg/deployment/client/client_cache.go b/pkg/deployment/client/client_cache.go index 966da037b..124e39275 100644 --- a/pkg/deployment/client/client_cache.go +++ b/pkg/deployment/client/client_cache.go @@ -34,6 +34,7 @@ import ( driver "github.com/arangodb/go-driver" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/deployment/reconciler" ) @@ -76,7 +77,7 @@ func (cc *cache) extendHost(host string) string { scheme = "https" } - return scheme + "://" + net.JoinHostPort(host, strconv.Itoa(k8sutil.ArangoPort)) + return scheme + "://" + net.JoinHostPort(host, strconv.Itoa(shared.ArangoPort)) } func (cc *cache) getClient(group api.ServerGroup, id string) (driver.Client, error) { diff --git a/pkg/deployment/context_impl.go b/pkg/deployment/context_impl.go index f13535950..9a965c2cb 100644 --- a/pkg/deployment/context_impl.go +++ b/pkg/deployment/context_impl.go @@ -57,6 +57,7 @@ import ( "github.com/arangodb/go-driver/agency" backupApi "github.com/arangodb/kube-arangodb/pkg/apis/backup/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/deployment/reconciler" "github.com/arangodb/kube-arangodb/pkg/deployment/resources" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" @@ -344,9 +345,9 @@ func (d *Deployment) GetSyncServerClient(ctx context.Context, group api.ServerGr dnsName := k8sutil.CreatePodDNSNameWithDomain(d.apiObject, d.apiObject.Spec.ClusterDomain, group.AsRole(), id) // Build client - port := k8sutil.ArangoSyncMasterPort + port := shared.ArangoSyncMasterPort if group == api.ServerGroupSyncWorkers { - port = k8sutil.ArangoSyncWorkerPort + port = shared.ArangoSyncWorkerPort } source := client.Endpoint{"https://" + net.JoinHostPort(dnsName, strconv.Itoa(port))} tlsAuth := tasks.TLSAuthentication{ diff --git a/pkg/deployment/deployment_affinity_test.go b/pkg/deployment/deployment_affinity_test.go index 09a974905..5cc93bae3 100644 --- a/pkg/deployment/deployment_affinity_test.go +++ b/pkg/deployment/deployment_affinity_test.go @@ -24,6 +24,7 @@ import ( "testing" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" core "k8s.io/api/core/v1" @@ -83,11 +84,11 @@ func TestEnsurePod_ArangoDB_AntiAffinity(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -95,7 +96,7 @@ func TestEnsurePod_ArangoDB_AntiAffinity(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -145,11 +146,11 @@ func TestEnsurePod_ArangoDB_AntiAffinity(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -157,7 +158,7 @@ func TestEnsurePod_ArangoDB_AntiAffinity(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -210,11 +211,11 @@ func TestEnsurePod_ArangoDB_AntiAffinity(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -222,7 +223,7 @@ func TestEnsurePod_ArangoDB_AntiAffinity(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -280,11 +281,11 @@ func TestEnsurePod_ArangoDB_AntiAffinity(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -292,7 +293,7 @@ func TestEnsurePod_ArangoDB_AntiAffinity(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -359,11 +360,11 @@ func TestEnsurePod_ArangoDB_Affinity(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -371,7 +372,7 @@ func TestEnsurePod_ArangoDB_Affinity(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -424,11 +425,11 @@ func TestEnsurePod_ArangoDB_Affinity(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -436,7 +437,7 @@ func TestEnsurePod_ArangoDB_Affinity(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -492,11 +493,11 @@ func TestEnsurePod_ArangoDB_Affinity(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -504,7 +505,7 @@ func TestEnsurePod_ArangoDB_Affinity(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -565,11 +566,11 @@ func TestEnsurePod_ArangoDB_Affinity(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -577,7 +578,7 @@ func TestEnsurePod_ArangoDB_Affinity(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -646,11 +647,11 @@ func TestEnsurePod_ArangoDB_NodeAffinity(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -658,7 +659,7 @@ func TestEnsurePod_ArangoDB_NodeAffinity(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, diff --git a/pkg/deployment/deployment_core_test.go b/pkg/deployment/deployment_core_test.go index 11c69bfd4..3a9e7717d 100644 --- a/pkg/deployment/deployment_core_test.go +++ b/pkg/deployment/deployment_core_test.go @@ -30,6 +30,7 @@ import ( core "k8s.io/api/core/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) @@ -61,11 +62,11 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForAgent(firstAgentStatus.ID, false, false, false), Ports: createTestPorts(), @@ -73,7 +74,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullAlways, SecurityContext: securityContext.NewSecurityContext(), }, @@ -112,11 +113,11 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForAgent(firstAgentStatus.ID, false, false, false), Ports: createTestPorts(), @@ -124,7 +125,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullAlways, SecurityContext: securityContext.NewSecurityContext(), }, @@ -172,11 +173,11 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForAgent(firstAgentStatus.ID, false, false, false), Ports: createTestPorts(), @@ -184,7 +185,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -229,11 +230,11 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForAgent(firstAgentStatus.ID, false, false, false), Ports: createTestPorts(), @@ -241,7 +242,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -291,14 +292,14 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, InitContainers: []core.Container{ createTestAlpineContainer(firstAgentStatus.ID, false), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForAgent(firstAgentStatus.ID, false, false, false), Ports: createTestPorts(), @@ -306,7 +307,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -349,11 +350,11 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -361,7 +362,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), Env: withDefaultEnvs(t, resourcesUnfiltered), @@ -406,11 +407,11 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -418,7 +419,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), Env: withDefaultEnvs(t, resourcesUnfiltered), @@ -463,12 +464,12 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeWithPersitantVolumeClaim(k8sutil.ArangodVolumeName, + k8sutil.CreateVolumeWithPersitantVolumeClaim(shared.ArangodVolumeName, testPersistentVolumeClaimName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -476,7 +477,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), Env: withDefaultEnvs(t, resourcesUnfiltered), @@ -521,14 +522,14 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, InitContainers: []core.Container{ createTestAlpineContainer(firstDBServerStatus.ID, true), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -536,7 +537,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -576,11 +577,11 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForAgent(firstAgentStatus.ID, false, false, false), Ports: createTestPorts(), @@ -588,7 +589,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -630,12 +631,12 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeWithPersitantVolumeClaim(k8sutil.ArangodVolumeName, + k8sutil.CreateVolumeWithPersitantVolumeClaim(shared.ArangodVolumeName, testPersistentVolumeClaimName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForAgent(firstAgentStatus.ID, false, false, false), Ports: createTestPorts(), @@ -643,7 +644,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -682,12 +683,12 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), createTestTLSVolume(api.ServerGroupAgentsString, firstAgentStatus.ID), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForAgent(firstAgentStatus.ID, true, false, false), Ports: createTestPorts(), @@ -696,7 +697,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { k8sutil.TlsKeyfileVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, true, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, true, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -736,18 +737,18 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { require.NoError(t, err) testCase.ExpectedPod.Spec.Containers[0].LivenessProbe = createTestLivenessProbe(httpProbe, false, - authorization, k8sutil.ArangoPort) + authorization, shared.ArangoPort) }, ExpectedEvent: "member agent is created", ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), - k8sutil.CreateVolumeWithSecret(k8sutil.ClusterJWTSecretVolumeName, testJWTSecretName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), + k8sutil.CreateVolumeWithSecret(shared.ClusterJWTSecretVolumeName, testJWTSecretName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForAgent(firstAgentStatus.ID, false, true, false), Ports: createTestPorts(), @@ -796,19 +797,19 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { require.NoError(t, err) testCase.ExpectedPod.Spec.Containers[0].LivenessProbe = createTestLivenessProbe(httpProbe, true, - authorization, k8sutil.ArangoPort) + authorization, shared.ArangoPort) }, ExpectedEvent: "member agent is created", ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), createTestTLSVolume(api.ServerGroupAgentsString, firstAgentStatus.ID), - k8sutil.CreateVolumeWithSecret(k8sutil.ClusterJWTSecretVolumeName, testJWTSecretName), + k8sutil.CreateVolumeWithSecret(shared.ClusterJWTSecretVolumeName, testJWTSecretName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForAgent(firstAgentStatus.ID, true, true, false), Ports: createTestPorts(), @@ -860,12 +861,12 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), - k8sutil.CreateVolumeWithSecret(k8sutil.RocksdbEncryptionVolumeName, testRocksDBEncryptionKey), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), + k8sutil.CreateVolumeWithSecret(shared.RocksdbEncryptionVolumeName, testRocksDBEncryptionKey), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForAgent(firstAgentStatus.ID, false, false, true), Ports: createTestPorts(), @@ -874,7 +875,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { k8sutil.RocksdbEncryptionVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -915,19 +916,19 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { require.NoError(t, err) testCase.ExpectedPod.Spec.Containers[0].LivenessProbe = createTestLivenessProbe(httpProbe, false, - authorization, k8sutil.ArangoPort) + authorization, shared.ArangoPort) }, ExpectedEvent: "member dbserver is created", ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), - k8sutil.CreateVolumeWithSecret(k8sutil.ExporterJWTVolumeName, testExporterToken), - k8sutil.CreateVolumeWithSecret(k8sutil.ClusterJWTSecretVolumeName, testJWTSecretName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), + k8sutil.CreateVolumeWithSecret(shared.ExporterJWTVolumeName, testExporterToken), + k8sutil.CreateVolumeWithSecret(shared.ClusterJWTSecretVolumeName, testJWTSecretName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, true, false), Ports: createTestPorts(), @@ -984,19 +985,19 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { require.NoError(t, err) testCase.ExpectedPod.Spec.Containers[0].LivenessProbe = createTestLivenessProbe(httpProbe, false, - authorization, k8sutil.ArangoPort) + authorization, shared.ArangoPort) }, ExpectedEvent: "member dbserver is created", ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), - k8sutil.CreateVolumeWithSecret(k8sutil.ExporterJWTVolumeName, testExporterToken), - k8sutil.CreateVolumeWithSecret(k8sutil.ClusterJWTSecretVolumeName, testJWTSecretName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), + k8sutil.CreateVolumeWithSecret(shared.ExporterJWTVolumeName, testExporterToken), + k8sutil.CreateVolumeWithSecret(shared.ClusterJWTSecretVolumeName, testJWTSecretName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, true, false), Ports: createTestPorts(), @@ -1049,7 +1050,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { require.NoError(t, err) testCase.ExpectedPod.Spec.Containers[0].LivenessProbe = createTestLivenessProbe(httpProbe, false, - authorization, k8sutil.ArangoPort) + authorization, shared.ArangoPort) }, config: Config{ OperatorImage: testImageOperator, @@ -1058,9 +1059,9 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), - k8sutil.CreateVolumeWithSecret(k8sutil.ExporterJWTVolumeName, testExporterToken), - k8sutil.CreateVolumeWithSecret(k8sutil.ClusterJWTSecretVolumeName, testJWTSecretName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), + k8sutil.CreateVolumeWithSecret(shared.ExporterJWTVolumeName, testExporterToken), + k8sutil.CreateVolumeWithSecret(shared.ClusterJWTSecretVolumeName, testJWTSecretName), k8sutil.LifecycleVolume(), }, InitContainers: []core.Container{ @@ -1068,7 +1069,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, true, false), Ports: createTestPorts(), @@ -1120,7 +1121,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { require.NoError(t, err) testCase.ExpectedPod.Spec.Containers[0].LivenessProbe = createTestLivenessProbe(httpProbe, false, - authorization, k8sutil.ArangoPort) + authorization, shared.ArangoPort) }, config: Config{ OperatorImage: testImageOperator, @@ -1129,9 +1130,9 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), - k8sutil.CreateVolumeWithSecret(k8sutil.ExporterJWTVolumeName, testExporterToken), - k8sutil.CreateVolumeWithSecret(k8sutil.ClusterJWTSecretVolumeName, testJWTSecretName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), + k8sutil.CreateVolumeWithSecret(shared.ExporterJWTVolumeName, testExporterToken), + k8sutil.CreateVolumeWithSecret(shared.ClusterJWTSecretVolumeName, testJWTSecretName), }, InitContainers: []core.Container{ createTestLifecycleContainer(emptyResources), @@ -1139,7 +1140,7 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, true, false), Ports: createTestPorts(), @@ -1197,13 +1198,13 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), createTestTLSVolume(api.ServerGroupCoordinatorsString, firstCoordinatorStatus.ID), - k8sutil.CreateVolumeWithSecret(k8sutil.ClusterJWTSecretVolumeName, testJWTSecretName), + k8sutil.CreateVolumeWithSecret(shared.ClusterJWTSecretVolumeName, testJWTSecretName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForCoordinator(firstCoordinatorStatus.ID, true, true), Ports: createTestPorts(), @@ -1263,13 +1264,13 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), createTestTLSVolume(api.ServerGroupSingleString, singleStatus.ID), - k8sutil.CreateVolumeWithSecret(k8sutil.ClusterJWTSecretVolumeName, testJWTSecretName), + k8sutil.CreateVolumeWithSecret(shared.ClusterJWTSecretVolumeName, testJWTSecretName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForSingleMode(true, true), Ports: createTestPorts(), @@ -1299,13 +1300,13 @@ func TestEnsurePod_ArangoDB_Core(t *testing.T) { func testArangodbInternalExporterContainer(secure, auth bool, resources core.ResourceRequirements, ports ...int32) core.Container { - var port int32 = k8sutil.ArangoExporterPort + var port int32 = shared.ArangoExporterPort if len(ports) > 0 { port = ports[0] } c := core.Container{ - Name: k8sutil.ExporterContainerName, + Name: shared.ExporterContainerName, Image: testImage, Command: createTestInternalExporterCommand(secure, auth, port), Ports: []core.ContainerPort{ @@ -1355,7 +1356,7 @@ func createTestInternalExporterCommand(secure, auth bool, port int32) []string { args = append(args, "--arangodb.jwt-file=/secrets/exporter/jwt/token") } - if port != k8sutil.ArangoExporterPort { + if port != shared.ArangoExporterPort { args = append(args, fmt.Sprintf("--server.address=:%d", port)) } diff --git a/pkg/deployment/deployment_encryption_test.go b/pkg/deployment/deployment_encryption_test.go index cfe99527a..3913f0172 100644 --- a/pkg/deployment/deployment_encryption_test.go +++ b/pkg/deployment/deployment_encryption_test.go @@ -28,6 +28,7 @@ import ( core "k8s.io/api/core/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) @@ -63,12 +64,12 @@ func TestEnsurePod_ArangoDB_Encryption(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), - k8sutil.CreateVolumeWithSecret(k8sutil.RocksdbEncryptionVolumeName, testRocksDBEncryptionKey), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), + k8sutil.CreateVolumeWithSecret(shared.RocksdbEncryptionVolumeName, testRocksDBEncryptionKey), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: BuildTestAgentArgs(t, firstAgentStatus.ID, AgentArgsWithTLS(firstAgentStatus.ID, false), @@ -80,7 +81,7 @@ func TestEnsurePod_ArangoDB_Encryption(t *testing.T) { k8sutil.RocksdbEncryptionVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -129,7 +130,7 @@ func TestEnsurePod_ArangoDB_Encryption(t *testing.T) { require.NoError(t, err) testCase.ExpectedPod.Spec.Containers[0].LivenessProbe = createTestLivenessProbe(httpProbe, true, - authorization, k8sutil.ArangoPort) + authorization, shared.ArangoPort) }, config: Config{ OperatorImage: testImageOperator, @@ -138,11 +139,11 @@ func TestEnsurePod_ArangoDB_Encryption(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), createTestTLSVolume(api.ServerGroupDBServersString, firstDBServerStatus.ID), - k8sutil.CreateVolumeWithSecret(k8sutil.RocksdbEncryptionVolumeName, testRocksDBEncryptionKey), - k8sutil.CreateVolumeWithSecret(k8sutil.ExporterJWTVolumeName, testExporterToken), - k8sutil.CreateVolumeWithSecret(k8sutil.ClusterJWTSecretVolumeName, testJWTSecretName), + k8sutil.CreateVolumeWithSecret(shared.RocksdbEncryptionVolumeName, testRocksDBEncryptionKey), + k8sutil.CreateVolumeWithSecret(shared.ExporterJWTVolumeName, testExporterToken), + k8sutil.CreateVolumeWithSecret(shared.ClusterJWTSecretVolumeName, testJWTSecretName), k8sutil.LifecycleVolume(), }, InitContainers: []core.Container{ @@ -150,12 +151,12 @@ func TestEnsurePod_ArangoDB_Encryption(t *testing.T) { }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, true, true, true), Ports: createTestPorts(), Lifecycle: createTestLifecycle(api.ServerGroupAgents), - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), VolumeMounts: []core.VolumeMount{ @@ -211,12 +212,12 @@ func TestEnsurePod_ArangoDB_Encryption(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), - k8sutil.CreateVolumeWithSecret(k8sutil.RocksdbEncryptionVolumeName, testRocksDBEncryptionKey), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), + k8sutil.CreateVolumeWithSecret(shared.RocksdbEncryptionVolumeName, testRocksDBEncryptionKey), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: BuildTestAgentArgs(t, firstAgentStatus.ID, AgentArgsWithTLS(firstAgentStatus.ID, false), @@ -228,7 +229,7 @@ func TestEnsurePod_ArangoDB_Encryption(t *testing.T) { k8sutil.RocksdbEncryptionVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -274,12 +275,12 @@ func TestEnsurePod_ArangoDB_Encryption(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), - k8sutil.CreateVolumeWithSecret(k8sutil.RocksdbEncryptionVolumeName, fmt.Sprintf("%s-encryption-folder", testDeploymentName)), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), + k8sutil.CreateVolumeWithSecret(shared.RocksdbEncryptionVolumeName, fmt.Sprintf("%s-encryption-folder", testDeploymentName)), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: BuildTestAgentArgs(t, firstAgentStatus.ID, AgentArgsWithTLS(firstAgentStatus.ID, false), @@ -295,7 +296,7 @@ func TestEnsurePod_ArangoDB_Encryption(t *testing.T) { k8sutil.RocksdbEncryptionReadOnlyVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, diff --git a/pkg/deployment/deployment_features_test.go b/pkg/deployment/deployment_features_test.go index 7e955515f..d9ca611ba 100644 --- a/pkg/deployment/deployment_features_test.go +++ b/pkg/deployment/deployment_features_test.go @@ -24,6 +24,7 @@ import ( "testing" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" core "k8s.io/api/core/v1" @@ -57,11 +58,11 @@ func TestEnsurePod_ArangoDB_Features(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false, func() k8sutil.OptionPairs { args := k8sutil.NewOptionPair() @@ -75,7 +76,7 @@ func TestEnsurePod_ArangoDB_Features(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -120,11 +121,11 @@ func TestEnsurePod_ArangoDB_Features(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false, func() k8sutil.OptionPairs { args := k8sutil.NewOptionPair() @@ -138,7 +139,7 @@ func TestEnsurePod_ArangoDB_Features(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -179,11 +180,11 @@ func TestEnsurePod_ArangoDB_Features(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForCoordinator(firstCoordinatorStatus.ID, false, false, func() k8sutil.OptionPairs { args := k8sutil.NewOptionPair() @@ -242,11 +243,11 @@ func TestEnsurePod_ArangoDB_Features(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForCoordinator(firstCoordinatorStatus.ID, false, false, func() k8sutil.OptionPairs { args := k8sutil.NewOptionPair() @@ -305,11 +306,11 @@ func TestEnsurePod_ArangoDB_Features(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForCoordinator(firstCoordinatorStatus.ID, false, false, func() k8sutil.OptionPairs { args := k8sutil.NewOptionPair() @@ -367,11 +368,11 @@ func TestEnsurePod_ArangoDB_Features(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForSingleMode(false, false, func() k8sutil.OptionPairs { args := k8sutil.NewOptionPair() @@ -432,11 +433,11 @@ func TestEnsurePod_ArangoDB_Features(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForSingleMode(false, false, func() k8sutil.OptionPairs { args := k8sutil.NewOptionPair() @@ -497,11 +498,11 @@ func TestEnsurePod_ArangoDB_Features(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForSingleMode(false, false, func() k8sutil.OptionPairs { args := k8sutil.NewOptionPair() diff --git a/pkg/deployment/deployment_image_test.go b/pkg/deployment/deployment_image_test.go index df439a045..7422870b4 100644 --- a/pkg/deployment/deployment_image_test.go +++ b/pkg/deployment/deployment_image_test.go @@ -30,6 +30,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" core "k8s.io/api/core/v1" ) @@ -77,11 +78,11 @@ func TestEnsurePod_ArangoDB_ImagePropagation(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: imageID, Command: createTestCommandForAgent(firstAgentStatus.ID, false, false, false), Ports: createTestPorts(), @@ -89,7 +90,7 @@ func TestEnsurePod_ArangoDB_ImagePropagation(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullAlways, SecurityContext: securityContext.NewSecurityContext(), }, @@ -129,11 +130,11 @@ func TestEnsurePod_ArangoDB_ImagePropagation(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: imageID, Command: createTestCommandForAgent(firstAgentStatus.ID, false, false, false), Ports: createTestPorts(), @@ -141,7 +142,7 @@ func TestEnsurePod_ArangoDB_ImagePropagation(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullAlways, SecurityContext: securityContext.NewSecurityContext(), }, @@ -181,11 +182,11 @@ func TestEnsurePod_ArangoDB_ImagePropagation(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: image, Command: createTestCommandForAgent(firstAgentStatus.ID, false, false, false), Ports: createTestPorts(), @@ -193,7 +194,7 @@ func TestEnsurePod_ArangoDB_ImagePropagation(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullAlways, SecurityContext: securityContext.NewSecurityContext(), }, diff --git a/pkg/deployment/deployment_metrics_test.go b/pkg/deployment/deployment_metrics_test.go index 083fb7362..d5f10d81f 100644 --- a/pkg/deployment/deployment_metrics_test.go +++ b/pkg/deployment/deployment_metrics_test.go @@ -26,6 +26,7 @@ import ( core "k8s.io/api/core/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) @@ -65,11 +66,11 @@ func TestEnsurePod_Metrics(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -77,7 +78,7 @@ func TestEnsurePod_Metrics(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -125,11 +126,11 @@ func TestEnsurePod_Metrics(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -137,7 +138,7 @@ func TestEnsurePod_Metrics(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -185,11 +186,11 @@ func TestEnsurePod_Metrics(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: func() []core.ContainerPort { @@ -198,7 +199,7 @@ func TestEnsurePod_Metrics(t *testing.T) { ports = append(ports, core.ContainerPort{ Name: "exporter", Protocol: core.ProtocolTCP, - ContainerPort: k8sutil.ArangoPort, + ContainerPort: shared.ArangoPort, }) return ports @@ -207,7 +208,7 @@ func TestEnsurePod_Metrics(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -255,11 +256,11 @@ func TestEnsurePod_Metrics(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForAgent(firstAgentStatus.ID, false, false, false), Ports: func() []core.ContainerPort { @@ -268,7 +269,7 @@ func TestEnsurePod_Metrics(t *testing.T) { ports = append(ports, core.ContainerPort{ Name: "exporter", Protocol: core.ProtocolTCP, - ContainerPort: k8sutil.ArangoPort, + ContainerPort: shared.ArangoPort, }) return ports @@ -277,7 +278,7 @@ func TestEnsurePod_Metrics(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, diff --git a/pkg/deployment/deployment_pod_probe_test.go b/pkg/deployment/deployment_pod_probe_test.go index 9a0e9356a..16467313d 100644 --- a/pkg/deployment/deployment_pod_probe_test.go +++ b/pkg/deployment/deployment_pod_probe_test.go @@ -24,6 +24,7 @@ import ( "testing" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" core "k8s.io/api/core/v1" @@ -55,11 +56,11 @@ func TestEnsurePod_ArangoDB_Probe(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForAgent(firstAgentStatus.ID, false, false, false), Ports: createTestPorts(), @@ -67,7 +68,7 @@ func TestEnsurePod_ArangoDB_Probe(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -112,11 +113,11 @@ func TestEnsurePod_ArangoDB_Probe(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForAgent(firstAgentStatus.ID, false, false, false), Ports: createTestPorts(), @@ -124,7 +125,7 @@ func TestEnsurePod_ArangoDB_Probe(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: modTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort, func(probe *core.Probe) { + LivenessProbe: modTestLivenessProbe(httpProbe, false, "", shared.ArangoPort, func(probe *core.Probe) { probe.TimeoutSeconds = 50 }), ImagePullPolicy: core.PullIfNotPresent, @@ -170,11 +171,11 @@ func TestEnsurePod_ArangoDB_Probe(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForAgent(firstAgentStatus.ID, false, false, false), Ports: createTestPorts(), @@ -182,7 +183,7 @@ func TestEnsurePod_ArangoDB_Probe(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ReadinessProbe: createTestReadinessSimpleProbe(httpProbe, false, ""), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), @@ -221,11 +222,11 @@ func TestEnsurePod_ArangoDB_Probe(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -233,7 +234,7 @@ func TestEnsurePod_ArangoDB_Probe(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -277,11 +278,11 @@ func TestEnsurePod_ArangoDB_Probe(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -289,7 +290,7 @@ func TestEnsurePod_ArangoDB_Probe(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ReadinessProbe: createTestReadinessSimpleProbe(httpProbe, false, ""), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), @@ -328,11 +329,11 @@ func TestEnsurePod_ArangoDB_Probe(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForCoordinator(firstCoordinatorStatus.ID, false, false), Ports: createTestPorts(), @@ -384,11 +385,11 @@ func TestEnsurePod_ArangoDB_Probe(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForCoordinator(firstCoordinatorStatus.ID, false, false), Ports: createTestPorts(), @@ -396,7 +397,7 @@ func TestEnsurePod_ArangoDB_Probe(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ReadinessProbe: createTestReadinessProbe(httpProbe, false, ""), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), diff --git a/pkg/deployment/deployment_pod_resources_test.go b/pkg/deployment/deployment_pod_resources_test.go index 5353f9a02..aad2bff72 100644 --- a/pkg/deployment/deployment_pod_resources_test.go +++ b/pkg/deployment/deployment_pod_resources_test.go @@ -28,6 +28,7 @@ import ( "github.com/stretchr/testify/require" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" core "k8s.io/api/core/v1" @@ -122,11 +123,11 @@ func TestEnsurePod_ArangoDB_Resources(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -134,7 +135,7 @@ func TestEnsurePod_ArangoDB_Resources(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), Env: withDefaultEnvs(t, resourcesUnfiltered), @@ -180,11 +181,11 @@ func TestEnsurePod_ArangoDB_Resources(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -193,7 +194,7 @@ func TestEnsurePod_ArangoDB_Resources(t *testing.T) { k8sutil.ArangodVolumeMount(), }, Env: withEnvs(resourceCPULimitAsEnv(t, resourcesUnfiltered)), - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -237,11 +238,11 @@ func TestEnsurePod_ArangoDB_Resources(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -249,7 +250,7 @@ func TestEnsurePod_ArangoDB_Resources(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, diff --git a/pkg/deployment/deployment_pod_sync_test.go b/pkg/deployment/deployment_pod_sync_test.go index eafaaee4f..dff978f5e 100644 --- a/pkg/deployment/deployment_pod_sync_test.go +++ b/pkg/deployment/deployment_pod_sync_test.go @@ -31,6 +31,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/constants" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/stretchr/testify/require" core "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -230,7 +231,7 @@ func TestEnsurePod_Sync_Master(t *testing.T) { require.NoError(t, err) testCase.ExpectedPod.Spec.Containers[0].LivenessProbe = createTestLivenessProbe( - "", true, "bearer "+auth, k8sutil.ArangoSyncMasterPort) + "", true, "bearer "+auth, shared.ArangoSyncMasterPort) }, ExpectedEvent: "member syncmaster is created", ExpectedPod: core.Pod{ @@ -238,16 +239,16 @@ func TestEnsurePod_Sync_Master(t *testing.T) { Volumes: []core.Volume{ k8sutil.LifecycleVolume(), createTestTLSVolume(api.ServerGroupSyncMastersString, firstSyncMaster.ID), - k8sutil.CreateVolumeWithSecret(k8sutil.ClientAuthCAVolumeName, "test-sync-client-auth-ca"), - k8sutil.CreateVolumeWithSecret(k8sutil.MasterJWTSecretVolumeName, "test-sync-jwt"), - k8sutil.CreateVolumeWithSecret(k8sutil.ClusterJWTSecretVolumeName, testJWTSecretName), + k8sutil.CreateVolumeWithSecret(shared.ClientAuthCAVolumeName, "test-sync-client-auth-ca"), + k8sutil.CreateVolumeWithSecret(shared.MasterJWTSecretVolumeName, "test-sync-jwt"), + k8sutil.CreateVolumeWithSecret(shared.ClusterJWTSecretVolumeName, testJWTSecretName), }, InitContainers: []core.Container{ createTestLifecycleContainer(emptyResources), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForSyncMaster(firstSyncMaster.ID, true, true, true), Ports: createTestPorts(), @@ -320,7 +321,7 @@ func TestEnsurePod_Sync_Master(t *testing.T) { require.NoError(t, err) testCase.ExpectedPod.Spec.Containers[0].LivenessProbe = createTestLivenessProbe( - "", true, "bearer "+auth, k8sutil.ArangoSyncMasterPort) + "", true, "bearer "+auth, shared.ArangoSyncMasterPort) }, ExpectedEvent: "member syncmaster is created", ExpectedPod: core.Pod{ @@ -328,9 +329,9 @@ func TestEnsurePod_Sync_Master(t *testing.T) { Volumes: []core.Volume{ k8sutil.LifecycleVolume(), createTestTLSVolume(api.ServerGroupSyncMastersString, firstSyncMaster.ID), - k8sutil.CreateVolumeWithSecret(k8sutil.ClientAuthCAVolumeName, + k8sutil.CreateVolumeWithSecret(shared.ClientAuthCAVolumeName, testDeploymentName+"-sync-client-auth-ca"), - k8sutil.CreateVolumeWithSecret(k8sutil.MasterJWTSecretVolumeName, + k8sutil.CreateVolumeWithSecret(shared.MasterJWTSecretVolumeName, testDeploymentName+"-sync-jwt"), }, InitContainers: []core.Container{ @@ -338,7 +339,7 @@ func TestEnsurePod_Sync_Master(t *testing.T) { }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForSyncMaster(firstSyncMaster.ID, true, false, true), Ports: createTestPorts(), @@ -423,21 +424,21 @@ func TestEnsurePod_Sync_Worker(t *testing.T) { require.NoError(t, err) testCase.ExpectedPod.Spec.Containers[0].LivenessProbe = createTestLivenessProbe( - "", true, "bearer "+auth, k8sutil.ArangoSyncWorkerPort) + "", true, "bearer "+auth, shared.ArangoSyncWorkerPort) }, ExpectedEvent: "member syncworker is created", ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ k8sutil.LifecycleVolume(), - k8sutil.CreateVolumeWithSecret(k8sutil.MasterJWTSecretVolumeName, testDeploymentName+"-sync-jwt"), + k8sutil.CreateVolumeWithSecret(shared.MasterJWTSecretVolumeName, testDeploymentName+"-sync-jwt"), }, InitContainers: []core.Container{ createTestLifecycleContainer(emptyResources), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForSyncWorker(firstSyncWorker.ID, true, true), Ports: createTestPorts(), diff --git a/pkg/deployment/deployment_pod_tls_sni_test.go b/pkg/deployment/deployment_pod_tls_sni_test.go index d589cb391..18714270a 100644 --- a/pkg/deployment/deployment_pod_tls_sni_test.go +++ b/pkg/deployment/deployment_pod_tls_sni_test.go @@ -26,6 +26,7 @@ import ( "testing" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/constants" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" @@ -100,12 +101,12 @@ func TestEnsurePod_ArangoDB_TLS_SNI(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), createTestTLSVolume(api.ServerGroupCoordinatorsString, firstCoordinatorStatus.ID), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForCoordinator(firstCoordinatorStatus.ID, true, false), Ports: createTestPorts(), @@ -175,12 +176,12 @@ func TestEnsurePod_ArangoDB_TLS_SNI(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), createTestTLSVolume(api.ServerGroupCoordinatorsString, firstCoordinatorStatus.ID), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForCoordinator(firstCoordinatorStatus.ID, true, false), Ports: createTestPorts(), @@ -250,12 +251,12 @@ func TestEnsurePod_ArangoDB_TLS_SNI(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), createTestTLSVolume(api.ServerGroupCoordinatorsString, firstCoordinatorStatus.ID), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForCoordinator(firstCoordinatorStatus.ID, true, false), Ports: createTestPorts(), @@ -325,7 +326,7 @@ func TestEnsurePod_ArangoDB_TLS_SNI(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), createTestTLSVolume(api.ServerGroupCoordinatorsString, firstCoordinatorStatus.ID), { Name: "sni-1b43a8b9b6df3d38b4ef394346283cd5aeda46a9b61d52da", @@ -346,14 +347,14 @@ func TestEnsurePod_ArangoDB_TLS_SNI(t *testing.T) { }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: func() []string { args := createTestCommandForCoordinator(firstCoordinatorStatus.ID, true, false) - args = append(args, fmt.Sprintf("--ssl.server-name-indication=a=%s/sni1/tls.keyfile", k8sutil.TLSSNIKeyfileVolumeMountDir), - fmt.Sprintf("--ssl.server-name-indication=b=%s/sni1/tls.keyfile", k8sutil.TLSSNIKeyfileVolumeMountDir), - fmt.Sprintf("--ssl.server-name-indication=c=%s/sni2/tls.keyfile", k8sutil.TLSSNIKeyfileVolumeMountDir), - fmt.Sprintf("--ssl.server-name-indication=d=%s/sni2/tls.keyfile", k8sutil.TLSSNIKeyfileVolumeMountDir)) + args = append(args, fmt.Sprintf("--ssl.server-name-indication=a=%s/sni1/tls.keyfile", shared.TLSSNIKeyfileVolumeMountDir), + fmt.Sprintf("--ssl.server-name-indication=b=%s/sni1/tls.keyfile", shared.TLSSNIKeyfileVolumeMountDir), + fmt.Sprintf("--ssl.server-name-indication=c=%s/sni2/tls.keyfile", shared.TLSSNIKeyfileVolumeMountDir), + fmt.Sprintf("--ssl.server-name-indication=d=%s/sni2/tls.keyfile", shared.TLSSNIKeyfileVolumeMountDir)) return args }(), Ports: createTestPorts(), @@ -362,12 +363,12 @@ func TestEnsurePod_ArangoDB_TLS_SNI(t *testing.T) { k8sutil.TlsKeyfileVolumeMount(), { Name: "sni-1b43a8b9b6df3d38b4ef394346283cd5aeda46a9b61d52da", - MountPath: k8sutil.TLSSNIKeyfileVolumeMountDir + "/sni1", + MountPath: shared.TLSSNIKeyfileVolumeMountDir + "/sni1", ReadOnly: true, }, { Name: "sni-bbd5fc9d5151a1294ffb5de7b85ee74b7f4620021b5891e4", - MountPath: k8sutil.TLSSNIKeyfileVolumeMountDir + "/sni2", + MountPath: shared.TLSSNIKeyfileVolumeMountDir + "/sni2", ReadOnly: true, }, }, @@ -433,12 +434,12 @@ func TestEnsurePod_ArangoDB_TLS_SNI(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), createTestTLSVolume(api.ServerGroupDBServersString, firstDBServerStatus.ID), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: func() []string { args := createTestCommandForDBServer(firstDBServerStatus.ID, true, false, false) @@ -450,7 +451,7 @@ func TestEnsurePod_ArangoDB_TLS_SNI(t *testing.T) { k8sutil.TlsKeyfileVolumeMount(), }, Resources: emptyResources, - LivenessProbe: createTestLivenessProbe(httpProbe, true, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, true, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, diff --git a/pkg/deployment/deployment_pod_volumes_test.go b/pkg/deployment/deployment_pod_volumes_test.go index 16e018f56..11e8dfffc 100644 --- a/pkg/deployment/deployment_pod_volumes_test.go +++ b/pkg/deployment/deployment_pod_volumes_test.go @@ -25,6 +25,7 @@ import ( "testing" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" core "k8s.io/api/core/v1" @@ -81,12 +82,12 @@ func TestEnsurePod_ArangoDB_Volumes(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), createExampleVolume("volume").Volume(), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -94,7 +95,7 @@ func TestEnsurePod_ArangoDB_Volumes(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -141,13 +142,13 @@ func TestEnsurePod_ArangoDB_Volumes(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), createExampleVolume("volume").Volume(), createExampleVolume("volume2").Volume(), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -155,7 +156,7 @@ func TestEnsurePod_ArangoDB_Volumes(t *testing.T) { VolumeMounts: []core.VolumeMount{ k8sutil.ArangodVolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, @@ -205,12 +206,12 @@ func TestEnsurePod_ArangoDB_Volumes(t *testing.T) { ExpectedPod: core.Pod{ Spec: core.PodSpec{ Volumes: []core.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), createExampleVolume("volume").Volume(), }, Containers: []core.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testImage, Command: createTestCommandForDBServer(firstDBServerStatus.ID, false, false, false), Ports: createTestPorts(), @@ -219,7 +220,7 @@ func TestEnsurePod_ArangoDB_Volumes(t *testing.T) { k8sutil.ArangodVolumeMount(), createExampleVolumeMount("volume").VolumeMount(), }, - LivenessProbe: createTestLivenessProbe(httpProbe, false, "", k8sutil.ArangoPort), + LivenessProbe: createTestLivenessProbe(httpProbe, false, "", shared.ArangoPort), ImagePullPolicy: core.PullIfNotPresent, SecurityContext: securityContext.NewSecurityContext(), }, diff --git a/pkg/deployment/deployment_suite_test.go b/pkg/deployment/deployment_suite_test.go index 4e77dd6b5..43b71a501 100644 --- a/pkg/deployment/deployment_suite_test.go +++ b/pkg/deployment/deployment_suite_test.go @@ -42,6 +42,7 @@ import ( recordfake "k8s.io/client-go/tools/record" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/deployment/resources" "github.com/arangodb/kube-arangodb/pkg/deployment/resources/inspector" arangofake "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/fake" @@ -92,7 +93,7 @@ type testCaseStruct struct { } func createTestTLSVolume(serverGroupString, ID string) core.Volume { - return k8sutil.CreateVolumeWithSecret(k8sutil.TlsKeyfileVolumeName, + return k8sutil.CreateVolumeWithSecret(shared.TlsKeyfileVolumeName, k8sutil.CreateTLSKeyfileSecretName(testDeploymentName, serverGroupString, ID)) } @@ -138,7 +139,7 @@ func createTestLivenessProbe(mode string, secure bool, authorization string, por } func createTestReadinessProbe(mode string, secure bool, authorization string) *core.Probe { - p := getProbeCreator(mode)(secure, authorization, "/_admin/server/availability", k8sutil.ArangoPort).Create() + p := getProbeCreator(mode)(secure, authorization, "/_admin/server/availability", shared.ArangoPort).Create() p.InitialDelaySeconds = 2 p.PeriodSeconds = 2 @@ -526,7 +527,7 @@ func createTestImages(enterprise bool) api.ImageInfoList { func createTestExporterLivenessProbe(secure bool) *core.Probe { return probes.HTTPProbeConfig{ LocalPath: "/", - Port: k8sutil.ArangoExporterPort, + Port: shared.ArangoExporterPort, Secure: secure, }.Create() } @@ -728,7 +729,7 @@ func addLifecycle(name string, uuidRequired bool, license string, group api.Serv } } - if _, ok := k8sutil.GetAnyVolumeByName(p.Spec.Volumes, k8sutil.LifecycleVolumeName); !ok { + if _, ok := k8sutil.GetAnyVolumeByName(p.Spec.Volumes, shared.LifecycleVolumeName); !ok { p.Spec.Volumes = append([]core.Volume{k8sutil.LifecycleVolume()}, p.Spec.Volumes...) } if _, ok := k8sutil.GetAnyVolumeByName(p.Spec.Volumes, "arangod-data"); !ok { diff --git a/pkg/deployment/images.go b/pkg/deployment/images.go index d90b0080c..f30ca5d59 100644 --- a/pkg/deployment/images.go +++ b/pkg/deployment/images.go @@ -33,6 +33,7 @@ import ( api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/deployment/pod" "github.com/arangodb/kube-arangodb/pkg/deployment/resources" "github.com/arangodb/kube-arangodb/pkg/handlers/utils" @@ -128,7 +129,7 @@ func (ib *imagesBuilder) Run(ctx context.Context, cachedStatus inspectorInterfac // When no pod exists, it is created, otherwise the ID is fetched & version detected. // Returns: retrySoon, error func (ib *imagesBuilder) fetchArangoDBImageIDAndVersion(ctx context.Context, cachedStatus inspectorInterface.Inspector, image string) (bool, error) { - role := k8sutil.ImageIDAndVersionRole + role := shared.ImageIDAndVersionRole id := fmt.Sprintf("%0x", sha1.Sum([]byte(image)))[:6] podName := k8sutil.CreatePodName(ib.APIObject.GetName(), role, id, "") log := ib.Log.With(). @@ -142,7 +143,7 @@ func (ib *imagesBuilder) fetchArangoDBImageIDAndVersion(ctx context.Context, cac pod, err := ib.Context.GetCachedStatus().Pod().V1().Read().Get(ctxChild, podName, metav1.GetOptions{}) if err == nil { // Pod found - if k8sutil.IsPodFailed(pod, utils.StringList{k8sutil.ServerContainerName}) { + if k8sutil.IsPodFailed(pod, utils.StringList{shared.ServerContainerName}) { // Wait some time before deleting the pod if time.Now().After(pod.GetCreationTimestamp().Add(30 * time.Second)) { err := globals.GetGlobalTimeouts().Kubernetes().RunWithTimeout(ctx, func(ctxChild context.Context) error { @@ -396,14 +397,14 @@ func (a *ContainerIdentity) GetLifecycle() (*core.Lifecycle, error) { } func (a *ContainerIdentity) GetName() string { - return k8sutil.ServerContainerName + return shared.ServerContainerName } func (a *ContainerIdentity) GetPorts() []core.ContainerPort { return []core.ContainerPort{ { - Name: k8sutil.ServerContainerName, - ContainerPort: int32(k8sutil.ArangoPort), + Name: shared.ServerContainerName, + ContainerPort: int32(shared.ArangoPort), Protocol: core.ProtocolTCP, }, } @@ -430,8 +431,8 @@ func (a *ContainerIdentity) GetVolumeMounts() []core.VolumeMount { func (a *ArangoDIdentity) GetArgs() ([]string, error) { return []string{ "--server.authentication=false", - fmt.Sprintf("--server.endpoint=tcp://%s:%d", a.ipAddress, k8sutil.ArangoPort), - "--database.directory=" + k8sutil.ArangodVolumeMountDir, + fmt.Sprintf("--server.endpoint=tcp://%s:%d", a.ipAddress, shared.ArangoPort), + "--database.directory=" + shared.ArangodVolumeMountDir, "--log.output=+", }, nil } @@ -463,7 +464,7 @@ func (a *ArangoSyncIdentity) GetExecutor() string { func getVolumes() pod.Volumes { volumes := pod.NewVolumes() - volumes.AddVolume(k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName)) + volumes.AddVolume(k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName)) volumes.AddVolumeMount(k8sutil.ArangodVolumeMount()) return volumes diff --git a/pkg/deployment/images_test.go b/pkg/deployment/images_test.go index 507bf03b0..5ae14000f 100644 --- a/pkg/deployment/images_test.go +++ b/pkg/deployment/images_test.go @@ -38,6 +38,7 @@ import ( "github.com/stretchr/testify/assert" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/stretchr/testify/require" ) @@ -60,7 +61,7 @@ func TestEnsureImages(t *testing.T) { // Arange terminationGracePeriodSeconds := int64((time.Second * 30).Seconds()) id := fmt.Sprintf("%0x", sha1.Sum([]byte(testNewImage)))[:6] - hostname := testDeploymentName + "-" + k8sutil.ImageIDAndVersionRole + "-" + id + hostname := testDeploymentName + "-" + shared.ImageIDAndVersionRole + "-" + id var securityContext api.ServerGroupSpecSecurityContext @@ -84,11 +85,11 @@ func TestEnsureImages(t *testing.T) { ExpectedPod: v1.Pod{ Spec: v1.PodSpec{ Volumes: []v1.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []v1.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testNewImage, Command: createTestCommandForImageUpdatePod(), Ports: createTestPorts(), @@ -109,7 +110,7 @@ func TestEnsureImages(t *testing.T) { Hostname: hostname, Subdomain: testDeploymentName + "-int", Affinity: k8sutil.CreateAffinity(testDeploymentName, - k8sutil.ImageIDAndVersionRole, false, ""), + shared.ImageIDAndVersionRole, false, ""), }, }, }, @@ -127,11 +128,11 @@ func TestEnsureImages(t *testing.T) { ExpectedPod: v1.Pod{ Spec: v1.PodSpec{ Volumes: []v1.Volume{ - k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName), + k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName), }, Containers: []v1.Container{ { - Name: k8sutil.ServerContainerName, + Name: shared.ServerContainerName, Image: testNewImage, Command: createTestCommandForImageUpdatePod(), Ports: createTestPorts(), @@ -156,7 +157,7 @@ func TestEnsureImages(t *testing.T) { Hostname: hostname, Subdomain: testDeploymentName + "-int", Affinity: k8sutil.CreateAffinity(testDeploymentName, - k8sutil.ImageIDAndVersionRole, false, ""), + shared.ImageIDAndVersionRole, false, ""), }, }, }, @@ -170,7 +171,7 @@ func TestEnsureImages(t *testing.T) { Before: func(t *testing.T, deployment *Deployment) { pod := v1.Pod{ ObjectMeta: metav1.ObjectMeta{ - Name: k8sutil.CreatePodName(testDeploymentName, k8sutil.ImageIDAndVersionRole, id, ""), + Name: k8sutil.CreatePodName(testDeploymentName, shared.ImageIDAndVersionRole, id, ""), CreationTimestamp: metav1.Now(), }, Spec: v1.PodSpec{}, @@ -197,7 +198,7 @@ func TestEnsureImages(t *testing.T) { Before: func(t *testing.T, deployment *Deployment) { pod := v1.Pod{ ObjectMeta: metav1.ObjectMeta{ - Name: k8sutil.CreatePodName(testDeploymentName, k8sutil.ImageIDAndVersionRole, id, ""), + Name: k8sutil.CreatePodName(testDeploymentName, shared.ImageIDAndVersionRole, id, ""), }, Status: v1.PodStatus{ Phase: v1.PodFailed, @@ -222,7 +223,7 @@ func TestEnsureImages(t *testing.T) { Before: func(t *testing.T, deployment *Deployment) { pod := v1.Pod{ ObjectMeta: metav1.ObjectMeta{ - Name: k8sutil.CreatePodName(testDeploymentName, k8sutil.ImageIDAndVersionRole, id, ""), + Name: k8sutil.CreatePodName(testDeploymentName, shared.ImageIDAndVersionRole, id, ""), }, Status: v1.PodStatus{ Conditions: []v1.PodCondition{ @@ -251,7 +252,7 @@ func TestEnsureImages(t *testing.T) { Before: func(t *testing.T, deployment *Deployment) { pod := v1.Pod{ ObjectMeta: metav1.ObjectMeta{ - Name: k8sutil.CreatePodName(testDeploymentName, k8sutil.ImageIDAndVersionRole, id, ""), + Name: k8sutil.CreatePodName(testDeploymentName, shared.ImageIDAndVersionRole, id, ""), }, Status: v1.PodStatus{ Conditions: []v1.PodCondition{ @@ -281,7 +282,7 @@ func TestEnsureImages(t *testing.T) { Before: func(t *testing.T, deployment *Deployment) { pod := v1.Pod{ ObjectMeta: metav1.ObjectMeta{ - Name: k8sutil.CreatePodName(testDeploymentName, k8sutil.ImageIDAndVersionRole, id, ""), + Name: k8sutil.CreatePodName(testDeploymentName, shared.ImageIDAndVersionRole, id, ""), }, Status: v1.PodStatus{ Conditions: []v1.PodCondition{ @@ -361,8 +362,8 @@ func TestEnsureImages(t *testing.T) { func createTestCommandForImageUpdatePod() []string { return []string{resources.ArangoDExecutor, "--server.authentication=false", - fmt.Sprintf("--server.endpoint=tcp://[::]:%d", k8sutil.ArangoPort), - "--database.directory=" + k8sutil.ArangodVolumeMountDir, + fmt.Sprintf("--server.endpoint=tcp://[::]:%d", shared.ArangoPort), + "--database.directory=" + shared.ArangodVolumeMountDir, "--log.output=+", } } diff --git a/pkg/deployment/members.go b/pkg/deployment/members.go index f4f079048..3a592967b 100644 --- a/pkg/deployment/members.go +++ b/pkg/deployment/members.go @@ -35,7 +35,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" ) func (d *Deployment) createAgencyMapping(ctx context.Context) error { @@ -142,7 +142,7 @@ func renderMember(log zerolog.Logger, status *api.DeploymentStatus, group api.Se UID: uuid.NewUUID(), CreatedAt: metav1.Now(), Phase: api.MemberPhaseNone, - PersistentVolumeClaimName: k8sutil.CreatePersistentVolumeClaimName(deploymentName, role, id), + PersistentVolumeClaimName: shared.CreatePersistentVolumeClaimName(deploymentName, role, id), PodName: "", Image: apiObject.Status.CurrentImage, Architecture: &arch, @@ -154,7 +154,7 @@ func renderMember(log zerolog.Logger, status *api.DeploymentStatus, group api.Se UID: uuid.NewUUID(), CreatedAt: metav1.Now(), Phase: api.MemberPhaseNone, - PersistentVolumeClaimName: k8sutil.CreatePersistentVolumeClaimName(deploymentName, role, id), + PersistentVolumeClaimName: shared.CreatePersistentVolumeClaimName(deploymentName, role, id), PodName: "", Image: apiObject.Status.CurrentImage, Architecture: &arch, @@ -166,7 +166,7 @@ func renderMember(log zerolog.Logger, status *api.DeploymentStatus, group api.Se UID: uuid.NewUUID(), CreatedAt: metav1.Now(), Phase: api.MemberPhaseNone, - PersistentVolumeClaimName: k8sutil.CreatePersistentVolumeClaimName(deploymentName, role, id), + PersistentVolumeClaimName: shared.CreatePersistentVolumeClaimName(deploymentName, role, id), PodName: "", Image: apiObject.Status.CurrentImage, Architecture: &arch, diff --git a/pkg/deployment/pod/affinity.go b/pkg/deployment/pod/affinity.go index f0d84ff1d..d433fcbbf 100644 --- a/pkg/deployment/pod/affinity.go +++ b/pkg/deployment/pod/affinity.go @@ -22,6 +22,7 @@ package pod import ( api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/interfaces" core "k8s.io/api/core/v1" @@ -37,14 +38,14 @@ func AppendPodAntiAffinityDefault(p interfaces.PodCreator, a *core.PodAntiAffini if !p.IsDeploymentMode() { a.RequiredDuringSchedulingIgnoredDuringExecution = append(a.RequiredDuringSchedulingIgnoredDuringExecution, core.PodAffinityTerm{ LabelSelector: labelSelector, - TopologyKey: k8sutil.TopologyKeyHostname, + TopologyKey: shared.TopologyKeyHostname, }) } else { a.PreferredDuringSchedulingIgnoredDuringExecution = append(a.PreferredDuringSchedulingIgnoredDuringExecution, core.WeightedPodAffinityTerm{ Weight: 1, PodAffinityTerm: core.PodAffinityTerm{ LabelSelector: labelSelector, - TopologyKey: k8sutil.TopologyKeyHostname, + TopologyKey: shared.TopologyKeyHostname, }, }) } @@ -65,14 +66,14 @@ func AppendAffinityWithRole(p interfaces.PodCreator, a *core.PodAffinity, role s if !p.IsDeploymentMode() { a.RequiredDuringSchedulingIgnoredDuringExecution = append(a.RequiredDuringSchedulingIgnoredDuringExecution, core.PodAffinityTerm{ LabelSelector: labelSelector, - TopologyKey: k8sutil.TopologyKeyHostname, + TopologyKey: shared.TopologyKeyHostname, }) } else { a.PreferredDuringSchedulingIgnoredDuringExecution = append(a.PreferredDuringSchedulingIgnoredDuringExecution, core.WeightedPodAffinityTerm{ Weight: 1, PodAffinityTerm: core.PodAffinityTerm{ LabelSelector: labelSelector, - TopologyKey: k8sutil.TopologyKeyHostname, + TopologyKey: shared.TopologyKeyHostname, }, }) } diff --git a/pkg/deployment/pod/encryption.go b/pkg/deployment/pod/encryption.go index 1271c4a53..13040609e 100644 --- a/pkg/deployment/pod/encryption.go +++ b/pkg/deployment/pod/encryption.go @@ -38,6 +38,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/constants" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" secretv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/secret/v1" core "k8s.io/api/core/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -133,7 +134,7 @@ func (e encryption) Args(i Input) k8sutil.OptionPairs { return nil } if !MultiFileMode(i) { - keyPath := filepath.Join(k8sutil.RocksDBEncryptionVolumeMountDir, constants.SecretEncryptionKey) + keyPath := filepath.Join(shared.RocksDBEncryptionVolumeMountDir, constants.SecretEncryptionKey) return k8sutil.NewOptionPair(k8sutil.OptionPair{ Key: "--rocksdb.encryption-keyfile", Value: keyPath, @@ -141,7 +142,7 @@ func (e encryption) Args(i Input) k8sutil.OptionPairs { } else { return k8sutil.NewOptionPair(k8sutil.OptionPair{ Key: "--rocksdb.encryption-keyfolder", - Value: k8sutil.RocksDBEncryptionVolumeMountDir, + Value: shared.RocksDBEncryptionVolumeMountDir, }) } } @@ -151,10 +152,10 @@ func (e encryption) Volumes(i Input) ([]core.Volume, []core.VolumeMount) { return nil, nil } if !MultiFileMode(i) { - vol := k8sutil.CreateVolumeWithSecret(k8sutil.RocksdbEncryptionVolumeName, i.Deployment.RocksDB.Encryption.GetKeySecretName()) + vol := k8sutil.CreateVolumeWithSecret(shared.RocksdbEncryptionVolumeName, i.Deployment.RocksDB.Encryption.GetKeySecretName()) return []core.Volume{vol}, []core.VolumeMount{k8sutil.RocksdbEncryptionVolumeMount()} } else { - vol := k8sutil.CreateVolumeWithSecret(k8sutil.RocksdbEncryptionVolumeName, GetEncryptionFolderSecretName(i.ApiObject.GetName())) + vol := k8sutil.CreateVolumeWithSecret(shared.RocksdbEncryptionVolumeName, GetEncryptionFolderSecretName(i.ApiObject.GetName())) return []core.Volume{vol}, []core.VolumeMount{k8sutil.RocksdbEncryptionReadOnlyVolumeMount()} } } diff --git a/pkg/deployment/pod/jwt.go b/pkg/deployment/pod/jwt.go index 379505601..3215420a9 100644 --- a/pkg/deployment/pod/jwt.go +++ b/pkg/deployment/pod/jwt.go @@ -34,6 +34,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/constants" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" core "k8s.io/api/core/v1" ) @@ -72,9 +73,9 @@ func (e jwt) Args(i Input) k8sutil.OptionPairs { options.Add("--server.authentication", "true") if VersionHasJWTSecretKeyfolder(i.Version, i.Enterprise) { - options.Add("--server.jwt-secret-folder", k8sutil.ClusterJWTSecretVolumeMountDir) + options.Add("--server.jwt-secret-folder", shared.ClusterJWTSecretVolumeMountDir) } else { - keyPath := filepath.Join(k8sutil.ClusterJWTSecretVolumeMountDir, constants.SecretKeyToken) + keyPath := filepath.Join(shared.ClusterJWTSecretVolumeMountDir, constants.SecretKeyToken) options.Add("--server.jwt-secret-keyfile", keyPath) } @@ -88,9 +89,9 @@ func (e jwt) Volumes(i Input) ([]core.Volume, []core.VolumeMount) { var vol core.Volume if VersionHasJWTSecretKeyfolder(i.Version, i.Enterprise) { - vol = k8sutil.CreateVolumeWithSecret(k8sutil.ClusterJWTSecretVolumeName, JWTSecretFolder(i.ApiObject.GetName())) + vol = k8sutil.CreateVolumeWithSecret(shared.ClusterJWTSecretVolumeName, JWTSecretFolder(i.ApiObject.GetName())) } else { - vol = k8sutil.CreateVolumeWithSecret(k8sutil.ClusterJWTSecretVolumeName, i.Deployment.Authentication.GetJWTSecretName()) + vol = k8sutil.CreateVolumeWithSecret(shared.ClusterJWTSecretVolumeName, i.Deployment.Authentication.GetJWTSecretName()) } return []core.Volume{vol}, []core.VolumeMount{k8sutil.ClusterJWTVolumeMount()} } diff --git a/pkg/deployment/pod/security.go b/pkg/deployment/pod/security.go index d0402a905..931258496 100644 --- a/pkg/deployment/pod/security.go +++ b/pkg/deployment/pod/security.go @@ -21,6 +21,7 @@ package pod import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/deployment/features" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/interfaces" @@ -52,7 +53,7 @@ func (s security) Volumes(i Input) ([]core.Volume, []core.VolumeMount) { // Add Volumes { v = append(v, core.Volume{ - Name: k8sutil.FoxxAppEphemeralVolumeName, + Name: shared.FoxxAppEphemeralVolumeName, VolumeSource: core.VolumeSource{ EmptyDir: &core.EmptyDirVolumeSource{ SizeLimit: i.GroupSpec.EphemeralVolumes.GetAppsSize(), @@ -63,7 +64,7 @@ func (s security) Volumes(i Input) ([]core.Volume, []core.VolumeMount) { { v = append(v, core.Volume{ - Name: k8sutil.TMPEphemeralVolumeName, + Name: shared.TMPEphemeralVolumeName, VolumeSource: core.VolumeSource{ EmptyDir: &core.EmptyDirVolumeSource{ SizeLimit: i.GroupSpec.EphemeralVolumes.GetTempSize(), @@ -74,11 +75,11 @@ func (s security) Volumes(i Input) ([]core.Volume, []core.VolumeMount) { // Mount volumes vm = append(vm, core.VolumeMount{ - Name: k8sutil.FoxxAppEphemeralVolumeName, + Name: shared.FoxxAppEphemeralVolumeName, MountPath: "/ephemeral/app", }) vm = append(vm, core.VolumeMount{ - Name: k8sutil.TMPEphemeralVolumeName, + Name: shared.TMPEphemeralVolumeName, MountPath: "/ephemeral/tmp", }) } diff --git a/pkg/deployment/pod/sni.go b/pkg/deployment/pod/sni.go index 726ecadcf..148e30e63 100644 --- a/pkg/deployment/pod/sni.go +++ b/pkg/deployment/pod/sni.go @@ -36,6 +36,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/constants" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" core "k8s.io/api/core/v1" ) @@ -120,7 +121,7 @@ func (s sni) Volumes(i Input) ([]core.Volume, []core.VolumeMount) { volMount := core.VolumeMount{ Name: secretNameSha, - MountPath: fmt.Sprintf("%s/%s", k8sutil.TLSSNIKeyfileVolumeMountDir, secret), + MountPath: fmt.Sprintf("%s/%s", shared.TLSSNIKeyfileVolumeMountDir, secret), ReadOnly: true, } @@ -145,7 +146,7 @@ func (s sni) Args(i Input) k8sutil.OptionPairs { } for _, server := range servers { - opts.Addf("--ssl.server-name-indication", "%s=%s/%s/%s", server, k8sutil.TLSSNIKeyfileVolumeMountDir, volume, constants.SecretTLSKeyfile) + opts.Addf("--ssl.server-name-indication", "%s=%s/%s/%s", server, shared.TLSSNIKeyfileVolumeMountDir, volume, constants.SecretTLSKeyfile) } } diff --git a/pkg/deployment/pod/tls.go b/pkg/deployment/pod/tls.go index 6dd61fa9c..9651aa1dd 100644 --- a/pkg/deployment/pod/tls.go +++ b/pkg/deployment/pod/tls.go @@ -29,6 +29,7 @@ import ( api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/constants" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" core "k8s.io/api/core/v1" @@ -70,7 +71,7 @@ func (s tls) Volumes(i Input) ([]core.Volume, []core.VolumeMount) { return nil, nil } - return []core.Volume{k8sutil.CreateVolumeWithSecret(k8sutil.TlsKeyfileVolumeName, GetTLSKeyfileSecretName(i))}, + return []core.Volume{k8sutil.CreateVolumeWithSecret(shared.TlsKeyfileVolumeName, GetTLSKeyfileSecretName(i))}, []core.VolumeMount{k8sutil.TlsKeyfileVolumeMount()} } @@ -81,7 +82,7 @@ func (s tls) Args(i Input) k8sutil.OptionPairs { opts := k8sutil.CreateOptionPairs() - keyPath := filepath.Join(k8sutil.TLSKeyfileVolumeMountDir, constants.SecretTLSKeyfile) + keyPath := filepath.Join(shared.TLSKeyfileVolumeMountDir, constants.SecretTLSKeyfile) opts.Add("--ssl.keyfile", keyPath) opts.Add("--ssl.ecdh-curve", "") // This way arangod accepts curves other than P256 as well. diff --git a/pkg/deployment/reconcile/plan_builder_tls.go b/pkg/deployment/reconcile/plan_builder_tls.go index 5959cddea..a57b57ee1 100644 --- a/pkg/deployment/reconcile/plan_builder_tls.go +++ b/pkg/deployment/reconcile/plan_builder_tls.go @@ -40,6 +40,7 @@ import ( "github.com/arangodb/go-driver" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/deployment/actions" "github.com/arangodb/kube-arangodb/pkg/deployment/resources" "github.com/arangodb/kube-arangodb/pkg/util" @@ -407,7 +408,7 @@ func createKeyfileRenewalPlanMode( } func checkServerValidCertRequest(ctx context.Context, context PlanBuilderContext, apiObject k8sutil.APIObject, group api.ServerGroup, member api.MemberStatus, ca resources.Certificates) (*tls.ConnectionState, error) { - endpoint := fmt.Sprintf("https://%s:%d", k8sutil.CreatePodDNSNameWithDomain(apiObject, context.GetSpec().ClusterDomain, group.AsRole(), member.ID), k8sutil.ArangoPort) + endpoint := fmt.Sprintf("https://%s:%d", k8sutil.CreatePodDNSNameWithDomain(apiObject, context.GetSpec().ClusterDomain, group.AsRole(), member.ID), shared.ArangoPort) tlsConfig := &tls.Config{ RootCAs: ca.AsCertPool(), diff --git a/pkg/deployment/resources/exporter.go b/pkg/deployment/resources/exporter.go index 1c6d119b8..a716543fb 100644 --- a/pkg/deployment/resources/exporter.go +++ b/pkg/deployment/resources/exporter.go @@ -26,6 +26,7 @@ import ( api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/probes" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/constants" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" v1 "k8s.io/api/core/v1" @@ -37,7 +38,7 @@ func ArangodbExporterContainer(image string, args []string, livenessProbe *probe spec api.DeploymentSpec) v1.Container { c := v1.Container{ - Name: k8sutil.ExporterContainerName, + Name: shared.ExporterContainerName, Image: image, Command: append([]string{"/app/arangodb-exporter"}, args...), Ports: []v1.ContainerPort{ @@ -60,16 +61,16 @@ func ArangodbExporterContainer(image string, args []string, livenessProbe *probe } func createInternalExporterArgs(spec api.DeploymentSpec, groupSpec api.ServerGroupSpec, version driver.Version) []string { - tokenpath := filepath.Join(k8sutil.ExporterJWTVolumeMountDir, constants.SecretKeyToken) + tokenpath := filepath.Join(shared.ExporterJWTVolumeMountDir, constants.SecretKeyToken) options := k8sutil.CreateOptionPairs(64) if spec.Authentication.IsAuthenticated() { options.Add("--arangodb.jwt-file", tokenpath) } - path := k8sutil.ArangoExporterInternalEndpoint + path := shared.ArangoExporterInternalEndpoint if version.CompareTo("3.8.0") >= 0 { - path = k8sutil.ArangoExporterInternalEndpointV2 + path = shared.ArangoExporterInternalEndpointV2 } if port := groupSpec.InternalPort; port == nil { @@ -77,17 +78,17 @@ func createInternalExporterArgs(spec api.DeploymentSpec, groupSpec api.ServerGro if spec.IsSecure() { scheme = "https" } - options.Addf("--arangodb.endpoint", "%s://localhost:%d%s", scheme, k8sutil.ArangoPort, path) + options.Addf("--arangodb.endpoint", "%s://localhost:%d%s", scheme, shared.ArangoPort, path) } else { options.Addf("--arangodb.endpoint", "http://localhost:%d%s", *port, path) } - keyPath := filepath.Join(k8sutil.TLSKeyfileVolumeMountDir, constants.SecretTLSKeyfile) + keyPath := filepath.Join(shared.TLSKeyfileVolumeMountDir, constants.SecretTLSKeyfile) if spec.IsSecure() && spec.Metrics.IsTLS() { options.Add("--ssl.keyfile", keyPath) } - if port := spec.Metrics.GetPort(); port != k8sutil.ArangoExporterPort { + if port := spec.Metrics.GetPort(); port != shared.ArangoExporterPort { options.Addf("--server.address", ":%d", port) } @@ -97,7 +98,7 @@ func createInternalExporterArgs(spec api.DeploymentSpec, groupSpec api.ServerGro func createExporterLivenessProbe(isSecure bool) *probes.HTTPProbeConfig { probeCfg := &probes.HTTPProbeConfig{ LocalPath: "/", - Port: k8sutil.ArangoExporterPort, + Port: shared.ArangoExporterPort, Secure: isSecure, } diff --git a/pkg/deployment/resources/internal_exporter.go b/pkg/deployment/resources/internal_exporter.go index dd20bafaa..9af32e006 100644 --- a/pkg/deployment/resources/internal_exporter.go +++ b/pkg/deployment/resources/internal_exporter.go @@ -26,6 +26,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/probes" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" v1 "k8s.io/api/core/v1" ) @@ -42,7 +43,7 @@ func ArangodbInternalExporterContainer(image string, args []string, livenessProb exePath := filepath.Join(k8sutil.LifecycleVolumeMountDir, filepath.Base(binaryPath)) c := v1.Container{ - Name: k8sutil.ExporterContainerName, + Name: shared.ExporterContainerName, Image: image, Command: append([]string{exePath, "exporter"}, args...), Ports: []v1.ContainerPort{ diff --git a/pkg/deployment/resources/pod_creator.go b/pkg/deployment/resources/pod_creator.go index 57bba0a2d..bb57cf62e 100644 --- a/pkg/deployment/resources/pod_creator.go +++ b/pkg/deployment/resources/pod_creator.go @@ -53,6 +53,7 @@ import ( "k8s.io/apimachinery/pkg/types" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/deployment/pod" "github.com/arangodb/kube-arangodb/pkg/util/constants" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" @@ -74,7 +75,7 @@ func createArangodArgs(cachedStatus interfaces.Inspector, input pod.Input, addit } if input.GroupSpec.GetExternalPortEnabled() { - options.Addf("--server.endpoint", "%s://%s:%d", scheme, input.Deployment.GetListenAddr(), k8sutil.ArangoPort) + options.Addf("--server.endpoint", "%s://%s:%d", scheme, input.Deployment.GetListenAddr(), shared.ArangoPort) } if port := input.GroupSpec.InternalPort; port != nil { @@ -105,7 +106,7 @@ func createArangodArgs(cachedStatus interfaces.Inspector, input pod.Input, addit // RocksDB options.Merge(pod.Encryption().Args(input)) - options.Add("--database.directory", k8sutil.ArangodVolumeMountDir) + options.Add("--database.directory", shared.ArangodVolumeMountDir) options.Add("--log.output", "+") options.Merge(pod.SNI().Args(input)) @@ -116,7 +117,7 @@ func createArangodArgs(cachedStatus interfaces.Inspector, input pod.Input, addit } endpoint = util.StringOrDefault(input.Member.Endpoint, endpoint) - myTCPURL := scheme + "://" + net.JoinHostPort(endpoint, strconv.Itoa(k8sutil.ArangoPort)) + myTCPURL := scheme + "://" + net.JoinHostPort(endpoint, strconv.Itoa(shared.ArangoPort)) addAgentEndpoints := false switch input.Group { case api.ServerGroupAgents: @@ -133,7 +134,7 @@ func createArangodArgs(cachedStatus interfaces.Inspector, input pod.Input, addit if err != nil { return nil, err } - options.Addf("--agency.endpoint", "%s://%s", scheme, net.JoinHostPort(util.StringOrDefault(p.Endpoint, dnsName), strconv.Itoa(k8sutil.ArangoPort))) + options.Addf("--agency.endpoint", "%s://%s", scheme, net.JoinHostPort(util.StringOrDefault(p.Endpoint, dnsName), strconv.Itoa(shared.ArangoPort))) } } case api.ServerGroupDBServers: @@ -170,7 +171,7 @@ func createArangodArgs(cachedStatus interfaces.Inspector, input pod.Input, addit if err != nil { return nil, err } - options.Addf("--cluster.agency-endpoint", "%s://%s", scheme, net.JoinHostPort(util.StringOrDefault(p.Endpoint, dnsName), strconv.Itoa(k8sutil.ArangoPort))) + options.Addf("--cluster.agency-endpoint", "%s://%s", scheme, net.JoinHostPort(util.StringOrDefault(p.Endpoint, dnsName), strconv.Itoa(shared.ArangoPort))) } } @@ -200,22 +201,22 @@ func createArangoSyncArgs(apiObject meta.Object, spec api.DeploymentSpec, group if spec.Sync.Monitoring.GetTokenSecretName() != "" { options.Addf("--monitoring.token", "$(%s)", constants.EnvArangoSyncMonitoringToken) } - masterSecretPath := filepath.Join(k8sutil.MasterJWTSecretVolumeMountDir, constants.SecretKeyToken) + masterSecretPath := filepath.Join(shared.MasterJWTSecretVolumeMountDir, constants.SecretKeyToken) options.Add("--master.jwt-secret", masterSecretPath) var masterEndpoint []string switch group { case api.ServerGroupSyncMasters: runCmd = "master" - port = k8sutil.ArangoSyncMasterPort + port = shared.ArangoSyncMasterPort masterEndpoint = spec.Sync.ExternalAccess.ResolveMasterEndpoint(k8sutil.CreateSyncMasterClientServiceDNSNameWithDomain(apiObject, spec.ClusterDomain), port) - keyPath := filepath.Join(k8sutil.TLSKeyfileVolumeMountDir, constants.SecretTLSKeyfile) - clientCAPath := filepath.Join(k8sutil.ClientAuthCAVolumeMountDir, constants.SecretCACertificate) + keyPath := filepath.Join(shared.TLSKeyfileVolumeMountDir, constants.SecretTLSKeyfile) + clientCAPath := filepath.Join(shared.ClientAuthCAVolumeMountDir, constants.SecretCACertificate) options.Add("--server.keyfile", keyPath) options.Add("--server.client-cafile", clientCAPath) options.Add("--mq.type", "direct") if spec.IsAuthenticated() { - clusterSecretPath := filepath.Join(k8sutil.ClusterJWTSecretVolumeMountDir, constants.SecretKeyToken) + clusterSecretPath := filepath.Join(shared.ClusterJWTSecretVolumeMountDir, constants.SecretKeyToken) options.Add("--cluster.jwt-secret", clusterSecretPath) } dbServiceName := k8sutil.CreateDatabaseClientServiceName(apiObject.GetName()) @@ -223,12 +224,12 @@ func createArangoSyncArgs(apiObject meta.Object, spec api.DeploymentSpec, group if spec.IsSecure() { scheme = "https" } - options.Addf("--cluster.endpoint", "%s://%s:%d", scheme, dbServiceName, k8sutil.ArangoPort) + options.Addf("--cluster.endpoint", "%s://%s:%d", scheme, dbServiceName, shared.ArangoPort) case api.ServerGroupSyncWorkers: runCmd = "worker" - port = k8sutil.ArangoSyncWorkerPort + port = shared.ArangoSyncWorkerPort masterEndpointHost := k8sutil.CreateSyncMasterClientServiceName(apiObject.GetName()) - masterEndpoint = []string{"https://" + net.JoinHostPort(masterEndpointHost, strconv.Itoa(k8sutil.ArangoSyncMasterPort))} + masterEndpoint = []string{"https://" + net.JoinHostPort(masterEndpointHost, strconv.Itoa(shared.ArangoSyncMasterPort))} } for _, ep := range masterEndpoint { options.Add("--master.endpoint", ep) @@ -527,7 +528,7 @@ func (r *Resources) createPodForMember(ctx context.Context, cachedStatus inspect k8sutil.CreateSyncMasterClientServiceDNSNameWithDomain(apiObject, spec.ClusterDomain), k8sutil.CreatePodDNSNameWithDomain(apiObject, spec.ClusterDomain, role, m.ID), ) - masterEndpoint := spec.Sync.ExternalAccess.ResolveMasterEndpoint(k8sutil.CreateSyncMasterClientServiceDNSNameWithDomain(apiObject, spec.ClusterDomain), k8sutil.ArangoSyncMasterPort) + masterEndpoint := spec.Sync.ExternalAccess.ResolveMasterEndpoint(k8sutil.CreateSyncMasterClientServiceDNSNameWithDomain(apiObject, spec.ClusterDomain), shared.ArangoSyncMasterPort) for _, ep := range masterEndpoint { if u, err := url.Parse(ep); err == nil { names.AltNames = append(names.AltNames, u.Hostname()) diff --git a/pkg/deployment/resources/pod_creator_agent_args_test.go b/pkg/deployment/resources/pod_creator_agent_args_test.go index 73d6aeeb5..00bcd42fd 100644 --- a/pkg/deployment/resources/pod_creator_agent_args_test.go +++ b/pkg/deployment/resources/pod_creator_agent_args_test.go @@ -33,9 +33,9 @@ import ( "context" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/constants" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector" "github.com/arangodb/kube-arangodb/pkg/util/kclient" "github.com/arangodb/kube-arangodb/pkg/util/tests" @@ -71,7 +71,7 @@ func createInspector(t *testing.T, f kclient.FakeClientBuilder) inspector.Inspec // TestCreateArangodArgsAgent tests createArangodArgs for agent. func TestCreateArangodArgsAgent(t *testing.T) { - jwtSecretFile := filepath.Join(k8sutil.ClusterJWTSecretVolumeMountDir, constants.SecretKeyToken) + jwtSecretFile := filepath.Join(shared.ClusterJWTSecretVolumeMountDir, constants.SecretKeyToken) // Default deployment { apiObject := &api.ArangoDeployment{ diff --git a/pkg/deployment/resources/pod_creator_arangod.go b/pkg/deployment/resources/pod_creator_arangod.go index 4bfd67f2c..e2a9ca9c4 100644 --- a/pkg/deployment/resources/pod_creator_arangod.go +++ b/pkg/deployment/resources/pod_creator_arangod.go @@ -41,6 +41,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/constants" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" core "k8s.io/api/core/v1" ) @@ -98,8 +99,8 @@ type ArangoVersionCheckContainer struct { func (a *ArangoDContainer) GetPorts() []core.ContainerPort { ports := []core.ContainerPort{ { - Name: k8sutil.ServerContainerName, - ContainerPort: int32(k8sutil.ArangoPort), + Name: shared.ServerContainerName, + ContainerPort: int32(shared.ArangoPort), Protocol: core.ProtocolTCP, }, } @@ -109,7 +110,7 @@ func (a *ArangoDContainer) GetPorts() []core.ContainerPort { case api.MetricsModeInternal: ports = append(ports, core.ContainerPort{ Name: "exporter", - ContainerPort: int32(k8sutil.ArangoPort), + ContainerPort: int32(shared.ArangoPort), Protocol: core.ProtocolTCP, }) } @@ -123,7 +124,7 @@ func (a *ArangoDContainer) GetArgs() ([]string, error) { } func (a *ArangoDContainer) GetName() string { - return k8sutil.ServerContainerName + return shared.ServerContainerName } func (a *ArangoDContainer) GetExecutor() string { @@ -555,12 +556,12 @@ func CreateArangoDVolumes(status api.MemberStatus, input pod.Input, spec api.Dep volumes.AddVolumeMount(k8sutil.LifecycleVolumeMount()) if status.PersistentVolumeClaimName != "" { - vol := k8sutil.CreateVolumeWithPersitantVolumeClaim(k8sutil.ArangodVolumeName, + vol := k8sutil.CreateVolumeWithPersitantVolumeClaim(shared.ArangodVolumeName, status.PersistentVolumeClaimName) volumes.AddVolume(vol) } else { - volumes.AddVolume(k8sutil.CreateVolumeEmptyDir(k8sutil.ArangodVolumeName)) + volumes.AddVolume(k8sutil.CreateVolumeEmptyDir(shared.ArangodVolumeName)) } // TLS @@ -575,7 +576,7 @@ func CreateArangoDVolumes(status api.MemberStatus, input pod.Input, spec api.Dep if spec.Metrics.IsEnabled() { token := spec.Metrics.GetJWTTokenSecretName() if spec.Authentication.IsAuthenticated() && token != "" { - vol := k8sutil.CreateVolumeWithSecret(k8sutil.ExporterJWTVolumeName, token) + vol := k8sutil.CreateVolumeWithSecret(shared.ExporterJWTVolumeName, token) volumes.AddVolume(vol) } } diff --git a/pkg/deployment/resources/pod_creator_coordinator_args_test.go b/pkg/deployment/resources/pod_creator_coordinator_args_test.go index fc8a236b3..71590f405 100644 --- a/pkg/deployment/resources/pod_creator_coordinator_args_test.go +++ b/pkg/deployment/resources/pod_creator_coordinator_args_test.go @@ -32,16 +32,16 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/constants" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" "github.com/arangodb/kube-arangodb/pkg/util/kclient" "github.com/arangodb/kube-arangodb/pkg/util/tests" ) // TestCreateArangodArgsCoordinator tests createArangodArgs for coordinator. func TestCreateArangodArgsCoordinator(t *testing.T) { - jwtSecretFile := filepath.Join(k8sutil.ClusterJWTSecretVolumeMountDir, constants.SecretKeyToken) + jwtSecretFile := filepath.Join(shared.ClusterJWTSecretVolumeMountDir, constants.SecretKeyToken) // Default deployment { apiObject := &api.ArangoDeployment{ diff --git a/pkg/deployment/resources/pod_creator_dbserver_args_test.go b/pkg/deployment/resources/pod_creator_dbserver_args_test.go index 8c41d5000..0bb27ec45 100644 --- a/pkg/deployment/resources/pod_creator_dbserver_args_test.go +++ b/pkg/deployment/resources/pod_creator_dbserver_args_test.go @@ -32,16 +32,16 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/constants" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" "github.com/arangodb/kube-arangodb/pkg/util/kclient" "github.com/arangodb/kube-arangodb/pkg/util/tests" ) // TestCreateArangodArgsDBServer tests createArangodArgs for dbserver. func TestCreateArangodArgsDBServer(t *testing.T) { - jwtSecretFile := filepath.Join(k8sutil.ClusterJWTSecretVolumeMountDir, constants.SecretKeyToken) + jwtSecretFile := filepath.Join(shared.ClusterJWTSecretVolumeMountDir, constants.SecretKeyToken) // Default deployment { apiObject := &api.ArangoDeployment{ diff --git a/pkg/deployment/resources/pod_creator_probes.go b/pkg/deployment/resources/pod_creator_probes.go index 954589d8e..1bf153e0f 100644 --- a/pkg/deployment/resources/pod_creator_probes.go +++ b/pkg/deployment/resources/pod_creator_probes.go @@ -32,6 +32,7 @@ import ( "github.com/arangodb/go-driver" "github.com/arangodb/go-driver/jwt" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/deployment/pod" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" @@ -441,9 +442,9 @@ func (r *Resources) probeBuilderReadinessCore(spec api.DeploymentSpec, group api func (r *Resources) probeBuilderLivenessSync(spec api.DeploymentSpec, group api.ServerGroup, version driver.Version) (Probe, error) { authorization := "" - port := k8sutil.ArangoSyncMasterPort + port := shared.ArangoSyncMasterPort if group == api.ServerGroupSyncWorkers { - port = k8sutil.ArangoSyncWorkerPort + port = shared.ArangoSyncWorkerPort } if spec.Sync.Monitoring.GetTokenSecretName() != "" { // Use monitoring token @@ -476,9 +477,9 @@ func (r *Resources) probeBuilderLivenessSync(spec api.DeploymentSpec, group api. func (r *Resources) probeBuilderStartupSync(spec api.DeploymentSpec, group api.ServerGroup, version driver.Version) (Probe, error) { authorization := "" - port := k8sutil.ArangoSyncMasterPort + port := shared.ArangoSyncMasterPort if group == api.ServerGroupSyncWorkers { - port = k8sutil.ArangoSyncWorkerPort + port = shared.ArangoSyncWorkerPort } if spec.Sync.Monitoring.GetTokenSecretName() != "" { // Use monitoring token diff --git a/pkg/deployment/resources/pod_creator_single_args_test.go b/pkg/deployment/resources/pod_creator_single_args_test.go index ee8b9d184..3ac268e5e 100644 --- a/pkg/deployment/resources/pod_creator_single_args_test.go +++ b/pkg/deployment/resources/pod_creator_single_args_test.go @@ -31,9 +31,9 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/constants" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" "github.com/arangodb/kube-arangodb/pkg/util/kclient" "github.com/arangodb/kube-arangodb/pkg/util/tests" "github.com/stretchr/testify/assert" @@ -41,7 +41,7 @@ import ( // TestCreateArangodArgsSingle tests createArangodArgs for single server. func TestCreateArangodArgsSingle(t *testing.T) { - jwtSecretFile := filepath.Join(k8sutil.ClusterJWTSecretVolumeMountDir, constants.SecretKeyToken) + jwtSecretFile := filepath.Join(shared.ClusterJWTSecretVolumeMountDir, constants.SecretKeyToken) // Default deployment { apiObject := &api.ArangoDeployment{ diff --git a/pkg/deployment/resources/pod_creator_sync.go b/pkg/deployment/resources/pod_creator_sync.go index 75b811cf7..12e3e8dfe 100644 --- a/pkg/deployment/resources/pod_creator_sync.go +++ b/pkg/deployment/resources/pod_creator_sync.go @@ -39,6 +39,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/constants" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" core "k8s.io/api/core/v1" ) @@ -84,14 +85,14 @@ func (a *ArangoSyncContainer) GetArgs() ([]string, error) { } func (a *ArangoSyncContainer) GetName() string { - return k8sutil.ServerContainerName + return shared.ServerContainerName } func (a *ArangoSyncContainer) GetPorts() []core.ContainerPort { return []core.ContainerPort{ { - Name: k8sutil.ServerContainerName, - ContainerPort: int32(k8sutil.ArangoPort), + Name: shared.ServerContainerName, + ContainerPort: int32(shared.ArangoPort), Protocol: core.ProtocolTCP, }, } @@ -391,25 +392,25 @@ func createArangoSyncVolumes(tlsKeyfileSecretName, clientAuthCASecretName, maste volumes.AddVolumeMount(k8sutil.LifecycleVolumeMount()) if tlsKeyfileSecretName != "" { - vol := k8sutil.CreateVolumeWithSecret(k8sutil.TlsKeyfileVolumeName, tlsKeyfileSecretName) + vol := k8sutil.CreateVolumeWithSecret(shared.TlsKeyfileVolumeName, tlsKeyfileSecretName) volumes.AddVolume(vol) volumes.AddVolumeMount(k8sutil.TlsKeyfileVolumeMount()) } if clientAuthCASecretName != "" { - vol := k8sutil.CreateVolumeWithSecret(k8sutil.ClientAuthCAVolumeName, clientAuthCASecretName) + vol := k8sutil.CreateVolumeWithSecret(shared.ClientAuthCAVolumeName, clientAuthCASecretName) volumes.AddVolume(vol) volumes.AddVolumeMount(k8sutil.ClientAuthCACertificateVolumeMount()) } if masterJWTSecretName != "" { - vol := k8sutil.CreateVolumeWithSecret(k8sutil.MasterJWTSecretVolumeName, masterJWTSecretName) + vol := k8sutil.CreateVolumeWithSecret(shared.MasterJWTSecretVolumeName, masterJWTSecretName) volumes.AddVolume(vol) volumes.AddVolumeMount(k8sutil.MasterJWTVolumeMount()) } if clusterJWTSecretName != "" { - vol := k8sutil.CreateVolumeWithSecret(k8sutil.ClusterJWTSecretVolumeName, clusterJWTSecretName) + vol := k8sutil.CreateVolumeWithSecret(shared.ClusterJWTSecretVolumeName, clusterJWTSecretName) volumes.AddVolume(vol) volumes.AddVolumeMount(k8sutil.ClusterJWTVolumeMount()) } diff --git a/pkg/deployment/resources/pod_termination.go b/pkg/deployment/resources/pod_termination.go index e57d1eac2..61f7b6f44 100644 --- a/pkg/deployment/resources/pod_termination.go +++ b/pkg/deployment/resources/pod_termination.go @@ -34,6 +34,7 @@ import ( driver "github.com/arangodb/go-driver" "github.com/arangodb/go-driver/agency" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/arangod" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" v1 "k8s.io/api/core/v1" @@ -185,7 +186,7 @@ func (r *Resources) prepareDBServerPodTermination(ctx context.Context, log zerol log.Debug().Err(err).Msg("Failed to access cluster") if r.context.GetSpec().Recovery.Get().GetAutoRecover() { - if c, ok := k8sutil.GetContainerStatusByName(p, k8sutil.ServerContainerName); ok { + if c, ok := k8sutil.GetContainerStatusByName(p, shared.ServerContainerName); ok { if t := c.State.Terminated; t != nil { return nil } diff --git a/pkg/deployment/resources/secrets.go b/pkg/deployment/resources/secrets.go index 847a34394..3509456e5 100644 --- a/pkg/deployment/resources/secrets.go +++ b/pkg/deployment/resources/secrets.go @@ -52,6 +52,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/deployment/pod" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/metrics" "github.com/arangodb/kube-arangodb/pkg/util/constants" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" @@ -432,8 +433,8 @@ var ( "iss": "arangodb", "server_id": "exporter", "allowed_paths": []interface{}{"/_admin/statistics", "/_admin/statistics-description", - k8sutil.ArangoExporterInternalEndpoint, k8sutil.ArangoExporterInternalEndpointV2, - k8sutil.ArangoExporterStatusEndpoint, k8sutil.ArangoExporterClusterHealthEndpoint}, + shared.ArangoExporterInternalEndpoint, shared.ArangoExporterInternalEndpointV2, + shared.ArangoExporterStatusEndpoint, shared.ArangoExporterClusterHealthEndpoint}, } ) diff --git a/pkg/deployment/resources/servicemonitor.go b/pkg/deployment/resources/servicemonitor.go index ac91c809f..1e56adc2c 100644 --- a/pkg/deployment/resources/servicemonitor.go +++ b/pkg/deployment/resources/servicemonitor.go @@ -34,6 +34,7 @@ import ( apiErrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/runtime/schema" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/kclient" coreosv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -95,7 +96,7 @@ func (r *Resources) serviceMonitorSpec() (coreosv1.ServiceMonitorSpec, error) { endpoint.BearerTokenSecret.Name = *spec.Metrics.Authentication.JWTTokenSecretName endpoint.BearerTokenSecret.Key = constants.SecretKeyToken - endpoint.Path = k8sutil.ArangoExporterInternalEndpoint + endpoint.Path = shared.ArangoExporterInternalEndpoint return coreosv1.ServiceMonitorSpec{ JobLabel: "k8s-app", diff --git a/pkg/deployment/resources/services.go b/pkg/deployment/resources/services.go index ed4424f24..31c1c1a11 100644 --- a/pkg/deployment/resources/services.go +++ b/pkg/deployment/resources/services.go @@ -37,6 +37,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/metrics" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" servicev1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/service/v1" @@ -90,8 +91,8 @@ func (r *Resources) EnsureServices(ctx context.Context, cachedStatus inspectorIn { Name: "server", Protocol: "TCP", - Port: k8sutil.ArangoPort, - TargetPort: intstr.IntOrString{IntVal: k8sutil.ArangoPort}, + Port: shared.ArangoPort, + TargetPort: intstr.IntOrString{IntVal: shared.ArangoPort}, }, }, PublishNotReadyAddresses: true, @@ -119,8 +120,8 @@ func (r *Resources) EnsureServices(ctx context.Context, cachedStatus inspectorIn { Name: "server", Protocol: "TCP", - Port: k8sutil.ArangoPort, - TargetPort: intstr.IntOrString{IntVal: k8sutil.ArangoPort}, + Port: shared.ArangoPort, + TargetPort: intstr.IntOrString{IntVal: shared.ArangoPort}, }, } spec.PublishNotReadyAddresses = true @@ -194,7 +195,7 @@ func (r *Resources) EnsureServices(ctx context.Context, cachedStatus inspectorIn if single { role = "single" } - if err := r.ensureExternalAccessServices(ctx, cachedStatus, svcs, eaServiceName, role, "database", k8sutil.ArangoPort, false, spec.ExternalAccess, apiObject, log); err != nil { + if err := r.ensureExternalAccessServices(ctx, cachedStatus, svcs, eaServiceName, role, "database", shared.ArangoPort, false, spec.ExternalAccess, apiObject, log); err != nil { return errors.WithStack(err) } @@ -203,7 +204,7 @@ func (r *Resources) EnsureServices(ctx context.Context, cachedStatus inspectorIn counterMetric.Inc() eaServiceName := k8sutil.CreateSyncMasterClientServiceName(deploymentName) role := "syncmaster" - if err := r.ensureExternalAccessServices(ctx, cachedStatus, svcs, eaServiceName, role, "sync", k8sutil.ArangoSyncMasterPort, true, spec.Sync.ExternalAccess.ExternalAccessSpec, apiObject, log); err != nil { + if err := r.ensureExternalAccessServices(ctx, cachedStatus, svcs, eaServiceName, role, "sync", shared.ArangoSyncMasterPort, true, spec.Sync.ExternalAccess.ExternalAccessSpec, apiObject, log); err != nil { return errors.WithStack(err) } status, lastVersion := r.context.GetStatus() diff --git a/pkg/deployment/rotation/arangod_containers_test.go b/pkg/deployment/rotation/arangod_containers_test.go index b12cd88f4..a36dab8ef 100644 --- a/pkg/deployment/rotation/arangod_containers_test.go +++ b/pkg/deployment/rotation/arangod_containers_test.go @@ -27,16 +27,16 @@ import ( v1 "k8s.io/api/core/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/deployment/actions" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) func Test_ArangoDContainers_SidecarImages(t *testing.T) { testCases := []TestCase{ { name: "Sidecar Image Update", - spec: buildPodSpec(addContainer(k8sutil.ServerContainerName, nil), addSidecarWithImage("sidecar", "local:1.0")), - status: buildPodSpec(addContainer(k8sutil.ServerContainerName, nil), addSidecarWithImage("sidecar", "local:2.0")), + spec: buildPodSpec(addContainer(shared.ServerContainerName, nil), addSidecarWithImage("sidecar", "local:1.0")), + status: buildPodSpec(addContainer(shared.ServerContainerName, nil), addSidecarWithImage("sidecar", "local:2.0")), expectedMode: InPlaceRotation, expectedPlan: api.Plan{ @@ -220,8 +220,8 @@ func logLevelTestCaseGen(name string, mode Mode, spec, status []string) TestCase actions.NewClusterAction(api.ActionTypeRuntimeContainerArgsLogLevelUpdate), } } - c.spec = buildPodSpec(addContainerWithCommand(k8sutil.ServerContainerName, spec)) - c.status = buildPodSpec(addContainerWithCommand(k8sutil.ServerContainerName, status)) + c.spec = buildPodSpec(addContainerWithCommand(shared.ServerContainerName, spec)) + c.status = buildPodSpec(addContainerWithCommand(shared.ServerContainerName, status)) return c } diff --git a/pkg/deployment/server_api.go b/pkg/deployment/server_api.go index 5ffa8de12..39a331bf7 100644 --- a/pkg/deployment/server_api.go +++ b/pkg/deployment/server_api.go @@ -28,6 +28,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/server" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) @@ -204,7 +205,7 @@ func (d *Deployment) DatabaseURL() string { } } portPredicate := func(p core.ServicePort) bool { - return p.TargetPort.IntValue() == k8sutil.ArangoPort + return p.TargetPort.IntValue() == shared.ArangoPort } url, err := k8sutil.CreateServiceURL(*svc, scheme, portPredicate, nodeFetcher) if err != nil { diff --git a/pkg/exporter/monitor.go b/pkg/exporter/monitor.go index 403287bd2..1f73335c5 100644 --- a/pkg/exporter/monitor.go +++ b/pkg/exporter/monitor.go @@ -34,8 +34,7 @@ import ( "time" "github.com/arangodb/go-driver" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" - + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/rs/zerolog/log" ) @@ -48,7 +47,7 @@ const ( var currentMembersStatus atomic.Value func NewMonitor(arangodbEndpoint string, auth Authentication, sslVerify bool, timeout time.Duration) *monitor { - uri, err := setPath(arangodbEndpoint, k8sutil.ArangoExporterClusterHealthEndpoint) + uri, err := setPath(arangodbEndpoint, shared.ArangoExporterClusterHealthEndpoint) if err != nil { log.Error().Err(err).Msgf("Fatal") os.Exit(1) @@ -131,7 +130,7 @@ func (m monitor) GetMemberStatus(id driver.ServerID, member driver.ServerHealth) return result, err } - req.URL, err = setPath(member.Endpoint, k8sutil.ArangoExporterStatusEndpoint) + req.URL, err = setPath(member.Endpoint, shared.ArangoExporterStatusEndpoint) if err != nil { return result, err } diff --git a/pkg/handlers/job/handler.go b/pkg/handlers/job/handler.go index 79887b382..4962c2a9f 100644 --- a/pkg/handlers/job/handler.go +++ b/pkg/handlers/job/handler.go @@ -37,6 +37,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/operatorV2/operation" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" batchv1 "k8s.io/api/batch/v1" core "k8s.io/api/core/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -144,7 +145,7 @@ func (h *handler) prepareK8sJob(job *appsApi.ArangoJob) (*batchv1.Job, error) { if deployment.Spec.TLS.IsSecure() { k8sJob.Spec.Template.Spec.Volumes = []core.Volume{ { - Name: k8sutil.TlsKeyfileVolumeName, + Name: shared.TlsKeyfileVolumeName, VolumeSource: core.VolumeSource{ Secret: &core.SecretVolumeSource{ SecretName: deployment.Spec.TLS.GetCASecretName(), diff --git a/pkg/replication/sync_client.go b/pkg/replication/sync_client.go index 70be7cee0..f9e0ee4f5 100644 --- a/pkg/replication/sync_client.go +++ b/pkg/replication/sync_client.go @@ -33,6 +33,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/replication/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) @@ -113,7 +114,7 @@ func (dr *DeploymentReplication) createArangoSyncEndpoint(epSpec api.EndpointSpe return nil, errors.WithStack(err) } dnsName := k8sutil.CreateSyncMasterClientServiceDNSNameWithDomain(depl, depl.Spec.ClusterDomain) - return client.Endpoint{"https://" + net.JoinHostPort(dnsName, strconv.Itoa(k8sutil.ArangoSyncMasterPort))}, nil + return client.Endpoint{"https://" + net.JoinHostPort(dnsName, strconv.Itoa(shared.ArangoSyncMasterPort))}, nil } return client.Endpoint(epSpec.MasterEndpoint), nil } diff --git a/pkg/util/arangod/client.go b/pkg/util/arangod/client.go index db8a536e4..07caa38fa 100644 --- a/pkg/util/arangod/client.go +++ b/pkg/util/arangod/client.go @@ -38,6 +38,7 @@ import ( corev1 "k8s.io/client-go/kubernetes/typed/core/v1" api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" ) @@ -190,7 +191,7 @@ func createArangodHTTPConfigForDNSNames(apiObject *api.ArangoDeployment, dnsName DontFollowRedirect: true, } for _, dnsName := range dnsNames { - connConfig.Endpoints = append(connConfig.Endpoints, scheme+"://"+net.JoinHostPort(dnsName, strconv.Itoa(k8sutil.ArangoPort))) + connConfig.Endpoints = append(connConfig.Endpoints, scheme+"://"+net.JoinHostPort(dnsName, strconv.Itoa(shared.ArangoPort))) } return connConfig } diff --git a/pkg/util/k8sutil/affinity.go b/pkg/util/k8sutil/affinity.go index 4d3dee969..9fd5afadc 100644 --- a/pkg/util/k8sutil/affinity.go +++ b/pkg/util/k8sutil/affinity.go @@ -21,15 +21,11 @@ package k8sutil import ( + "github.com/arangodb/kube-arangodb/pkg/apis/shared" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) -const ( - NodeArchAffinityLabel = "kubernetes.io/arch" - NodeArchAffinityLabelBeta = "beta.kubernetes.io/arch" -) - // CreateAffinity creates pod anti-affinity for the given role. // role contains the name of the role to configure any-affinity with. // affinityWithRole contains the role to configure affinity with. @@ -41,7 +37,7 @@ func CreateAffinity(deploymentName, role string, required bool, affinityWithRole { MatchExpressions: []v1.NodeSelectorRequirement{ { - Key: NodeArchAffinityLabel, + Key: shared.NodeArchAffinityLabel, Operator: "In", Values: []string{"amd64"}, }, @@ -59,14 +55,14 @@ func CreateAffinity(deploymentName, role string, required bool, affinityWithRole if required { a.PodAntiAffinity.RequiredDuringSchedulingIgnoredDuringExecution = append(a.PodAntiAffinity.RequiredDuringSchedulingIgnoredDuringExecution, v1.PodAffinityTerm{ LabelSelector: labelSelector, - TopologyKey: TopologyKeyHostname, + TopologyKey: shared.TopologyKeyHostname, }) } else { a.PodAntiAffinity.PreferredDuringSchedulingIgnoredDuringExecution = append(a.PodAntiAffinity.PreferredDuringSchedulingIgnoredDuringExecution, v1.WeightedPodAffinityTerm{ Weight: 1, PodAffinityTerm: v1.PodAffinityTerm{ LabelSelector: labelSelector, - TopologyKey: TopologyKeyHostname, + TopologyKey: shared.TopologyKeyHostname, }, }) } @@ -78,14 +74,14 @@ func CreateAffinity(deploymentName, role string, required bool, affinityWithRole if required { a.PodAffinity.RequiredDuringSchedulingIgnoredDuringExecution = append(a.PodAffinity.RequiredDuringSchedulingIgnoredDuringExecution, v1.PodAffinityTerm{ LabelSelector: labelSelector, - TopologyKey: TopologyKeyHostname, + TopologyKey: shared.TopologyKeyHostname, }) } else { a.PodAffinity.PreferredDuringSchedulingIgnoredDuringExecution = append(a.PodAffinity.PreferredDuringSchedulingIgnoredDuringExecution, v1.WeightedPodAffinityTerm{ Weight: 1, PodAffinityTerm: v1.PodAffinityTerm{ LabelSelector: labelSelector, - TopologyKey: TopologyKeyHostname, + TopologyKey: shared.TopologyKeyHostname, }, }) } diff --git a/pkg/util/k8sutil/affinity_test.go b/pkg/util/k8sutil/affinity_test.go index 18d400eee..24e05358b 100644 --- a/pkg/util/k8sutil/affinity_test.go +++ b/pkg/util/k8sutil/affinity_test.go @@ -25,6 +25,7 @@ import ( v1 "k8s.io/api/core/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -36,7 +37,7 @@ func TestCreateAffinity(t *testing.T) { { MatchExpressions: []v1.NodeSelectorRequirement{ { - Key: NodeArchAffinityLabel, + Key: shared.NodeArchAffinityLabel, Operator: "In", Values: []string{"amd64"}, }, diff --git a/pkg/util/k8sutil/dns.go b/pkg/util/k8sutil/dns.go index 7e9fe67f7..77dc53953 100644 --- a/pkg/util/k8sutil/dns.go +++ b/pkg/util/k8sutil/dns.go @@ -25,6 +25,7 @@ import ( core "k8s.io/api/core/v1" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -39,7 +40,7 @@ func appendDeploymentClusterDomain(dns string, domain *string) string { // CreatePodDNSName returns the DNS of a pod with a given role & id in // a given deployment. func CreatePodDNSName(deployment metav1.Object, role, id string) string { - return fmt.Sprintf("%s.%s.%s.svc", CreatePodHostName(deployment.GetName(), role, id), CreateHeadlessServiceName(deployment.GetName()), deployment.GetNamespace()) + return fmt.Sprintf("%s.%s.%s.svc", shared.CreatePodHostName(deployment.GetName(), role, id), CreateHeadlessServiceName(deployment.GetName()), deployment.GetNamespace()) } // CreatePodDNSName returns the DNS of a pod with a given role & id in diff --git a/pkg/util/k8sutil/names_test.go b/pkg/util/k8sutil/names_test.go index d0b3432dd..1ca6be366 100644 --- a/pkg/util/k8sutil/names_test.go +++ b/pkg/util/k8sutil/names_test.go @@ -20,7 +20,11 @@ package k8sutil -import "testing" +import ( + "testing" + + "github.com/arangodb/kube-arangodb/pkg/apis/shared" +) func TestValidateResourceName(t *testing.T) { validNames := []string{ @@ -29,10 +33,10 @@ func TestValidateResourceName(t *testing.T) { "129.abc", } for _, name := range validNames { - if err := ValidateResourceName(name); err != nil { + if err := shared.ValidateResourceName(name); err != nil { t.Errorf("Name '%s' is valid, but ValidateResourceName reports '%s'", name, err) } - if err := ValidateOptionalResourceName(name); err != nil { + if err := shared.ValidateOptionalResourceName(name); err != nil { t.Errorf("Name '%s' is valid, but ValidateResourceName reports '%s'", name, err) } } @@ -43,7 +47,7 @@ func TestValidateResourceName(t *testing.T) { "name_underscore", } for _, name := range invalidNames { - if err := ValidateResourceName(name); err == nil { + if err := shared.ValidateResourceName(name); err == nil { t.Errorf("Name '%s' is invalid, but ValidateResourceName reports no error", name) } } diff --git a/pkg/util/k8sutil/pods.go b/pkg/util/k8sutil/pods.go index efb9ffdb4..e0bf8bba2 100644 --- a/pkg/util/k8sutil/pods.go +++ b/pkg/util/k8sutil/pods.go @@ -34,6 +34,7 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/json" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" "github.com/arangodb/kube-arangodb/pkg/handlers/utils" "github.com/arangodb/kube-arangodb/pkg/util" "github.com/arangodb/kube-arangodb/pkg/util/constants" @@ -43,27 +44,6 @@ import ( ) const ( - ServerContainerName = "server" - ExporterContainerName = "exporter" - ArangodVolumeName = "arangod-data" - TlsKeyfileVolumeName = "tls-keyfile" - ClientAuthCAVolumeName = "client-auth-ca" - ClusterJWTSecretVolumeName = "cluster-jwt" - MasterJWTSecretVolumeName = "master-jwt" - LifecycleVolumeName = "lifecycle" - FoxxAppEphemeralVolumeName = "ephemeral-apps" - TMPEphemeralVolumeName = "ephemeral-tmp" - RocksdbEncryptionVolumeName = "rocksdb-encryption" - ExporterJWTVolumeName = "exporter-jwt" - ArangodVolumeMountDir = "/data" - RocksDBEncryptionVolumeMountDir = "/secrets/rocksdb/encryption" - TLSKeyfileVolumeMountDir = "/secrets/tls" - TLSSNIKeyfileVolumeMountDir = "/secrets/sni" - ClientAuthCAVolumeMountDir = "/secrets/client-auth/ca" - ClusterJWTSecretVolumeMountDir = "/secrets/cluster/jwt" - ExporterJWTVolumeMountDir = "/secrets/exporter/jwt" - MasterJWTSecretVolumeMountDir = "/secrets/master/jwt" - ServerContainerConditionContainersNotReady = "ContainersNotReady" ServerContainerConditionPrefix = "containers with unready status: " ) @@ -174,7 +154,7 @@ func GetPodByName(pods []core.Pod, podName string) (core.Pod, bool) { // IsPodServerContainerRunning returns true if the arangodb container of the pod is still running func IsPodServerContainerRunning(pod *core.Pod) bool { - return IsContainerRunning(pod, ServerContainerName) + return IsContainerRunning(pod, shared.ServerContainerName) } // IsContainerRunning returns true if the container of the pod is still running @@ -307,7 +287,7 @@ func IsPodTerminating(pod *core.Pod) bool { // IsArangoDBImageIDAndVersionPod returns true if the given pod is used for fetching image ID and ArangoDB version of an image func IsArangoDBImageIDAndVersionPod(p *core.Pod) bool { role, found := p.GetLabels()[LabelKeyRole] - return found && role == ImageIDAndVersionRole + return found && role == shared.ImageIDAndVersionRole } // getPodCondition returns the condition of given type in the given status. @@ -327,13 +307,7 @@ func CreatePodName(deploymentName, role, id, suffix string) string { if len(suffix) > 0 && suffix[0] != '-' { suffix = "-" + suffix } - return CreatePodHostName(deploymentName, role, id) + suffix -} - -// CreatePodHostName returns the hostname of the pod for a member with -// a given id in a deployment with a given name. -func CreatePodHostName(deploymentName, role, id string) string { - return deploymentName + "-" + role + "-" + stripArangodPrefix(id) + return shared.CreatePodHostName(deploymentName, role, id) + suffix } // CreateTLSKeyfileSecretName returns the name of the Secret that holds the TLS keyfile for a member with @@ -350,16 +324,16 @@ func AppendTLSKeyfileSecretPostfix(name string) string { // ArangodVolumeMount creates a volume mount structure for arangod. func ArangodVolumeMount() core.VolumeMount { return core.VolumeMount{ - Name: ArangodVolumeName, - MountPath: ArangodVolumeMountDir, + Name: shared.ArangodVolumeName, + MountPath: shared.ArangodVolumeMountDir, } } // TlsKeyfileVolumeMount creates a volume mount structure for a TLS keyfile. func TlsKeyfileVolumeMount() core.VolumeMount { return core.VolumeMount{ - Name: TlsKeyfileVolumeName, - MountPath: TLSKeyfileVolumeMountDir, + Name: shared.TlsKeyfileVolumeName, + MountPath: shared.TLSKeyfileVolumeMountDir, ReadOnly: true, } } @@ -367,31 +341,31 @@ func TlsKeyfileVolumeMount() core.VolumeMount { // ClientAuthCACertificateVolumeMount creates a volume mount structure for a client-auth CA certificate (ca.crt). func ClientAuthCACertificateVolumeMount() core.VolumeMount { return core.VolumeMount{ - Name: ClientAuthCAVolumeName, - MountPath: ClientAuthCAVolumeMountDir, + Name: shared.ClientAuthCAVolumeName, + MountPath: shared.ClientAuthCAVolumeMountDir, } } // MasterJWTVolumeMount creates a volume mount structure for a master JWT secret (token). func MasterJWTVolumeMount() core.VolumeMount { return core.VolumeMount{ - Name: MasterJWTSecretVolumeName, - MountPath: MasterJWTSecretVolumeMountDir, + Name: shared.MasterJWTSecretVolumeName, + MountPath: shared.MasterJWTSecretVolumeMountDir, } } // ClusterJWTVolumeMount creates a volume mount structure for a cluster JWT secret (token). func ClusterJWTVolumeMount() core.VolumeMount { return core.VolumeMount{ - Name: ClusterJWTSecretVolumeName, - MountPath: ClusterJWTSecretVolumeMountDir, + Name: shared.ClusterJWTSecretVolumeName, + MountPath: shared.ClusterJWTSecretVolumeMountDir, } } func ExporterJWTVolumeMount() core.VolumeMount { return core.VolumeMount{ - Name: ExporterJWTVolumeName, - MountPath: ExporterJWTVolumeMountDir, + Name: shared.ExporterJWTVolumeName, + MountPath: shared.ExporterJWTVolumeMountDir, ReadOnly: true, } } @@ -399,24 +373,24 @@ func ExporterJWTVolumeMount() core.VolumeMount { // RocksdbEncryptionVolumeMount creates a volume mount structure for a RocksDB encryption key. func RocksdbEncryptionVolumeMount() core.VolumeMount { return core.VolumeMount{ - Name: RocksdbEncryptionVolumeName, - MountPath: RocksDBEncryptionVolumeMountDir, + Name: shared.RocksdbEncryptionVolumeName, + MountPath: shared.RocksDBEncryptionVolumeMountDir, } } // RocksdbEncryptionReadOnlyVolumeMount creates a volume mount structure for a RocksDB encryption key. func RocksdbEncryptionReadOnlyVolumeMount() core.VolumeMount { return core.VolumeMount{ - Name: RocksdbEncryptionVolumeName, - MountPath: RocksDBEncryptionVolumeMountDir, + Name: shared.RocksdbEncryptionVolumeName, + MountPath: shared.RocksDBEncryptionVolumeMountDir, ReadOnly: true, } } // ArangodInitContainer creates a container configured to initialize a UUID file. func ArangodInitContainer(name, id, engine, executable, operatorImage string, requireUUID bool, securityContext *core.SecurityContext) core.Container { - uuidFile := filepath.Join(ArangodVolumeMountDir, "UUID") - engineFile := filepath.Join(ArangodVolumeMountDir, "ENGINE") + uuidFile := filepath.Join(shared.ArangodVolumeMountDir, "UUID") + engineFile := filepath.Join(shared.ArangodVolumeMountDir, "ENGINE") var command = []string{ executable, "uuid", @@ -542,7 +516,7 @@ func NewContainer(containerCreator interfaces.ContainerCreator) (core.Container, // NewPod creates a basic Pod for given settings. func NewPod(deploymentName, role, id, podName string, podCreator interfaces.PodCreator) core.Pod { - hostname := CreatePodHostName(deploymentName, role, id) + hostname := shared.CreatePodHostName(deploymentName, role, id) p := core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: podName, diff --git a/pkg/util/k8sutil/probes/probes.go b/pkg/util/k8sutil/probes/probes.go index 106e43e95..8eadb7e54 100644 --- a/pkg/util/k8sutil/probes/probes.go +++ b/pkg/util/k8sutil/probes/probes.go @@ -22,7 +22,7 @@ package probes import ( api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1" - "github.com/arangodb/kube-arangodb/pkg/util/k8sutil" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" core "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/intstr" ) @@ -80,7 +80,7 @@ func (config HTTPProbeConfig) Create() *core.Probe { Handler: core.Handler{ HTTPGet: &core.HTTPGetAction{ Path: config.LocalPath, - Port: intstr.FromInt(int(def(int32(config.Port), k8sutil.ArangoPort))), + Port: intstr.FromInt(int(def(int32(config.Port), shared.ArangoPort))), Scheme: scheme, HTTPHeaders: headers, }, diff --git a/pkg/util/k8sutil/pvc.go b/pkg/util/k8sutil/pvc.go index 3e109336c..cd9f7f6e5 100644 --- a/pkg/util/k8sutil/pvc.go +++ b/pkg/util/k8sutil/pvc.go @@ -48,12 +48,6 @@ func IsPersistentVolumeClaimFileSystemResizePending(pvc *v1.PersistentVolumeClai return false } -// CreatePersistentVolumeClaimName returns the name of the persistent volume claim for a member with -// a given id in a deployment with a given name. -func CreatePersistentVolumeClaimName(deploymentName, role, id string) string { - return deploymentName + "-" + role + "-" + stripArangodPrefix(id) -} - // ExtractStorageResourceRequirement filters resource requirements for Pods. func ExtractStorageResourceRequirement(resources v1.ResourceRequirements) v1.ResourceRequirements { diff --git a/pkg/util/k8sutil/services.go b/pkg/util/k8sutil/services.go index a68734ae7..36f85b99a 100644 --- a/pkg/util/k8sutil/services.go +++ b/pkg/util/k8sutil/services.go @@ -31,6 +31,7 @@ import ( "github.com/arangodb/kube-arangodb/pkg/util/errors" + "github.com/arangodb/kube-arangodb/pkg/apis/shared" servicev1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/service/v1" core "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -89,7 +90,7 @@ func CreateExporterService(ctx context.Context, cachedStatus service.Inspector, { Name: "exporter", Protocol: core.ProtocolTCP, - Port: ArangoExporterPort, + Port: shared.ArangoExporterPort, }, }, Selector: selectorLabels, @@ -117,12 +118,12 @@ func CreateHeadlessService(ctx context.Context, svcs servicev1.ModInterface, dep { Name: "server", Protocol: core.ProtocolTCP, - Port: ArangoPort, + Port: shared.ArangoPort, }, } publishNotReadyAddresses := true serviceType := core.ServiceTypeClusterIP - newlyCreated, err := createService(ctx, svcs, svcName, deploymentName, ClusterIPNone, "", serviceType, ports, "", nil, publishNotReadyAddresses, owner) + newlyCreated, err := createService(ctx, svcs, svcName, deploymentName, shared.ClusterIPNone, "", serviceType, ports, "", nil, publishNotReadyAddresses, owner) if err != nil { return "", false, errors.WithStack(err) } @@ -141,7 +142,7 @@ func CreateDatabaseClientService(ctx context.Context, svcs servicev1.ModInterfac { Name: "server", Protocol: core.ProtocolTCP, - Port: ArangoPort, + Port: shared.ArangoPort, }, } var role string