Add node-labeler helm chart
Change-Id: I286c283272a86eff81b479a9dad29eb2d958fecc
This commit is contained in:
parent
22efae206b
commit
643477c2dc
11
charts/node-labeler/Chart.yaml
Executable file
11
charts/node-labeler/Chart.yaml
Executable file
@ -0,0 +1,11 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
name: node-labeler
|
||||
version: 0.5.3
|
||||
description: Node labeler for Kubernetes
|
||||
home: https://github.com/vexxhost/node-labeler
|
||||
maintainers:
|
||||
- name: Mohammed Naser
|
||||
email: mnaser@vexxhost.com
|
||||
url: https://github.com/mnaser
|
||||
appVersion: v0.1.1
|
41
charts/node-labeler/templates/_helpers.tpl
Executable file
41
charts/node-labeler/templates/_helpers.tpl
Executable file
@ -0,0 +1,41 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "node-labeler.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "node-labeler.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Generate basic labels
|
||||
*/}}
|
||||
{{- define "node-labeler.labels" }}
|
||||
app.kubernetes.io/name: {{ include "node-labeler.fullname" . }}
|
||||
app.kubernetes.io/instance: {{ include "node-labeler.chart" . }}
|
||||
app.kubernetes.io/version: {{ .Chart.Version }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "node-labeler.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
15
charts/node-labeler/templates/clusterrole.yaml
Executable file
15
charts/node-labeler/templates/clusterrole.yaml
Executable file
@ -0,0 +1,15 @@
|
||||
---
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
metadata:
|
||||
name: {{ include "node-labeler.fullname" . }}
|
||||
labels:
|
||||
{{ include "node-labeler.labels" . | indent 4 }}
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- nodes
|
||||
verbs:
|
||||
- get
|
||||
- patch
|
15
charts/node-labeler/templates/clusterrolebinding.yaml
Executable file
15
charts/node-labeler/templates/clusterrolebinding.yaml
Executable file
@ -0,0 +1,15 @@
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
metadata:
|
||||
name: {{ include "node-labeler.fullname" . }}
|
||||
labels:
|
||||
{{ include "node-labeler.labels" . | indent 4 }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: {{ include "node-labeler.fullname" . }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ include "node-labeler.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
41
charts/node-labeler/templates/daemonset.yaml
Executable file
41
charts/node-labeler/templates/daemonset.yaml
Executable file
@ -0,0 +1,41 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: DaemonSet
|
||||
metadata:
|
||||
name: {{ include "node-labeler.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{ include "node-labeler.labels" . | indent 4 }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
{{ include "node-labeler.labels" . | indent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{ include "node-labeler.labels" . | indent 8 }}
|
||||
spec:
|
||||
tolerations:
|
||||
- operator: Exists
|
||||
effect: NoSchedule
|
||||
serviceAccountName: {{ include "node-labeler.fullname" . }}
|
||||
containers:
|
||||
- name: node-labeler
|
||||
image: vexxhost/node-labeler:latest
|
||||
resources:
|
||||
requests:
|
||||
cpu: "100m"
|
||||
memory: "50Mi"
|
||||
limits:
|
||||
cpu: "100m"
|
||||
memory: "50Mi"
|
||||
env:
|
||||
- name: NODE
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: spec.nodeName
|
||||
nodeSelector:
|
||||
kubernetes.io/arch: amd64
|
||||
updateStrategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: 10%
|
8
charts/node-labeler/templates/serviceaccount.yaml
Executable file
8
charts/node-labeler/templates/serviceaccount.yaml
Executable file
@ -0,0 +1,8 @@
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "node-labeler.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{ include "node-labeler.labels" . | indent 4 }}
|
1
charts/node-labeler/values.yaml
Executable file
1
charts/node-labeler/values.yaml
Executable file
@ -0,0 +1 @@
|
||||
---
|
40
playbooks/functional/node-labeler.yaml
Executable file
40
playbooks/functional/node-labeler.yaml
Executable file
@ -0,0 +1,40 @@
|
||||
---
|
||||
# Copyright (c) 2020 VEXXHOST, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
- hosts: all
|
||||
tasks:
|
||||
- name: Get node name
|
||||
shell: kubectl get node -o=name | head -1
|
||||
register: _node_name
|
||||
until: _node_name is success
|
||||
retries: 60
|
||||
delay: 5
|
||||
failed_when: |
|
||||
{{ _node_name.stdout_lines | length == 0 }}
|
||||
|
||||
- name: Get the node labels
|
||||
shell: kubectl label {{ _node_name.stdout_lines }} --list
|
||||
register: _node_labels
|
||||
|
||||
- name: Check the label node.vexxhost.com/vendor is set
|
||||
fail:
|
||||
msg: node.vexxhost.com/vendor label is missing.
|
||||
when: "'node.vexxhost.com/vendor' not in {{ _node_labels.stdout }}"
|
||||
|
||||
- name: Check the label node.vexxhost.com/product is set
|
||||
fail:
|
||||
msg: node.vexxhost.com/product label is missing.
|
||||
when: "'node.vexxhost.com/product' not in {{ _node_labels.stdout }}"
|
22
playbooks/functional/pre.yaml
Executable file
22
playbooks/functional/pre.yaml
Executable file
@ -0,0 +1,22 @@
|
||||
---
|
||||
# Copyright (c) 2020 VEXXHOST, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
- hosts: all
|
||||
roles:
|
||||
- name: helm-template
|
||||
helm_release_name: node-labeler
|
||||
helm_chart: ./charts/node-labeler
|
||||
helm_values_file: ./charts/node-labeler/values.yaml
|
19
playbooks/functional/run.yaml
Executable file
19
playbooks/functional/run.yaml
Executable file
@ -0,0 +1,19 @@
|
||||
---
|
||||
# Copyright (c) 2020 VEXXHOST, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
- hosts: all
|
||||
tasks:
|
||||
- include_tasks: node-labeler.yaml
|
18
zuul.d/project.yaml
Executable file
18
zuul.d/project.yaml
Executable file
@ -0,0 +1,18 @@
|
||||
- job:
|
||||
name: helm-charts:functional
|
||||
parent: apply-helm-charts
|
||||
pre-run: playbooks/functional/pre.yaml
|
||||
run: playbooks/functional/run.yaml
|
||||
vars:
|
||||
minikube_dns_resolvers: [1.1.1.1, 8.8.8.8]
|
||||
collect_kubernetes_logs_namespace: kube-system
|
||||
|
||||
- project:
|
||||
check:
|
||||
jobs:
|
||||
- chart-testing-lint
|
||||
- helm-charts:functional
|
||||
gate:
|
||||
jobs:
|
||||
- chart-testing-lint
|
||||
- helm-charts:functional
|
Loading…
Reference in New Issue
Block a user