Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## [master](https://github.com/arangodb/kube-arangodb/tree/master) (N/A)
- Split & Unify Lifecycle management functionality
- Drop support for ArangoDB <= 3.5 (versions already EOL)

## [1.2.4](https://github.com/arangodb/kube-arangodb/tree/1.2.4) (2021-10-22)
- Replace `beta.kubernetes.io/arch` Pod label with `kubernetes.io/arch` using Silent Rotation
Expand Down
64 changes: 32 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,32 +38,32 @@ covers individual newer features separately.

| Platform | Kubernetes Version | ArangoDB Version | State | Remarks | Provider Remarks |
|---------------------|--------------------|------------------|------------|-----------------------|------------------------------------|
| Google GKE | 1.17 | >= 3.5.0 | Production | Don't use micro nodes | |
| Google GKE | 1.18 | >= 3.5.0 | Production | Don't use micro nodes | |
| Google GKE | 1.19 | >= 3.5.0 | Production | Don't use micro nodes | |
| Google GKE | 1.20 | >= 3.5.0 | Production | Don't use micro nodes | |
| Azure AKS | 1.18 | >= 3.5.0 | Production | | |
| Azure AKS | 1.19 | >= 3.5.0 | Production | | |
| Azure AKS | 1.20 | >= 3.5.0 | Production | | |
| Amazon EKS | 1.16 | >= 3.5.0 | Production | | [Amazon EKS](./docs/providers/eks) |
| Amazon EKS | 1.17 | >= 3.5.0 | Production | | [Amazon EKS](./docs/providers/eks) |
| Amazon EKS | 1.18 | >= 3.5.0 | Production | | [Amazon EKS](./docs/providers/eks) |
| Amazon EKS | 1.19 | >= 3.5.0 | Production | | [Amazon EKS](./docs/providers/eks) |
| Amazon EKS | 1.20 | >= 3.5.0 | Production | | [Amazon EKS](./docs/providers/eks) |
| IBM Cloud | 1.17 | >= 3.5.0 | Deprecated | | |
| IBM Cloud | 1.18 | >= 3.5.0 | Production | | |
| IBM Cloud | 1.19 | >= 3.5.0 | Production | | |
| IBM Cloud | 1.20 | >= 3.5.0 | Production | | |
| OpenShift | 3.11 | >= 3.5.0 | Production | | |
| OpenShift | 4.2 | >= 3.5.0 | Production | | |
| BareMetal (kubeadm) | 1.16 | >= 3.5.0 | Production | | |
| BareMetal (kubeadm) | 1.17 | >= 3.5.0 | Production | | |
| BareMetal (kubeadm) | 1.18 | >= 3.5.0 | Production | | |
| BareMetal (kubeadm) | 1.19 | >= 3.5.0 | Production | | |
| BareMetal (kubeadm) | 1.20 | >= 3.5.0 | Production | | |
| BareMetal (kubeadm) | 1.21 | >= 3.5.0 | Production | | |
| Minikube | 1.14+ | >= 3.5.0 | Devel Only | | |
| Other | 1.14+ | >= 3.5.0 | Devel Only | | |
| Google GKE | 1.17 | >= 3.6.0 | Production | Don't use micro nodes | |
| Google GKE | 1.18 | >= 3.6.0 | Production | Don't use micro nodes | |
| Google GKE | 1.19 | >= 3.6.0 | Production | Don't use micro nodes | |
| Google GKE | 1.20 | >= 3.6.0 | Production | Don't use micro nodes | |
| Azure AKS | 1.18 | >= 3.6.0 | Production | | |
| Azure AKS | 1.19 | >= 3.6.0 | Production | | |
| Azure AKS | 1.20 | >= 3.6.0 | Production | | |
| Amazon EKS | 1.16 | >= 3.6.0 | Production | | [Amazon EKS](./docs/providers/eks) |
| Amazon EKS | 1.17 | >= 3.6.0 | Production | | [Amazon EKS](./docs/providers/eks) |
| Amazon EKS | 1.18 | >= 3.6.0 | Production | | [Amazon EKS](./docs/providers/eks) |
| Amazon EKS | 1.19 | >= 3.6.0 | Production | | [Amazon EKS](./docs/providers/eks) |
| Amazon EKS | 1.20 | >= 3.6.0 | Production | | [Amazon EKS](./docs/providers/eks) |
| IBM Cloud | 1.17 | >= 3.6.0 | Deprecated | | |
| IBM Cloud | 1.18 | >= 3.6.0 | Production | | |
| IBM Cloud | 1.19 | >= 3.6.0 | Production | | |
| IBM Cloud | 1.20 | >= 3.6.0 | Production | | |
| OpenShift | 3.11 | >= 3.6.0 | Production | | |
| OpenShift | 4.2 | >= 3.6.0 | Production | | |
| BareMetal (kubeadm) | 1.16 | >= 3.6.0 | Production | | |
| BareMetal (kubeadm) | 1.17 | >= 3.6.0 | Production | | |
| BareMetal (kubeadm) | 1.18 | >= 3.6.0 | Production | | |
| BareMetal (kubeadm) | 1.19 | >= 3.6.0 | Production | | |
| BareMetal (kubeadm) | 1.20 | >= 3.6.0 | Production | | |
| BareMetal (kubeadm) | 1.21 | >= 3.6.0 | Production | | |
| Minikube | 1.14+ | >= 3.6.0 | Devel Only | | |
| Other | 1.14+ | >= 3.6.0 | Devel Only | | |

