set up repo with first app
This commit is contained in:
parent
2d416d2482
commit
a2f3587ce0
10 changed files with 276 additions and 0 deletions
|
@ -1,2 +1,7 @@
|
|||
# k8s-cluster-aegir
|
||||
|
||||
|
||||
## Acknowledgement
|
||||
|
||||
- inspiration & source: https://github.com/mikevader/k3s-cluster-infra-apps
|
||||
- inspiration: https://github.com/argoproj/argocd-example-apps
|
||||
|
|
5
apps-root-config/applications/Chart.yaml
Normal file
5
apps-root-config/applications/Chart.yaml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
apiVersion: "v2"
|
||||
name: "apps"
|
||||
version: "0.1.0"
|
||||
description: "App of Apps Chart for Argo CD"
|
28
apps-root-config/applications/cluster-apps-of-apps.yaml
Normal file
28
apps-root-config/applications/cluster-apps-of-apps.yaml
Normal file
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
repository: "https://rievo.dev/rievo/k8s-cluster-aegir.git"
|
||||
# argocdNamespace: "argocd"
|
||||
# server: "https://kubernetes.default.svc"
|
||||
subFolder: cluster-apps-of-apps
|
||||
namespace:
|
||||
annotations: {}
|
||||
labels:
|
||||
client: cluster-infra
|
||||
|
||||
enableDefaultNetworkPolicy: false
|
||||
enableDefaultLimitRange: false
|
||||
allowAllNamespaces: true
|
||||
|
||||
roleBindings:
|
||||
# - groupName: "team1"
|
||||
# clusterRoleName: "admin"
|
||||
|
||||
clusterResourceWhitelist:
|
||||
- group: '*'
|
||||
kind: '*'
|
||||
|
||||
namespaceResourceBlacklist:
|
||||
# - group: 'apps'
|
||||
# kind: 'DaemonSet'
|
||||
|
||||
applications:
|
||||
guestbook: {}
|
|
@ -0,0 +1,55 @@
|
|||
{{- range $key, $value := .Values.applications -}}
|
||||
{{- $disabled := default false .disabled }}
|
||||
{{- $destinationNamespace := default $key .destinationNamespace }}
|
||||
{{- $server := "https://kubernetes.default.svc" }}
|
||||
{{- $project := default $.Release.Name .project }}
|
||||
{{- $path := default (printf "%s/%s" $.Values.subFolder $key) .path }}
|
||||
{{- $source := default false .source }}
|
||||
{{- $disableAutoSync := default false .disableAutoSync }}
|
||||
{{- $enableHelmKustomize := default false .enableHelmKustomize }}
|
||||
{{- $automatedPrune := default true .automatedPrune }}
|
||||
{{- $selfHeal := default true .selfHeal }}
|
||||
{{- $helmServerSideApply := default false .helmServerSideApply }}
|
||||
{{- $ignoreDifferences := default false .ignoreDifferences }}
|
||||
{{- if not $disabled }}
|
||||
---
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "10"
|
||||
name: {{ $key }}
|
||||
namespace: {{ default "argocd-system" $.Values.argocdNamespace }}
|
||||
spec:
|
||||
destination:
|
||||
namespace: {{ default $key $destinationNamespace }}
|
||||
name: in-cluster
|
||||
# server: {{ default $server }}
|
||||
project: {{ $project }}
|
||||
source:
|
||||
path: {{ $path }}
|
||||
repoURL: {{ $.Values.repository }}
|
||||
{{ if $source -}}
|
||||
{{- toYaml $source | indent 4 }}
|
||||
{{- end }}
|
||||
{{- if $enableHelmKustomize }}
|
||||
plugin:
|
||||
name: kustomized-helm
|
||||
{{- end }}
|
||||
{{- if $ignoreDifferences }}
|
||||
ignoreDifferences:
|
||||
{{ toYaml $ignoreDifferences | indent 4 }}
|
||||
{{- end }}
|
||||
{{- if not $disableAutoSync }}
|
||||
syncPolicy:
|
||||
syncOptions:
|
||||
- ApplyOutOfSyncOnly=true
|
||||
{{- if $helmServerSideApply }}
|
||||
- ServerSideApply=true
|
||||
{{- end }}
|
||||
automated:
|
||||
prune: {{ default true $automatedPrune }}
|
||||
selfHeal: {{ default true $selfHeal }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{ end }}
|
31
apps-root-config/applications/templates/argo-approject.yaml
Normal file
31
apps-root-config/applications/templates/argo-approject.yaml
Normal file
|
@ -0,0 +1,31 @@
|
|||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: AppProject
|
||||
metadata:
|
||||
name: {{ .Release.Name }}
|
||||
namespace: {{ default "argocd-system" .Values.argocdNamespace}}
|
||||
spec:
|
||||
sourceRepos:
|
||||
- "{{ .Values.repository }}"
|
||||
- "https://charts.truecharts.org/"
|
||||
{{- if eq (len .Values.applications ) 0 }}
|
||||
destinations: []
|
||||
{{- else }}
|
||||
destinations:
|
||||
{{- if .Values.allowAllNamespaces }}
|
||||
- namespace: '*'
|
||||
server: "https://kubernetes.default.svc"
|
||||
{{- else }}
|
||||
{{- range $key, $value := .Values.applications }}
|
||||
- namespace: {{ $key }}
|
||||
server: "https://kubernetes.default.svc"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if .Values.clusterResourceWhitelist }}
|
||||
clusterResourceWhitelist:
|
||||
{{- toYaml .Values.clusterResourceWhitelist | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.namespaceResourceBlacklist }}
|
||||
namespaceResourceBlacklist:
|
||||
{{- toYaml .Values.namespaceResourceBlacklist | nindent 4 -}}
|
||||
{{- end }}
|
99
apps-root-config/applications/templates/namespace.yaml
Normal file
99
apps-root-config/applications/templates/namespace.yaml
Normal file
|
@ -0,0 +1,99 @@
|
|||
{{- range $key, $value := .Values.applications -}}
|
||||
{{- $disableNamespaceCreation := false -}}
|
||||
{{- if . -}}
|
||||
{{- $disableNamespaceCreation = .disableNamespaceCreation -}}
|
||||
{{- end }}
|
||||
{{- if not $disableNamespaceCreation }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: {{ $key }}
|
||||
{{ if $.Values.namespace.annotations }}
|
||||
annotations:
|
||||
openshift.io/requester: {{ .Release.Name }}
|
||||
{{ toYaml $.Values.namespace.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
{{ if $.Values.namespace.labels }}
|
||||
labels:
|
||||
{{ toYaml $.Values.namespace.labels | indent 4 }}
|
||||
{{- end }}
|
||||
{{ if $.Values.enableDefaultLimitRange }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: LimitRange
|
||||
metadata:
|
||||
name: core-resource-limits
|
||||
namespace: "{{ $key }}"
|
||||
spec:
|
||||
limits:
|
||||
- type: Pod
|
||||
max:
|
||||
cpu: "4"
|
||||
memory: 8Gi
|
||||
min:
|
||||
cpu: 1m
|
||||
memory: 1
|
||||
- type: Container
|
||||
default:
|
||||
cpu: 2
|
||||
memory: 1Gi
|
||||
defaultRequest:
|
||||
cpu: 25m
|
||||
memory: 512Mi
|
||||
{{- end }}
|
||||
{{- if $.Values.enableDefaultNetworkPolicy }}
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: NetworkPolicy
|
||||
metadata:
|
||||
name: allow-from-openshift-ingress
|
||||
namespace: {{ $key }}
|
||||
spec:
|
||||
ingress:
|
||||
- from:
|
||||
- namespaceSelector:
|
||||
matchLabels:
|
||||
network.openshift.io/policy-group: ingress
|
||||
podSelector: {}
|
||||
policyTypes:
|
||||
- Ingress
|
||||
---
|
||||
kind: NetworkPolicy
|
||||
apiVersion: networking.k8s.io/v1
|
||||
metadata:
|
||||
name: allow-same-namespace
|
||||
namespace: {{ $key }}
|
||||
spec:
|
||||
podSelector: {}
|
||||
ingress:
|
||||
- from:
|
||||
- podSelector: {}
|
||||
---
|
||||
kind: NetworkPolicy
|
||||
apiVersion: networking.k8s.io/v1
|
||||
metadata:
|
||||
name: deny-by-default
|
||||
namespace: {{ $key }}
|
||||
spec:
|
||||
podSelector: {}
|
||||
ingress: []
|
||||
{{ end }}
|
||||
{{ range $.Values.roleBindings -}}
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ printf "%s-%s" .name .clusterRoleName}}
|
||||
namespace: "{{ $key }}"
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: {{ .clusterRoleName }}
|
||||
subjects:
|
||||
- apiGroup: rbac.authorization.k8s.io
|
||||
kind: {{ .kind }}
|
||||
name: {{ .name }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
5
apps-root-config/bootstrap/Chart.yaml
Normal file
5
apps-root-config/bootstrap/Chart.yaml
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
apiVersion: "v2"
|
||||
name: "bootstrap"
|
||||
version: "0.1.0"
|
||||
description: "Bootstrap Chart for Argo CD App of Apps"
|
24
apps-root-config/bootstrap/templates/argo-application.yaml
Normal file
24
apps-root-config/bootstrap/templates/argo-application.yaml
Normal file
|
@ -0,0 +1,24 @@
|
|||
{{- range .Values.bootstrap -}}
|
||||
---
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: {{ .name }}-apps
|
||||
namespace: {{ default "argocd-system" $.Values.argocdNamespace }}
|
||||
spec:
|
||||
destination:
|
||||
namespace: {{ default "argocd-system" $.Values.argocdNamespace }}
|
||||
server: https://kubernetes.default.svc
|
||||
project: default
|
||||
source:
|
||||
helm:
|
||||
valueFiles:
|
||||
- "{{ .name }}.yaml"
|
||||
path: apps-root-config/applications
|
||||
repoURL: {{ $.Values.repository }}
|
||||
targetRevision: HEAD
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
{{ end }}
|
4
apps-root-config/bootstrap/values.yaml
Normal file
4
apps-root-config/bootstrap/values.yaml
Normal file
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
repository: "https://rievo.dev/rievo/k8s-cluster-aegir.gi"
|
||||
bootstrap:
|
||||
- name: cluster-apps-of-apps
|
20
cluster-apps-of-apps/guestbook/guestbook.yaml
Normal file
20
cluster-apps-of-apps/guestbook/guestbook.yaml
Normal file
|
@ -0,0 +1,20 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: guestbook-ui
|
||||
spec:
|
||||
replicas: 1
|
||||
revisionHistoryLimit: 3
|
||||
selector:
|
||||
matchLabels:
|
||||
app: guestbook-ui
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: guestbook-ui
|
||||
spec:
|
||||
containers:
|
||||
- image: gcr.io/heptio-images/ks-guestbook-demo:0.2
|
||||
name: guestbook-ui
|
||||
ports:
|
||||
- containerPort: 80
|
Loading…
Reference in a new issue