commit
7cdcf51b7f
13 changed files with 718 additions and 0 deletions
@ -0,0 +1,11 @@ |
|||
# Deploy Red Hat ACS, the GitOps way! |
|||
|
|||
An all-in-one installation of [Red Hat ACS](https://docs.openshift.com/acs/4.3/welcome/index.html) using GitOps: |
|||
|
|||
- Red Hat ACS Operator |
|||
- **Central** installation |
|||
- [Init bundle](https://docs.openshift.com/acs/4.3/installing/installing_ocp/init-bundle-ocp.html) generation |
|||
- **Secure Cluster Service** installation |
|||
- Dedicated route for the console with the default router certificate. That is to say, no more "invalid certificate" warning! |
|||
- Post-configuration hook to deploy Red Hat ACS configuration |
|||
- A link to the Central from within the OpenShift Console |
|||
@ -0,0 +1,28 @@ |
|||
apiVersion: argoproj.io/v1alpha1 |
|||
kind: Application |
|||
metadata: |
|||
name: rhacs |
|||
namespace: openshift-gitops |
|||
spec: |
|||
project: default |
|||
source: |
|||
repoURL: https://github.com/nmasse-itix/rhacs-gitops.git |
|||
targetRevision: main |
|||
path: charts/rhacs |
|||
helm: |
|||
parameters: |
|||
- name: masterKey |
|||
value: "S3cr3t!" |
|||
- name: openshiftDnsZone |
|||
value: apps.ocp.tld |
|||
destination: |
|||
server: https://kubernetes.default.svc |
|||
syncPolicy: |
|||
syncOptions: |
|||
- CreateNamespace=false |
|||
automated: |
|||
selfHeal: true |
|||
prune: true |
|||
managedNamespaceMetadata: |
|||
labels: |
|||
argocd.argoproj.io/managed-by: openshift-gitops |
|||
@ -0,0 +1,5 @@ |
|||
apiVersion: v2 |
|||
name: rhacs |
|||
type: application |
|||
version: 0.0.1 |
|||
appVersion: "0.0.1" |
|||
@ -0,0 +1,215 @@ |
|||
- name: Configure RHACS |
|||
hosts: localhost |
|||
gather_facts: no |
|||
vars: |
|||
ansible_connection: local |
|||
acs_api: https://{{ central_hostname }}/v1 |
|||
validate_certs: no |
|||
tasks: |
|||
- name: Get Stackrox central's Route |
|||
kubernetes.core.k8s_info: |
|||
api_version: route.openshift.io/v1 |
|||
kind: Route |
|||
name: central |
|||
namespace: stackrox |
|||
register: central_route |
|||
failed_when: central_route.resources|length == 0 |
|||
until: central_route is succeeded |
|||
retries: 60 |
|||
delay: 5 |
|||
|
|||
- set_fact: |
|||
central_hostname: '{{ central_route.resources[0].spec.host }}:443' |
|||
|
|||
- name: Get Stackrox central's admin password |
|||
kubernetes.core.k8s_info: |
|||
api_version: v1 |
|||
kind: Secret |
|||
name: central-admin |
|||
namespace: stackrox |
|||
register: admin_secret |
|||
failed_when: admin_secret.resources|length == 0 |
|||
until: admin_secret is succeeded |
|||
retries: 60 |
|||
delay: 5 |
|||
|
|||
- set_fact: |
|||
central_admin_password: '{{ admin_secret.resources[0].data.password | b64decode }}' |
|||
|
|||
- name: Check if jmespath is available locally |
|||
debug: msg={{ dummy|json_query('@') }} |
|||
register: check_jmespath |
|||
ignore_errors: yes |
|||
vars: |
|||
dummy: Hello World |
|||
|
|||
- name: Ensure JMESPath is installed |
|||
assert: |
|||
that: |
|||
- 'check_jmespath is success' |
|||
msg: > |
|||
The JMESPath library is required by this playbook. |
|||
Please install the JMESPath library with 'pip install jmespath'. |
|||
|
|||
- name: Wait for the Central to be ready |
|||
uri: |
|||
url: 'https://{{ central_hostname }}' |
|||
validate_certs: '{{ validate_certs }}' |
|||
register: healthcheck |
|||
changed_when: false |
|||
until: healthcheck is succeeded |
|||
retries: 60 |
|||
delay: 5 |
|||
|
|||
- name: Get K8s secret |
|||
kubernetes.core.k8s_info: |
|||
api_version: v1 |
|||
kind: Secret |
|||
name: stackrox-cicd-token |
|||
namespace: stackrox |
|||
register: cicd_token_secret |
|||
|
|||
- name: Create the CI/CD API Token |
|||
uri: |
|||
url: '{{ acs_api }}/apitokens/generate' |
|||
method: POST |
|||
status_code: "200" |
|||
validate_certs: '{{ validate_certs }}' |
|||
url_username: admin |
|||
url_password: '{{ central_admin_password }}' |
|||
body: '{{ token_creation }}' |
|||
body_format: json |
|||
force_basic_auth: yes |
|||
register: create_apitoken_response |
|||
changed_when: create_apitoken_response.status == 200 |
|||
when: cicd_token_secret.resources|length == 0 |
|||
vars: |
|||
token_creation: |
|||
name: tekton-pipelines |
|||
role: Continuous Integration |
|||
|
|||
- set_fact: |
|||
apitoken_value: '{{ create_apitoken_response.json.token }}' |
|||
when: cicd_token_secret.resources|length == 0 |
|||
|
|||
- name: Create the K8s Secret |
|||
kubernetes.core.k8s: |
|||
state: present |
|||
definition: |
|||
apiVersion: v1 |
|||
kind: Secret |
|||
metadata: |
|||
name: stackrox-cicd-token |
|||
namespace: stackrox |
|||
stringData: |
|||
token: '{{ apitoken_value }}' |
|||
endpoint: '{{ central_hostname }}' |
|||
when: apitoken_value is defined |
|||
|
|||
- name: Get secrets in the stackrox namespace |
|||
kubernetes.core.k8s_info: |
|||
api_version: v1 |
|||
kind: Secret |
|||
namespace: stackrox |
|||
register: stackrox_secrets |
|||
failed_when: stackrox_secrets.resources|length == 0 |
|||
|
|||
- set_fact: |
|||
registry_reader_token: '{{ stackrox_secrets.resources | json_query(query) | first | b64decode }}' |
|||
vars: |
|||
query: > |
|||
[?metadata.annotations."kubernetes.io/service-account.name" == `stackrox-registry-reader` && type == `kubernetes.io/service-account-token`].data.token |
|||
|
|||
- name: Find image registry integrations |
|||
uri: |
|||
url: '{{ acs_api }}/imageintegrations' |
|||
validate_certs: '{{ validate_certs }}' |
|||
url_username: admin |
|||
url_password: '{{ central_admin_password }}' |
|||
force_basic_auth: yes |
|||
register: find_image_integrations_response |
|||
changed_when: false |
|||
|
|||
- set_fact: |
|||
image_integration_id: '{{ (find_image_integrations_response.json | json_query(query) | first).id }}' |
|||
when: find_image_integrations_response.json | json_query(query) | count > 0 |
|||
vars: |
|||
query: integrations[?type == `docker` && docker.endpoint == `image-registry.openshift-image-registry.svc:5000`] |
|||
|
|||
- name: Create the image registry integration |
|||
uri: |
|||
url: '{{ acs_api }}/imageintegrations' |
|||
method: POST |
|||
status_code: "200" |
|||
validate_certs: '{{ validate_certs }}' |
|||
url_username: admin |
|||
url_password: '{{ central_admin_password }}' |
|||
body: '{{ integration }}' |
|||
body_format: json |
|||
force_basic_auth: yes |
|||
register: create_image_integration_response |
|||
changed_when: create_image_integration_response.status == 200 |
|||
when: image_integration_id is not defined |
|||
vars: |
|||
integration: |
|||
name: OpenShift Internal Registry |
|||
autogenerated: false |
|||
categories: |
|||
- REGISTRY |
|||
clusterId: "" |
|||
docker: |
|||
endpoint: image-registry.openshift-image-registry.svc:5000 |
|||
insecure: true |
|||
username: stackrox-registry-reader |
|||
password: '{{ registry_reader_token }}' |
|||
type: docker |
|||
|
|||
- set_fact: |
|||
image_integration_id: '{{ create_image_integration_response.json.id }}' |
|||
when: image_integration_id is not defined |
|||
|
|||
- debug: |
|||
var: image_integration_id |
|||
|
|||
- name: Find auth providers |
|||
uri: |
|||
url: '{{ acs_api }}/authProviders' |
|||
validate_certs: '{{ validate_certs }}' |
|||
url_username: admin |
|||
url_password: '{{ central_admin_password }}' |
|||
force_basic_auth: yes |
|||
register: find_auth_providers_response |
|||
changed_when: false |
|||
|
|||
- set_fact: |
|||
auth_provider_id: '{{ (find_auth_providers_response.json | json_query(query) | first).id }}' |
|||
when: find_auth_providers_response.json | json_query(query) | count > 0 |
|||
vars: |
|||
query: authProviders[?name == `OpenShift`] |
|||
|
|||
- name: Create the OpenShift auth provider |
|||
uri: |
|||
url: '{{ acs_api }}/authProviders' |
|||
method: POST |
|||
status_code: "200" |
|||
validate_certs: '{{ validate_certs }}' |
|||
url_username: admin |
|||
url_password: '{{ central_admin_password }}' |
|||
body: '{{ auth }}' |
|||
body_format: json |
|||
force_basic_auth: yes |
|||
register: create_auth_provider_response |
|||
changed_when: create_auth_provider_response.status == 200 |
|||
when: auth_provider_id is not defined |
|||
vars: |
|||
auth: |
|||
name: OpenShift |
|||
type: openshift |
|||
validated: true |
|||
|
|||
- set_fact: |
|||
auth_provider_id: '{{ create_auth_provider_response.json.id }}' |
|||
when: auth_provider_id is not defined |
|||
|
|||
- debug: |
|||
var: auth_provider_id |
|||
@ -0,0 +1,8 @@ |
|||
#!/bin/bash |
|||
|
|||
set -Eeuo pipefail |
|||
|
|||
ansible-galaxy collection install community.general |
|||
ansible-playbook configure.yaml |
|||
|
|||
exit 0 |
|||
@ -0,0 +1,58 @@ |
|||
#!/bin/bash |
|||
|
|||
set -Eeuo pipefail |
|||
|
|||
mkdir -p /tmp/bin |
|||
curl -sfLo /tmp/bin/roxctl https://mirror.openshift.com/pub/rhacs/assets/4.0.0/bin/Linux/roxctl |
|||
chmod 755 /tmp/bin/roxctl |
|||
curl -sLo /tmp/bin/jq https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 |
|||
chmod 755 /tmp/bin/jq |
|||
export PATH="/tmp/bin:$PATH" |
|||
|
|||
echo "========================================================================" |
|||
echo " Connecting to Red Hat ACS" |
|||
echo "========================================================================" |
|||
echo |
|||
|
|||
export ROX_CENTRAL_ADDRESS="$(oc get route central -n stackrox -o go-template='{{.spec.host}}'):443" |
|||
while ! curl -sfko /dev/null "https://$ROX_CENTRAL_ADDRESS/"; do |
|||
echo "Red Hat ACS not ready..." |
|||
sleep 5 |
|||
|
|||
# There is a risk the central's route to be created after this script started |
|||
# so we need to periodically refresh it |
|||
export ROX_CENTRAL_ADDRESS="$(oc get route central -n stackrox -o go-template='{{.spec.host}}'):443" |
|||
done |
|||
export ROX_CENTRAL_HOSTNAME="$ROX_CENTRAL_ADDRESS" |
|||
|
|||
echo "========================================================================" |
|||
echo " Retrieving an API Token for Red Hat ACS" |
|||
echo "========================================================================" |
|||
echo |
|||
if ! oc get secret stackrox-api-token -n stackrox &>/dev/null; then |
|||
POLICY_JSON='{ "name": "init-token", "role":"Admin"}' |
|||
APIURL="https://$ROX_CENTRAL_ADDRESS/v1/apitokens/generate" |
|||
export ROX_API_TOKEN=$(curl -s -k -u admin:$ROX_ADMIN_PASSWORD -H 'Content-Type: application/json' -X POST -d "$POLICY_JSON" "$APIURL" | jq -r '.token') |
|||
oc create secret generic stackrox-api-token -n stackrox --from-literal=token="$ROX_API_TOKEN" |
|||
else |
|||
export ROX_API_TOKEN="$(oc get secret stackrox-api-token -n stackrox -o go-template --template='{{.data.token|base64decode}}')" |
|||
fi |
|||
|
|||
echo "========================================================================" |
|||
echo " Generating the Cluster Init Bundle" |
|||
echo "========================================================================" |
|||
echo |
|||
|
|||
if ! oc get secret admission-control-tls -n stackrox &>/dev/null; then |
|||
roxctl -e "$ROX_CENTRAL_ADDRESS" central init-bundles generate local-cluster --output-secrets /tmp/cluster_init_bundle.yaml |
|||
oc apply -f /tmp/cluster_init_bundle.yaml -n stackrox |
|||
fi |
|||
|
|||
echo "========================================================================" |
|||
echo " Fixing OAuth Authentication" |
|||
echo "========================================================================" |
|||
echo |
|||
|
|||
oc annotate -n stackrox serviceaccounts/central serviceaccounts.openshift.io/oauth-redirectreference.alt='{"kind":"OAuthRedirectReference","apiVersion":"v1","reference":{"kind":"Route","name":"central-plain"}}' serviceaccounts.openshift.io/oauth-redirecturi.alt=sso/providers/openshift/callback |
|||
|
|||
exit 0 |
|||
@ -0,0 +1,5 @@ |
|||
{{/* vim: set filetype=mustache: */}} |
|||
|
|||
{{- define "acs-admin-password" -}} |
|||
{{- trunc 16 (sha256sum (cat .Values.masterKey "acs-admin-password")) -}} |
|||
{{- end -}} |
|||
@ -0,0 +1,116 @@ |
|||
apiVersion: v1 |
|||
kind: Namespace |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "10" |
|||
openshift.io/description: "" |
|||
openshift.io/display-name: "" |
|||
labels: |
|||
kubernetes.io/metadata.name: stackrox |
|||
name: stackrox |
|||
spec: |
|||
finalizers: |
|||
- kubernetes |
|||
--- |
|||
apiVersion: v1 |
|||
kind: Secret |
|||
metadata: |
|||
# The secret needs to be created before the creation of the "Central" Custom Resource. |
|||
# Otherwise, a race condition is possible and the installation of the Central might get stuck. |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "10" |
|||
name: central-admin |
|||
namespace: stackrox |
|||
type: Opaque |
|||
data: |
|||
password: {{ include "acs-admin-password" . | b64enc | quote }} |
|||
--- |
|||
apiVersion: platform.stackrox.io/v1alpha1 |
|||
kind: Central |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "15" |
|||
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true |
|||
name: stackrox-central-services |
|||
namespace: stackrox |
|||
spec: |
|||
central: |
|||
exposure: |
|||
loadBalancer: |
|||
enabled: false |
|||
port: 443 |
|||
nodePort: |
|||
enabled: false |
|||
route: |
|||
enabled: true |
|||
adminPasswordSecret: |
|||
name: central-admin |
|||
db: |
|||
isEnabled: Default |
|||
persistence: |
|||
persistentVolumeClaim: |
|||
claimName: central-db |
|||
persistence: |
|||
persistentVolumeClaim: |
|||
claimName: stackrox-db |
|||
egress: |
|||
connectivityPolicy: Online |
|||
scanner: |
|||
analyzer: |
|||
scaling: |
|||
autoScaling: Disabled |
|||
replicas: 3 |
|||
scannerComponent: Enabled |
|||
# Listen on pain HTTP so that we can expose the central through a Route |
|||
customize: |
|||
envVars: |
|||
- name: ROX_PLAINTEXT_ENDPOINTS |
|||
value: http@8080 |
|||
--- |
|||
apiVersion: platform.stackrox.io/v1alpha1 |
|||
kind: SecuredCluster |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "30" |
|||
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true |
|||
name: stackrox-secured-cluster-services |
|||
namespace: stackrox |
|||
spec: |
|||
auditLogs: |
|||
collection: Auto |
|||
admissionControl: |
|||
listenOnUpdates: true |
|||
bypass: BreakGlassAnnotation |
|||
contactImageScanners: ScanIfMissing |
|||
listenOnCreates: true |
|||
timeoutSeconds: 20 |
|||
listenOnEvents: true |
|||
scanner: |
|||
analyzer: |
|||
scaling: |
|||
autoScaling: Enabled |
|||
maxReplicas: 5 |
|||
minReplicas: 2 |
|||
replicas: 3 |
|||
scannerComponent: AutoSense |
|||
perNode: |
|||
collector: |
|||
collection: EBPF |
|||
imageFlavor: Regular |
|||
taintToleration: TolerateTaints |
|||
clusterName: local-cluster |
|||
--- |
|||
apiVersion: console.openshift.io/v1 |
|||
kind: ConsoleLink |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "20" |
|||
name: rhacs-menu |
|||
spec: |
|||
applicationMenu: |
|||
imageURL: >- |
|||
/static/assets/redhat.svg |
|||
section: RHACS Section |
|||
href: 'https://central.{{ .Values.openshiftDnsZone }}/' |
|||
location: ApplicationMenu |
|||
text: Red Hat Advanced Cluster Security |
|||
@ -0,0 +1,151 @@ |
|||
apiVersion: v1 |
|||
kind: ServiceAccount |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "20" |
|||
name: stackrox-hook |
|||
namespace: stackrox |
|||
--- |
|||
apiVersion: rbac.authorization.k8s.io/v1 |
|||
kind: RoleBinding |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "20" |
|||
name: stackrox-hook |
|||
namespace: stackrox |
|||
roleRef: |
|||
apiGroup: rbac.authorization.k8s.io |
|||
kind: ClusterRole |
|||
name: edit |
|||
subjects: |
|||
- kind: ServiceAccount |
|||
name: stackrox-hook |
|||
namespace: stackrox |
|||
--- |
|||
apiVersion: rbac.authorization.k8s.io/v1 |
|||
kind: Role |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "20" |
|||
name: stackrox-hook-scc |
|||
namespace: stackrox |
|||
rules: |
|||
- apiGroups: |
|||
- security.openshift.io |
|||
resourceNames: |
|||
- anyuid |
|||
resources: |
|||
- securitycontextconstraints |
|||
verbs: |
|||
- use |
|||
--- |
|||
apiVersion: rbac.authorization.k8s.io/v1 |
|||
kind: RoleBinding |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "20" |
|||
name: stackrox-hook-scc |
|||
namespace: stackrox |
|||
roleRef: |
|||
apiGroup: rbac.authorization.k8s.io |
|||
kind: Role |
|||
name: stackrox-hook-scc |
|||
subjects: |
|||
- kind: ServiceAccount |
|||
name: stackrox-hook |
|||
namespace: stackrox |
|||
--- |
|||
apiVersion: v1 |
|||
kind: ConfigMap |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "20" |
|||
name: stackrox-init-hook |
|||
namespace: stackrox |
|||
data: |
|||
{{ (.Files.Glob "files/stackrox-init-hook/*").AsConfig | indent 2 }} |
|||
--- |
|||
apiVersion: v1 |
|||
kind: ConfigMap |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "20" |
|||
name: stackrox-configure-hook |
|||
namespace: stackrox |
|||
data: |
|||
{{ (.Files.Glob "files/stackrox-configure-hook/*").AsConfig | indent 2 }} |
|||
--- |
|||
apiVersion: batch/v1 |
|||
kind: Job |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "20" |
|||
name: stackrox-init-hook |
|||
namespace: stackrox |
|||
spec: |
|||
backoffLimit: 30 |
|||
template: |
|||
spec: |
|||
containers: |
|||
- name: hook |
|||
command: |
|||
- /entrypoint/configure-acs.sh |
|||
args: [] |
|||
image: registry.redhat.io/openshift4/ose-cli:v4.13 |
|||
imagePullPolicy: IfNotPresent |
|||
env: |
|||
- name: ROX_ADMIN_PASSWORD |
|||
valueFrom: |
|||
secretKeyRef: |
|||
name: central-admin |
|||
key: password |
|||
- name: USER |
|||
value: openshift |
|||
- name: HOME |
|||
value: /tmp |
|||
volumeMounts: |
|||
- mountPath: /entrypoint |
|||
name: stackrox-hook |
|||
readOnly: true |
|||
serviceAccountName: stackrox-hook |
|||
serviceAccount: stackrox-hook |
|||
restartPolicy: OnFailure |
|||
terminationGracePeriodSeconds: 30 |
|||
volumes: |
|||
- name: stackrox-hook |
|||
configMap: |
|||
name: stackrox-init-hook |
|||
defaultMode: 0755 |
|||
--- |
|||
apiVersion: batch/v1 |
|||
kind: Job |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "20" |
|||
name: stackrox-configure-hook |
|||
namespace: stackrox |
|||
spec: |
|||
backoffLimit: 30 |
|||
template: |
|||
spec: |
|||
containers: |
|||
- name: hook |
|||
command: |
|||
- /playbooks/entrypoint.sh |
|||
args: [] |
|||
image: registry.redhat.io/ansible-automation-platform-21/ee-supported-rhel8:1.0 |
|||
imagePullPolicy: IfNotPresent |
|||
volumeMounts: |
|||
- mountPath: /playbooks |
|||
name: stackrox-hook |
|||
readOnly: true |
|||
workingDir: /playbooks |
|||
serviceAccountName: stackrox-hook |
|||
serviceAccount: stackrox-hook |
|||
restartPolicy: OnFailure |
|||
terminationGracePeriodSeconds: 30 |
|||
volumes: |
|||
- name: stackrox-hook |
|||
configMap: |
|||
name: stackrox-configure-hook |
|||
defaultMode: 0755 |
|||
@ -0,0 +1,37 @@ |
|||
apiVersion: v1 |
|||
kind: Namespace |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "0" |
|||
openshift.io/description: "" |
|||
openshift.io/display-name: "" |
|||
labels: |
|||
kubernetes.io/metadata.name: rhacs-operator |
|||
name: rhacs-operator |
|||
spec: |
|||
finalizers: |
|||
- kubernetes |
|||
--- |
|||
apiVersion: operators.coreos.com/v1 |
|||
kind: OperatorGroup |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "0" |
|||
name: rhacs-operator |
|||
namespace: rhacs-operator |
|||
spec: |
|||
upgradeStrategy: Default |
|||
--- |
|||
apiVersion: operators.coreos.com/v1alpha1 |
|||
kind: Subscription |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "10" |
|||
name: rhacs-operator |
|||
namespace: rhacs-operator |
|||
spec: |
|||
channel: rhacs-4.2 |
|||
installPlanApproval: Automatic |
|||
name: rhacs-operator |
|||
source: redhat-operators |
|||
sourceNamespace: openshift-marketplace |
|||
@ -0,0 +1,24 @@ |
|||
apiVersion: v1 |
|||
kind: ServiceAccount |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "20" |
|||
name: stackrox-registry-reader |
|||
namespace: stackrox |
|||
--- |
|||
apiVersion: rbac.authorization.k8s.io/v1 |
|||
kind: ClusterRoleBinding |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "20" |
|||
name: stackrox-registry-reader |
|||
namespace: stackrox |
|||
roleRef: |
|||
apiGroup: rbac.authorization.k8s.io |
|||
kind: ClusterRole |
|||
name: system:image-puller |
|||
subjects: |
|||
- kind: ServiceAccount |
|||
name: stackrox-registry-reader |
|||
namespace: stackrox |
|||
--- |
|||
@ -0,0 +1,55 @@ |
|||
kind: Service |
|||
apiVersion: v1 |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "20" |
|||
name: central-plain |
|||
namespace: stackrox |
|||
spec: |
|||
ports: |
|||
- name: http |
|||
protocol: TCP |
|||
port: 8080 |
|||
targetPort: 8080 |
|||
type: ClusterIP |
|||
sessionAffinity: None |
|||
selector: |
|||
app: central |
|||
--- |
|||
kind: Route |
|||
apiVersion: route.openshift.io/v1 |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "20" |
|||
name: central-plain |
|||
namespace: stackrox |
|||
spec: |
|||
host: central.{{ .Values.openshiftDnsZone }} |
|||
to: |
|||
kind: Service |
|||
name: central-plain |
|||
weight: 100 |
|||
port: |
|||
targetPort: 8080 |
|||
tls: |
|||
termination: edge |
|||
insecureEdgeTerminationPolicy: Redirect |
|||
wildcardPolicy: None |
|||
--- |
|||
kind: NetworkPolicy |
|||
apiVersion: networking.k8s.io/v1 |
|||
metadata: |
|||
annotations: |
|||
argocd.argoproj.io/sync-wave: "20" |
|||
name: allow-ext-to-central-plain |
|||
namespace: stackrox |
|||
spec: |
|||
podSelector: |
|||
matchLabels: |
|||
app: central |
|||
ingress: |
|||
- ports: |
|||
- protocol: TCP |
|||
port: 8080 |
|||
policyTypes: |
|||
- Ingress |
|||
@ -0,0 +1,5 @@ |
|||
# DNS Zone delegated to OpenShift (ex: apps.foo.bar) |
|||
openshiftDnsZone: "" |
|||
|
|||
# Master Key used to generate the RHACS admin password |
|||
masterKey: "S3cr3t!" |
|||
Loading…
Reference in new issue