DirectorySecurity AdvisoriesPricing
Sign in
Directory
azure-service-operator logoHELM

azure-service-operator

Helm chart
Last changed
Request a free trial

Contact our team to test out this Helm chart and related images for free. Please also indicate any other images you would like to evaluate.

Overview
Chart tags
Default values
Chart metadata
Images

Tag:
Compare:

1
# Create secret or use an existing secret
2
createAzureOperatorSecret: true
3
# azureTenantID is the Entra tenant that the subscription is in
4
azureTenantID: ""
5
# azureAdditionalTenants is the list of (comma-separated) additional tenants the operator can authenticate with.
6
# This is required when performing cross-tenant authentication. See
7
# https://learn.microsoft.com/entra/external-id/cross-tenant-access-overview for more details.
8
azureAdditionalTenants: ""
9
# azureSubscriptionID is the Azure Subscription the operator will act against.
10
azureSubscriptionID: ""
11
# azureClientID is the client ID of the Azure Service Principal or Managed Identity to use to authenticate with Azure.
12
azureClientID: ""
13
# azureClientSecret is the client secret of the Azure Service Principal used to authenticate with Azure.
14
# This is required when using Service Principal authentication.
15
azureClientSecret: ""
16
# A PEM or PKCS12 certificate string including the private key for Azure Credential Authentication. If certificate is password protected, use 'azureClientCertificatePassword' for password.
17
azureClientCertificate: ""
18
# Password used to protect the client certificate (optional).
19
azureClientCertificatePassword: ""
20
# [Deprecated] Managed Identity (aad-pod-identity) Authentication
21
# azureManagedIdentityResourceId is the resource ID (/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{managedIdentityName})
22
# of the Azure Managed Identity used to authenticate with Azure if using aad-pod-identity authorization.
23
aadPodIdentity:
24
enable: false
25
azureManagedIdentityResourceId: ""
26
# azureSyncPeriod is the frequency at which resources are re-reconciled with Azure
27
# when there have been no triggering changes in the Kubernetes resources. This sync
28
# exists to detect and correct changes that happened in Azure that Kubernetes is not
29
# aware about. BE VERY CAREFUL setting this value low - even a modest number of resources
30
# can cause subscription level throttling if they are re-synced frequently.
31
# Durations are specified as "1h", "15m", or "60s". Specify the special value "never" to prevent
32
# syncing. See https://pkg.go.dev/time#ParseDuration for more details.
33
azureSyncPeriod: ""
34
# useWorkloadIdentityAuth can be set to use workload identity authentication
35
# See https://azure.github.io/azure-workload-identity/docs/introduction.html for more details about Azure Workload Identity.
36
# See https://azure.github.io/azure-service-operator/guide/authentication/ for details on setting up Workload Identity with ASO
37
useWorkloadIdentityAuth: false
38
# workloadIdentityAuthMode controls how namespace and per-resource Workload Identity credentials obtain assertions.
39
# Allowed values are "relaxed" and "strict". If not specified, the default is "relaxed".
40
# relaxed: ASO uses a single Federated Identity Credential (FIC) for all authentication to Azure, via the ASO controller service account. This is simple to set up but is less secure. See
41
# https://github.com/Azure/azure-service-operator/issues/4810 for more details about why this is less secure.
42
# strict: ASO uses separate Federated Identity Credentials (FICs) via separate service accounts for each authentication to Azure. This is more secure but requires more setup.
43
# The secret may select the ServiceAccount with `AZURE_WORKLOAD_IDENTITY_SERVICE_ACCOUNT`; when omitted, ASO uses `aso-workload`.
44
workloadIdentityAuthMode: relaxed
45
# azureUserAgentSuffix is appended to the default User-Agent for Azure HTTP clients.
46
azureUserAgentSuffix: ""
47
# azureAuthorityHost is the URL of the AAD authority. If not specified, the default
48
# is the AAD URL for the public cloud: https://login.microsoftonline.com/. See
49
# https://docs.microsoft.com/azure/active-directory/develop/authentication-national-cloud
50
azureAuthorityHost: ""
51
# azureResourceManagerEndpoint is the Azure Resource Manager endpoint.
52
# If not specified, the default is the Public cloud resource manager endpoint.
53
# See https://docs.microsoft.com/cli/azure/manage-clouds-azure-cli#list-available-clouds for details
54
# about how to find available resource manager endpoints for your cloud. Note that the resource manager
55
# endpoint is referred to as "resourceManager" in the Azure CLI.
56
azureResourceManagerEndpoint: ""
57
# azureResourceManagerAudience is the Azure Resource Manager AAD audience.
58
# If not specified, the default is the Public cloud resource manager audience https://management.core.windows.net/.
59
# See https://docs.microsoft.com/cli/azure/manage-clouds-azure-cli#list-available-clouds for details
60
# about how to find available resource manager audiences for your cloud. Note that the resource manager
61
# audience is referred to as "activeDirectoryResourceId" in the Azure CLI.
62
azureResourceManagerAudience: ""
63
# allowMultiEnvManagement determines whether per-namespace and per-resource credentials can specify
64
# their own Azure cloud environment settings (AZURE_RESOURCE_MANAGER_ENDPOINT, AZURE_RESOURCE_MANAGER_AUDIENCE,
65
# and AZURE_AUTHORITY_HOST). When enabled, credentials must specify ALL three of these settings or NONE of them.
66
# When disabled, any attempt to specify these settings in a credential will cause reconciliation to fail.
67
# This defaults to false for security reasons.
68
allowMultiEnvManagement: false
69
# azureTargetNamespaces lists the namespaces the operator will watch
70
# for Azure resources (if the mode includes running watchers). If
71
# it's empty the operator will watch all namespaces.
72
azureTargetNamespaces: []
73
# azureOperatorMode determines whether the operator should run
74
# watchers, webhooks or both.
75
azureOperatorMode: ""
76
# tlsMinVersion is the minimum TLS version used by the webhook and secure metrics servers.
77
# Supported values are VersionTLS12 and VersionTLS13. If not specified, the controller default of VersionTLS13
78
# is used.
79
tlsMinVersion: ""
80
webhook:
81
# webhook.port determines the port the webhook endpoint binds to.
82
port: 9443
83
# webhook.certDir determines which dir to mount webhook certs.
84
certDir: "/tmp/k8s-webhook-server/serving-certs"
85
# image defines the container image the ASO pod should run
86
# Note: This should use the latest released tag number explicitly. If
87
# it's ':latest' and someone deploys the chart after a new version has
88
# been released but before the the chart is updated, they could get
89
# errors, eg. due to types in the operator binary that have no
90
# corresponding CRD yaml in the cart (and so no CRD in the k8s
91
# repository).
92
image:
93
tag: 2.22.0-r0
94
repository: cgr.dev/chainguard-private/azure-service-operator-fips
95
pullSecrets: []
96
digest: sha256:0f2d6a4559fff621d86fad12b8920b2956c781165bff9eb8fe643ae6d1cd2514
97
# 'metrics' define settings for the metrics from controller.
98
# 'address' field defines the metrics binding address on which metrics
99
metrics:
100
enable: true
101
# secure controls whether metrics should be served via 'http' or 'https'.
102
# Flagging secure as 'true' would use https
103
# Refer to https://azure.github.io/azure-service-operator/guide/metrics/ for more information
104
secure: true
105
# profiling exposes below endpoints.
106
# /debug/pprof/
107
# /debug/pprof/cmdline
108
# /debug/pprof/profile
109
# /debug/pprof/symbol
110
# /debug/pprof/trace
111
#
112
# pprof endpoints are sensitive and can only be enabled when serving metrics securely
113
profiling: false
114
address: 0.0.0.0:{{ .Values.metrics.port }}
115
port: 8443
116
# installCRDs configures if the operator attempts to install and manage the CRDs associated with ASO.
117
# If the operator does not install and manage the CRDs on its own, you must manually install the appropriate
118
# CRDs for version of the ASO operator you're running. Manually installing a subset of the CRDs is supported;
119
# the operator will only reconcile that subset if those are the only CRDs it finds when the pod starts.
120
installCRDs: true
121
# crdPattern is a semicolon delimited string or a list of strings containing the CRD patterns for the operator to install.
122
# Setting this has no effect if installCRDs is false.
123
# This defines what new CRDs will be installed by ASO. Will always upgrade any existing CRDs even if no
124
# crdPattern is defined. Leaving this field unspecified for a fresh install of ASO will result in the operator pod
125
# exiting with an error saying no CRDs are configured. Leaving this field unspecified during an upgrade of ASO preserves
126
# the existing set of CRDs already in the cluster. The existing CRDs will be upgraded to the latest version but no
127
# new CRDs will be installed.
128
# Values can be globs utilizing * or ?. The pattern is compared against the "{group}/{kind}" string of each CRD.
129
# Patterns are case-insensitive.
130
# Example: "resources.azure.com/*" would match the "resources.azure.com/ResourceGroup" resource.
131
# Example: "compute.azure.com/*" would match all compute CRDs
132
# Example: "resources.azure.com/*;compute.azure.com/*" would match all resources.azure.com resources as well as all
133
# compute resources.
134
# We strongly recommend including entire groups such as "dbformysql.azure.com/*". Individual CRDs such as
135
# "dbformysql.azure.com/FlexibleServer" can be listed, but there are often other resources in the group which pair
136
# together to enable other scenarios, such as dbformysql.azure.com/FlexibleServersFirewallRules, and it's generally
137
# easier to just include the whole group.
138
# See https://azure.github.io/azure-service-operator/guide/crd-management for more details.
139
crdPattern: ""
140
# leaderElection configures the timings of the leader election lease. Operators watching a large number of
141
# resources may need larger values than the defaults: the initial informer sync competes with lease renewal,
142
# and a renewal missed during startup restarts the pod, which can leave the operator flapping across replicas.
143
# leaseDuration must be greater than renewDeadline, and renewDeadline greater than retryPeriod.
144
leaderElection:
145
leaseDuration: 15s
146
renewDeadline: 10s
147
retryPeriod: 2s
148
# crdLabels is a comma-delimited (or semicolon-delimited) string, or a list of key=value strings, containing
149
# additional labels to apply to all CRDs managed by ASO.
150
# Setting this has no effect if installCRDs is false.
151
# Existing labels not managed by ASO are preserved when CRDs are upgraded. Note that removing a label from this
152
# list does not remove it from CRDs already in the cluster.
153
# Labels reserved by ASO itself (app.kubernetes.io/name, app.kubernetes.io/version and any label prefixed with
154
# serviceoperator.azure.com/) cannot be set here and will be rejected at startup.
155
# Example: "cluster.x-k8s.io/provider=infrastructure-azure"
156
# Example: "cluster.x-k8s.io/provider=infrastructure-azure,environment=production" would apply both labels.
157
# Example: "cluster.x-k8s.io/provider=infrastructure-azure;environment=production" is equivalent, using the
158
# semicolon delimiter also accepted by crdPattern.
159
# Example as a list:
160
# crdLabels:
161
# - cluster.x-k8s.io/provider=infrastructure-azure
162
# - environment=production
163
crdLabels: ""
164
useJSONLogging: false
165
# deploymentAnnotations contain the deployment annotations for Azure Service Operator
166
deploymentAnnotations: {}
167
# multitenant contains the value to enable multi-tenant mode for ASOv2. If multitenant.enable is true + azureOperatorMode set to "webhooks", chart will
168
# install a cluster and if multitenant.enable is true + azureOperatorMode set to "watchers", chart will install a tenant.
169
# NOTE: 'installCRDs' should be set to false while installing a tenant.
170
multitenant:
171
enable: false
172
# networkPolicies allows you to configure the NetworkPolicies deployed as part of the Chart
173
networkPolicies:
174
enable: true
175
# TCP port to be configured for talking to the Kubernetes API
176
kubernetesApiPort: 6443
177
# Destination CIDR for talking to the Kubernetes API
178
kubernetesApiCIDR: 0.0.0.0/0
179
# Destination CIDR for talking to MySQL servers
180
mysqlCIDR: 0.0.0.0/0
181
# Destination CIDR for talking to PostgreSQL servers
182
postgresqlCIDR: 0.0.0.0/0
183
# Destination CIDR for talking to Sql servers
184
sqlCIDR: 0.0.0.0/0
185
# Node labels for pod assignment
186
# Ref: https://kubernetes.io/docs/user-guide/node-selection/
187
nodeSelector:
188
kubernetes.io/os: linux
189
# podAnnotations contain the pod annotations for Azure Service Operator
190
podAnnotations: {}
191
# Enable the pod disruption budget
192
# Specifies the minimum number of pods that must be available at any given time during the disruption.
193
# Ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
194
podDisruptionBudget:
195
enabled: true
196
minAvailable: 50%
197
# Policy for evicting unhealthy pods, either IfHealthyBudget or AlwaysAllow
198
# Defaults to IfHealthyBudget if unset
199
unhealthyPodEvictionPolicy: ""
200
# Labels to be added to the pod
201
podLabels: {}
202
# The securityContext of the pod
203
# See https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
204
podSecurityContext: {}
205
# Assign a PriorityClassName to pods if set
206
priorityClassName: ""
207
# Number of pod replicas to create for the deployment
208
replicaCount: 2
209
# Recommended initial values for resources
210
# adjust them as necessary
211
resources:
212
limits:
213
cpu: 500m
214
memory: 512Mi
215
requests:
216
cpu: 200m
217
memory: 256Mi
218
go:
219
memLimit: 400MiB # This should be set to ~80-90% of the hard memory limit set above in resources
220
# probes configures the timings of the operator's liveness, readiness and startup probes.
221
# The startup probe is the one most likely to need adjusting. The operator applies its CRDs and starts a
222
# controller per installed CRD before it serves /healthz, so on a cluster with a large number of CRDs the default
223
# budget of periodSeconds x failureThreshold can expire while it is still working, and the kubelet restarts it
224
# mid-apply. Raise failureThreshold in that case.
225
# The probe paths and ports are not configurable; only the timings are.
226
probes:
227
startup:
228
periodSeconds: 10
229
failureThreshold: 12
230
timeoutSeconds: 1
231
liveness:
232
periodSeconds: 10
233
failureThreshold: 3
234
timeoutSeconds: 1
235
readiness:
236
periodSeconds: 10
237
failureThreshold: 3
238
timeoutSeconds: 1
239
# Number of old history to retain to allow rollback
240
# Default Kubernetes value is set to 10
241
revisionHistoryLimit: 10
242
# Specify security settings for a Container
243
# Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
244
# It is not recommended to reduce the restrictions in this list, but additional restrictions outside the default set
245
# can be applied. If you believe additional securityContext configuration should be specified by default
246
# please raise an issue.
247
securityContext:
248
runAsUser: 65532 # nonroot user from gcr.io/distroless/static:nonroot image
249
runAsGroup: 65532 # nonroot group from gcr.io/distroless/static:nonroot image
250
runAsNonRoot: true
251
allowPrivilegeEscalation: false
252
readOnlyRootFilesystem: true
253
capabilities:
254
drop:
255
- ALL
256
# Tolerations are applied to pods. Tolerations allow the scheduler to schedule pods with matching taints. Tolerations allow scheduling but don't guarantee scheduling
257
# For more information, see https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration.
258
tolerations: []
259
# Affinity and anti-affinity expands the types of constraints you can define.
260
# The affinity feature consists of two types of affinity:
261
# Node affinity functions like the nodeSelector field but is more expressive and allows you to specify soft rules.
262
# Inter-pod affinity/anti-affinity allows you to constrain Pods against labels on other Pods.
263
# For more information, see https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity
264
# For specific affinity best practices on AKS clusters, see https://azure.github.io/azure-service-operator/guide/best-practices/#affinity
265
affinity: {}
266
# MaxConcurrentReconciles is the number of threads/goroutines dedicated to reconciling each resource type.
267
# If not specified, the default is 4.
268
# IMPORTANT: Having MaxConcurrentReconciles set to N does not mean that ASO is limited to N interactions with
269
# Azure at any given time, because the control loop yields to another resource while it is not actively issuing HTTP
270
# calls to Azure. Any single resource only blocks the control-loop for its resource-type for as long as it takes to issue
271
# an HTTP call to Azure, view the result, and make a decision. In most cases the time taken to perform these actions
272
# (and thus how long the loop is blocked and preventing other resources from being acted upon) is a few hundred
273
# milliseconds to at most a second or two. In a typical 60s period, hundreds of resources
274
# for a given resource type can be managed with this set to 1.
275
# MaxConcurrentReconciles applies to every registered resource type being watched/managed by ASO.
276
maxConcurrentReconciles: 4
277
# defaultReconcilePolicy determines the reconcile policy used when a resource does not specify the
278
# serviceoperator.azure.com/reconcile-policy annotation. Valid values are manage, skip, and detach-on-delete.
279
# If not specified, the default is the controller default, which is "manage".
280
defaultReconcilePolicy: ""
281
rateLimit:
282
# mode configures the internal rate-limiting mode.
283
# Valid values are [disabled, bucket]
284
# * disabled: No ASO-controlled rate-limiting occurs. ASO will attempt to communicate with Azure and
285
# kube-apiserver as much as needed based on load. It will back off based on throttling from
286
# either kube-apiserver or Azure, but will not artificially limit its throughput.
287
# * bucket: Uses a token-bucket algorithm to rate-limit reconciliations. Note that this limits how often
288
# the operator performs a reconciliation, but not every reconciliation triggers a call to kube-apiserver
289
# or Azure (though many do). Since this controls reconciles it can be used to coarsely control throughput
290
# and CPU usage of the operator, as well as the number of requests that the operator issues to Azure.
291
# Keep in mind that the Azure throttling limits (defined at
292
# https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/request-limits-and-throttling)
293
# differentiate between request types. Since a given reconcile for a resource may result in polling (a GET) or
294
# modification (a PUT) it's not possible to entirely avoid Azure throttling by tuning these bucket limits.
295
# We don't recommend enabling this mode by default.
296
# If enabling this mode, we strongly recommend doing some experimentation to tune these values to something to
297
# works for your specific need.
298
mode: disabled
299
# The rate (per second) that the bucket is refilled. This value only has an effect if mode is 'bucket'.
300
qps: 5
301
# The size of the bucket. This value only has an effect if mode is 'bucket'.
302
bucketSize: 100
303
serviceAccount:
304
# Specifies whether a ServiceAccount should be created
305
create: true
306
# The name of the ServiceAccount to use.
307
# If not set and create is true, `azureserviceoperator-default` would be used as a name
308
name: ""
309
annotations: {}
310
# List of extra environment variables to inject into the manager container
311
# Example:
312
# extraEnv:
313
# - name: ENV
314
# value: "prod"
315
# - name: SERVICE
316
# value: "azure-service-operator"
317
extraEnv: []
318

The trusted source for open source

Talk to an expert
PrivacyTerms

Product

Chainguard ContainersChainguard LibrariesChainguard VMsChainguard OS PackagesChainguard ActionsChainguard Agent SkillsIntegrationsPricing
© 2026 Chainguard, Inc. All Rights Reserved.
Chainguard® and the Chainguard logo are registered trademarks of Chainguard, Inc. in the United States and/or other countries.
The other respective trademarks mentioned on this page are owned by the respective companies and use of them does not imply any affiliation or endorsement.