Skip to content

Commit 35907af

Browse files
feat: multirach
1 parent a54c948 commit 35907af

12 files changed

+402
-0
lines changed

k8s-agent/Chart.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: v1
2+
name: k8s-agent
3+
version: 0.0.25
4+
description: Kubernetes agent for monitoring resources
5+
keywords:
6+
- kubernetes
7+
- agent

k8s-agent/README.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Agent helm chart
2+
3+
## Supported values
4+
5+
## replicaCount
6+
number of pods to be schedualed
7+
default: `replicaCount: 1`
8+
9+
## imagePullPolicy
10+
'Always' if imageTag is 'latest', else set to 'IfNotPresent' ref: http://kubernetes.io/docs/user-guide/images/##pre-pulling-images
11+
default: `imagePullPolicy: Always`
12+
13+
## redeploy
14+
whenever to force redeploy
15+
default: `redeploy: false`
16+
17+
## imageTag
18+
set the tag of the image
19+
default: `imageTag: latest`
20+
21+
## image
22+
base name of the image
23+
24+
## affinity
25+
special specification
26+
default: `affinity: {}`
27+
28+
## env
29+
set of evnrionment varialbe to be add to the containers
30+
default:
31+
```
32+
env:
33+
NODE_ENV: kubernetes
34+
```
35+
36+
## port
37+
container port
38+
default: `port: 80`
39+
40+
## servicePort
41+
port of the kubernetes service listen to
42+
default: `servicePort: 80`
43+
44+
## dockercfg
45+
docker config valid string
46+
default: `dockercfg: {}`
47+

k8s-agent/templates/NOTES.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
-------------------------------------------------------------------------------
2+
{{- if .Values.apiToken }}
3+
Now you can navigate to your codefresh account and see realtime state of your cluster
4+
{{- else }}
5+
Your agent is ready, navigate to this endpoint to see state of your cluster
6+
http://monitor-ip:31405/api/monitor?clusterId={{ .Values.clusterId }}&accountId={{ .Values.accountId }}&kinds=deployments
7+
All docs:
8+
http://monitor-ip:31405/api-docs/
9+
{{- end }}
10+
-------------------------------------------------------------------------------

k8s-agent/templates/_helpers.tpl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{{/* vim: set filetype=mustache: */}}
2+
{{/*
3+
Expand the name of the chart.
4+
*/}}
5+
{{- define "name" -}}
6+
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
7+
{{- end -}}
8+
9+
{{/*
10+
Create a default fully qualified app name.
11+
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
12+
*/}}
13+
{{- define "fullname" -}}
14+
{{- $name := default .Chart.Name .Values.nameOverride -}}
15+
{{- printf "%s" .Release.Name -}}
16+
{{- end -}}

