Merge pull request #178 from eliaskoromilas/fpga-operator

InAccel FPGA Operator chart
pull/205/head
alex-isv 2021-10-13 13:59:14 -06:00 committed by GitHub
commit 51808cd63e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 580 additions and 0 deletions

Binary file not shown.

View File

@ -0,0 +1,30 @@
annotations:
artifacthub.io/license: Apache-2.0
artifacthub.io/links: |
- name: Documentation
url: https://docs.inaccel.com
catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: InAccel FPGA Operator
catalog.cattle.io/namespace: kube-system
catalog.cattle.io/os: linux
catalog.cattle.io/release-name: inaccel
catalog.cattle.io/scope: downstream
category: Infrastructure
apiVersion: v2
appVersion: "2.1"
description: Simplifying FPGA management in Kubernetes
home: https://inaccel.com
icon: https://en.gravatar.com/userimage/147236320/2a11cd2992b4521ec287587f03fae35c.png?size=1250
keywords:
- fpga
- infrastructure
kubeVersion: '>= 1.18.0-0'
maintainers:
- email: info@inaccel.com
name: InAccel
name: fpga-operator
sources:
- https://docs.inaccel.com
- https://github.com/inaccel/helm
type: application
version: 2.5.201

View File

@ -0,0 +1,82 @@
# InAccel FPGA Operator
Simplifying FPGA management in Kubernetes
## Installing the Chart
To install the chart with the release name `my-fpga-operator`:
```console
$ helm repo add inaccel https://setup.inaccel.com/helm
$ helm install my-fpga-operator inaccel/fpga-operator
```
These commands deploy InAccel FPGA Operator on the Kubernetes cluster in the
default configuration.
> **Tip**: List all releases using `helm list`
## Uninstalling the Chart
To uninstall/delete the `my-fpga-operator` deployment:
```console
$ helm uninstall my-fpga-operator
```
The command removes all the Kubernetes components associated with the chart and
deletes the release.
## Parameters
The following table lists the configurable parameters of the InAccel FPGA
Operator chart and their default values.
| Parameter | Default |
| -------------------- | ------------------ |
| `coral.httpsProxy` | |
| `coral.image` | `inaccel/coral` |
| `coral.logLevel` | `info` |
| `coral.port` | |
| `coral.pullPolicy` | `Always` |
| `coral.resources` | |
| `coral.tag` | *APP VERSION* |
| `daemon.debug` | `false` |
| `daemon.image` | `inaccel/daemon` |
| `daemon.pullPolicy` | |
| `daemon.resources` | |
| `daemon.tag` | `latest` |
| `driver.enabled` | `true` |
| `driver.image` | `inaccel/driver` |
| `driver.pullPolicy` | |
| `driver.tag` | `latest` |
| `kubelet` | `/var/lib/kubelet` |
| `license` | |
| `mkrt.image` | `inaccel/mkrt` |
| `mkrt.pullPolicy` | |
| `mkrt.tag` | `latest` |
| `monitor.image` | `inaccel/monitor` |
| `monitor.port` | |
| `monitor.pullPolicy` | `Always` |
| `monitor.resources` | |
| `monitor.tag` | *APP VERSION* |
| `nodeSelector` | |
| `reef.debug` | `false` |
| `reef.image` | `inaccel/reef` |
| `reef.pullPolicy` | |
| `reef.resources` | |
| `reef.tag` | `latest` |
| `root.config` | `/etc/inaccel` |
| `root.state` | `/var/lib/inaccel` |
Specify each parameter using the `--set key=value[,key=value]` argument to
`helm install`.
Alternatively, a YAML file that specifies the values for the parameters can be
provided while installing the chart. For example,
```console
$ helm install my-fpga-operator -f values.yaml inaccel/fpga-operator
```
> **Tip**: You can use the default `values.yaml`

View File

