Skip to content

Commit 0d7d334

Browse files
authored
Merge pull request #120 from mbaldessari/common-automatic-update
common automatic update
2 parents 5c2381f + 915aa59 commit 0d7d334

92 files changed

Lines changed: 12890 additions & 1310 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

common/.ansible-lint

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,6 @@ exclude_paths:
1616
- ./ansible/playbooks/iib-ci/iib-ci.yaml
1717
- ./ansible/playbooks/k8s_secrets/k8s_secrets.yml
1818
- ./ansible/playbooks/process_secrets/process_secrets.yml
19+
- ./ansible/playbooks/write-token-kubeconfig/write-token-kubeconfig.yml
1920
- ./ansible/playbooks/process_secrets/display_secrets_info.yml
2021
- ./ansible/roles/vault_utils/tests/test.yml

common/.github/workflows/chart-branches.yml

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,7 @@ jobs:
4949
5050
acm:
5151
needs: changes
52-
if: |
53-
${{ needs.changes.outputs.acm == 'true' }} &&
54-
github.repository == 'validatedpatterns/common'
52+
if: ${{ (needs.changes.outputs.acm == 'true') && (github.repository == 'validatedpatterns/common') }}
5553
uses: validatedpatterns/common/.github/workflows/chart-split.yml@main
5654
permissions:
5755
actions: write
@@ -63,9 +61,7 @@ jobs:
6361

6462
golang-external-secrets:
6563
needs: changes
66-
if: |
67-
${{ needs.changes.outputs.golang-external-secrets == 'true' }} &&
68-
github.repository == 'validatedpatterns/common'
64+
if: ${{ (needs.changes.outputs.golang-external-secrets == 'true') && (github.repository == 'validatedpatterns/common') }}
6965
uses: validatedpatterns/common/.github/workflows/chart-split.yml@main
7066
permissions:
7167
actions: write
@@ -77,9 +73,7 @@ jobs:
7773

7874
hashicorp-vault:
7975
needs: changes
80-
if: |
81-
${{ needs.changes.outputs.hashicorp-vault == 'true' }} &&
82-
github.repository == 'validatedpatterns/common'
76+
if: ${{ (needs.changes.outputs.hashicorp-vault == 'true') && (github.repository == 'validatedpatterns/common') }}
8377
uses: validatedpatterns/common/.github/workflows/chart-split.yml@main
8478
permissions:
8579
actions: write
@@ -91,9 +85,7 @@ jobs:
9185

9286
letsencrypt:
9387
needs: changes
94-
if: |
95-
${{ needs.changes.outputs.letsencrypt == 'true' }} &&
96-
github.repository == 'validatedpatterns/common'
88+
if: ${{ (needs.changes.outputs.letsencrypt == 'true') && (github.repository == 'validatedpatterns/common') }}
9789
uses: validatedpatterns/common/.github/workflows/chart-split.yml@main
9890
permissions:
9991
actions: write
@@ -105,9 +97,7 @@ jobs:
10597

10698
clustergroup:
10799
needs: changes
108-
if: |
109-
${{ needs.changes.outputs.clustergroup == 'true' }} &&
110-
github.repository == 'validatedpatterns/common'
100+
if: ${{ (needs.changes.outputs.clustergroup == 'true') && (github.repository == 'validatedpatterns/common') }}
111101
uses: validatedpatterns/common/.github/workflows/chart-split.yml@main
112102
permissions:
113103
actions: write

common/.github/workflows/chart-split.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,12 @@ jobs:
3131
set -e
3232
N="${{ inputs.chart_name }}"
3333
B="${N}-main-single-chart"
34+
GITIMG="quay.io/hybridcloudpatterns/gitsubtree-container:2.40.1"
35+
sudo apt-get update -y && sudo apt-get install -y podman
36+
echo "Running subtree split for ${B}"
37+
podman pull "${GITIMG}"
3438
git push origin -d "${B}" || /bin/true
35-
git subtree split -P "${N}" -b "${B}"
36-
git push -f -u origin "${B}"
39+
# Git subtree got broken on recent versions of git hence this container
40+
podman run --net=host --rm -t -v .:/git "${GITIMG}" subtree split -P "${N}" -b "${B}"
3741
#git clone https://validatedpatterns:${GITHUB_TOKEN}@github.com/validatedpatterns/common.git -b "acm-main-single-chart" --single-branch
3842
git push --force https://validatedpatterns:"${GITHUB_TOKEN}"@github.com/${{ inputs.target_repository }}.git "${B}:main"

common/.github/workflows/linter.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
- name: Setup helm
3737
uses: azure/setup-helm@v4
3838
with:
39-
version: 'v3.13.2'
39+
version: 'v3.14.0'
4040

4141

4242
################################