k8s-agent/templates/deployment.yaml

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: {{ template "fullname" . }}
5+
labels:
6+
app: {{ template "fullname" . }}
7+
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
8+
release: {{ .Release.Name | quote }}
9+
heritage: {{ .Release.Service | quote }}
10+
version: {{ .Values.imageTag | quote }}
11+
spec:
12+
replicas: {{ default 1 .Values.replicaCount }}
13+
strategy:
14+
type: RollingUpdate
15+
rollingUpdate:
16+
maxUnavailable: 50%
17+
maxSurge: 50%
18+
selector:
19+
matchLabels:
20+
app: {{ template "fullname" . }}
21+
template:
22+
metadata:
23+
{{- if .Values.redeploy }}
24+
annotations:
25+
forceRedeployUniqId: {{ now | quote }}
26+
{{- end }}
27+
labels:
28+
app: {{ template "fullname" . }}
29+
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
30+
release: {{ .Release.Name | quote }}
31+
heritage: {{ .Release.Service | quote }}
32+
version: {{ .Values.imageTag | quote }}
33+
spec:
34+
{{- if .Values.existingServiceAccount }}
35+
serviceAccountName: {{ .Values.existingServiceAccount }}
36+
{{- else if .Values.rbacEnabled }}
37+
serviceAccountName: {{ template "fullname" . }}
38+
{{- end }}
39+
containers:
40+
- name: {{ template "fullname" . }}
41+
image: "{{ .Values.image }}:{{ .Values.imageTag }}"
42+
imagePullPolicy: {{ default "" .Values.imagePullPolicy | quote }}
43+
env:
44+
- name: SERVICE_NAME
45+
value: {{ template "name" . }}
46+
- name: NAMESPACE_INTERVAL
47+
value: {{ .Values.namespaceInterval | quote }}
48+
- name: POD_INTERVAL
49+
value: {{ .Values.podInterval | quote }}
50+
- name: DEPLOYMENT_INTERVAL
51+
value: {{ .Values.deploymentInterval | quote }}
52+
- name: RELEASE_INTERVAL
53+
value: {{ .Values.releaseInterval | quote }}
54+
- name: SERVICE_INTERVAL
55+
value: {{ .Values.serviceInterval | quote }}
56+
- name: SECRET_INTERVAL
57+
value: {{ .Values.secretInterval | quote }}
58+
{{- if .Values.useNamespaceWideRole }}
59+
- name: ROLE_BINDING
60+
value: "true"
61+
{{- end }}
62+
- name: PORT
63+
value: {{ .Values.port | quote }}
64+
- name: LOG_LEVEL
65+
value: {{ .Values.logLevel | quote }}
66+
- name: CLUSTER_URL
67+
value: {{ .Values.clusterUrl | quote }}
68+
- name: CLUSTER_TOKEN
69+
value: {{ .Values.clusterToken | quote }}
70+
- name: CLUSTER_CA
71+
value: {{ .Values.clusterCA | quote }}
72+
- name: API_TOKEN
73+
value: {{ required "A Codefresh API token is required. See https://codefresh.io/docs/docs/integrations/codefresh-api/#authentication-instructions" .Values.apiToken | quote }}
74+
- name: CLUSTER_ID
75+
value: {{ .Values.clusterId | quote }}
76+
- name: API_URL
77+
value: {{ .Values.apiUrl | quote }}
78+
- name: ACCOUNT_ID
79+
value: {{ .Values.accountId | quote }}
80+
- name: DISABLE_HELM
81+
value: {{ .Values.disableHelm | quote }}
82+
- name: HELM3
83+
value: {{ .Values.helm3 | quote }}
84+
- name: USE_CONFIG
85+
value: {{ .Values.useConfig | quote }}
86+
- name: USE_K8S_CLIENT
87+
value: {{ .Values.useK8sClient | quote }}
88+
- name: CLEAN
89+
value: "{{ .Values.clean }}"
90+
- name: MAX_HELM_HISTORY_SIZE
91+
value: "{{ .Values.maxHelmHistorySize }}"
92+
- name: NAMESPACE
93+
value: "{{ .Release.Namespace }}"
94+
- name: ACCOUNTS
95+
value: '{{ .Values.ACCOUNTS }}'
96+
- name: NEWRELIC_LICENSE_KEY
97+
value: "{{ .Values.newRelicLicenseKey }}"
98+
- name: NODE_OPTIONS
99+
value: "--max_old_space_size={{ .Values.heapSize }}"
100+
- name: FORCE_DISABLE_HELM_RELEASES
101+
value: "{{ .Values.forceDisableHelmReleases }}"
102+
{{- range $key, $value := .Values.env }}
103+
- name: {{ $key }}
104+
value: {{ $value | quote }}
105+
{{- end }}
106+
ports:
107+
- containerPort: {{ .Values.port }}
108+
protocol: TCP
109+
readinessProbe:
110+
httpGet:
111+
path: /api/ping
112+
port: {{ .Values.port }}
113+
periodSeconds: 5
114+
timeoutSeconds: 5
115+
successThreshold: 1
116+
failureThreshold: 5

k8s-agent/templates/role.yaml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
{{- if and .Values.rbacEnabled (not .Values.existingServiceAccount) }}
2+
{{- if .Values.useNamespaceWideRole }}
3+
kind: Role
4+
{{- else }}
5+
kind: ClusterRole
6+
{{- end }}
7+
apiVersion: rbac.authorization.k8s.io/v1
8+
metadata:
9+
name: {{ template "fullname" . }}-cluster-reader
10+
labels:
11+
app: {{ template "fullname" . }}
12+
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
13+
release: {{ .Release.Name | quote }}
14+
heritage: {{ .Release.Service | quote }}
15+
version: {{ .Values.imageTag | quote }}
16+
rules:
17+
- apiGroups:
18+
- ""
19+
resources: ["*"]
20+
verbs:
21+
- get
22+
- list
23+
- watch
24+
- create
25+
- delete
26+
- apiGroups:
27+
- ""
28+
resources: ["pods"]
29+
verbs:
30+
- get
31+
- list
32+
- watch
33+
- create
34+
- deletecollection
35+
- apiGroups:
36+
- extensions
37+
resources: ["*"]
38+
verbs:
39+
- get
40+
- list
41+
- watch
42+
- apiGroups:
43+
- apps
44+
resources: ["*"]
45+
verbs:
46+
- get
47+
- list
48+
- watch
49+
{{- end }}

