Add gitops-argo-cd agent skill
Consolidates the five cogarchhubgitops-* source skills into one skill with scope routing: ArgoCD Applications, Copier templates, Helm values, environment answer files, and the end-to-end resource-addition walkthrough. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
{# ---------------------------------------------------------------------------
|
||||
Template for cluster/argocd/{{ '<NNN>-<name>' if <domain>.<descriptor>_is_enabled }}/application.yaml.jinja
|
||||
|
||||
Replace:
|
||||
<NNN>-<name> three-digit band number + kebab-case descriptor (e.g. 210-eso-operator-group)
|
||||
<target-namespace> namespace the workload deploys into
|
||||
<domain> copier.yaml domain object (operators, databases, applications, …)
|
||||
<descriptor> this resource's key inside that domain
|
||||
|
||||
The parent directory name must be the Jinja2 conditional expression, and it must be
|
||||
character-identical to the one used for the cluster/resources/ mirror.
|
||||
--------------------------------------------------------------------------- #}
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: <NNN>-<name>
|
||||
namespace: openshift-gitops
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: {{ gitops.repo_url }}
|
||||
targetRevision: {{ gitops.branch }}
|
||||
path: cluster/resources/<NNN>-<name>
|
||||
helm:
|
||||
valueFiles:
|
||||
- values.yaml
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
namespace: <target-namespace>
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
@@ -0,0 +1,46 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# Snippet to merge into copier.yaml when adding a new cluster resource.
|
||||
#
|
||||
# Replace:
|
||||
# <domain> existing domain object (operators, configuration, databases,
|
||||
# advantage_mcp, applications) — never add a top-level variable
|
||||
# <descriptor> this resource's key inside that domain
|
||||
# <NNN>-<name> the directory / ArgoCD Application name
|
||||
#
|
||||
# The flag name used here must be the one appearing in BOTH conditional directory
|
||||
# expressions (cluster/argocd/ and cluster/resources/).
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
<domain>:
|
||||
<descriptor>_is_enabled:
|
||||
type: bool
|
||||
default: false
|
||||
help: "Enable <NNN>-<name>"
|
||||
|
||||
<descriptor>:
|
||||
image:
|
||||
address:
|
||||
type: str
|
||||
default: ""
|
||||
help: "Container image for <name>"
|
||||
tag:
|
||||
type: str
|
||||
default: ""
|
||||
help: "Container image tag for <name>"
|
||||
replicas:
|
||||
type: str
|
||||
default: "1"
|
||||
help: "Replica count for <name>"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Matching snippet for <env>/copier-answers.yaml in each environment that should
|
||||
# run this resource. Feature flags are YAML booleans; Helm string-booleans such as
|
||||
# is_internal / maintenance are quoted strings — see references/environments.md §4.
|
||||
# ---------------------------------------------------------------------------
|
||||
#
|
||||
# <domain>:
|
||||
# <descriptor>_is_enabled: true
|
||||
# <descriptor>:
|
||||
# image:
|
||||
# address: <registry>/<image>
|
||||
# tag: <version>
|
||||
@@ -0,0 +1,48 @@
|
||||
{# ---------------------------------------------------------------------------
|
||||
Template for cluster/resources/{{ '<NNN>-<name>' if <domain>.<descriptor>_is_enabled }}/values.yaml.jinja
|
||||
|
||||
Standalone-chart shape. For services sharing one release via a `global` block,
|
||||
use the shared-chart shape in references/helm-values.md §4 instead.
|
||||
|
||||
The macro wrapper and the four-line stripping footer are mandatory — they remove
|
||||
blank lines left by unexpanded Jinja2 constructs, which would otherwise break the
|
||||
rendered YAML.
|
||||
--------------------------------------------------------------------------- #}
|
||||
{% macro render() %}
|
||||
# values for <NNN>-<name>
|
||||
replicaCount: {{ <domain>.get('<descriptor>', {}).get('replicas', 1) }}
|
||||
|
||||
image:
|
||||
repository: {{ <domain>.get('<descriptor>', {}).get('image', {}).get('address', '') }}
|
||||
tag: {{ <domain>.get('<descriptor>', {}).get('image', {}).get('tag', '') }}
|
||||
pullPolicy: Always
|
||||
|
||||
imagePullSecrets:
|
||||
- name: "storage-images"
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 80
|
||||
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: <app-port>
|
||||
periodSeconds: 60
|
||||
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: <app-port>
|
||||
periodSeconds: 60
|
||||
|
||||
env:
|
||||
targetPort: <app-port>
|
||||
<env_var>: {{ <domain>.get('<descriptor>', {}).get('env', {}).get('<env_var>', '') }}
|
||||
{% endmacro %}
|
||||
{%- set result = render() -%}
|
||||
{%- for line in result.split('\n') -%}
|
||||
{% if line | trim | length != 0 -%}
|
||||
{{ line }}
|
||||
{% endif -%}
|
||||
{%- endfor %}
|
||||
Reference in New Issue
Block a user