@ -0,0 +1,7 @@
### Documentation
For detailed usage instructions visit: [docs.inaccel.com](https://docs.inaccel.com)
### Support
For more product information contact: info@inaccel.com

View File

@ -0,0 +1,10 @@
{{- if .Release.IsInstall }}
Install
{{- end -}}
{{- if .Release.IsUpgrade }}
Upgrad
{{- end -}}
ing {{ ( index .Chart.Maintainers 0 ).Name }} [{{ .Chart.Name }}] {{ .Release.Service }} chart.
For detailed usage instructions visit: {{ index .Chart.Sources 0 }}
For more product information contact: {{ ( index .Chart.Maintainers 0 ).Email }}
KUBERNETES: {{ .Capabilities.KubeVersion }}

View File

@ -0,0 +1,26 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "labels" -}}
{{ include "selectorLabels" . }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/version: {{ .Chart.Version }}
helm.sh/chart: {{ include "chart" . }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "selectorLabels" -}}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

View File

@ -0,0 +1,12 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ .Chart.Name }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ .Chart.Name }}
subjects:
- kind: ServiceAccount
name: default
namespace: kube-system

View File

@ -0,0 +1,11 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ .Chart.Name }}
rules:
- apiGroups: [""]
resources: ["nodes"]
verbs: ["patch"]
- apiGroups: ["admissionregistration.k8s.io"]
resources: ["mutatingwebhookconfigurations"]
verbs: ["get", "update"]

View File

@ -0,0 +1,8 @@
apiVersion: storage.k8s.io/v1
kind: CSIDriver
metadata:
name: inaccel
spec:
attachRequired: false
volumeLifecycleModes:
- Ephemeral

View File

@ -0,0 +1,186 @@
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
{{- include "labels" . | nindent 4 }}
name: {{ .Chart.Name }}
namespace: kube-system
spec:
selector:
matchLabels:
kind: DaemonSet
{{- include "selectorLabels" . | nindent 6 }}
template:
metadata:
annotations:
kubectl.kubernetes.io/default-container: coral
labels:
kind: DaemonSet
{{- include "labels" . | nindent 8 }}
spec:
containers:
- env:
{{- if .Values.coral.httpsProxy }}
- name: HTTPS_PROXY
value: {{ .Values.coral.httpsProxy }}
{{- end }}
{{- if .Values.license }}
- name: LICENSE
valueFrom:
secretKeyRef:
key: license
name: {{ .Chart.Name }}
{{- end }}
{{- if .Values.coral.logLevel }}
- name: LOG_LEVEL
value: {{ .Values.coral.logLevel }}
{{- end }}
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
image: {{ .Values.coral.image }}:{{ default .Chart.AppVersion .Values.coral.tag }}
{{- if .Values.coral.pullPolicy }}
imagePullPolicy: {{ .Values.coral.pullPolicy }}
{{- end }}
name: coral
ports:
- containerPort: 55677
{{- if .Values.coral.port }}
hostPort: {{ .Values.coral.port }}
{{- end }}
readinessProbe:
exec:
command:
- get
- coral
{{- if .Values.coral.resources }}
resources:
{{- .Values.coral.resources | toYaml | nindent 10 }}
{{- end }}
securityContext:
privileged: true
volumeMounts:
- mountPath: /etc/localtime
name: localtime
readOnly: true
- mountPath: /sys
name: sys
- mountPath: /var/lib/inaccel
mountPropagation: HostToContainer
name: state-root
- mountPath: /var/lib/kubelet/plugins_registry
name: kubelet
subPath: plugins_registry
- mountPath: /var/opt/inaccel/runtimes
name: data-root
readOnly: true
subPath: runtimes
- args:
- --debug={{ .Values.daemon.debug }}
env:
- name: DOCKER
value: disabled
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
image: {{ .Values.daemon.image }}:{{ .Values.daemon.tag }}
{{- if .Values.daemon.pullPolicy }}
imagePullPolicy: {{ .Values.daemon.pullPolicy }}
{{- end }}
name: daemon
{{- if .Values.daemon.resources }}
resources:
{{- .Values.daemon.resources | toYaml | nindent 10 }}
{{- end }}
securityContext:
privileged: true
volumeMounts:
- mountPath: /var/lib/inaccel
mountPropagation: Bidirectional
name: state-root
- mountPath: /var/lib/kubelet/plugins_registry
name: kubelet
subPath: plugins_registry
- mountPath: {{ .Values.kubelet }}
mountPropagation: Bidirectional
name: kubelet
- image: {{ .Values.monitor.image }}:{{ default .Chart.AppVersion .Values.monitor.tag }}
{{- if .Values.monitor.pullPolicy }}
imagePullPolicy: {{ .Values.monitor.pullPolicy }}
{{- end }}
name: monitor
ports:
- containerPort: 19999
{{- if .Values.monitor.port }}
hostPort: {{ .Values.monitor.port }}
{{- end }}
{{- if .Values.monitor.resources }}
resources:
{{- .Values.monitor.resources | toYaml | nindent 10 }}
{{- end }}
hostAliases:
- hostnames:
- coral
- daemon
- monitor
ip: 127.0.0.1
hostPID: {{ .Values.driver.enabled }}
initContainers:
{{- if .Values.driver.enabled }}
- env:
- name: DRIVER_SYSROOT_DIR
value: /host
image: {{ .Values.driver.image }}:{{ .Values.driver.tag }}
{{- if .Values.driver.pullPolicy }}
imagePullPolicy: {{ .Values.driver.pullPolicy }}
{{- end }}
name: driver
securityContext:
privileged: true
volumeMounts:
- mountPath: /host
name: host
{{- end }}
- env:
- name: MKRT_CONFIG_PATH
value: {{ .Values.root.config }}/runtimes
- name: MKRT_SYSROOT_DIR
value: /host
image: {{ .Values.mkrt.image }}:{{ .Values.mkrt.tag }}
{{- if .Values.mkrt.pullPolicy }}
imagePullPolicy: {{ .Values.mkrt.pullPolicy }}
{{- end }}
name: mkrt
volumeMounts:
- mountPath: /host
name: host
readOnly: true
- mountPath: /var/opt/inaccel/runtimes
name: data-root
subPath: runtimes
{{- if .Values.nodeSelector }}
nodeSelector:
{{- .Values.nodeSelector | toYaml | nindent 8 }}
{{- end }}
priorityClassName: system-node-critical
volumes:
- emptyDir: {}
name: data-root
- hostPath:
path: /
name: host
- hostPath:
path: {{ .Values.kubelet }}
name: kubelet
- hostPath:
path: /etc/localtime
name: localtime
- hostPath:
path: {{ .Values.root.state }}
type: DirectoryOrCreate
name: state-root
- hostPath:
path: /sys
name: sys

