diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f01135c9b658a2dd147dc6d33ec909ce3eda2af..6061fd581f4983655c62aa43f092a19f5b08e90c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +### v0.4.0 +##### February 6, 2021 + +#### :tada: Features + +- Add Nodeport support for Kubernetes service + +#### :beetle: Bug Fixes + +- Updated helm chart with latest CRD configuration +- Optimized helm chart +- RBAC issus fixed + ### v0.3.0 ##### Decemeber 30, 2020 diff --git a/Makefile b/Makefile index 9d4795d837100332d15b7e2ca7ef8067c713f1b0..9423d295f2f6b30d12c6de842e76caff28d57c1f 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ # Current Operator version -VERSION ?= 0.0.1 +VERSION ?= 0.4.0 # Default bundle image tag BUNDLE_IMG ?= controller-bundle:$(VERSION) # Options for 'bundle-build' @@ -12,7 +12,7 @@ endif BUNDLE_METADATA_OPTS ?= $(BUNDLE_CHANNELS) $(BUNDLE_DEFAULT_CHANNEL) # Image URL to use all building/pushing image targets -IMG ?= quay.io/opstree/redis-operator:v0.3.0 +IMG ?= quay.io/opstree/redis-operator:v0.4.0 # Produce CRDs that work back to Kubernetes 1.11 (no version conversion) CRD_OPTIONS ?= "crd:trivialVersions=true,preserveUnknownFields=false" diff --git a/api/v1beta1/redis_types.go b/api/v1beta1/redis_types.go index e915b850193a99ca5bccea91251db1ff9b2125e7..635a82d0bffe1a6970f041794c992f6f5b5a4338 100644 --- a/api/v1beta1/redis_types.go +++ b/api/v1beta1/redis_types.go @@ -55,8 +55,8 @@ type Storage struct { // RedisMaster interface will have the redis master configuration type RedisMaster struct { Resources Resources `json:"resources,omitempty"` - RedisConfig map[string]string `json:"redisConfig"` - Service Service `json:"service"` + RedisConfig map[string]string `json:"redisConfig,omitempty"` + Service Service `json:"service,omitempty"` } // RedisExporter interface will have the information for redis exporter related stuff @@ -78,8 +78,8 @@ type GlobalConfig struct { // RedisSlave interface will have the redis slave configuration type RedisSlave struct { Resources Resources `json:"resources,omitempty"` - RedisConfig map[string]string `json:"redisConfig"` - Service Service `json:"service"` + RedisConfig map[string]string `json:"redisConfig,omitempty"` + Service Service `json:"service,omitempty"` } // ResourceDescription describes CPU and memory resources defined for a cluster. diff --git a/helm-charts/redis-operator/Chart.yaml b/helm-charts/redis-operator/Chart.yaml index dff5d045d9f6bdd00fbbeab8a4586247639699e1..ffe9691df1f663a83376b48ae99e6a1d31397ea9 100644 --- a/helm-charts/redis-operator/Chart.yaml +++ b/helm-charts/redis-operator/Chart.yaml @@ -1,13 +1,15 @@ --- -apiVersion: v1 +apiVersion: v2 +appVersion: "0.4.0" description: Provides easy redis setup definitions for Kubernetes services, and deployment. engine: gotpl maintainers: - - name: Opstree Solutions + - name: Abhishek Dubey + - name: Sandeep Rawat name: redis-operator sources: - https://github.com/OT-CONTAINER-KIT/redis-operator -version: 0.2 +version: 0.4.0 home: https://github.com/OT-CONTAINER-KIT/redis-operator icon: https://github.com/OT-CONTAINER-KIT/redis-operator/raw/master/static/redis-operator-logo.svg keywords: diff --git a/helm-charts/redis-operator/templates/operator-deployment.yaml b/helm-charts/redis-operator/templates/operator-deployment.yaml index 0fa5cd7d8bd9af5cf5323cfe4e21ca4a98f3f54b..16bf04cc13a670cd3899edf7e05f15255d62a944 100644 --- a/helm-charts/redis-operator/templates/operator-deployment.yaml +++ b/helm-charts/redis-operator/templates/operator-deployment.yaml @@ -3,8 +3,15 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Values.redisOperator.name }} + labels: + control-plane: "{{ .Values.redisOperator.name }}" + app.kubernetes.io/name: {{ .Values.redisOperator.name }} + helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/version: {{ .Chart.AppVersion }} spec: - replicas: 1 + replicas: {{ .Values.replicas }} selector: matchLabels: name: {{ .Values.redisOperator.name }} @@ -13,19 +20,17 @@ spec: labels: name: {{ .Values.redisOperator.name }} spec: - serviceAccountName: {{ .Values.redisOperator.name }} containers: - name: "{{ .Values.redisOperator.name }}" image: "{{ .Values.redisOperator.imageName }}:{{ .Values.redisOperator.imageTag }}" imagePullPolicy: {{ .Values.redisOperator.imagePullPolicy }} - env: - - name: WATCH_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: OPERATOR_NAME - value: "{{ .Values.redisOperator.name }}" + command: + - /manager + args: + - --leader-elect +{{- if .Values.resources }} + resources: +{{ toYaml .Values.resources | indent 10 }} +{{- end }} + serviceAccountName: "{{ .Values.serviceAccountName }}" + serviceAccount: "{{ .Values.serviceAccountName }}" diff --git a/helm-charts/redis-operator/templates/role-binding.yaml b/helm-charts/redis-operator/templates/role-binding.yaml index 70142a575bd55ba7be61f87c3075099b893bf4a6..0c45e5c9e913684cb8f2aa31196b46f5113fcc5c 100644 --- a/helm-charts/redis-operator/templates/role-binding.yaml +++ b/helm-charts/redis-operator/templates/role-binding.yaml @@ -1,12 +1,20 @@ --- apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding +kind: ClusterRoleBinding metadata: name: {{ .Values.redisOperator.name }} + labels: + control-plane: "{{ .Values.redisOperator.name }}" + app.kubernetes.io/name: {{ .Values.redisOperator.name }} + helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/version: {{ .Chart.AppVersion }} subjects: - kind: ServiceAccount - name: {{ .Values.redisOperator.name }} + name: {{ .Values.serviceAccountName }} + namespace: {{ .Release.Namespace }} roleRef: - kind: Role - name: {{ .Values.redisOperator.name }} + kind: ClusterRole + name: cluster-admin apiGroup: rbac.authorization.k8s.io diff --git a/helm-charts/redis-operator/templates/role.yaml b/helm-charts/redis-operator/templates/role.yaml deleted file mode 100644 index 4d4c75c524bdab073954e393f40c890f091bbece..0000000000000000000000000000000000000000 --- a/helm-charts/redis-operator/templates/role.yaml +++ /dev/null @@ -1,82 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - creationTimestamp: null - name: {{ .Values.redisOperator.name }} -rules: -- apiGroups: - - "" - resources: - - pods - - pods/exec - - services - - services/finalizers - - endpoints - - persistentvolumeclaims - - events - - configmaps - - secrets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - resources: - - deployments - - daemonsets - - replicasets - - statefulsets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - monitoring.coreos.com - resources: - - servicemonitors - verbs: - - get - - create -- apiGroups: - - apps - resourceNames: - - redis-operator - resources: - - deployments/finalizers - verbs: - - update -- apiGroups: - - "" - resources: - - pods - verbs: - - get -- apiGroups: - - apps - resources: - - replicasets - - deployments - verbs: - - get -- apiGroups: - - redis.opstreelabs.in - resources: - - '*' - verbs: - - create - - delete - - get - - list - - patch - - update - - watch diff --git a/helm-charts/redis-operator/templates/service-account.yaml b/helm-charts/redis-operator/templates/service-account.yaml index aa2b6a2d6d33ca2342890a907ab0f1e09388dcc8..542716231818791323b4590785fdd6a7d9215662 100644 --- a/helm-charts/redis-operator/templates/service-account.yaml +++ b/helm-charts/redis-operator/templates/service-account.yaml @@ -3,3 +3,10 @@ apiVersion: v1 kind: ServiceAccount metadata: name: {{ .Values.redisOperator.name }} + labels: + control-plane: "{{ .Values.redisOperator.name }}" + app.kubernetes.io/name: {{ .Values.redisOperator.name }} + helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/version: {{ .Chart.AppVersion }} diff --git a/helm-charts/redis-operator/values.yaml b/helm-charts/redis-operator/values.yaml index e4ad4b16737eaa7fef758c5f227c0eb01f796053..5f66ce264dfbfc87f9061ddc50967c604f73c48e 100644 --- a/helm-charts/redis-operator/values.yaml +++ b/helm-charts/redis-operator/values.yaml @@ -2,5 +2,17 @@ redisOperator: name: redis-operator imageName: quay.io/opstree/redis-operator - imageTag: v0.2 + imageTag: v0.4.0 imagePullPolicy: Always + +resources: + limits: + cpu: 100m + memory: 100Mi + requests: + cpu: 100m + memory: 100Mi + +replicas: 1 + +serviceAccountName: redis-operator diff --git a/k8sutils/redis.go b/k8sutils/redis.go index 5b1dcad73fe01681f4acc7be366d6d72ce006967..c88805a0d2ee5b5c4d367dcd3eee7c19c24716fb 100644 --- a/k8sutils/redis.go +++ b/k8sutils/redis.go @@ -155,7 +155,8 @@ func ExecuteCommand(cr *redisv1beta1.Redis, cmd []string) { targetContainer := -1 for i, tr := range pod.Spec.Containers { - if tr.Name+"-master" == cr.ObjectMeta.Name+"-master" { + reqLogger.Info("Pod Counted successfully", "Count", i, "Container Name", tr.Name) + if tr.Name == cr.ObjectMeta.Name+"-master" { targetContainer = i break } diff --git a/k8sutils/services.go b/k8sutils/services.go index 3090863db1e929162e74f740f1c2d52df74ec2c8..3f81d71271fc79eb6888745b8284304aef181530 100644 --- a/k8sutils/services.go +++ b/k8sutils/services.go @@ -57,6 +57,8 @@ func GenerateServiceDef(cr *redisv1beta1.Redis, labels map[string]string, portNu if typeService == "LoadBalancer" { serviceType = corev1.ServiceTypeLoadBalancer + } else if typeService == "NodePort" { + serviceType = corev1.ServiceTypeNodePort } else { serviceType = corev1.ServiceTypeClusterIP }