k8s-agent/templates/rolebinding.yaml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{{- if and .Values.rbacEnabled (not .Values.existingServiceAccount) }}
2+
{{- if .Values.useNamespaceWideRole }}
3+
kind: RoleBinding
4+
{{- else }}
5+
kind: ClusterRoleBinding
6+
{{- end }}
7+
apiVersion: rbac.authorization.k8s.io/v1
8+
metadata:
9+
name: {{ template "fullname" . }}-cluster-reader
10+
labels:
11+
app: {{ template "fullname" . }}
12+
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
13+
release: {{ .Release.Name | quote }}
14+
heritage: {{ .Release.Service | quote }}
15+
version: {{ .Values.imageTag | quote }}
16+
subjects:
17+
- kind: ServiceAccount
18+
namespace: {{ .Release.Namespace }}
19+
name: {{ template "fullname" . }}
20+
roleRef:
21+
apiGroup: rbac.authorization.k8s.io
22+
{{- if .Values.useNamespaceWideRole }}
23+
kind: Role
24+
{{- else }}
25+
kind: ClusterRole
26+
{{- end }}
27+
name: {{ template "fullname" . }}-cluster-reader
28+
{{- end }}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{{- if and .Values.rbacEnabled (not .Values.existingServiceAccount)}}
2+
{{- if .Values.useNamespaceWideRole }}
3+
kind: RoleBinding
4+
{{- else }}
5+
kind: ClusterRoleBinding
6+
{{- end }}
7+
apiVersion: rbac.authorization.k8s.io/v1
8+
metadata:
9+
name: {{ template "fullname" . }}-rollback
10+
labels:
11+
app: {{ template "fullname" . }}
12+
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
13+
release: {{ .Release.Name | quote }}
14+
heritage: {{ .Release.Service | quote }}
15+
version: {{ .Values.imageTag | quote }}
16+
subjects:
17+
- kind: ServiceAccount
18+
namespace: {{ .Release.Namespace }}
19+
name: {{ template "fullname" . }}-rollback
20+
roleRef:
21+
apiGroup: rbac.authorization.k8s.io
22+
kind: ClusterRole
23+
name: cluster-admin
24+
{{- end }}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{{- if and .Values.rbacEnabled (not .Values.useNamespaceWideRole) (not .Values.existingServiceAccount) }}
2+
apiVersion: v1
3+
kind: ServiceAccount
4+
metadata:
5+
name: {{ template "fullname" . }}-rollback
6+
labels:
7+
app: {{ template "fullname" . }}
8+
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
9+
release: {{ .Release.Name | quote }}
10+
heritage: {{ .Release.Service | quote }}
11+
version: {{ .Values.imageTag | quote }}
12+
{{- end }}

k8s-agent/templates/service.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: {{ template "fullname" . }}
5+
labels:
6+
app: {{ template "fullname" . }}
7+
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
8+
release: {{ .Release.Name | quote }}
9+
heritage: {{ .Release.Service | quote }}
10+
version: {{ .Values.imageTag | quote }}
11+
spec:
12+
type: ClusterIP
13+
ports:
14+
- name: "http"
15+
port: {{ .Values.servicePort }}
16+
protocol: TCP
17+
targetPort: {{ .Values.port }}
18+
selector:
19+
app: {{ template "fullname" . }}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{{- if and .Values.rbacEnabled (not .Values.existingServiceAccount) }}
2+
apiVersion: v1
3+
kind: ServiceAccount
4+
metadata:
5+
name: {{ template "fullname" . }}
6+
labels:
7+
app: {{ template "fullname" . }}
8+
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
9+
release: {{ .Release.Name | quote }}
10+
heritage: {{ .Release.Service | quote }}
11+
version: {{ .Values.imageTag | quote }}
12+
{{- end }}

0 commit comments

Comments
 (0)