Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# where helm charts will get downloaded by kustomize
/charts/

# un-encrypted secrets
/secret-*.yaml
# sealed secrets
Expand Down
23 changes: 23 additions & 0 deletions charts/understack/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
24 changes: 24 additions & 0 deletions charts/understack/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: v2
name: understack
description: ArgoCD Application definitions for UnderStack

# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application

# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.16.0"
99 changes: 99 additions & 0 deletions charts/understack/templates/_helpers.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "understack.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 "understack.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 }}

{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "understack.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}

{{/*
Common labels
*/}}
{{- define "understack.labels" -}}
helm.sh/chart: {{ include "understack.chart" . }}
{{ include "understack.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

{{/*
Selector labels
*/}}
{{- define "understack.selectorLabels" -}}
app.kubernetes.io/name: {{ include "understack.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

{{/*
Create the name of the service account to use
*/}}
{{- define "understack.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "understack.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}

{{/*
Create a valid ArgoCD Application name
*/}}
{{- define "understack.argocdAppName" -}}
{{- $root := index . 0 }}
{{- $appName := index . 1 }}
{{- printf "%s-%s" $root.Release.Name $appName }}
{{- end }}

{{/*
Get the UnderStack repository URL
*/}}
{{- define "understack.understack_url" -}}
{{- .Values.understack_url }}
{{- end }}

{{/*
Get the UnderStack repository git reference
*/}}
{{- define "understack.understack_ref" -}}
{{- .Values.understack_ref }}
{{- end }}

{{/*
Get the deployment repository URL
*/}}
{{- define "understack.deploy_url" -}}
{{- .Values.deploy_url }}
{{- end }}

{{/*
Get the deployment repository git reference
*/}}
{{- define "understack.deploy_ref" -}}
{{- .Values.deploy_ref }}
{{- end }}
47 changes: 47 additions & 0 deletions charts/understack/templates/application-openstack.yaml.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{{- range $appName, $app := .Values.site.openstack.apps }}
{{- if $app.enabled }}
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: {{ printf "%s-%s" $.Release.Name $appName }}
{{- with $app.wave }}
annotations:
argocd.argoproj.io/sync-wave: {{ quote . }}
{{- end }}
spec:
destination:
namespace: openstack
server: https://kubernetes.default.svc
project: understack
sources:
- repoURL: {{ $.Values.site.openstack.repoUrl }}
targetRevision: {{ $app.chartVersion }}
chart: {{ $appName }}
helm:
ignoreMissingValueFiles: true
releaseName: {{ $appName }}
valueFiles:
- $understack/components/images-openstack.yaml
- $understack/components/{{ $appName }}/values.yaml
- $deploy/{{ $.Release.Name }}/manifests/secret-openstack.yaml
- $deploy/{{ $.Release.Name }}/manifests/images-openstack.yaml
- $deploy/{{ $.Release.Name }}/helm-configs/{{ $appName }}.yaml
- path: components/{{ $appName }}/
ref: understack
repoURL: {{ include "understack.understack_url" $ }}
targetRevision: {{ include "understack.understack_ref" $ }}
- path: {{ $.Release.Name }}/manifests/{{ $appName }}
ref: deploy
repoURL: {{ include "understack.deploy_url" $ }}
targetRevision: {{ include "understack.deploy_ref" $ }}
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- ServerSideApply=false
- RespectIgnoreDifferences=true
- ApplyOutOfSyncOnly=true
{{- end }}
{{- end }}
153 changes: 153 additions & 0 deletions charts/understack/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
# -- Defines the UnderStack repository URL
# [[ref]](https://rackerlabs.github.io/understack/deploy-guide/requirements/)
# @default -- https://github.com/rackerlabs/understack.git
understack_url: https://github.com/rackerlabs/understack.git

# -- Defines the UnderStack repository git reference (commit/branch/tag)
# [[ref]](https://rackerlabs.github.io/understack/deploy-guide/requirements/)
# @default -- HEAD
understack_ref: HEAD

# -- Defines the deployment repository URL
# [[ref]](https://rackerlabs.github.io/understack/deploy-guide/requirements/)
deploy_url:

# -- Defines the deployment repository git reference (commit/branch/tag)
# [[ref]](https://rackerlabs.github.io/understack/deploy-guide/requirements/)
# @default -- HEAD
deploy_ref: HEAD

# -- This block is for setting up the UnderStack site specific ArgoCD Applications
site:
# -- Enable/disable deploying the site specific applications
# @default -- true
enabled: true

# -- OpenStack service applications configuration
openstack:
# -- OpenStack Helm chart repository URL
# @default -- https://tarballs.opendev.org/openstack/openstack-helm
repoUrl: https://tarballs.opendev.org/openstack/openstack-helm

# -- Dictionary of OpenStack applications to deploy
# @default -- See below for default apps
apps:
# -- Keystone (Identity Service)
keystone:
# -- Enable/disable deploying Keystone
# @default -- true
enabled: true
# -- Sync wave for deployment ordering (lower numbers deploy first)
# @default -- 1
wave: 1
# renovate: datasource=helm depName=keystone registryUrl=https://tarballs.opendev.org/openstack/openstack-helm
# -- Chart version for Keystone
chartVersion: 2025.1.5+95bf0bf6e

# -- Glance (Image Service)
glance:
# -- Enable/disable deploying Glance
# @default -- true
enabled: true
# -- Sync wave for deployment ordering
# @default -- 2
wave: 2
# renovate: datasource=helm depName=glance registryUrl=https://tarballs.opendev.org/openstack/openstack-helm
# -- Chart version for Glance
chartVersion: 2025.1.3+7bcc0b957

# -- Cinder (Block Storage Service)
cinder:
# -- Enable/disable deploying Cinder
# @default -- true
enabled: true
# -- Sync wave for deployment ordering
# @default -- 2
wave: 2
# renovate: datasource=helm depName=cinder registryUrl=https://tarballs.opendev.org/openstack/openstack-helm
# -- Chart version for Cinder
chartVersion: 2025.1.3+and55b4a7

# -- Ironic (Bare Metal Service)
ironic:
# -- Enable/disable deploying Ironic
# @default -- true
enabled: true
# -- Sync wave for deployment ordering
# @default -- 2
wave: 2
# renovate: datasource=helm depName=ironic registryUrl=https://tarballs.opendev.org/openstack/openstack-helm
# -- Chart version for Ironic
chartVersion: 2025.1.3+344314dd3

# -- Neutron (Networking Service)
neutron:
# -- Enable/disable deploying Neutron
# @default -- true
enabled: true
# -- Sync wave for deployment ordering
# @default -- 2
wave: 2
# renovate: datasource=helm depName=neutron registryUrl=https://tarballs.opendev.org/openstack/openstack-helm
# -- Chart version for Neutron
chartVersion: 2025.1.9+3225ad74a

# -- Placement (Placement Service)
placement:
# -- Enable/disable deploying Placement
# @default -- true
enabled: true
# -- Sync wave for deployment ordering
# @default -- 2
wave: 2
# renovate: datasource=helm depName=placement registryUrl=https://tarballs.opendev.org/openstack/openstack-helm
# -- Chart version for Placement
chartVersion: 2025.1.1+062261562

# -- Nova (Compute Service)
nova:
# -- Enable/disable deploying Nova
# @default -- true
enabled: true
# -- Sync wave for deployment ordering
# @default -- 3
wave: 3
# renovate: datasource=helm depName=nova registryUrl=https://tarballs.opendev.org/openstack/openstack-helm
# -- Chart version for Nova
chartVersion: 2025.1.19+12458c92d

# -- Octavia (Load Balancer Service)
octavia:
# -- Enable/disable deploying Octavia
# @default -- true
enabled: true
# -- Sync wave for deployment ordering
# @default -- 3
wave: 3
# renovate: datasource=helm depName=octavia registryUrl=https://tarballs.opendev.org/openstack/openstack-helm
# -- Chart version for Octavia
chartVersion: 2025.1.12+80041dfbb

# -- Horizon (Dashboard)
horizon:
# -- Enable/disable deploying Horizon
# @default -- true
enabled: true
# -- Sync wave for deployment ordering
# @default -- 4
wave: 4
# renovate: datasource=helm depName=horizon registryUrl=https://tarballs.opendev.org/openstack/openstack-helm
# -- Chart version for Horizon
chartVersion: 2025.1.8+95bf0bf6e

# -- Skyline (Dashboard)
skyline:
# -- Enable/disable deploying Skyline
# @default -- true
enabled: true
# -- Sync wave for deployment ordering
# @default -- 4
wave: 4
# renovate: datasource=helm depName=horizon registryUrl=https://tarballs.opendev.org/openstack/openstack-helm
# -- Chart version for Skyline
chartVersion: 2025.1.3+0161bea65
Loading