View File

@ -0,0 +1,58 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
{{- include "labels" . | nindent 4 }}
name: {{ .Chart.Name }}
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
kind: Deployment
{{- include "selectorLabels" . | nindent 6 }}
template:
metadata:
annotations:
kubectl.kubernetes.io/default-container: reef
labels:
kind: Deployment
{{- include "labels" . | nindent 8 }}
spec:
containers:
- args:
- --debug={{ .Values.reef.debug }}
image: {{ .Values.reef.image }}:{{ .Values.reef.tag }}
{{- if .Values.reef.pullPolicy }}
imagePullPolicy: {{ .Values.reef.pullPolicy }}
{{- end }}
name: reef
{{- if .Values.reef.resources }}
resources:
{{- .Values.reef.resources | toYaml | nindent 10 }}
{{- end }}
volumeMounts:
- mountPath: /etc/inaccel
name: config-root
readOnly: true
hostAliases:
- hostnames:
- reef
ip: 127.0.0.1
initContainers:
- args:
- init
env:
- name: MUTATING_WEBHOOK_CONFIGURATION_NAME
value: {{ .Chart.Name }}
image: {{ .Values.reef.image }}:{{ .Values.reef.tag }}
{{- if .Values.reef.pullPolicy }}
imagePullPolicy: {{ .Values.reef.pullPolicy }}
{{- end }}
name: reef-init
volumeMounts:
- mountPath: /etc/inaccel
name: config-root
volumes:
- emptyDir: {}
name: config-root

View File

