Last active
January 18, 2024 17:15
-
-
Save rm3l/a3766c70b051f9c45bb55337b091a156 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apiVersion: v1 | |
kind: Namespace | |
metadata: | |
name: imageswap-system | |
labels: | |
app: imageswap | |
resource: namespace | |
--- | |
kind: ClusterRole | |
apiVersion: rbac.authorization.k8s.io/v1 | |
metadata: | |
name: imageswap-write | |
namespace: imageswap-system | |
labels: | |
app: imageswap | |
resource: clusterrole | |
rules: | |
- apiGroups: | |
- admissionregistration.k8s.io | |
- certificates.k8s.io | |
- "" | |
resources: | |
- mutatingwebhookconfigurations | |
- certificatesigningrequests | |
- certificatesigningrequests/approval | |
- certificatesigningrequests/status | |
- signers | |
verbs: | |
- get | |
- list | |
- watch | |
- create | |
- patch | |
- update | |
- delete | |
- approve | |
- sign | |
--- | |
apiVersion: rbac.authorization.k8s.io/v1 | |
kind: ClusterRole | |
metadata: | |
name: imageswap-read | |
labels: | |
app: imageswap | |
resource: clusterrole | |
rules: | |
- apiGroups: | |
- "" | |
resources: | |
- namespaces | |
verbs: | |
- get | |
- list | |
- watch | |
--- | |
kind: ClusterRoleBinding | |
apiVersion: rbac.authorization.k8s.io/v1 | |
metadata: | |
name: imageswap-write-crb | |
labels: | |
app: imageswap | |
resource: clusterrolebinding | |
roleRef: | |
kind: ClusterRole | |
name: imageswap-write | |
apiGroup: rbac.authorization.k8s.io | |
subjects: | |
- kind: ServiceAccount | |
name: imageswap-sa | |
namespace: imageswap-system | |
--- | |
kind: ClusterRoleBinding | |
apiVersion: rbac.authorization.k8s.io/v1 | |
metadata: | |
name: imageswap-read-crb | |
labels: | |
app: imageswap | |
resource: clusterrolebinding | |
roleRef: | |
kind: ClusterRole | |
name: imageswap-read | |
apiGroup: rbac.authorization.k8s.io | |
subjects: | |
- kind: ServiceAccount | |
name: imageswap-sa | |
namespace: imageswap-system | |
--- | |
# Define role for OPA/kube-mgmt to update configmaps with policy status. | |
kind: Role | |
apiVersion: rbac.authorization.k8s.io/v1 | |
metadata: | |
name: imageswap-ops | |
namespace: imageswap-system | |
labels: | |
app: imageswap | |
resource: role | |
rules: | |
- apiGroups: | |
- "" | |
resources: | |
- secrets | |
verbs: | |
- get | |
- list | |
- watch | |
- create | |
- patch | |
- update | |
- delete | |
- apiGroups: | |
- "" | |
resources: | |
- configmaps | |
verbs: | |
- get | |
- list | |
- watch | |
- patch | |
- update | |
--- | |
kind: RoleBinding | |
apiVersion: rbac.authorization.k8s.io/v1 | |
metadata: | |
name: imageswap-ops-rb | |
namespace: imageswap-system | |
labels: | |
app: imageswap | |
resource: rolebinding | |
roleRef: | |
kind: Role | |
name: imageswap-ops | |
apiGroup: rbac.authorization.k8s.io | |
subjects: | |
- kind: ServiceAccount | |
name: imageswap-sa | |
--- | |
apiVersion: v1 | |
kind: ServiceAccount | |
metadata: | |
name: imageswap-sa | |
namespace: imageswap-system | |
labels: | |
app: imageswap | |
resource: serviceaccount | |
--- | |
kind: ConfigMap | |
apiVersion: v1 | |
metadata: | |
name: imageswap-env | |
namespace: imageswap-system | |
labels: | |
app: imageswap | |
resource: configmap | |
data: | |
FLASK_ENV: "production" | |
PYTHONUNBUFFERED: "TRUE" | |
IMAGESWAP_MODE: "MAPS" | |
IMAGESWAP_LOG_LEVEL: "INFO" | |
--- | |
apiVersion: v1 | |
data: | |
imageswap-mwc: | | |
apiVersion: admissionregistration.k8s.io/v1 | |
kind: MutatingWebhookConfiguration | |
metadata: | |
name: imageswap-webhook | |
labels: | |
app: imageswap | |
resource: mutatingwebhookconfiguration | |
webhooks: | |
- name: imageswap.webhook.k8s.twr.io | |
clientConfig: | |
service: | |
name: imageswap | |
namespace: imageswap-system | |
path: "/" | |
caBundle: $CA_BUNDLE | |
rules: | |
- operations: | |
- CREATE | |
- UPDATE | |
apiGroups: | |
- "*" | |
apiVersions: | |
- "*" | |
resources: | |
- "pods" | |
sideEffects: None | |
admissionReviewVersions: ["v1"] | |
failurePolicy: Fail | |
reinvocationPolicy: IfNeeded | |
namespaceSelector: | |
matchLabels: | |
k8s.twr.io/imageswap: "enabled" | |
kind: ConfigMap | |
metadata: | |
creationTimestamp: null | |
name: imageswap-mwc-template | |
namespace: imageswap-system | |
--- | |
apiVersion: v1 | |
data: | |
maps: | | |
default: | |
[REPLACE]registry-proxy.engineering.redhat.com/rh-osbs/*::quay.io/rhdh/ | |
[REPLACE]registry.redhat.io/rhdh/*::quay.io/rhdh/ | |
[REPLACE]registry.stage.redhat.io/rhdh/*::quay.io/rhdh/ | |
kind: ConfigMap | |
metadata: | |
creationTimestamp: null | |
name: imageswap-maps | |
namespace: imageswap-system | |
--- | |
apiVersion: v1 | |
kind: Service | |
metadata: | |
name: imageswap | |
namespace: imageswap-system | |
labels: | |
app: imageswap | |
resource: service | |
spec: | |
ports: | |
- name: https | |
port: 443 | |
targetPort: 5000 | |
selector: | |
app: imageswap | |
sessionAffinity: None | |
type: ClusterIP | |
--- | |
# apiVersion: policy/v1beta1 | |
# kind: PodDisruptionBudget | |
# metadata: | |
# name: imageswap-pdb | |
# namespace: imageswap-system | |
# labels: | |
# app: imageswap | |
# resource: poddisruptionbudget | |
# spec: | |
# minAvailable: 1 | |
# selector: | |
# matchLabels: | |
# app: imageswap | |
--- | |
apiVersion: apps/v1 | |
kind: Deployment | |
metadata: | |
name: imageswap | |
namespace: imageswap-system | |
labels: | |
app: imageswap | |
resource: deployment | |
spec: | |
replicas: 2 | |
selector: | |
matchLabels: | |
app: imageswap | |
template: | |
metadata: | |
labels: | |
app: imageswap | |
spec: | |
serviceAccountName: imageswap-sa | |
# securityContext: | |
# runAsUser: 1898 | |
# runAsGroup: 1898 | |
initContainers: | |
- name: imageswap-init | |
image: thewebroot/imageswap-init:v1.5.3 | |
command: [/app/imageswap-init.py] | |
imagePullPolicy: Always | |
securityContext: | |
allowPrivilegeEscalation: false | |
env: | |
- name: IMAGESWAP_POD_NAME | |
valueFrom: | |
fieldRef: | |
fieldPath: metadata.name | |
- name: IMAGESWAP_NAMESPACE_NAME | |
valueFrom: | |
fieldRef: | |
fieldPath: metadata.namespace | |
envFrom: | |
- configMapRef: | |
name: imageswap-env | |
volumeMounts: | |
- name: imageswap-tls | |
mountPath: /tls | |
- name: imageswap-mwc | |
mountPath: /mwc | |
containers: | |
- name: imageswap | |
image: thewebroot/imageswap:v1.5.3 | |
ports: | |
- containerPort: 5000 | |
command: ["gunicorn", "imageswap:app", "--config=config.py"] | |
imagePullPolicy: Always | |
securityContext: | |
allowPrivilegeEscalation: false | |
resources: | |
limits: | |
cpu: "500m" | |
memory: 512Mi | |
requests: | |
cpu: 50m | |
memory: 128Mi | |
env: | |
- name: IMAGESWAP_POD_NAME | |
valueFrom: | |
fieldRef: | |
fieldPath: metadata.name | |
- name: IMAGESWAP_NAMESPACE_NAME | |
valueFrom: | |
fieldRef: | |
fieldPath: metadata.namespace | |
envFrom: | |
- configMapRef: | |
name: imageswap-env | |
volumeMounts: | |
- name: imageswap-tls | |
mountPath: /tls | |
- name: imageswap-maps | |
mountPath: /app/maps | |
volumes: | |
- name: imageswap-mwc | |
configMap: | |
name: imageswap-mwc-template | |
items: | |
- key: imageswap-mwc | |
path: imageswap-mwc.yaml | |
- name: imageswap-maps | |
configMap: | |
name: imageswap-maps | |
items: | |
- key: maps | |
path: imageswap-maps.conf | |
- name: imageswap-tls | |
emptyDir: {} | |
--- | |
# apiVersion: autoscaling/v1 | |
# kind: HorizontalPodAutoscaler | |
# metadata: | |
# name: imageswap | |
# namespace: imageswap-system | |
# labels: | |
# app: imageswap | |
# resource: horizontalpodautoscaler | |
# spec: | |
# maxReplicas: 6 | |
# minReplicas: 2 | |
# scaleTargetRef: | |
# apiVersion: apps/v1 | |
# kind: Deployment | |
# name: imageswap | |
# targetCPUUtilizationPercentage: 80 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment