-
Notifications
You must be signed in to change notification settings - Fork 5.9k
/
Copy pathgenerated.proto
2634 lines (1899 loc) · 96.8 KB
/
generated.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
syntax = "proto2";
package github.com.argoproj.argo_cd.v3.pkg.apis.application.v1alpha1;
import "k8s.io/api/core/v1/generated.proto";
import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.proto";
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
// Package-wide variables from generator "generated".
option go_package = "github.com/argoproj/argo-cd/v3/pkg/apis/application/v1alpha1";
// AWSAuthConfig is an AWS IAM authentication configuration
message AWSAuthConfig {
// ClusterName contains AWS cluster name
optional string clusterName = 1;
// RoleARN contains optional role ARN. If set then AWS IAM Authenticator assume a role to perform cluster operations instead of the default AWS credential provider chain.
optional string roleARN = 2;
// Profile contains optional role ARN. If set then AWS IAM Authenticator uses the profile to perform cluster operations instead of the default AWS credential provider chain.
optional string profile = 3;
}
// AppProject provides a logical grouping of applications, providing controls for:
// * where the apps may deploy to (cluster whitelist)
// * what may be deployed (repository whitelist, resource whitelist/blacklist)
// * who can access these applications (roles, OIDC group claims bindings)
// * and what they can do (RBAC policies)
// * automation access to these roles (JWT tokens)
// +genclient
// +genclient:noStatus
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:resource:path=appprojects,shortName=appproj;appprojs
message AppProject {
optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
optional AppProjectSpec spec = 2;
optional AppProjectStatus status = 3;
}
// AppProjectList is list of AppProject resources
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
message AppProjectList {
optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
repeated AppProject items = 2;
}
// AppProjectSpec is the specification of an AppProject
message AppProjectSpec {
// SourceRepos contains list of repository URLs which can be used for deployment
repeated string sourceRepos = 1;
// Destinations contains list of destinations available for deployment
repeated ApplicationDestination destinations = 2;
// Description contains optional project description
optional string description = 3;
// Roles are user defined RBAC roles associated with this project
repeated ProjectRole roles = 4;
// ClusterResourceWhitelist contains list of whitelisted cluster level resources
repeated .k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind clusterResourceWhitelist = 5;
// NamespaceResourceBlacklist contains list of blacklisted namespace level resources
repeated .k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind namespaceResourceBlacklist = 6;
// OrphanedResources specifies if controller should monitor orphaned resources of apps in this project
optional OrphanedResourcesMonitorSettings orphanedResources = 7;
// SyncWindows controls when syncs can be run for apps in this project
repeated SyncWindow syncWindows = 8;
// NamespaceResourceWhitelist contains list of whitelisted namespace level resources
repeated .k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind namespaceResourceWhitelist = 9;
// SignatureKeys contains a list of PGP key IDs that commits in Git must be signed with in order to be allowed for sync
repeated SignatureKey signatureKeys = 10;
// ClusterResourceBlacklist contains list of blacklisted cluster level resources
repeated .k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind clusterResourceBlacklist = 11;
// SourceNamespaces defines the namespaces application resources are allowed to be created in
repeated string sourceNamespaces = 12;
// PermitOnlyProjectScopedClusters determines whether destinations can only reference clusters which are project-scoped
optional bool permitOnlyProjectScopedClusters = 13;
// DestinationServiceAccounts holds information about the service accounts to be impersonated for the application sync operation for each destination.
repeated ApplicationDestinationServiceAccount destinationServiceAccounts = 14;
}
// AppProjectStatus contains status information for AppProject CRs
message AppProjectStatus {
// JWTTokensByRole contains a list of JWT tokens issued for a given role
map<string, JWTTokens> jwtTokensByRole = 1;
}
// Application is a definition of Application resource.
// +genclient
// +genclient:noStatus
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:resource:path=applications,shortName=app;apps
// +kubebuilder:printcolumn:name="Sync Status",type=string,JSONPath=`.status.sync.status`
// +kubebuilder:printcolumn:name="Health Status",type=string,JSONPath=`.status.health.status`
// +kubebuilder:printcolumn:name="Revision",type=string,JSONPath=`.status.sync.revision`,priority=10
// +kubebuilder:printcolumn:name="Project",type=string,JSONPath=`.spec.project`,priority=10
message Application {
optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
optional ApplicationSpec spec = 2;
optional ApplicationStatus status = 3;
optional Operation operation = 4;
}
// ApplicationCondition contains details about an application condition, which is usually an error or warning
message ApplicationCondition {
// Type is an application condition type
optional string type = 1;
// Message contains human-readable message indicating details about condition
optional string message = 2;
// LastTransitionTime is the time the condition was last observed
optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
}
// ApplicationDestination holds information about the application's destination
message ApplicationDestination {
// Server specifies the URL of the target cluster's Kubernetes control plane API. This must be set if Name is not set.
optional string server = 1;
// Namespace specifies the target namespace for the application's resources.
// The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace
optional string namespace = 2;
// Name is an alternate way of specifying the target cluster by its symbolic name. This must be set if Server is not set.
optional string name = 3;
}
// ApplicationDestinationServiceAccount holds information about the service account to be impersonated for the application sync operation.
message ApplicationDestinationServiceAccount {
// Server specifies the URL of the target cluster's Kubernetes control plane API.
optional string server = 1;
// Namespace specifies the target namespace for the application's resources.
optional string namespace = 2;
// DefaultServiceAccount to be used for impersonation during the sync operation
optional string defaultServiceAccount = 3;
}
// ApplicationList is list of Application resources
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
message ApplicationList {
optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
repeated Application items = 2;
}
message ApplicationMatchExpression {
optional string key = 1;
optional string operator = 2;
repeated string values = 3;
}
message ApplicationPreservedFields {
repeated string annotations = 1;
repeated string labels = 2;
}
// ApplicationSet is a set of Application resources
// +genclient
// +genclient:noStatus
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:resource:path=applicationsets,shortName=appset;appsets
// +kubebuilder:subresource:status
message ApplicationSet {
optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
optional ApplicationSetSpec spec = 2;
optional ApplicationSetStatus status = 3;
}
// ApplicationSetApplicationStatus contains details about each Application managed by the ApplicationSet
message ApplicationSetApplicationStatus {
// Application contains the name of the Application resource
optional string application = 1;
// LastTransitionTime is the time the status was last updated
optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 2;
// Message contains human-readable message indicating details about the status
optional string message = 3;
// Status contains the AppSet's perceived status of the managed Application resource: (Waiting, Pending, Progressing, Healthy)
optional string status = 4;
// Step tracks which step this Application should be updated in
optional string step = 5;
// TargetRevision tracks the desired revisions the Application should be synced to.
repeated string targetrevisions = 6;
}
// ApplicationSetCondition contains details about an applicationset condition, which is usually an error or warning
message ApplicationSetCondition {
// Type is an applicationset condition type
optional string type = 1;
// Message contains human-readable message indicating details about condition
optional string message = 2;
// LastTransitionTime is the time the condition was last observed
optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
// True/False/Unknown
optional string status = 4;
// Single word camelcase representing the reason for the status eg ErrorOccurred
optional string reason = 5;
}
// ApplicationSetGenerator represents a generator at the top level of an ApplicationSet.
message ApplicationSetGenerator {
optional ListGenerator list = 1;
optional ClusterGenerator clusters = 2;
optional GitGenerator git = 3;
optional SCMProviderGenerator scmProvider = 4;
optional DuckTypeGenerator clusterDecisionResource = 5;
optional PullRequestGenerator pullRequest = 6;
optional MatrixGenerator matrix = 7;
optional MergeGenerator merge = 8;
// Selector allows to post-filter all generator.
optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 9;
optional PluginGenerator plugin = 10;
}
// ApplicationSetList contains a list of ApplicationSet
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:object:root=true
message ApplicationSetList {
optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
repeated ApplicationSet items = 2;
}
// ApplicationSetNestedGenerator represents a generator nested within a combination-type generator (MatrixGenerator or
// MergeGenerator).
message ApplicationSetNestedGenerator {
optional ListGenerator list = 1;
optional ClusterGenerator clusters = 2;
optional GitGenerator git = 3;
optional SCMProviderGenerator scmProvider = 4;
optional DuckTypeGenerator clusterDecisionResource = 5;
optional PullRequestGenerator pullRequest = 6;
// Matrix should have the form of NestedMatrixGenerator
optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSON matrix = 7;
// Merge should have the form of NestedMergeGenerator
optional .k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1.JSON merge = 8;
// Selector allows to post-filter all generator.
optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 9;
optional PluginGenerator plugin = 10;
}
// ApplicationSetResourceIgnoreDifferences configures how the ApplicationSet controller will ignore differences in live
// applications when applying changes from generated applications.
message ApplicationSetResourceIgnoreDifferences {
// Name is the name of the application to ignore differences for. If not specified, the rule applies to all applications.
optional string name = 1;
// JSONPointers is a list of JSON pointers to fields to ignore differences for.
repeated string jsonPointers = 2;
// JQPathExpressions is a list of JQ path expressions to fields to ignore differences for.
repeated string jqPathExpressions = 3;
}
message ApplicationSetRolloutStep {
repeated ApplicationMatchExpression matchExpressions = 1;
optional .k8s.io.apimachinery.pkg.util.intstr.IntOrString maxUpdate = 2;
}
message ApplicationSetRolloutStrategy {
repeated ApplicationSetRolloutStep steps = 1;
}
// ApplicationSetSpec represents a class of application set state.
message ApplicationSetSpec {
optional bool goTemplate = 1;
repeated ApplicationSetGenerator generators = 2;
optional ApplicationSetTemplate template = 3;
optional ApplicationSetSyncPolicy syncPolicy = 4;
optional ApplicationSetStrategy strategy = 5;
optional ApplicationPreservedFields preservedFields = 6;
repeated string goTemplateOptions = 7;
// ApplyNestedSelectors enables selectors defined within the generators of two level-nested matrix or merge generators
// Deprecated: This field is ignored, and the behavior is always enabled. The field will be removed in a future
// version of the ApplicationSet CRD.
optional bool applyNestedSelectors = 8;
repeated ApplicationSetResourceIgnoreDifferences ignoreApplicationDifferences = 9;
optional string templatePatch = 10;
}
// ApplicationSetStatus defines the observed state of ApplicationSet
message ApplicationSetStatus {
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
// Important: Run "make" to regenerate code after modifying this file
repeated ApplicationSetCondition conditions = 1;
repeated ApplicationSetApplicationStatus applicationStatus = 2;
// Resources is a list of Applications resources managed by this application set.
repeated ResourceStatus resources = 3;
}
// ApplicationSetStrategy configures how generated Applications are updated in sequence.
message ApplicationSetStrategy {
optional string type = 1;
optional ApplicationSetRolloutStrategy rollingSync = 2;
}
// ApplicationSetSyncPolicy configures how generated Applications will relate to their
// ApplicationSet.
message ApplicationSetSyncPolicy {
// PreserveResourcesOnDeletion will preserve resources on deletion. If PreserveResourcesOnDeletion is set to true, these Applications will not be deleted.
optional bool preserveResourcesOnDeletion = 1;
// ApplicationsSync represents the policy applied on the generated applications. Possible values are create-only, create-update, create-delete, sync
// +kubebuilder:validation:Optional
// +kubebuilder:validation:Enum=create-only;create-update;create-delete;sync
optional string applicationsSync = 2;
}
// ApplicationSetTemplate represents argocd ApplicationSpec
message ApplicationSetTemplate {
optional ApplicationSetTemplateMeta metadata = 1;
optional ApplicationSpec spec = 2;
}
// ApplicationSetTemplateMeta represents the Argo CD application fields that may
// be used for Applications generated from the ApplicationSet (based on metav1.ObjectMeta)
message ApplicationSetTemplateMeta {
optional string name = 1;
optional string namespace = 2;
map<string, string> labels = 3;
map<string, string> annotations = 4;
repeated string finalizers = 5;
}
// ApplicationSetTerminalGenerator represents a generator nested within a nested generator (for example, a list within
// a merge within a matrix). A generator at this level may not be a combination-type generator (MatrixGenerator or
// MergeGenerator). ApplicationSet enforces this nesting depth limit because CRDs do not support recursive types.
// https://github.com/kubernetes-sigs/controller-tools/issues/477
message ApplicationSetTerminalGenerator {
optional ListGenerator list = 1;
optional ClusterGenerator clusters = 2;
optional GitGenerator git = 3;
optional SCMProviderGenerator scmProvider = 4;
optional DuckTypeGenerator clusterDecisionResource = 5;
optional PullRequestGenerator pullRequest = 6;
optional PluginGenerator plugin = 7;
// Selector allows to post-filter all generator.
optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 8;
}
// ApplicationSetTree holds nodes which belongs to the application
// Used to build a tree of an ApplicationSet and its children
message ApplicationSetTree {
// Nodes contains list of nodes which are directly managed by the applicationset
repeated ResourceNode nodes = 1;
}
// ApplicationSource contains all required information about the source of an application
message ApplicationSource {
// RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
optional string repoURL = 1;
// Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
optional string path = 2;
// TargetRevision defines the revision of the source to sync the application to.
// In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.
// In case of Helm, this is a semver tag for the Chart's version.
optional string targetRevision = 4;
// Helm holds helm specific options
optional ApplicationSourceHelm helm = 7;
// Kustomize holds kustomize specific options
optional ApplicationSourceKustomize kustomize = 8;
// Directory holds path/directory specific options
optional ApplicationSourceDirectory directory = 10;
// Plugin holds config management plugin specific options
optional ApplicationSourcePlugin plugin = 11;
// Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
optional string chart = 12;
// Ref is reference to another source within sources field. This field will not be used if used with a `source` tag.
optional string ref = 13;
// Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
optional string name = 14;
}
// ApplicationSourceDirectory holds options for applications of type plain YAML or Jsonnet
message ApplicationSourceDirectory {
// Recurse specifies whether to scan a directory recursively for manifests
optional bool recurse = 1;
// Jsonnet holds options specific to Jsonnet
optional ApplicationSourceJsonnet jsonnet = 2;
// Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
optional string exclude = 3;
// Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
optional string include = 4;
}
// ApplicationSourceHelm holds helm specific options
message ApplicationSourceHelm {
// ValuesFiles is a list of Helm value files to use when generating a template
repeated string valueFiles = 1;
// Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
repeated HelmParameter parameters = 2;
// ReleaseName is the Helm release name to use. If omitted it will use the application name
optional string releaseName = 3;
// Values specifies Helm values to be passed to helm template, typically defined as a block. ValuesObject takes precedence over Values, so use one or the other.
// +patchStrategy=replace
optional string values = 4;
// FileParameters are file parameters to the helm template
repeated HelmFileParameter fileParameters = 5;
// Version is the Helm version to use for templating ("3")
optional string version = 6;
// PassCredentials pass credentials to all domains (Helm's --pass-credentials)
optional bool passCredentials = 7;
// IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values
optional bool ignoreMissingValueFiles = 8;
// SkipCrds skips custom resource definition installation step (Helm's --skip-crds)
optional bool skipCrds = 9;
// ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values.
// +kubebuilder:pruning:PreserveUnknownFields
optional .k8s.io.apimachinery.pkg.runtime.RawExtension valuesObject = 10;
// Namespace is an optional namespace to template with. If left empty, defaults to the app's destination namespace.
optional string namespace = 11;
// KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
// uses the Kubernetes version of the target cluster.
optional string kubeVersion = 12;
// APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
// Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
repeated string apiVersions = 13;
// SkipTests skips test manifest installation step (Helm's --skip-tests).
optional bool skipTests = 14;
// SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation)
optional bool skipSchemaValidation = 15;
}
// ApplicationSourceJsonnet holds options specific to applications of type Jsonnet
message ApplicationSourceJsonnet {
// ExtVars is a list of Jsonnet External Variables
repeated JsonnetVar extVars = 1;
// TLAS is a list of Jsonnet Top-level Arguments
repeated JsonnetVar tlas = 2;
// Additional library search dirs
repeated string libs = 3;
}
// ApplicationSourceKustomize holds options specific to an Application source specific to Kustomize
message ApplicationSourceKustomize {
// NamePrefix is a prefix appended to resources for Kustomize apps
optional string namePrefix = 1;
// NameSuffix is a suffix appended to resources for Kustomize apps
optional string nameSuffix = 2;
// Images is a list of Kustomize image override specifications
repeated string images = 3;
// CommonLabels is a list of additional labels to add to rendered manifests
map<string, string> commonLabels = 4;
// Version controls which version of Kustomize to use for rendering manifests
optional string version = 5;
// CommonAnnotations is a list of additional annotations to add to rendered manifests
map<string, string> commonAnnotations = 6;
// ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps
optional bool forceCommonLabels = 7;
// ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps
optional bool forceCommonAnnotations = 8;
// Namespace sets the namespace that Kustomize adds to all resources
optional string namespace = 9;
// CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values
optional bool commonAnnotationsEnvsubst = 10;
// Replicas is a list of Kustomize Replicas override specifications
repeated KustomizeReplica replicas = 11;
// Patches is a list of Kustomize patches
repeated KustomizePatch patches = 12;
// Components specifies a list of kustomize components to add to the kustomization before building
repeated string components = 13;
// IgnoreMissingComponents prevents kustomize from failing when components do not exist locally by not appending them to kustomization file
optional bool ignoreMissingComponents = 17;
// LabelWithoutSelector specifies whether to apply common labels to resource selectors or not
optional bool labelWithoutSelector = 14;
// KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
// uses the Kubernetes version of the target cluster.
optional string kubeVersion = 15;
// APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
// Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
repeated string apiVersions = 16;
// LabelIncludeTemplates specifies whether to apply common labels to resource templates or not
optional bool labelIncludeTemplates = 18;
}
// ApplicationSourcePlugin holds options specific to config management plugins
message ApplicationSourcePlugin {
optional string name = 1;
repeated EnvEntry env = 2;
repeated ApplicationSourcePluginParameter parameters = 3;
}
message ApplicationSourcePluginParameter {
// Name is the name identifying a parameter.
optional string name = 1;
// String_ is the value of a string type parameter.
optional string string = 5;
// Map is the value of a map type parameter.
optional OptionalMap map = 3;
// Array is the value of an array type parameter.
optional OptionalArray array = 4;
}
// ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision.
message ApplicationSpec {
// Source is a reference to the location of the application's manifests or chart
optional ApplicationSource source = 1;
// Destination is a reference to the target Kubernetes server and namespace
optional ApplicationDestination destination = 2;
// Project is a reference to the project this application belongs to.
// The empty string means that application belongs to the 'default' project.
optional string project = 3;
// SyncPolicy controls when and how a sync will be performed
optional SyncPolicy syncPolicy = 4;
// IgnoreDifferences is a list of resources and their fields which should be ignored during comparison
repeated ResourceIgnoreDifferences ignoreDifferences = 5;
// Info contains a list of information (URLs, email addresses, and plain text) that relates to the application
repeated Info info = 6;
// RevisionHistoryLimit limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions.
// This should only be changed in exceptional circumstances.
// Setting to zero will store no history. This will reduce storage used.
// Increasing will increase the space used to store the history, so we do not recommend increasing it.
// Default is 10.
optional int64 revisionHistoryLimit = 7;
// Sources is a reference to the location of the application's manifests or chart
repeated ApplicationSource sources = 8;
// SourceHydrator provides a way to push hydrated manifests back to git before syncing them to the cluster.
optional SourceHydrator sourceHydrator = 9;
}
// ApplicationStatus contains status information for the application
message ApplicationStatus {
// Resources is a list of Kubernetes resources managed by this application
repeated ResourceStatus resources = 1;
// Sync contains information about the application's current sync status
optional SyncStatus sync = 2;
// Health contains information about the application's current health status
optional HealthStatus health = 3;
// History contains information about the application's sync history
repeated RevisionHistory history = 4;
// Conditions is a list of currently observed application conditions
repeated ApplicationCondition conditions = 5;
// ReconciledAt indicates when the application state was reconciled using the latest git version
optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time reconciledAt = 6;
// OperationState contains information about any ongoing operations, such as a sync
optional OperationState operationState = 7;
// ObservedAt indicates when the application state was updated without querying latest git state
// Deprecated: controller no longer updates ObservedAt field
optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time observedAt = 8;
// SourceType specifies the type of this application
optional string sourceType = 9;
// Summary contains a list of URLs and container images used by this application
optional ApplicationSummary summary = 10;
// ResourceHealthSource indicates where the resource health status is stored: inline if not set or appTree
optional string resourceHealthSource = 11;
// SourceTypes specifies the type of the sources included in the application
repeated string sourceTypes = 12;
// ControllerNamespace indicates the namespace in which the application controller is located
optional string controllerNamespace = 13;
// SourceHydrator stores information about the current state of source hydration
optional SourceHydratorStatus sourceHydrator = 14;
// OperationState contains information about the last non dryrun completed operation
optional OperationState lastCompletedNonDryRunOperation = 15;
}
// ApplicationSummary contains information about URLs and container images used by an application
message ApplicationSummary {
// ExternalURLs holds all external URLs of application child resources.
repeated string externalURLs = 1;
// Images holds all images of application child resources.
repeated string images = 2;
}
// ApplicationTree represents the hierarchical structure of resources associated with an Argo CD application.
message ApplicationTree {
// Nodes contains a list of resources that are either directly managed by the application
// or are children of directly managed resources.
repeated ResourceNode nodes = 1;
// OrphanedNodes contains resources that exist in the same namespace as the application
// but are not managed by it. This list is populated only if orphaned resource tracking
// is enabled in the application's project settings.
repeated ResourceNode orphanedNodes = 2;
// Hosts provides a list of Kubernetes nodes that are running pods related to the application.
repeated HostInfo hosts = 3;
// ShardsCount represents the total number of shards the application tree is split into.
// This is used to distribute resource processing across multiple shards.
optional int64 shardsCount = 4;
}
// ApplicationWatchEvent contains information about application change.
message ApplicationWatchEvent {
optional string type = 1;
// Application is:
// * If Type is Added or Modified: the new state of the object.
// * If Type is Deleted: the state of the object immediately before deletion.
// * If Type is Error: *api.Status is recommended; other types may make sense
// depending on context.
optional Application application = 2;
}
// Backoff is the backoff strategy to use on subsequent retries for failing syncs
message Backoff {
// Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h")
optional string duration = 1;
// Factor is a factor to multiply the base duration after each failed retry
optional int64 factor = 2;
// MaxDuration is the maximum amount of time allowed for the backoff strategy
optional string maxDuration = 3;
}
// BasicAuthBitbucketServer defines the username/(password or personal access token) for Basic auth.
message BasicAuthBitbucketServer {
// Username for Basic auth
optional string username = 1;
// Password (or personal access token) reference.
optional SecretRef passwordRef = 2;
}
// BearerTokenBitbucket defines the Bearer token for BitBucket AppToken auth.
message BearerTokenBitbucket {
// Password (or personal access token) reference.
optional SecretRef tokenRef = 1;
}
// BearerTokenBitbucketCloud defines the Bearer token for BitBucket AppToken auth.
message BearerTokenBitbucketCloud {
// Password (or personal access token) reference.
optional SecretRef tokenRef = 1;
}
// ChartDetails contains helm chart metadata for a specific version
message ChartDetails {
optional string description = 1;
// The URL of this projects home page, e.g. "http://example.com"
optional string home = 2;
// List of maintainer details, name and email, e.g. ["John Doe <[email protected]>"]
repeated string maintainers = 3;
}
// Cluster is the definition of a cluster resource
message Cluster {
// Server is the API server URL of the Kubernetes cluster
optional string server = 1;
// Name of the cluster. If omitted, will use the server address
optional string name = 2;
// Config holds cluster information for connecting to a cluster
optional ClusterConfig config = 3;
// Deprecated: use Info.ConnectionState field instead.
// ConnectionState contains information about cluster connection state
optional ConnectionState connectionState = 4;
// Deprecated: use Info.ServerVersion field instead.
// The server version
optional string serverVersion = 5;
// Holds list of namespaces which are accessible in that cluster. Cluster level resources will be ignored if namespace list is not empty.
repeated string namespaces = 6;
// RefreshRequestedAt holds time when cluster cache refresh has been requested
optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time refreshRequestedAt = 7;
// Info holds information about cluster cache and state
optional ClusterInfo info = 8;
// Shard contains optional shard number. Calculated on the fly by the application controller if not specified.
optional int64 shard = 9;
// Indicates if cluster level resources should be managed. This setting is used only if cluster is connected in a namespaced mode.
optional bool clusterResources = 10;
// Reference between project and cluster that allow you automatically to be added as item inside Destinations project entity
optional string project = 11;
// Labels for cluster secret metadata
map<string, string> labels = 12;
// Annotations for cluster secret metadata
map<string, string> annotations = 13;
}
// ClusterCacheInfo contains information about the cluster cache
message ClusterCacheInfo {
// ResourcesCount holds number of observed Kubernetes resources
optional int64 resourcesCount = 1;
// APIsCount holds number of observed Kubernetes API count
optional int64 apisCount = 2;
// LastCacheSyncTime holds time of most recent cache synchronization
optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastCacheSyncTime = 3;
}
// ClusterConfig is the configuration attributes. This structure is subset of the go-client
// rest.Config with annotations added for marshalling.
message ClusterConfig {
// Server requires Basic authentication
optional string username = 1;
optional string password = 2;
// Server requires Bearer authentication. This client will not attempt to use
// refresh tokens for an OAuth2 flow.
// TODO: demonstrate an OAuth2 compatible client.
optional string bearerToken = 3;
// TLSClientConfig contains settings to enable transport layer security
optional TLSClientConfig tlsClientConfig = 4;
// AWSAuthConfig contains IAM authentication configuration
optional AWSAuthConfig awsAuthConfig = 5;
// ExecProviderConfig contains configuration for an exec provider
optional ExecProviderConfig execProviderConfig = 6;
// DisableCompression bypasses automatic GZip compression requests to the server.
optional bool disableCompression = 7;
// ProxyURL is the URL to the proxy to be used for all requests send to the server
optional string proxyUrl = 8;
}
// ClusterGenerator defines a generator to match against clusters registered with ArgoCD.
message ClusterGenerator {
// Selector defines a label selector to match against all clusters registered with ArgoCD.
// Clusters today are stored as Kubernetes Secrets, thus the Secret labels will be used
// for matching the selector.
optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 1;
optional ApplicationSetTemplate template = 2;
// Values contains key/value pairs which are passed directly as parameters to the template
map<string, string> values = 3;
// returns the clusters a single 'clusters' value in the template
optional bool flatList = 4;
}
// ClusterInfo contains information about the cluster
message ClusterInfo {
// ConnectionState contains information about the connection to the cluster
optional ConnectionState connectionState = 1;
// ServerVersion contains information about the Kubernetes version of the cluster
optional string serverVersion = 2;
// CacheInfo contains information about the cluster cache
optional ClusterCacheInfo cacheInfo = 3;
// ApplicationsCount is the number of applications managed by Argo CD on the cluster
optional int64 applicationsCount = 4;
// APIVersions contains list of API versions supported by the cluster
repeated string apiVersions = 5;
}
// ClusterList is a collection of Clusters.
message ClusterList {
optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
repeated Cluster items = 2;
}
// Command holds binary path and arguments list
message Command {
repeated string command = 1;
repeated string args = 2;
}
// ComparedTo contains application source and target which was used for resources comparison
message ComparedTo {
// Source is a reference to the application's source used for comparison
optional ApplicationSource source = 1;
// Destination is a reference to the application's destination used for comparison
optional ApplicationDestination destination = 2;
// Sources is a reference to the application's multiple sources used for comparison
repeated ApplicationSource sources = 3;
// IgnoreDifferences is a reference to the application's ignored differences used for comparison
repeated ResourceIgnoreDifferences ignoreDifferences = 4;
}
// ComponentParameter contains information about component parameter value
message ComponentParameter {
optional string component = 1;
optional string name = 2;
optional string value = 3;
}
// ConfigManagementPlugin contains config management plugin configuration
message ConfigManagementPlugin {
optional string name = 1;
optional Command init = 2;
optional Command generate = 3;
optional bool lockRepo = 4;
}
// Utility struct for a reference to a configmap key.
message ConfigMapKeyRef {
optional string configMapName = 1;
optional string key = 2;
}
// ConnectionState contains information about remote resource connection state, currently used for clusters and repositories
message ConnectionState {
// Status contains the current status indicator for the connection
optional string status = 1;
// Message contains human readable information about the connection status
optional string message = 2;
// ModifiedAt contains the timestamp when this connection status has been determined
optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time attemptedAt = 3;
}
// DrySource specifies a location for dry "don't repeat yourself" manifest source information.
message DrySource {
// RepoURL is the URL to the git repository that contains the application manifests
optional string repoURL = 1;
// TargetRevision defines the revision of the source to hydrate
optional string targetRevision = 2;
// Path is a directory path within the Git repository where the manifests are located
optional string path = 3;
}
// DuckType defines a generator to match against clusters registered with ArgoCD.
message DuckTypeGenerator {
// ConfigMapRef is a ConfigMap with the duck type definitions needed to retrieve the data
// this includes apiVersion(group/version), kind, matchKey and validation settings
// Name is the resource name of the kind, group and version, defined in the ConfigMapRef
// RequeueAfterSeconds is how long before the duckType will be rechecked for a change
optional string configMapRef = 1;
optional string name = 2;