@ -0,0 +1,17 @@
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
labels:
{{- include "labels" . | nindent 4 }}
name: {{ .Chart.Name }}
webhooks:
- admissionReviewVersions: ["v1"]
clientConfig:
service:
name: {{ .Chart.Name }}
namespace: kube-system
name: reef.inaccel.com
objectSelector:
matchLabels:
inaccel/fpga: enabled
sideEffects: None

View File

@ -0,0 +1,10 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ .Chart.Name }}
namespace: kube-system
stringData:
{{- if .Values.license }}
license: {{ .Values.license }}
{{- end }}
type: Opaque

View File

@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
labels:
{{- include "labels" . | nindent 4 }}
name: {{ .Chart.Name }}
namespace: kube-system
spec:
ports:
- port: 443
publishNotReadyAddresses: true
selector:
kind: Deployment
{{- include "selectorLabels" . | nindent 4 }}

View File

@ -0,0 +1,50 @@
coral:
# httpsProxy: ...
image: inaccel/coral
logLevel: info
# port: ...
pullPolicy: Always
# resources: ...
# tag: ...
daemon:
debug: false
image: inaccel/daemon
# pullPolicy: ...
# resources: ...
tag: latest
driver:
enabled: true
image: inaccel/driver
# pullPolicy: ...
tag: latest
kubelet: /var/lib/kubelet
# license: ...
mkrt:
image: inaccel/mkrt
# pullPolicy: ...
tag: latest
monitor:
image: inaccel/monitor
# port: ...
pullPolicy: Always
# resources: ...
# tag: ...
# nodeSelector: ...
reef:
debug: false
image: inaccel/reef
# pullPolicy: ...
# resources: ...
tag: latest
root:
config: /etc/inaccel
state: /var/lib/inaccel

View File

@ -874,6 +874,41 @@ entries:
urls:
- assets/federatorai/federatorai-4.5.100.tgz
version: 4.5.100
fpga-operator:
- annotations:
artifacthub.io/license: Apache-2.0
artifacthub.io/links: |
- name: Documentation
url: https://docs.inaccel.com
catalog.cattle.io/certified: partner
catalog.cattle.io/display-name: InAccel FPGA Operator
catalog.cattle.io/namespace: kube-system
catalog.cattle.io/os: linux
catalog.cattle.io/release-name: inaccel
catalog.cattle.io/scope: downstream
category: Infrastructure
apiVersion: v2
appVersion: "2.1"
created: "2021-10-12T22:35:43.135139329+03:00"
description: Simplifying FPGA management in Kubernetes
digest: 40df8ab46ea3bac4ccf43eac89f99ceee7ac5e3c0f7571154b07af46a57aa588
home: https://inaccel.com
icon: https://en.gravatar.com/userimage/147236320/2a11cd2992b4521ec287587f03fae35c.png?size=1250
keywords:
- fpga
- infrastructure
kubeVersion: '>= 1.18.0-0'
maintainers:
- email: info@inaccel.com
name: InAccel
name: fpga-operator
sources:
- https://docs.inaccel.com
- https://github.com/inaccel/helm
type: application
urls:
- assets/fpga-operator/fpga-operator-2.5.201.tgz
version: 2.5.201
haproxy:
- annotations:
catalog.cattle.io/certified: partner

View File

@ -0,0 +1,7 @@
### Documentation
For detailed usage instructions visit: [docs.inaccel.com](https://docs.inaccel.com)
### Support
For more product information contact: info@inaccel.com

View File

@ -0,0 +1,15 @@
--- charts-original/Chart.yaml
+++ charts/Chart.yaml
@@ -3,6 +3,12 @@
artifacthub.io/links: |
- name: Documentation
url: https://docs.inaccel.com
+ catalog.cattle.io/certified: partner
+ catalog.cattle.io/display-name: InAccel FPGA Operator
+ catalog.cattle.io/namespace: kube-system
+ catalog.cattle.io/os: linux
+ catalog.cattle.io/release-name: inaccel
+ catalog.cattle.io/scope: downstream
category: Infrastructure
apiVersion: v2
appVersion: "2.1"

View File

@ -0,0 +1,2 @@
url: https://github.com/inaccel/helm/releases/download/fpga-operator-2.5.2/fpga-operator-2.5.2.tgz
packageVersion: 01