Feature-wise production readiness table:

Expand All @@ -90,12 +90,12 @@ Feature-wise production readiness table:
| Encryption Key Rotation Support | 1.0.4 | > 3.7.0 | Enterprise | Alpha | False | --deployment.feature.encryption-rotation | N/A |
| Encryption Key Rotation Support | 1.1.0 | > 3.7.0 | Enterprise | Production | True | --deployment.feature.encryption-rotation | N/A |
| Encryption Key Rotation Support | 1.2.0 | > 3.7.0 | Enterprise | NotSupported | False | --deployment.feature.encryption-rotation | N/A |
| Version Check | 1.1.4 | >= 3.6.0 | Community, Enterprise | Alpha | False | --deployment.feature.upgrade-version-check | N/A |
| Operator Maintenance Management Support | 1.0.7 | >= 3.6.0 | Community, Enterprise | Alpha | False | --deployment.feature.maintenance | N/A |
| Operator Maintenance Management Support | 1.2.0 | >= 3.6.0 | Community, Enterprise | Production | True | --deployment.feature.maintenance | N/A |
| Operator Internal Metrics Exporter | 1.1.9 | >= 3.6.0 | Community, Enterprise | Alpha | False | --deployment.feature.metrics-exporter | N/A |
| Operator Internal Metrics Exporter | 1.2.0 | >= 3.6.0 | Community, Enterprise | Production | True | --deployment.feature.metrics-exporter | N/A |
| Operator Internal Metrics Exporter | 1.2.3 | >= 3.6.0 | Community, Enterprise | Production | True | --deployment.feature.metrics-exporter | It is always enabled |
| Version Check | 1.1.4 | >= 3.7.0 | Community, Enterprise | Alpha | False | --deployment.feature.upgrade-version-check | N/A |
| Operator Maintenance Management Support | 1.0.7 | >= 3.7.0 | Community, Enterprise | Alpha | False | --deployment.feature.maintenance | N/A |
| Operator Maintenance Management Support | 1.2.0 | >= 3.7.0 | Community, Enterprise | Production | True | --deployment.feature.maintenance | N/A |
| Operator Internal Metrics Exporter | 1.1.9 | >= 3.7.0 | Community, Enterprise | Alpha | False | --deployment.feature.metrics-exporter | N/A |
| Operator Internal Metrics Exporter | 1.2.0 | >= 3.7.0 | Community, Enterprise | Production | True | --deployment.feature.metrics-exporter | N/A |
| Operator Internal Metrics Exporter | 1.2.3 | >= 3.7.0 | Community, Enterprise | Production | True | --deployment.feature.metrics-exporter | It is always enabled |
| Operator Ephemeral Volumes | 1.2.2 | >= 3.7.0 | Community, Enterprise | Alpha | False | --deployment.feature.ephemeral-volumes | N/A |

