deploy/azure-wi-webhook.yaml (265 lines of code) (raw):
apiVersion: v1
kind: Namespace
metadata:
labels:
azure-workload-identity.io/system: "true"
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/audit-version: latest
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/enforce-version: latest
pod-security.kubernetes.io/warn: restricted
pod-security.kubernetes.io/warn-version: latest
name: azure-workload-identity-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
azure-workload-identity.io/system: "true"
name: azure-wi-webhook-admin
namespace: azure-workload-identity-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
labels:
azure-workload-identity.io/system: "true"
name: azure-wi-webhook-manager-role
namespace: azure-workload-identity-system
rules:
- apiGroups:
- ""
resources:
- secrets
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
azure-workload-identity.io/system: "true"
name: azure-wi-webhook-manager-role
rules:
- apiGroups:
- ""
resources:
- serviceaccounts
verbs:
- get
- list
- watch
- apiGroups:
- admissionregistration.k8s.io
resources:
- mutatingwebhookconfigurations
verbs:
- get
- list
- update
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
azure-workload-identity.io/system: "true"
name: azure-wi-webhook-manager-rolebinding
namespace: azure-workload-identity-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: azure-wi-webhook-manager-role
subjects:
- kind: ServiceAccount
name: azure-wi-webhook-admin
namespace: azure-workload-identity-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
azure-workload-identity.io/system: "true"
name: azure-wi-webhook-manager-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: azure-wi-webhook-manager-role
subjects:
- kind: ServiceAccount
name: azure-wi-webhook-admin
namespace: azure-workload-identity-system
---
apiVersion: v1
data:
AZURE_ENVIRONMENT: ${AZURE_ENVIRONMENT:-AzurePublicCloud}
AZURE_TENANT_ID: ${AZURE_TENANT_ID}
kind: ConfigMap
metadata:
labels:
azure-workload-identity.io/system: "true"
name: azure-wi-webhook-config
namespace: azure-workload-identity-system
---
apiVersion: v1
kind: Secret
metadata:
labels:
azure-workload-identity.io/system: "true"
name: azure-wi-webhook-server-cert
namespace: azure-workload-identity-system
---
apiVersion: v1
kind: Service
metadata:
labels:
azure-workload-identity.io/system: "true"
name: azure-wi-webhook-webhook-service
namespace: azure-workload-identity-system
spec:
ports:
- port: 443
targetPort: 9443
selector:
azure-workload-identity.io/system: "true"
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
azure-workload-identity.io/system: "true"
name: azure-wi-webhook-controller-manager
namespace: azure-workload-identity-system
spec:
replicas: 2
selector:
matchLabels:
azure-workload-identity.io/system: "true"
template:
metadata:
labels:
azure-workload-identity.io/system: "true"
spec:
containers:
- args:
- --log-level=info
command:
- /manager
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
envFrom:
- configMapRef:
name: azure-wi-webhook-config
image: mcr.microsoft.com/oss/azure/workload-identity/webhook:v1.5.0
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 6
httpGet:
path: /healthz
port: healthz
initialDelaySeconds: 15
periodSeconds: 20
name: manager
ports:
- containerPort: 9443
name: webhook-server
protocol: TCP
- containerPort: 8095
name: metrics
protocol: TCP
- containerPort: 9440
name: healthz
protocol: TCP
readinessProbe:
httpGet:
path: /readyz
port: healthz
initialDelaySeconds: 5
periodSeconds: 5
resources:
limits:
cpu: 100m
memory: 30Mi
requests:
cpu: 100m
memory: 20Mi
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsGroup: 65532
runAsNonRoot: true
runAsUser: 65532
seccompProfile:
type: RuntimeDefault
volumeMounts:
- mountPath: /certs
name: cert
readOnly: true
nodeSelector:
kubernetes.io/os: linux
priorityClassName: system-cluster-critical
serviceAccountName: azure-wi-webhook-admin
volumes:
- name: cert
secret:
defaultMode: 420
secretName: azure-wi-webhook-server-cert
---
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
labels:
azure-workload-identity.io/system: "true"
name: azure-wi-webhook-controller-manager
namespace: azure-workload-identity-system
spec:
minAvailable: 1
selector:
matchLabels:
azure-workload-identity.io/system: "true"
---
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
labels:
azure-workload-identity.io/system: "true"
name: azure-wi-webhook-mutating-webhook-configuration
webhooks:
- admissionReviewVersions:
- v1
- v1beta1
clientConfig:
service:
name: azure-wi-webhook-webhook-service
namespace: azure-workload-identity-system
path: /mutate-v1-pod
failurePolicy: Fail
matchPolicy: Equivalent
name: mutation.azure-workload-identity.io
objectSelector:
matchLabels:
azure.workload.identity/use: "true"
reinvocationPolicy: IfNeeded
rules:
- apiGroups:
- ""
apiVersions:
- v1
operations:
- CREATE
resources:
- pods
sideEffects: None