common/.github/workflows/superlinter.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,19 @@ jobs:
2121
# Run Linter against code base #
2222
################################
2323
- name: Lint Code Base
24-
uses: github/super-linter/slim@v5
24+
uses: github/super-linter/slim@v6
2525
env:
2626
VALIDATE_ALL_CODEBASE: true
2727
DEFAULT_BRANCH: main
2828
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2929
# These are the validation we disable atm
3030
VALIDATE_ANSIBLE: false
3131
VALIDATE_BASH: false
32+
VALIDATE_CHECKOV: false
3233
VALIDATE_JSCPD: false
3334
VALIDATE_KUBERNETES_KUBECONFORM: false
35+
VALIDATE_PYTHON_PYLINT: false
36+
VALIDATE_SHELL_SHFMT: false
3437
VALIDATE_YAML: false
3538
# VALIDATE_DOCKERFILE_HADOLINT: false
3639
# VALIDATE_MARKDOWN: false

common/Makefile

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ load-iib: ## CI target to install Index Image Bundles
119119
exit 1; \
120120
fi
121121

122+
.PHONY: token-kubeconfig
123+
token-kubeconfig: ## Create a local ~/.kube/config with password (not usually needed)
124+
common/scripts/write-token-kubeconfig.sh
122125

123126
##@ Validation Tasks
124127

@@ -230,17 +233,20 @@ kubeconform: ## run helm kubeconform
230233
super-linter: ## Runs super linter locally
231234
rm -rf .mypy_cache
232235
podman run -e RUN_LOCAL=true -e USE_FIND_ALGORITHM=true \
236+
-e VALIDATE_ANSIBLE=false \
233237
-e VALIDATE_BASH=false \
238+
-e VALIDATE_CHECKOV=false \
239+
-e VALIDATE_DOCKERFILE_HADOLINT=false \
234240
-e VALIDATE_JSCPD=false \
235241
-e VALIDATE_KUBERNETES_KUBECONFORM=false \
236-
-e VALIDATE_YAML=false \
237-
-e VALIDATE_ANSIBLE=false \
238-
-e VALIDATE_DOCKERFILE_HADOLINT=false \
242+
-e VALIDATE_PYTHON_PYLINT=false \
243+
-e VALIDATE_SHELL_SHFMT=false \
239244
-e VALIDATE_TEKTON=false \
245+
-e VALIDATE_YAML=false \
240246
$(DISABLE_LINTERS) \
241247
-v $(PWD):/tmp/lint:rw,z \
242248
-w /tmp/lint \
243-
docker.io/github/super-linter:slim-v5
249+
ghcr.io/super-linter/super-linter:slim-v6
244250

245251
.PHONY: ansible-lint
246252
ansible-lint: ## run ansible lint on ansible/ folder

common/acm/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ description: A Helm chart to configure Advanced Cluster Manager for OpenShift.
33
keywords:
44
- pattern
55
name: acm
6-
version: 0.0.1
6+
version: 0.1.0

common/acm/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Validated Patterns ACM chart
2+
3+
This chart is used to set up ACM in [Validated Patterns](https://validatedpatterns.io)
4+
5+
Please send PRs [here](https://github.com/validatedpatterns/common)

common/acm/templates/_helpers.tpl

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,47 @@ Default always defined valueFiles to be included when pushing the cluster wide a
1111
# hub's cluster version, whereas we want to include the spoke cluster version
1212
- '/values-{{ `{{ printf "%d.%d" ((semver (index (lookup "config.openshift.io/v1" "ClusterVersion" "" "version").status.history 0).version).Major) ((semver (index (lookup "config.openshift.io/v1" "ClusterVersion" "" "version").status.history 0).version).Minor) }}` }}.yaml'
1313
{{- end }} {{- /*acm.app.policies.valuefiles */}}
14+
15+
{{- define "acm.app.policies.multisourcevaluefiles" -}}
16+
- "$patternref/values-global.yaml"
17+
- "$patternref/values-{{ .name }}.yaml"
18+
- '$patternref/values-{{ `{{ (lookup "config.openshift.io/v1" "Infrastructure" "" "cluster").spec.platformSpec.type }}` }}.yaml'
19+
- '$patternref/values-{{ `{{ (lookup "config.openshift.io/v1" "Infrastructure" "" "cluster").spec.platformSpec.type }}` }}-{{ `{{ printf "%d.%d" ((semver (index (lookup "config.openshift.io/v1" "ClusterVersion" "" "version").status.history 0).version).Major) ((semver (index (lookup "config.openshift.io/v1" "ClusterVersion" "" "version").status.history 0).version).Minor) }}` }}.yaml'
20+
- '$patternref/values-{{ `{{ (lookup "config.openshift.io/v1" "Infrastructure" "" "cluster").spec.platformSpec.type }}` }}-{{ .name }}.yaml'
21+
# We cannot use $.Values.global.clusterVersion because that gets resolved to the
22+
# hub's cluster version, whereas we want to include the spoke cluster version
23+
- '$patternref/values-{{ `{{ printf "%d.%d" ((semver (index (lookup "config.openshift.io/v1" "ClusterVersion" "" "version").status.history 0).version).Major) ((semver (index (lookup "config.openshift.io/v1" "ClusterVersion" "" "version").status.history 0).version).Minor) }}` }}.yaml'
24+
{{- end }} {{- /*acm.app.policies.multisourcevaluefiles */}}
25+
26+
{{- define "acm.app.policies.helmparameters" -}}
27+
- name: global.repoURL
28+
value: {{ $.Values.global.repoURL }}
29+
- name: global.targetRevision
30+
value: {{ $.Values.global.targetRevision }}
31+
- name: global.namespace
32+
value: $ARGOCD_APP_NAMESPACE
33+
- name: global.pattern
34+
value: {{ $.Values.global.pattern }}
35+
- name: global.hubClusterDomain
36+
value: {{ $.Values.global.hubClusterDomain }}
37+
- name: global.localClusterDomain
38+
value: '{{ `{{ (lookup "config.openshift.io/v1" "Ingress" "" "cluster").spec.domain }}` }}'
39+
- name: global.clusterDomain
40+
value: '{{ `{{ (lookup "config.openshift.io/v1" "Ingress" "" "cluster").spec.domain | replace "apps." "" }}` }}'
41+
- name: global.clusterVersion
42+
value: '{{ `{{ printf "%d.%d" ((semver (index (lookup "config.openshift.io/v1" "ClusterVersion" "" "version").status.history 0).version).Major) ((semver (index (lookup "config.openshift.io/v1" "ClusterVersion" "" "version").status.history 0).version).Minor) }}` }}'
43+
- name: global.localClusterName
44+
value: '{{ `{{ (split "." (lookup "config.openshift.io/v1" "Ingress" "" "cluster").spec.domain)._1 }}` }}'
45+
- name: global.clusterPlatform
46+
value: {{ $.Values.global.clusterPlatform }}
47+
- name: global.multiSourceSupport
48+
value: {{ $.Values.global.multiSourceSupport | quote }}
49+
- name: global.multiSourceRepoUrl
50+
value: {{ $.Values.global.multiSourceRepoUrl }}
51+
- name: global.multiSourceTargetRevision
52+
value: {{ $.Values.global.multiSourceTargetRevision }}
53+
- name: global.privateRepo
54+
value: {{ $.Values.global.privateRepo | quote }}
55+
- name: global.experimentalCapabilities
56+
value: {{ $.Values.global.experimentalCapabilities }}
57+
{{- end }} {{- /*acm.app.policies.helmparameters */}}

common/acm/templates/policies/acm-hub-ca-policy.yaml

Lines changed: 156 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,18 @@ spec:
3636
data:
3737
hub-kube-root-ca.crt: '{{ `{{hub fromConfigMap "" "kube-root-ca.crt" "ca.crt" | base64enc hub}}` }}'
3838
hub-openshift-service-ca.crt: '{{ `{{hub fromConfigMap "" "openshift-service-ca.crt" "service-ca.crt" | base64enc hub}}` }}'
39+
- complianceType: mustonlyhave
40+
objectDefinition:
41+
kind: ConfigMap
42+
apiVersion: v1
43+
metadata:
44+
name: trusted-hub-bundle
45+
namespace: imperative
46+
data:
47+
hub-kube-root-ca.crt: |
48+
{{ `{{hub fromConfigMap "" "kube-root-ca.crt" "ca.crt" | autoindent hub}}` }}
49+
hub-openshift-service-ca.crt: |
50+
{{ `{{hub fromConfigMap "" "openshift-service-ca.crt" "service-ca.crt" | autoindent hub}}` }}
3951
---
4052
apiVersion: policy.open-cluster-management.io/v1
4153
kind: PlacementBinding
@@ -68,5 +80,147 @@ spec:
6880
operator: NotIn
6981
values:
7082
- 'true'
71-
{{- end }}
72-
{{- end }}
83+
---
84+
apiVersion: policy.open-cluster-management.io/v1
85+
kind: Policy
86+
metadata:
87+
name: hub-argo-ca-openshift-gitops-policy
88+
annotations:
89+
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
90+
argocd.argoproj.io/compare-options: IgnoreExtraneous
91+
spec:
92+
remediationAction: enforce
93+
disabled: false
94+
policy-templates:
95+
- objectDefinition:
96+
apiVersion: policy.open-cluster-management.io/v1
97+
kind: ConfigurationPolicy
98+
metadata:
99+
name: hub-argo-ca-openshift-gitops-config
100+
spec:
101+
remediationAction: enforce
102+
severity: medium
103+
namespaceSelector:
104+
include:
105+
- default
106+
object-templates:
107+
- complianceType: mustonlyhave
108+
objectDefinition:
109+
kind: ConfigMap
110+
apiVersion: v1
111+
metadata:
112+
name: trusted-hub-bundle
113+
namespace: openshift-gitops
114+
data:
115+
hub-kube-root-ca.crt: |
116+
{{ `{{hub fromConfigMap "" "kube-root-ca.crt" "ca.crt" | autoindent hub}}` }}
117+
hub-openshift-service-ca.crt: |
118+
{{ `{{hub fromConfigMap "" "openshift-service-ca.crt" "service-ca.crt" | autoindent hub}}` }}
119+
---
120+
apiVersion: policy.open-cluster-management.io/v1
121+
kind: PlacementBinding
122+
metadata:
123+
name: hub-argo-ca-openshift-gitops-policy-binding
124+
annotations:
125+
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
126+
placementRef:
127+
name: hub-argo-ca-openshift-gitops-policy-placement
128+
kind: PlacementRule
129+
apiGroup: apps.open-cluster-management.io
130+
subjects:
131+
- name: hub-argo-ca-openshift-gitops-policy
132+
kind: Policy
133+
apiGroup: policy.open-cluster-management.io
134+
---
135+
apiVersion: apps.open-cluster-management.io/v1
136+
kind: PlacementRule
137+
metadata:
138+
name: hub-argo-ca-openshift-gitops-policy-placement
139+
annotations:
140+
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
141+
spec:
142+
clusterConditions:
143+
- status: 'True'
144+
type: ManagedClusterConditionAvailable
145+
clusterSelector:
146+
matchExpressions:
147+
- key: local-cluster
148+
operator: NotIn
149+
values:
150+
- 'true'
151+
152+
{{- end }}{{/* if (eq (((.Values.global).secretStore).backend) "vault") */}}
153+
{{- range .Values.clusterGroup.managedClusterGroups }}
154+
{{- $group := . }}
155+
{{- if not .hostedArgoSites }}
156+
---
157+
apiVersion: policy.open-cluster-management.io/v1
158+
kind: Policy
159+
metadata:
160+
name: hub-argo-ca-{{ .name }}-policy
161+
annotations:
162+
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
163+
argocd.argoproj.io/compare-options: IgnoreExtraneous
164+
spec:
165+
remediationAction: enforce
166+
disabled: false
167+
policy-templates:
168+
- objectDefinition:
169+
apiVersion: policy.open-cluster-management.io/v1
170+
kind: ConfigurationPolicy
171+
metadata:
172+
name: hub-argo-ca-{{ .name }}-config
173+
spec:
174+
remediationAction: enforce
175+
severity: medium
176+
namespaceSelector:
177+
include:
178+
- default
179+
object-templates:
180+
- complianceType: mustonlyhave
181+
objectDefinition:
182+
kind: ConfigMap
183+
apiVersion: v1
184+
metadata:
185+
name: trusted-hub-bundle
186+
namespace: {{ $.Values.global.pattern }}-{{ .name }}
187+
data:
188+
hub-kube-root-ca.crt: |
189+
{{ `{{hub fromConfigMap "" "kube-root-ca.crt" "ca.crt" | autoindent hub}}` }}
190+
hub-openshift-service-ca.crt: |
191+
{{ `{{hub fromConfigMap "" "openshift-service-ca.crt" "service-ca.crt" | autoindent hub}}` }}
192+
---
193+
apiVersion: policy.open-cluster-management.io/v1
194+
kind: PlacementBinding
195+
metadata:
196+
name: hub-argo-ca-{{ .name }}-placement-binding
197+
annotations:
198+
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
199+
placementRef:
200+
name: hub-argo-ca-{{ .name }}-placement
201+
kind: PlacementRule
202+
apiGroup: apps.open-cluster-management.io
203+
subjects:
204+
- name: hub-argo-ca-{{ .name }}-policy
205+
kind: Policy
206+
apiGroup: policy.open-cluster-management.io
207+
---
208+
apiVersion: apps.open-cluster-management.io/v1
209+
kind: PlacementRule
210+
metadata:
211+
name: hub-argo-ca-{{ .name }}-placement
212+
annotations:
213+
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
214+
spec:
215+
clusterConditions:
216+
- status: 'True'
217+
type: ManagedClusterConditionAvailable
218+
clusterSelector:
219+
matchExpressions:
220+
- key: local-cluster
221+
operator: NotIn
222+
values:
223+
- 'true'
224+
{{- end }}{{/* if not .hostedArgoSites */}}
225+
{{- end }}{{/* range .Values.clusterGroup.managedClusterGroups */}}
226+
{{- end }}{{/* isHubCluster */}}

0 commit comments

Comments
 (0)