-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[scalar-manager] Create the Helm chart for Scalar Manager #254
Changes from all commits
7ef77d4
f853e93
3182519
d9991a4
1e1f690
aeb8ee4
819baf3
590d911
5502ca0
b497bb1
b870b5a
b8864eb
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,16 +2,20 @@ apiVersion: v2 | |
name: scalar-manager | ||
description: Scalar Manager | ||
type: application | ||
version: 2.0.0-SNAPSHOT | ||
appVersion: 2.0.0-SNAPSHOT | ||
version: 3.0.0-SNAPSHOT | ||
appVersion: 3.0.0-SNAPSHOT | ||
deprecated: false | ||
icon: https://scalar-labs.com/wp-content/themes/scalar/assets/img/logo_scalar.svg | ||
keywords: | ||
- scalardb | ||
- scalardl | ||
- scalar-manager | ||
- scalar-manager | ||
- scalardb-cluster | ||
- scalardl-ledger | ||
- scalardl-auditor | ||
- scalar-admin-for-kubernetes | ||
home: https://scalar-labs.com/ | ||
sources: | ||
- https://github.com/scalar-labs/scalar-manager | ||
- https://github.com/scalar-labs/scalar-manager-api | ||
- https://github.com/scalar-labs/scalar-manager-web | ||
maintainers: | ||
- name: Takanori Yokoyama | ||
email: [email protected] | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,28 +1,38 @@ | ||
# scalar-manager | ||
|
||
![Version: 2.0.0-SNAPSHOT](https://img.shields.io/badge/Version-2.0.0--SNAPSHOT-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.0.0-SNAPSHOT](https://img.shields.io/badge/AppVersion-2.0.0--SNAPSHOT-informational?style=flat-square) | ||
![Version: 3.0.0-SNAPSHOT](https://img.shields.io/badge/Version-3.0.0--SNAPSHOT-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 3.0.0-SNAPSHOT](https://img.shields.io/badge/AppVersion-3.0.0--SNAPSHOT-informational?style=flat-square) | ||
|
||
Scalar Manager | ||
Current chart version is `2.0.0-SNAPSHOT` | ||
Current chart version is `3.0.0-SNAPSHOT` | ||
|
||
**Homepage:** <https://scalar-labs.com/> | ||
|
||
## Values | ||
|
||
| Key | Type | Default | Description | | ||
|-----|------|---------|-------------| | ||
| fullnameOverride | string | `""` | Override the fully qualified app name | | ||
| image.pullPolicy | string | `"IfNotPresent"` | Specify a imagePullPolicy | | ||
| image.repository | string | `"ghcr.io/scalar-labs/scalar-manager"` | Docker image | | ||
| image.tag | string | `""` | Override the image tag whose default is the chart appVersion | | ||
| imagePullSecrets | list | `[{"name":"reg-docker-secrets"}]` | Optionally specify an array of imagePullSecrets. Secrets must be manually created in the namespace | | ||
| nameOverride | string | `""` | Override the Chart name | | ||
| replicaCount | int | `1` | number of replicas to deploy | | ||
| scalarManager.grafanaUrl | string | `""` | | | ||
| scalarManager.port | int | `5000` | The port that Scalar Manager container exposes | | ||
| scalarManager.refreshInterval | int | `30` | | | ||
| scalarManager.targets | list | `[]` | | | ||
| service.port | int | `8000` | The port that service exposes | | ||
| service.type | string | `"ClusterIP"` | The service type | | ||
| serviceAccount.automountServiceAccountToken | bool | `true` | Specify to mount a service account token or not | | ||
| serviceAccount.serviceAccountName | string | `""` | Name of the existing service account resource | | ||
| api.applicationProperties | string | The minimum template of application.properties is set by default. | The application.properties for Scalar Manager. If you want to customize application.properties, you can override this value with your application.properties. | | ||
| api.image.pullPolicy | string | `"IfNotPresent"` | | | ||
| api.image.repository | string | `"ghcr.io/scalar-labs/scalar-manager-api"` | | | ||
| api.image.tag | string | `""` | | | ||
| api.resources | object | `{}` | | | ||
| fullnameOverride | string | `""` | | | ||
| imagePullSecrets[0].name | string | `"reg-docker-secrets"` | | | ||
| nameOverride | string | `""` | | | ||
| nodeSelector | object | `{}` | | | ||
| podAnnotations | object | `{}` | | | ||
| podLabels | object | `{}` | | | ||
| podSecurityContext.seccompProfile.type | string | `"RuntimeDefault"` | | | ||
| replicaCount | int | `1` | | | ||
| securityContext.allowPrivilegeEscalation | bool | `false` | | | ||
| securityContext.capabilities.drop[0] | string | `"ALL"` | | | ||
| securityContext.runAsNonRoot | bool | `true` | | | ||
| service.port | int | `80` | | | ||
| service.type | string | `"ClusterIP"` | | | ||
| serviceAccount.automountServiceAccountToken | bool | `true` | | | ||
| serviceAccount.serviceAccountName | string | `""` | | | ||
| tolerations | list | `[]` | | | ||
| web.image.pullPolicy | string | `"IfNotPresent"` | | | ||
| web.image.repository | string | `"ghcr.io/scalar-labs/scalar-manager-web"` | | | ||
| web.image.tag | string | `""` | | | ||
| web.resources | object | `{}` | | |
This file was deleted.
This file was deleted.
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
apiVersion: rbac.authorization.k8s.io/v1 | ||
kind: ClusterRole | ||
metadata: | ||
name: {{ include "scalar-manager.fullname" . }} | ||
labels: | ||
{{- include "scalar-manager.labels" . | nindent 4 }} | ||
rules: | ||
- apiGroups: [""] | ||
resources: ["pods", "services", "namespaces", "configmaps", "secrets", "serviceaccounts"] | ||
verbs: ["get", "list", "create", "patch", "delete", "update"] | ||
- apiGroups: ["batch"] | ||
resources: ["cronjobs", "jobs"] | ||
verbs: ["get", "list", "create", "delete"] | ||
- apiGroups: ["apps"] | ||
resources: ["deployments"] | ||
verbs: ["get", "list"] | ||
- apiGroups: ["rbac.authorization.k8s.io"] | ||
resources: ["roles", "rolebindings"] | ||
verbs: ["get", "list", "create", "delete"] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
apiVersion: rbac.authorization.k8s.io/v1 | ||
kind: ClusterRoleBinding | ||
metadata: | ||
name: {{ include "scalar-manager.fullname" . }} | ||
labels: | ||
{{- include "scalar-manager.labels" . | nindent 4 }} | ||
subjects: | ||
- kind: ServiceAccount | ||
name: {{ include "scalar-manager.serviceAccountName" . }} | ||
namespace: {{ .Release.Namespace }} | ||
apiGroup: "" | ||
roleRef: | ||
kind: ClusterRole | ||
name: {{ include "scalar-manager.fullname" . }} | ||
apiGroup: rbac.authorization.k8s.io |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
apiVersion: v1 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Just a question. I think this ConfigMap is used for storing cluster and pause information. And, it seems that this chart adds Do we need to create this I want to confirm whether Scalar Manager API can create (If Scalar Manager can create There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As we discussed, we will update Scalar Manager API to create There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As we discussed, we noticed that this There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We address this issue on the Scalar Manager API side. |
||
kind: ConfigMap | ||
metadata: | ||
name: {{ include "scalar-manager.fullname" . }}-api-application-properties | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{- include "scalar-manager.labels" . | nindent 4 }} | ||
data: | ||
scalar-manager-api-application.properties: | ||
{{- toYaml .Values.api.applicationProperties | nindent 4 }} |
Original file line number | Diff line number | Diff line change | ||
---|---|---|---|---|
@@ -0,0 +1,73 @@ | ||||
apiVersion: apps/v1 | ||||
kind: Deployment | ||||
metadata: | ||||
name: {{ include "scalar-manager.fullname" . }} | ||||
namespace: {{ .Release.Namespace }} | ||||
labels: | ||||
{{- include "scalar-manager.labels" . | nindent 4 }} | ||||
spec: | ||||
replicas: {{ .Values.replicaCount }} | ||||
selector: | ||||
matchLabels: | ||||
{{- include "scalar-manager.selectorLabels" . | nindent 6 }} | ||||
template: | ||||
metadata: | ||||
annotations: | ||||
checksum/config: {{ include (print $.Template.BasePath "/scalar-manager/configmap.yaml") . | sha256sum }} | ||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
I think this If the above understanding is correct, this So, I think we can remove this annotation. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As we discussed, we will remove this annotation. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As we discussed in another comment, we decided to use |
||||
{{- if .Values.podAnnotations }} | ||||
{{- toYaml .Values.podAnnotations | nindent 8 }} | ||||
{{- end }} | ||||
labels: | ||||
{{- include "scalar-manager.selectorLabels" . | nindent 8 }} | ||||
{{- if .Values.podLabels }} | ||||
{{- toYaml .Values.podLabels | nindent 8 }} | ||||
{{- end }} | ||||
spec: | ||||
restartPolicy: Always | ||||
serviceAccountName: {{ include "scalar-manager.serviceAccountName" . }} | ||||
automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }} | ||||
containers: | ||||
- name: {{ .Chart.Name }}-api | ||||
image: "{{ .Values.api.image.repository }}:{{ .Values.api.image.tag | default .Chart.AppVersion }}" | ||||
resources: | ||||
{{- toYaml .Values.api.resources | nindent 12 }} | ||||
ports: | ||||
- containerPort: 8080 | ||||
imagePullPolicy: {{ .Values.api.image.pullPolicy }} | ||||
securityContext: | ||||
{{- toYaml .Values.securityContext | nindent 12 }} | ||||
volumeMounts: | ||||
- name: api-application-properties-volume | ||||
mountPath: /app/application.properties | ||||
subPath: scalar-manager-api-application.properties | ||||
- name: {{ .Chart.Name }}-web | ||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If my remembering is correct, Scalar Manager works as follows. +-[Kubernetes Cluster A]---+ +-[Kubernetes Cluster B]---+ +-[Kubernetes Cluster C]---+
| | | | | |
| +--------------------+ | | +--------------------+ | | +--------------------+ |
| | Scalar products | | | | Scalar products | | | | Scalar products | |
| +--------------------+ | | +--------------------+ | | +--------------------+ |
| | | | | |
| +--------------------+ | | +--------------------+ | | +--------------------+ |
| | Scalar Manager API | | | | Scalar Manager API | | | | Scalar Manager API | |
| +--------------------+ | | +--------------------+ | | +--------------------+ |
| | | | | | | | |
+------------+-------------+ +------------+-------------+ +------------+-------------+
| | |
| | |
| | |
+-----------------------------+-----------------------------+
|
|
|
+---------+----------+
| Scalar Manager Web |
+--------------------+ So, we don't need to deploy Vice versa, it would be better to deploy Is my understanding correct? (Sorry, I might miss some Scalar Manager specifications...) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As we discussed, at this time, we must deploy |
||||
image: "{{ .Values.web.image.repository }}:{{ .Values.web.image.tag | default .Chart.AppVersion }}" | ||||
resources: | ||||
{{- toYaml .Values.web.resources | nindent 12 }} | ||||
ports: | ||||
- containerPort: 3000 | ||||
imagePullPolicy: {{ .Values.web.image.pullPolicy }} | ||||
securityContext: | ||||
{{- toYaml .Values.securityContext | nindent 12 }} | ||||
volumes: | ||||
- name: api-application-properties-volume | ||||
configMap: | ||||
name: {{ include "scalar-manager.fullname" . }}-api-application-properties | ||||
securityContext: | ||||
{{- toYaml .Values.podSecurityContext | nindent 8 }} | ||||
{{- with .Values.imagePullSecrets }} | ||||
imagePullSecrets: | ||||
{{- toYaml . | nindent 8 }} | ||||
{{- end }} | ||||
{{- with .Values.nodeSelector }} | ||||
nodeSelector: | ||||
{{- toYaml . | nindent 8 }} | ||||
{{- end }} | ||||
{{- with .Values.affinity }} | ||||
affinity: | ||||
{{- toYaml . | nindent 8 }} | ||||
{{- end }} | ||||
{{- with .Values.tolerations }} | ||||
tolerations: | ||||
{{- toYaml . | nindent 8 }} | ||||
{{- end }} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,16 @@ | ||
apiVersion: v1 | ||
kind: Service | ||
metadata: | ||
namespace: {{ .Release.Namespace }} | ||
name: {{ include "scalar-manager.fullname" . }} | ||
namespace: {{ .Release.Namespace }} | ||
labels: | ||
{{- include "scalar-manager.labels" . | nindent 4 }} | ||
spec: | ||
type: {{ .Values.service.type }} | ||
ports: | ||
- port: {{ .Values.service.port }} | ||
targetPort: {{ .Values.scalarManager.port }} | ||
protocol: TCP | ||
name: http | ||
- protocol: TCP | ||
name: web | ||
port: {{ .Values.service.port }} | ||
targetPort: 3000 | ||
selector: | ||
{{- include "scalar-manager.selectorLabels" . | nindent 4 }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a question. What is the reason why we use
ClusterRole
instead ofRole
?In other words, does Scalar Manager access the following resources that need the
ClusterRole
?https://kubernetes.io/docs/reference/access-authn-authz/rbac/#clusterrole-example
/healthz
)