## Release notes for 0.3.16
Expand Down
2 changes: 1 addition & 1 deletion pkg/deployment/deployment_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ import (
const (
testNamespace = "default"
testDeploymentName = "test"
testVersion = "3.5.2"
testVersion = "3.7.0"
testImage = "arangodb/arangodb:" + testVersion
testCASecretName = "testCA"
testJWTSecretName = "testJWT"
Expand Down
5 changes: 3 additions & 2 deletions pkg/deployment/features/maintenance.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//
// DISCLAIMER
//
// Copyright 2016-2021 ArangoDB GmbH, Cologne, Germany
// Copyright 2020-2021 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.
Expand All @@ -18,6 +18,7 @@
// Copyright holder is ArangoDB GmbH, Cologne, Germany
//
// Author Adam Janikowski
// Author Tomasz Mielech
//

package features
Expand All @@ -29,7 +30,7 @@ func init() {
var maintenance = &feature{
name: "maintenance",
description: "Database maintenance mode management",
version: "3.5.0",
version: "3.6.0",
enterpriseRequired: false,
enabledByDefault: true,
}
Expand Down
3 changes: 2 additions & 1 deletion pkg/deployment/features/upgrade.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
// Copyright holder is ArangoDB GmbH, Cologne, Germany
//
// Author Adam Janikowski
// Author Tomasz Mielech
//

package features
Expand All @@ -29,7 +30,7 @@ func init() {
var upgradeVersionCheck Feature = &feature{
name: "upgrade-version-check",
description: "Enable initContainer with pre version check",
version: "3.5.0",
version: "3.6.0",
enterpriseRequired: false,
enabledByDefault: false,
}
Expand Down
1 change: 1 addition & 0 deletions pkg/deployment/pod/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
// Copyright holder is ArangoDB GmbH, Cologne, Germany
//
// Author Adam Janikowski
// Author Tomasz Mielech
//

package pod
Expand Down
25 changes: 2 additions & 23 deletions pkg/deployment/pod/jwt.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
// Copyright holder is ArangoDB GmbH, Cologne, Germany
//
// Author Adam Janikowski
// Author Tomasz Mielech
//

package pod
Expand Down Expand Up @@ -45,17 +46,6 @@ func IsAuthenticated(i Input) bool {
return i.Deployment.IsAuthenticated()
}

func VersionHasJWTSecretKeyfile(v driver.Version) bool {
if v.CompareTo("3.3.22") >= 0 && v.CompareTo("3.4.0") < 0 {
return true
}
if v.CompareTo("3.4.2") >= 0 {
return true
}

return false
}

func JWTSecretFolder(name string) string {
return fmt.Sprintf("%s-jwt-folder", name)
}
Expand All @@ -71,15 +61,6 @@ func JWT() Builder {
type jwt struct{}

func (e jwt) Envs(i Input) []core.EnvVar {
if !IsAuthenticated(i) {
return nil
}

if !VersionHasJWTSecretKeyfile(i.Version) {
return []core.EnvVar{k8sutil.CreateEnvSecretKeySelector(constants.EnvArangodJWTSecret,
i.Deployment.Authentication.GetJWTSecretName(), constants.SecretKeyToken)}
}

return nil
}

Expand All @@ -95,11 +76,9 @@ func (e jwt) Args(i Input) k8sutil.OptionPairs {

if VersionHasJWTSecretKeyfolder(i.Version, i.Enterprise) {
options.Add("--server.jwt-secret-folder", k8sutil.ClusterJWTSecretVolumeMountDir)
} else if VersionHasJWTSecretKeyfile(i.Version) {
} else {
keyPath := filepath.Join(k8sutil.ClusterJWTSecretVolumeMountDir, constants.SecretKeyToken)
options.Add("--server.jwt-secret-keyfile", keyPath)
} else {
options.Addf("--server.jwt-secret", "$(%s)", constants.EnvArangodJWTSecret)
}

return options
Expand Down
1 change: 1 addition & 0 deletions pkg/deployment/pod/sni.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
// Copyright holder is ArangoDB GmbH, Cologne, Germany
//
// Author Adam Janikowski
// Author Tomasz Mielech
//

package pod
Expand Down
1 change: 1 addition & 0 deletions pkg/deployment/pod/tls.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
// Copyright holder is ArangoDB GmbH, Cologne, Germany
//
// Author Adam Janikowski
// Author Tomasz Mielech
//

package pod
Expand Down
1 change: 1 addition & 0 deletions pkg/deployment/pod/upgrade.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
// Copyright holder is ArangoDB GmbH, Cologne, Germany
//
// Author Adam Janikowski
// Author Tomasz Mielech
//

package pod
Expand Down
9 changes: 5 additions & 4 deletions pkg/deployment/pod/upgrade_version_check.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
// Copyright holder is ArangoDB GmbH, Cologne, Germany
//
// Author Adam Janikowski
// Author Tomasz Mielech
//

package pod
Expand All @@ -36,6 +37,10 @@ func UpgradeVersionCheck() Builder {

type upgradeVersionCheck struct{}

func (u upgradeVersionCheck) Envs(i Input) []core.EnvVar {
return nil
}

func (u upgradeVersionCheck) Args(i Input) k8sutil.OptionPairs {
if features.UpgradeVersionCheck().Enabled() {
switch i.Group {
Expand All @@ -54,10 +59,6 @@ func (u upgradeVersionCheck) Volumes(i Input) ([]core.Volume, []core.VolumeMount
return nil, nil
}

func (u upgradeVersionCheck) Envs(i Input) []core.EnvVar {
return nil
}

func (u upgradeVersionCheck) Verify(i Input, cachedStatus interfaces.Inspector) error {
return nil
}
11 changes: 2 additions & 9 deletions pkg/deployment/resources/pod_creator.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ import (
inspectorInterface "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector"
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/interfaces"

"github.com/arangodb/go-driver"
"k8s.io/apimachinery/pkg/types"

api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
Expand All @@ -59,10 +58,6 @@ import (
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
)

func versionHasAdvertisedEndpoint(v driver.Version) bool {
return v.CompareTo("3.4.0") >= 0
}

// createArangodArgsWithUpgrade creates command line arguments for an arangod server upgrade in the given group.
func createArangodArgsWithUpgrade(cachedStatus interfaces.Inspector, input pod.Input) ([]string, error) {
return createArangodArgs(cachedStatus, input, pod.AutoUpgrade().Args(input)...)
Expand Down Expand Up @@ -108,8 +103,6 @@ func createArangodArgs(cachedStatus interfaces.Inspector, input pod.Input, addit

options.Merge(pod.SNI().Args(input))

versionHasAdvertisedEndpoint := versionHasAdvertisedEndpoint(input.Version)

endpoint, err := pod.GenerateMemberEndpoint(cachedStatus, input.ApiObject, input.Deployment, input.Group, input.Member)
if err != nil {
return nil, err
Expand Down Expand Up @@ -148,7 +141,7 @@ func createArangodArgs(cachedStatus interfaces.Inspector, input pod.Input, addit
options.Add("--cluster.my-role", "COORDINATOR")
options.Add("--foxx.queues", input.Deployment.Features.GetFoxxQueues())
options.Add("--server.statistics", "true")
if input.Deployment.ExternalAccess.HasAdvertisedEndpoint() && versionHasAdvertisedEndpoint {
if input.Deployment.ExternalAccess.HasAdvertisedEndpoint() {
options.Add("--cluster.my-advertised-endpoint", input.Deployment.ExternalAccess.GetAdvertisedEndpoint())
}
case api.ServerGroupSingle:
Expand All @@ -159,7 +152,7 @@ func createArangodArgs(cachedStatus interfaces.Inspector, input pod.Input, addit
options.Add("--replication.automatic-failover", "true")
options.Add("--cluster.my-address", myTCPURL)
options.Add("--cluster.my-role", "SINGLE")
if input.Deployment.ExternalAccess.HasAdvertisedEndpoint() && versionHasAdvertisedEndpoint {
if input.Deployment.ExternalAccess.HasAdvertisedEndpoint() {
options.Add("--cluster.my-advertised-endpoint", input.Deployment.ExternalAccess.GetAdvertisedEndpoint())
}
}
Expand Down
Loading