github.com/projectcontour/contour@v1.28.2/site/content/docs/v1.15.1/config/api-reference.html (about) 1 <p>Packages:</p> 2 <ul> 3 <li> 4 <a href="#projectcontour.io%2fv1">projectcontour.io/v1</a> 5 </li> 6 <li> 7 <a href="#projectcontour.io%2fv1alpha1">projectcontour.io/v1alpha1</a> 8 </li> 9 </ul> 10 <h2 id="projectcontour.io/v1">projectcontour.io/v1</h2> 11 <p> 12 <p>Package v1 holds the specification for the projectcontour.io Custom Resource Definitions (CRDs).</p> 13 <p>In building this CRD, we’ve inadvertently overloaded the word “Condition”, so we’ve tried to make 14 this spec clear as to which types of condition are which.</p> 15 <p><code>MatchConditions</code> are used by <code>Routes</code> and <code>Includes</code> to specify rules to match requests against for either 16 routing or inclusion.</p> 17 <p><code>DetailedConditions</code> are used in the <code>Status</code> of these objects to hold information about the relevant 18 state of the object and the world around it.</p> 19 <p><code>SubConditions</code> are used underneath <code>DetailedConditions</code> to give more detail to errors or warnings.</p> 20 </p> 21 Resource Types: 22 <ul><li> 23 <a href="#projectcontour.io/v1.HTTPProxy">HTTPProxy</a> 24 </li><li> 25 <a href="#projectcontour.io/v1.TLSCertificateDelegation">TLSCertificateDelegation</a> 26 </li></ul> 27 <h3 id="projectcontour.io/v1.HTTPProxy">HTTPProxy 28 </h3> 29 <p> 30 <p>HTTPProxy is an Ingress CRD specification.</p> 31 </p> 32 <table class="table table-striped table-borderless" style="border:none"> 33 <thead class="border-bottom"> 34 <tr> 35 <th>Field</th> 36 <th>Description</th> 37 </tr> 38 </thead> 39 <tbody class="border-top"> 40 <tr> 41 <td> 42 <code>apiVersion</code> 43 <br> 44 string</td> 45 <td> 46 <code> 47 projectcontour.io/v1 48 </code> 49 </td> 50 </tr> 51 <tr> 52 <td> 53 <code>kind</code> 54 <br> 55 string 56 </td> 57 <td><code>HTTPProxy</code></td> 58 </tr> 59 <tr> 60 <td style="white-space:nowrap"> 61 <code>metadata</code> 62 <br> 63 <em> 64 <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#objectmeta-v1-meta"> 65 Kubernetes meta/v1.ObjectMeta 66 </a> 67 </em> 68 </td> 69 <td> 70 Refer to the Kubernetes API documentation for the fields of the 71 <code>metadata</code> field. 72 </td> 73 </tr> 74 <tr> 75 <td style="white-space:nowrap"> 76 <code>spec</code> 77 <br> 78 <em> 79 <a href="#projectcontour.io/v1.HTTPProxySpec"> 80 HTTPProxySpec 81 </a> 82 </em> 83 </td> 84 <td> 85 <br> 86 <br> 87 <table style="border:none"> 88 <tr> 89 <td style="white-space:nowrap"> 90 <code>virtualhost</code> 91 <br> 92 <em> 93 <a href="#projectcontour.io/v1.VirtualHost"> 94 VirtualHost 95 </a> 96 </em> 97 </td> 98 <td> 99 <em>(Optional)</em> 100 <p>Virtualhost appears at most once. If it is present, the object is considered 101 to be a “root” HTTPProxy.</p> 102 </td> 103 </tr> 104 <tr> 105 <td style="white-space:nowrap"> 106 <code>routes</code> 107 <br> 108 <em> 109 <a href="#projectcontour.io/v1.Route"> 110 []Route 111 </a> 112 </em> 113 </td> 114 <td> 115 <em>(Optional)</em> 116 <p>Routes are the ingress routes. If TCPProxy is present, Routes is ignored.</p> 117 </td> 118 </tr> 119 <tr> 120 <td style="white-space:nowrap"> 121 <code>tcpproxy</code> 122 <br> 123 <em> 124 <a href="#projectcontour.io/v1.TCPProxy"> 125 TCPProxy 126 </a> 127 </em> 128 </td> 129 <td> 130 <em>(Optional)</em> 131 <p>TCPProxy holds TCP proxy information.</p> 132 </td> 133 </tr> 134 <tr> 135 <td style="white-space:nowrap"> 136 <code>includes</code> 137 <br> 138 <em> 139 <a href="#projectcontour.io/v1.Include"> 140 []Include 141 </a> 142 </em> 143 </td> 144 <td> 145 <em>(Optional)</em> 146 <p>Includes allow for specific routing configuration to be included from another HTTPProxy, 147 possibly in another namespace.</p> 148 </td> 149 </tr> 150 </table> 151 </td> 152 </tr> 153 <tr> 154 <td style="white-space:nowrap"> 155 <code>status</code> 156 <br> 157 <em> 158 <a href="#projectcontour.io/v1.HTTPProxyStatus"> 159 HTTPProxyStatus 160 </a> 161 </em> 162 </td> 163 <td> 164 <em>(Optional)</em> 165 <p>Status is a container for computed information about the HTTPProxy.</p> 166 </td> 167 </tr> 168 </tbody> 169 </table> 170 <h3 id="projectcontour.io/v1.TLSCertificateDelegation">TLSCertificateDelegation 171 </h3> 172 <p> 173 <p>TLSCertificateDelegation is an TLS Certificate Delegation CRD specification. 174 See design/tls-certificate-delegation.md for details.</p> 175 </p> 176 <table class="table table-striped table-borderless" style="border:none"> 177 <thead class="border-bottom"> 178 <tr> 179 <th>Field</th> 180 <th>Description</th> 181 </tr> 182 </thead> 183 <tbody class="border-top"> 184 <tr> 185 <td> 186 <code>apiVersion</code> 187 <br> 188 string</td> 189 <td> 190 <code> 191 projectcontour.io/v1 192 </code> 193 </td> 194 </tr> 195 <tr> 196 <td> 197 <code>kind</code> 198 <br> 199 string 200 </td> 201 <td><code>TLSCertificateDelegation</code></td> 202 </tr> 203 <tr> 204 <td style="white-space:nowrap"> 205 <code>metadata</code> 206 <br> 207 <em> 208 <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#objectmeta-v1-meta"> 209 Kubernetes meta/v1.ObjectMeta 210 </a> 211 </em> 212 </td> 213 <td> 214 Refer to the Kubernetes API documentation for the fields of the 215 <code>metadata</code> field. 216 </td> 217 </tr> 218 <tr> 219 <td style="white-space:nowrap"> 220 <code>spec</code> 221 <br> 222 <em> 223 <a href="#projectcontour.io/v1.TLSCertificateDelegationSpec"> 224 TLSCertificateDelegationSpec 225 </a> 226 </em> 227 </td> 228 <td> 229 <br> 230 <br> 231 <table style="border:none"> 232 <tr> 233 <td style="white-space:nowrap"> 234 <code>delegations</code> 235 <br> 236 <em> 237 <a href="#projectcontour.io/v1.CertificateDelegation"> 238 []CertificateDelegation 239 </a> 240 </em> 241 </td> 242 <td> 243 </td> 244 </tr> 245 </table> 246 </td> 247 </tr> 248 <tr> 249 <td style="white-space:nowrap"> 250 <code>status</code> 251 <br> 252 <em> 253 <a href="#projectcontour.io/v1.TLSCertificateDelegationStatus"> 254 TLSCertificateDelegationStatus 255 </a> 256 </em> 257 </td> 258 <td> 259 <em>(Optional)</em> 260 </td> 261 </tr> 262 </tbody> 263 </table> 264 <h3 id="projectcontour.io/v1.AuthorizationPolicy">AuthorizationPolicy 265 </h3> 266 <p> 267 (<em>Appears on:</em> 268 <a href="#projectcontour.io/v1.AuthorizationServer">AuthorizationServer</a>, 269 <a href="#projectcontour.io/v1.Route">Route</a>) 270 </p> 271 <p> 272 <p>AuthorizationPolicy modifies how client requests are authenticated.</p> 273 </p> 274 <table class="table table-striped table-borderless" style="border:none"> 275 <thead class="border-bottom"> 276 <tr> 277 <th>Field</th> 278 <th>Description</th> 279 </tr> 280 </thead> 281 <tbody class="border-top"> 282 <tr> 283 <td style="white-space:nowrap"> 284 <code>disabled</code> 285 <br> 286 <em> 287 bool 288 </em> 289 </td> 290 <td> 291 <em>(Optional)</em> 292 <p>When true, this field disables client request authentication 293 for the scope of the policy.</p> 294 </td> 295 </tr> 296 <tr> 297 <td style="white-space:nowrap"> 298 <code>context</code> 299 <br> 300 <em> 301 map[string]string 302 </em> 303 </td> 304 <td> 305 <em>(Optional)</em> 306 <p>Context is a set of key/value pairs that are sent to the 307 authentication server in the check request. If a context 308 is provided at an enclosing scope, the entries are merged 309 such that the inner scope overrides matching keys from the 310 outer scope.</p> 311 </td> 312 </tr> 313 </tbody> 314 </table> 315 <h3 id="projectcontour.io/v1.AuthorizationServer">AuthorizationServer 316 </h3> 317 <p> 318 (<em>Appears on:</em> 319 <a href="#projectcontour.io/v1.VirtualHost">VirtualHost</a>) 320 </p> 321 <p> 322 <p>AuthorizationServer configures an external server to authenticate 323 client requests. The external server must implement the v3 Envoy 324 external authorization GRPC protocol (<a href="https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/auth/v3/external_auth.proto">https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/auth/v3/external_auth.proto</a>).</p> 325 </p> 326 <table class="table table-striped table-borderless" style="border:none"> 327 <thead class="border-bottom"> 328 <tr> 329 <th>Field</th> 330 <th>Description</th> 331 </tr> 332 </thead> 333 <tbody class="border-top"> 334 <tr> 335 <td style="white-space:nowrap"> 336 <code>extensionRef</code> 337 <br> 338 <em> 339 <a href="#projectcontour.io/v1.ExtensionServiceReference"> 340 ExtensionServiceReference 341 </a> 342 </em> 343 </td> 344 <td> 345 <p>ExtensionServiceRef specifies the extension resource that will authorize client requests.</p> 346 </td> 347 </tr> 348 <tr> 349 <td style="white-space:nowrap"> 350 <code>authPolicy</code> 351 <br> 352 <em> 353 <a href="#projectcontour.io/v1.AuthorizationPolicy"> 354 AuthorizationPolicy 355 </a> 356 </em> 357 </td> 358 <td> 359 <em>(Optional)</em> 360 <p>AuthPolicy sets a default authorization policy for client requests. 361 This policy will be used unless overridden by individual routes.</p> 362 </td> 363 </tr> 364 <tr> 365 <td style="white-space:nowrap"> 366 <code>responseTimeout</code> 367 <br> 368 <em> 369 string 370 </em> 371 </td> 372 <td> 373 <em>(Optional)</em> 374 <p>ResponseTimeout configures maximum time to wait for a check response from the authorization server. 375 Timeout durations are expressed in the Go <a href="https://godoc.org/time#ParseDuration">Duration format</a>. 376 Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. 377 The string “infinity” is also a valid input and specifies no timeout.</p> 378 </td> 379 </tr> 380 <tr> 381 <td style="white-space:nowrap"> 382 <code>failOpen</code> 383 <br> 384 <em> 385 bool 386 </em> 387 </td> 388 <td> 389 <em>(Optional)</em> 390 <p>If FailOpen is true, the client request is forwarded to the upstream service 391 even if the authorization server fails to respond. This field should not be 392 set in most cases. It is intended for use only while migrating applications 393 from internal authorization to Contour external authorization.</p> 394 </td> 395 </tr> 396 </tbody> 397 </table> 398 <h3 id="projectcontour.io/v1.CORSHeaderValue">CORSHeaderValue 399 (<code>string</code> alias)</h3> 400 <p> 401 (<em>Appears on:</em> 402 <a href="#projectcontour.io/v1.CORSPolicy">CORSPolicy</a>) 403 </p> 404 <p> 405 <p>CORSHeaderValue specifies the value of the string headers returned by a cross-domain request.</p> 406 </p> 407 <h3 id="projectcontour.io/v1.CORSPolicy">CORSPolicy 408 </h3> 409 <p> 410 (<em>Appears on:</em> 411 <a href="#projectcontour.io/v1.VirtualHost">VirtualHost</a>) 412 </p> 413 <p> 414 <p>CORSPolicy allows setting the CORS policy</p> 415 </p> 416 <table class="table table-striped table-borderless" style="border:none"> 417 <thead class="border-bottom"> 418 <tr> 419 <th>Field</th> 420 <th>Description</th> 421 </tr> 422 </thead> 423 <tbody class="border-top"> 424 <tr> 425 <td style="white-space:nowrap"> 426 <code>allowCredentials</code> 427 <br> 428 <em> 429 bool 430 </em> 431 </td> 432 <td> 433 <em>(Optional)</em> 434 <p>Specifies whether the resource allows credentials.</p> 435 </td> 436 </tr> 437 <tr> 438 <td style="white-space:nowrap"> 439 <code>allowOrigin</code> 440 <br> 441 <em> 442 []string 443 </em> 444 </td> 445 <td> 446 <p>AllowOrigin specifies the origins that will be allowed to do CORS requests. “*” means 447 allow any origin.</p> 448 </td> 449 </tr> 450 <tr> 451 <td style="white-space:nowrap"> 452 <code>allowMethods</code> 453 <br> 454 <em> 455 <a href="#projectcontour.io/v1.CORSHeaderValue"> 456 []CORSHeaderValue 457 </a> 458 </em> 459 </td> 460 <td> 461 <p>AllowMethods specifies the content for the <em>access-control-allow-methods</em> header.</p> 462 </td> 463 </tr> 464 <tr> 465 <td style="white-space:nowrap"> 466 <code>allowHeaders</code> 467 <br> 468 <em> 469 <a href="#projectcontour.io/v1.CORSHeaderValue"> 470 []CORSHeaderValue 471 </a> 472 </em> 473 </td> 474 <td> 475 <em>(Optional)</em> 476 <p>AllowHeaders specifies the content for the <em>access-control-allow-headers</em> header.</p> 477 </td> 478 </tr> 479 <tr> 480 <td style="white-space:nowrap"> 481 <code>exposeHeaders</code> 482 <br> 483 <em> 484 <a href="#projectcontour.io/v1.CORSHeaderValue"> 485 []CORSHeaderValue 486 </a> 487 </em> 488 </td> 489 <td> 490 <em>(Optional)</em> 491 <p>ExposeHeaders Specifies the content for the <em>access-control-expose-headers</em> header.</p> 492 </td> 493 </tr> 494 <tr> 495 <td style="white-space:nowrap"> 496 <code>maxAge</code> 497 <br> 498 <em> 499 string 500 </em> 501 </td> 502 <td> 503 <em>(Optional)</em> 504 <p>MaxAge indicates for how long the results of a preflight request can be cached. 505 MaxAge durations are expressed in the Go <a href="https://godoc.org/time#ParseDuration">Duration format</a>. 506 Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. 507 Only positive values are allowed while 0 disables the cache requiring a preflight OPTIONS 508 check for all cross-origin requests.</p> 509 </td> 510 </tr> 511 </tbody> 512 </table> 513 <h3 id="projectcontour.io/v1.CertificateDelegation">CertificateDelegation 514 </h3> 515 <p> 516 (<em>Appears on:</em> 517 <a href="#projectcontour.io/v1.TLSCertificateDelegationSpec">TLSCertificateDelegationSpec</a>) 518 </p> 519 <p> 520 <p>CertificateDelegation maps the authority to reference a secret 521 in the current namespace to a set of namespaces.</p> 522 </p> 523 <table class="table table-striped table-borderless" style="border:none"> 524 <thead class="border-bottom"> 525 <tr> 526 <th>Field</th> 527 <th>Description</th> 528 </tr> 529 </thead> 530 <tbody class="border-top"> 531 <tr> 532 <td style="white-space:nowrap"> 533 <code>secretName</code> 534 <br> 535 <em> 536 string 537 </em> 538 </td> 539 <td> 540 <p>required, the name of a secret in the current namespace.</p> 541 </td> 542 </tr> 543 <tr> 544 <td style="white-space:nowrap"> 545 <code>targetNamespaces</code> 546 <br> 547 <em> 548 []string 549 </em> 550 </td> 551 <td> 552 <p>required, the namespaces the authority to reference the 553 the secret will be delegated to. 554 If TargetNamespaces is nil or empty, the CertificateDelegation’ 555 is ignored. If the TargetNamespace list contains the character, “*” 556 the secret will be delegated to all namespaces.</p> 557 </td> 558 </tr> 559 </tbody> 560 </table> 561 <h3 id="projectcontour.io/v1.DetailedCondition">DetailedCondition 562 </h3> 563 <p> 564 (<em>Appears on:</em> 565 <a href="#projectcontour.io/v1.HTTPProxyStatus">HTTPProxyStatus</a>, 566 <a href="#projectcontour.io/v1.TLSCertificateDelegationStatus">TLSCertificateDelegationStatus</a>, 567 <a href="#projectcontour.io/v1alpha1.ExtensionServiceStatus">ExtensionServiceStatus</a>) 568 </p> 569 <p> 570 <p>DetailedCondition is an extension of the normal Kubernetes conditions, with two extra 571 fields to hold sub-conditions, which provide more detailed reasons for the state (True or False) 572 of the condition.</p> 573 <p><code>errors</code> holds information about sub-conditions which are fatal to that condition and render its state False.</p> 574 <p><code>warnings</code> holds information about sub-conditions which are not fatal to that condition and do not force the state to be False.</p> 575 <p>Remember that Conditions have a type, a status, and a reason.</p> 576 <p>The type is the type of the condition, the most important one in this CRD set is <code>Valid</code>. 577 <code>Valid</code> is a positive-polarity condition: when it is <code>status: true</code> there are no problems.</p> 578 <p>In more detail, <code>status: true</code> means that the object is has been ingested into Contour with no errors. 579 <code>warnings</code> may still be present, and will be indicated in the Reason field. There must be zero entries in the <code>errors</code> 580 slice in this case.</p> 581 <p><code>Valid</code>, <code>status: false</code> means that the object has had one or more fatal errors during processing into Contour. 582 The details of the errors will be present under the <code>errors</code> field. There must be at least one error in the <code>errors</code> 583 slice if <code>status</code> is <code>false</code>.</p> 584 <p>For DetailedConditions of types other than <code>Valid</code>, the Condition must be in the negative polarity. 585 When they have <code>status</code> <code>true</code>, there is an error. There must be at least one entry in the <code>errors</code> Subcondition slice. 586 When they have <code>status</code> <code>false</code>, there are no serious errors, and there must be zero entries in the <code>errors</code> slice. 587 In either case, there may be entries in the <code>warnings</code> slice.</p> 588 <p>Regardless of the polarity, the <code>reason</code> and <code>message</code> fields must be updated with either the detail of the reason 589 (if there is one and only one entry in total across both the <code>errors</code> and <code>warnings</code> slices), or 590 <code>MultipleReasons</code> if there is more than one entry.</p> 591 </p> 592 <table class="table table-striped table-borderless" style="border:none"> 593 <thead class="border-bottom"> 594 <tr> 595 <th>Field</th> 596 <th>Description</th> 597 </tr> 598 </thead> 599 <tbody class="border-top"> 600 <tr> 601 <td style="white-space:nowrap"> 602 <code>Condition</code> 603 <br> 604 <em> 605 <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#condition-v1-meta"> 606 Kubernetes meta/v1.Condition 607 </a> 608 </em> 609 </td> 610 <td> 611 <p> 612 (Members of <code>Condition</code> are embedded into this type.) 613 </p> 614 </td> 615 </tr> 616 <tr> 617 <td style="white-space:nowrap"> 618 <code>errors</code> 619 <br> 620 <em> 621 <a href="#projectcontour.io/v1.SubCondition"> 622 []SubCondition 623 </a> 624 </em> 625 </td> 626 <td> 627 <em>(Optional)</em> 628 <p>Errors contains a slice of relevant error subconditions for this object.</p> 629 <p>Subconditions are expected to appear when relevant (when there is a error), and disappear when not relevant. 630 An empty slice here indicates no errors.</p> 631 </td> 632 </tr> 633 <tr> 634 <td style="white-space:nowrap"> 635 <code>warnings</code> 636 <br> 637 <em> 638 <a href="#projectcontour.io/v1.SubCondition"> 639 []SubCondition 640 </a> 641 </em> 642 </td> 643 <td> 644 <em>(Optional)</em> 645 <p>Warnings contains a slice of relevant warning subconditions for this object.</p> 646 <p>Subconditions are expected to appear when relevant (when there is a warning), and disappear when not relevant. 647 An empty slice here indicates no warnings.</p> 648 </td> 649 </tr> 650 </tbody> 651 </table> 652 <h3 id="projectcontour.io/v1.DownstreamValidation">DownstreamValidation 653 </h3> 654 <p> 655 (<em>Appears on:</em> 656 <a href="#projectcontour.io/v1.TLS">TLS</a>) 657 </p> 658 <p> 659 <p>DownstreamValidation defines how to verify the client certificate.</p> 660 </p> 661 <table class="table table-striped table-borderless" style="border:none"> 662 <thead class="border-bottom"> 663 <tr> 664 <th>Field</th> 665 <th>Description</th> 666 </tr> 667 </thead> 668 <tbody class="border-top"> 669 <tr> 670 <td style="white-space:nowrap"> 671 <code>caSecret</code> 672 <br> 673 <em> 674 string 675 </em> 676 </td> 677 <td> 678 <em>(Optional)</em> 679 <p>Name of a Kubernetes secret that contains a CA certificate bundle. 680 The client certificate must validate against the certificates in the bundle.</p> 681 </td> 682 </tr> 683 <tr> 684 <td style="white-space:nowrap"> 685 <code>skipClientCertValidation</code> 686 <br> 687 <em> 688 bool 689 </em> 690 </td> 691 <td> 692 <em>(Optional)</em> 693 <p>SkipClientCertValidation disables downstream client certificate 694 validation. Defaults to false. This field is intended to be used in 695 conjunction with external authorization in order to enable the external 696 authorization server to validate client certificates. When this field 697 is set to true, client certificates are requested but not verified by 698 Envoy. If external authorization is in use, they are presented to the 699 external authorization server.</p> 700 </td> 701 </tr> 702 </tbody> 703 </table> 704 <h3 id="projectcontour.io/v1.ExtensionServiceReference">ExtensionServiceReference 705 </h3> 706 <p> 707 (<em>Appears on:</em> 708 <a href="#projectcontour.io/v1.AuthorizationServer">AuthorizationServer</a>) 709 </p> 710 <p> 711 <p>ExtensionServiceReference names an ExtensionService resource.</p> 712 </p> 713 <table class="table table-striped table-borderless" style="border:none"> 714 <thead class="border-bottom"> 715 <tr> 716 <th>Field</th> 717 <th>Description</th> 718 </tr> 719 </thead> 720 <tbody class="border-top"> 721 <tr> 722 <td style="white-space:nowrap"> 723 <code>apiVersion</code> 724 <br> 725 <em> 726 string 727 </em> 728 </td> 729 <td> 730 <em>(Optional)</em> 731 <p>API version of the referent. 732 If this field is not specified, the default “projectcontour.io/v1alpha1” will be used</p> 733 </td> 734 </tr> 735 <tr> 736 <td style="white-space:nowrap"> 737 <code>namespace</code> 738 <br> 739 <em> 740 string 741 </em> 742 </td> 743 <td> 744 <em>(Optional)</em> 745 <p>Namespace of the referent. 746 If this field is not specifies, the namespace of the resource that targets the referent will be used.</p> 747 <p>More info: <a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/">https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/</a></p> 748 </td> 749 </tr> 750 <tr> 751 <td style="white-space:nowrap"> 752 <code>name</code> 753 <br> 754 <em> 755 string 756 </em> 757 </td> 758 <td> 759 <p>Name of the referent.</p> 760 <p>More info: <a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names">https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names</a></p> 761 </td> 762 </tr> 763 </tbody> 764 </table> 765 <h3 id="projectcontour.io/v1.GenericKeyDescriptor">GenericKeyDescriptor 766 </h3> 767 <p> 768 (<em>Appears on:</em> 769 <a href="#projectcontour.io/v1.RateLimitDescriptorEntry">RateLimitDescriptorEntry</a>) 770 </p> 771 <p> 772 <p>GenericKeyDescriptor defines a descriptor entry with a static key and 773 value.</p> 774 </p> 775 <table class="table table-striped table-borderless" style="border:none"> 776 <thead class="border-bottom"> 777 <tr> 778 <th>Field</th> 779 <th>Description</th> 780 </tr> 781 </thead> 782 <tbody class="border-top"> 783 <tr> 784 <td style="white-space:nowrap"> 785 <code>key</code> 786 <br> 787 <em> 788 string 789 </em> 790 </td> 791 <td> 792 <em>(Optional)</em> 793 <p>Key defines the key of the descriptor entry. If not set, the 794 key is set to “generic_key”.</p> 795 </td> 796 </tr> 797 <tr> 798 <td style="white-space:nowrap"> 799 <code>value</code> 800 <br> 801 <em> 802 string 803 </em> 804 </td> 805 <td> 806 <p>Value defines the value of the descriptor entry.</p> 807 </td> 808 </tr> 809 </tbody> 810 </table> 811 <h3 id="projectcontour.io/v1.GlobalRateLimitPolicy">GlobalRateLimitPolicy 812 </h3> 813 <p> 814 (<em>Appears on:</em> 815 <a href="#projectcontour.io/v1.RateLimitPolicy">RateLimitPolicy</a>) 816 </p> 817 <p> 818 <p>GlobalRateLimitPolicy defines global rate limiting parameters.</p> 819 </p> 820 <table class="table table-striped table-borderless" style="border:none"> 821 <thead class="border-bottom"> 822 <tr> 823 <th>Field</th> 824 <th>Description</th> 825 </tr> 826 </thead> 827 <tbody class="border-top"> 828 <tr> 829 <td style="white-space:nowrap"> 830 <code>descriptors</code> 831 <br> 832 <em> 833 <a href="#projectcontour.io/v1.RateLimitDescriptor"> 834 []RateLimitDescriptor 835 </a> 836 </em> 837 </td> 838 <td> 839 <p>Descriptors defines the list of descriptors that will 840 be generated and sent to the rate limit service. Each 841 descriptor contains 1+ key-value pair entries.</p> 842 </td> 843 </tr> 844 </tbody> 845 </table> 846 <h3 id="projectcontour.io/v1.HTTPHealthCheckPolicy">HTTPHealthCheckPolicy 847 </h3> 848 <p> 849 (<em>Appears on:</em> 850 <a href="#projectcontour.io/v1.Route">Route</a>) 851 </p> 852 <p> 853 <p>HTTPHealthCheckPolicy defines health checks on the upstream service.</p> 854 </p> 855 <table class="table table-striped table-borderless" style="border:none"> 856 <thead class="border-bottom"> 857 <tr> 858 <th>Field</th> 859 <th>Description</th> 860 </tr> 861 </thead> 862 <tbody class="border-top"> 863 <tr> 864 <td style="white-space:nowrap"> 865 <code>path</code> 866 <br> 867 <em> 868 string 869 </em> 870 </td> 871 <td> 872 <p>HTTP endpoint used to perform health checks on upstream service</p> 873 </td> 874 </tr> 875 <tr> 876 <td style="white-space:nowrap"> 877 <code>host</code> 878 <br> 879 <em> 880 string 881 </em> 882 </td> 883 <td> 884 <p>The value of the host header in the HTTP health check request. 885 If left empty (default value), the name “contour-envoy-healthcheck” 886 will be used.</p> 887 </td> 888 </tr> 889 <tr> 890 <td style="white-space:nowrap"> 891 <code>intervalSeconds</code> 892 <br> 893 <em> 894 int64 895 </em> 896 </td> 897 <td> 898 <em>(Optional)</em> 899 <p>The interval (seconds) between health checks</p> 900 </td> 901 </tr> 902 <tr> 903 <td style="white-space:nowrap"> 904 <code>timeoutSeconds</code> 905 <br> 906 <em> 907 int64 908 </em> 909 </td> 910 <td> 911 <em>(Optional)</em> 912 <p>The time to wait (seconds) for a health check response</p> 913 </td> 914 </tr> 915 <tr> 916 <td style="white-space:nowrap"> 917 <code>unhealthyThresholdCount</code> 918 <br> 919 <em> 920 int64 921 </em> 922 </td> 923 <td> 924 <em>(Optional)</em> 925 <p>The number of unhealthy health checks required before a host is marked unhealthy</p> 926 </td> 927 </tr> 928 <tr> 929 <td style="white-space:nowrap"> 930 <code>healthyThresholdCount</code> 931 <br> 932 <em> 933 int64 934 </em> 935 </td> 936 <td> 937 <em>(Optional)</em> 938 <p>The number of healthy health checks required before a host is marked healthy</p> 939 </td> 940 </tr> 941 </tbody> 942 </table> 943 <h3 id="projectcontour.io/v1.HTTPProxySpec">HTTPProxySpec 944 </h3> 945 <p> 946 (<em>Appears on:</em> 947 <a href="#projectcontour.io/v1.HTTPProxy">HTTPProxy</a>) 948 </p> 949 <p> 950 <p>HTTPProxySpec defines the spec of the CRD.</p> 951 </p> 952 <table class="table table-striped table-borderless" style="border:none"> 953 <thead class="border-bottom"> 954 <tr> 955 <th>Field</th> 956 <th>Description</th> 957 </tr> 958 </thead> 959 <tbody class="border-top"> 960 <tr> 961 <td style="white-space:nowrap"> 962 <code>virtualhost</code> 963 <br> 964 <em> 965 <a href="#projectcontour.io/v1.VirtualHost"> 966 VirtualHost 967 </a> 968 </em> 969 </td> 970 <td> 971 <em>(Optional)</em> 972 <p>Virtualhost appears at most once. If it is present, the object is considered 973 to be a “root” HTTPProxy.</p> 974 </td> 975 </tr> 976 <tr> 977 <td style="white-space:nowrap"> 978 <code>routes</code> 979 <br> 980 <em> 981 <a href="#projectcontour.io/v1.Route"> 982 []Route 983 </a> 984 </em> 985 </td> 986 <td> 987 <em>(Optional)</em> 988 <p>Routes are the ingress routes. If TCPProxy is present, Routes is ignored.</p> 989 </td> 990 </tr> 991 <tr> 992 <td style="white-space:nowrap"> 993 <code>tcpproxy</code> 994 <br> 995 <em> 996 <a href="#projectcontour.io/v1.TCPProxy"> 997 TCPProxy 998 </a> 999 </em> 1000 </td> 1001 <td> 1002 <em>(Optional)</em> 1003 <p>TCPProxy holds TCP proxy information.</p> 1004 </td> 1005 </tr> 1006 <tr> 1007 <td style="white-space:nowrap"> 1008 <code>includes</code> 1009 <br> 1010 <em> 1011 <a href="#projectcontour.io/v1.Include"> 1012 []Include 1013 </a> 1014 </em> 1015 </td> 1016 <td> 1017 <em>(Optional)</em> 1018 <p>Includes allow for specific routing configuration to be included from another HTTPProxy, 1019 possibly in another namespace.</p> 1020 </td> 1021 </tr> 1022 </tbody> 1023 </table> 1024 <h3 id="projectcontour.io/v1.HTTPProxyStatus">HTTPProxyStatus 1025 </h3> 1026 <p> 1027 (<em>Appears on:</em> 1028 <a href="#projectcontour.io/v1.HTTPProxy">HTTPProxy</a>) 1029 </p> 1030 <p> 1031 <p>HTTPProxyStatus reports the current state of the HTTPProxy.</p> 1032 </p> 1033 <table class="table table-striped table-borderless" style="border:none"> 1034 <thead class="border-bottom"> 1035 <tr> 1036 <th>Field</th> 1037 <th>Description</th> 1038 </tr> 1039 </thead> 1040 <tbody class="border-top"> 1041 <tr> 1042 <td style="white-space:nowrap"> 1043 <code>currentStatus</code> 1044 <br> 1045 <em> 1046 string 1047 </em> 1048 </td> 1049 <td> 1050 <em>(Optional)</em> 1051 </td> 1052 </tr> 1053 <tr> 1054 <td style="white-space:nowrap"> 1055 <code>description</code> 1056 <br> 1057 <em> 1058 string 1059 </em> 1060 </td> 1061 <td> 1062 <em>(Optional)</em> 1063 </td> 1064 </tr> 1065 <tr> 1066 <td style="white-space:nowrap"> 1067 <code>loadBalancer</code> 1068 <br> 1069 <em> 1070 <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#loadbalancerstatus-v1-core"> 1071 Kubernetes core/v1.LoadBalancerStatus 1072 </a> 1073 </em> 1074 </td> 1075 <td> 1076 <em>(Optional)</em> 1077 <p>LoadBalancer contains the current status of the load balancer.</p> 1078 </td> 1079 </tr> 1080 <tr> 1081 <td style="white-space:nowrap"> 1082 <code>conditions</code> 1083 <br> 1084 <em> 1085 <a href="#projectcontour.io/v1.DetailedCondition"> 1086 []DetailedCondition 1087 </a> 1088 </em> 1089 </td> 1090 <td> 1091 <em>(Optional)</em> 1092 <p>Conditions contains information about the current status of the HTTPProxy, 1093 in an upstream-friendly container.</p> 1094 <p>Contour will update a single condition, <code>Valid</code>, that is in normal-true polarity. 1095 That is, when <code>currentStatus</code> is <code>valid</code>, the <code>Valid</code> condition will be <code>status: true</code>, 1096 and vice versa.</p> 1097 <p>Contour will leave untouched any other Conditions set in this block, 1098 in case some other controller wants to add a Condition.</p> 1099 <p>If you are another controller owner and wish to add a condition, you <em>should</em> 1100 namespace your condition with a label, like <code>controller.domain.com/ConditionName</code>.</p> 1101 </td> 1102 </tr> 1103 </tbody> 1104 </table> 1105 <h3 id="projectcontour.io/v1.HeaderHashOptions">HeaderHashOptions 1106 </h3> 1107 <p> 1108 (<em>Appears on:</em> 1109 <a href="#projectcontour.io/v1.RequestHashPolicy">RequestHashPolicy</a>) 1110 </p> 1111 <p> 1112 <p>HeaderHashOptions contains options to configure a HTTP request header hash 1113 policy, used in request attribute hash based load balancing.</p> 1114 </p> 1115 <table class="table table-striped table-borderless" style="border:none"> 1116 <thead class="border-bottom"> 1117 <tr> 1118 <th>Field</th> 1119 <th>Description</th> 1120 </tr> 1121 </thead> 1122 <tbody class="border-top"> 1123 <tr> 1124 <td style="white-space:nowrap"> 1125 <code>headerName</code> 1126 <br> 1127 <em> 1128 string 1129 </em> 1130 </td> 1131 <td> 1132 <p>HeaderName is the name of the HTTP request header that will be used to 1133 calculate the hash key. If the header specified is not present on a 1134 request, no hash will be produced.</p> 1135 </td> 1136 </tr> 1137 </tbody> 1138 </table> 1139 <h3 id="projectcontour.io/v1.HeaderMatchCondition">HeaderMatchCondition 1140 </h3> 1141 <p> 1142 (<em>Appears on:</em> 1143 <a href="#projectcontour.io/v1.MatchCondition">MatchCondition</a>, 1144 <a href="#projectcontour.io/v1.RequestHeaderValueMatchDescriptor">RequestHeaderValueMatchDescriptor</a>) 1145 </p> 1146 <p> 1147 <p>HeaderMatchCondition specifies how to conditionally match against HTTP 1148 headers. The Name field is required, but only one of the remaining 1149 fields should be be provided.</p> 1150 </p> 1151 <table class="table table-striped table-borderless" style="border:none"> 1152 <thead class="border-bottom"> 1153 <tr> 1154 <th>Field</th> 1155 <th>Description</th> 1156 </tr> 1157 </thead> 1158 <tbody class="border-top"> 1159 <tr> 1160 <td style="white-space:nowrap"> 1161 <code>name</code> 1162 <br> 1163 <em> 1164 string 1165 </em> 1166 </td> 1167 <td> 1168 <p>Name is the name of the header to match against. Name is required. 1169 Header names are case insensitive.</p> 1170 </td> 1171 </tr> 1172 <tr> 1173 <td style="white-space:nowrap"> 1174 <code>present</code> 1175 <br> 1176 <em> 1177 bool 1178 </em> 1179 </td> 1180 <td> 1181 <em>(Optional)</em> 1182 <p>Present specifies that condition is true when the named header 1183 is present, regardless of its value. Note that setting Present 1184 to false does not make the condition true if the named header 1185 is absent.</p> 1186 </td> 1187 </tr> 1188 <tr> 1189 <td style="white-space:nowrap"> 1190 <code>notpresent</code> 1191 <br> 1192 <em> 1193 bool 1194 </em> 1195 </td> 1196 <td> 1197 <em>(Optional)</em> 1198 <p>NotPresent specifies that condition is true when the named header 1199 is not present. Note that setting NotPresent to false does not 1200 make the condition true if the named header is present.</p> 1201 </td> 1202 </tr> 1203 <tr> 1204 <td style="white-space:nowrap"> 1205 <code>contains</code> 1206 <br> 1207 <em> 1208 string 1209 </em> 1210 </td> 1211 <td> 1212 <em>(Optional)</em> 1213 <p>Contains specifies a substring that must be present in 1214 the header value.</p> 1215 </td> 1216 </tr> 1217 <tr> 1218 <td style="white-space:nowrap"> 1219 <code>notcontains</code> 1220 <br> 1221 <em> 1222 string 1223 </em> 1224 </td> 1225 <td> 1226 <em>(Optional)</em> 1227 <p>NotContains specifies a substring that must not be present 1228 in the header value.</p> 1229 </td> 1230 </tr> 1231 <tr> 1232 <td style="white-space:nowrap"> 1233 <code>exact</code> 1234 <br> 1235 <em> 1236 string 1237 </em> 1238 </td> 1239 <td> 1240 <em>(Optional)</em> 1241 <p>Exact specifies a string that the header value must be equal to.</p> 1242 </td> 1243 </tr> 1244 <tr> 1245 <td style="white-space:nowrap"> 1246 <code>notexact</code> 1247 <br> 1248 <em> 1249 string 1250 </em> 1251 </td> 1252 <td> 1253 <em>(Optional)</em> 1254 <p>NoExact specifies a string that the header value must not be 1255 equal to. The condition is true if the header has any other value.</p> 1256 </td> 1257 </tr> 1258 </tbody> 1259 </table> 1260 <h3 id="projectcontour.io/v1.HeaderValue">HeaderValue 1261 </h3> 1262 <p> 1263 (<em>Appears on:</em> 1264 <a href="#projectcontour.io/v1.HeadersPolicy">HeadersPolicy</a>, 1265 <a href="#projectcontour.io/v1.LocalRateLimitPolicy">LocalRateLimitPolicy</a>) 1266 </p> 1267 <p> 1268 <p>HeaderValue represents a header name/value pair</p> 1269 </p> 1270 <table class="table table-striped table-borderless" style="border:none"> 1271 <thead class="border-bottom"> 1272 <tr> 1273 <th>Field</th> 1274 <th>Description</th> 1275 </tr> 1276 </thead> 1277 <tbody class="border-top"> 1278 <tr> 1279 <td style="white-space:nowrap"> 1280 <code>name</code> 1281 <br> 1282 <em> 1283 string 1284 </em> 1285 </td> 1286 <td> 1287 <p>Name represents a key of a header</p> 1288 </td> 1289 </tr> 1290 <tr> 1291 <td style="white-space:nowrap"> 1292 <code>value</code> 1293 <br> 1294 <em> 1295 string 1296 </em> 1297 </td> 1298 <td> 1299 <p>Value represents the value of a header specified by a key</p> 1300 </td> 1301 </tr> 1302 </tbody> 1303 </table> 1304 <h3 id="projectcontour.io/v1.HeadersPolicy">HeadersPolicy 1305 </h3> 1306 <p> 1307 (<em>Appears on:</em> 1308 <a href="#projectcontour.io/v1.Route">Route</a>, 1309 <a href="#projectcontour.io/v1.Service">Service</a>) 1310 </p> 1311 <p> 1312 <p>HeadersPolicy defines how headers are managed during forwarding. 1313 The <code>Host</code> header is treated specially and if set in a HTTP response 1314 will be used as the SNI server name when forwarding over TLS. It is an 1315 error to attempt to set the <code>Host</code> header in a HTTP response.</p> 1316 </p> 1317 <table class="table table-striped table-borderless" style="border:none"> 1318 <thead class="border-bottom"> 1319 <tr> 1320 <th>Field</th> 1321 <th>Description</th> 1322 </tr> 1323 </thead> 1324 <tbody class="border-top"> 1325 <tr> 1326 <td style="white-space:nowrap"> 1327 <code>set</code> 1328 <br> 1329 <em> 1330 <a href="#projectcontour.io/v1.HeaderValue"> 1331 []HeaderValue 1332 </a> 1333 </em> 1334 </td> 1335 <td> 1336 <em>(Optional)</em> 1337 <p>Set specifies a list of HTTP header values that will be set in the HTTP header. 1338 If the header does not exist it will be added, otherwise it will be overwritten with the new value.</p> 1339 </td> 1340 </tr> 1341 <tr> 1342 <td style="white-space:nowrap"> 1343 <code>remove</code> 1344 <br> 1345 <em> 1346 []string 1347 </em> 1348 </td> 1349 <td> 1350 <em>(Optional)</em> 1351 <p>Remove specifies a list of HTTP header names to remove.</p> 1352 </td> 1353 </tr> 1354 </tbody> 1355 </table> 1356 <h3 id="projectcontour.io/v1.Include">Include 1357 </h3> 1358 <p> 1359 (<em>Appears on:</em> 1360 <a href="#projectcontour.io/v1.HTTPProxySpec">HTTPProxySpec</a>) 1361 </p> 1362 <p> 1363 <p>Include describes a set of policies that can be applied to an HTTPProxy in a namespace.</p> 1364 </p> 1365 <table class="table table-striped table-borderless" style="border:none"> 1366 <thead class="border-bottom"> 1367 <tr> 1368 <th>Field</th> 1369 <th>Description</th> 1370 </tr> 1371 </thead> 1372 <tbody class="border-top"> 1373 <tr> 1374 <td style="white-space:nowrap"> 1375 <code>name</code> 1376 <br> 1377 <em> 1378 string 1379 </em> 1380 </td> 1381 <td> 1382 <p>Name of the HTTPProxy</p> 1383 </td> 1384 </tr> 1385 <tr> 1386 <td style="white-space:nowrap"> 1387 <code>namespace</code> 1388 <br> 1389 <em> 1390 string 1391 </em> 1392 </td> 1393 <td> 1394 <em>(Optional)</em> 1395 <p>Namespace of the HTTPProxy to include. Defaults to the current namespace if not supplied.</p> 1396 </td> 1397 </tr> 1398 <tr> 1399 <td style="white-space:nowrap"> 1400 <code>conditions</code> 1401 <br> 1402 <em> 1403 <a href="#projectcontour.io/v1.MatchCondition"> 1404 []MatchCondition 1405 </a> 1406 </em> 1407 </td> 1408 <td> 1409 <em>(Optional)</em> 1410 <p>Conditions are a set of rules that are applied to included HTTPProxies. 1411 In effect, they are added onto the Conditions of included HTTPProxy Route 1412 structs. 1413 When applied, they are merged using AND, with one exception: 1414 There can be only one Prefix MatchCondition per Conditions slice. 1415 More than one Prefix, or contradictory Conditions, will make the 1416 include invalid.</p> 1417 </td> 1418 </tr> 1419 </tbody> 1420 </table> 1421 <h3 id="projectcontour.io/v1.LoadBalancerPolicy">LoadBalancerPolicy 1422 </h3> 1423 <p> 1424 (<em>Appears on:</em> 1425 <a href="#projectcontour.io/v1.Route">Route</a>, 1426 <a href="#projectcontour.io/v1.TCPProxy">TCPProxy</a>, 1427 <a href="#projectcontour.io/v1alpha1.ExtensionServiceSpec">ExtensionServiceSpec</a>) 1428 </p> 1429 <p> 1430 <p>LoadBalancerPolicy defines the load balancing policy.</p> 1431 </p> 1432 <table class="table table-striped table-borderless" style="border:none"> 1433 <thead class="border-bottom"> 1434 <tr> 1435 <th>Field</th> 1436 <th>Description</th> 1437 </tr> 1438 </thead> 1439 <tbody class="border-top"> 1440 <tr> 1441 <td style="white-space:nowrap"> 1442 <code>strategy</code> 1443 <br> 1444 <em> 1445 string 1446 </em> 1447 </td> 1448 <td> 1449 <p>Strategy specifies the policy used to balance requests 1450 across the pool of backend pods. Valid policy names are 1451 <code>Random</code>, <code>RoundRobin</code>, <code>WeightedLeastRequest</code>, <code>Cookie</code>, 1452 and <code>RequestHash</code>. If an unknown strategy name is specified 1453 or no policy is supplied, the default <code>RoundRobin</code> policy 1454 is used.</p> 1455 </td> 1456 </tr> 1457 <tr> 1458 <td style="white-space:nowrap"> 1459 <code>requestHashPolicies</code> 1460 <br> 1461 <em> 1462 <a href="#projectcontour.io/v1.RequestHashPolicy"> 1463 []RequestHashPolicy 1464 </a> 1465 </em> 1466 </td> 1467 <td> 1468 <p>RequestHashPolicies contains a list of hash policies to apply when the 1469 <code>RequestHash</code> load balancing strategy is chosen. If an element of the 1470 supplied list of hash policies is invalid, it will be ignored. If the 1471 list of hash policies is empty after validation, the load balancing 1472 strategy will fall back to the default <code>RoundRobin</code>.</p> 1473 </td> 1474 </tr> 1475 </tbody> 1476 </table> 1477 <h3 id="projectcontour.io/v1.LocalRateLimitPolicy">LocalRateLimitPolicy 1478 </h3> 1479 <p> 1480 (<em>Appears on:</em> 1481 <a href="#projectcontour.io/v1.RateLimitPolicy">RateLimitPolicy</a>) 1482 </p> 1483 <p> 1484 <p>LocalRateLimitPolicy defines local rate limiting parameters.</p> 1485 </p> 1486 <table class="table table-striped table-borderless" style="border:none"> 1487 <thead class="border-bottom"> 1488 <tr> 1489 <th>Field</th> 1490 <th>Description</th> 1491 </tr> 1492 </thead> 1493 <tbody class="border-top"> 1494 <tr> 1495 <td style="white-space:nowrap"> 1496 <code>requests</code> 1497 <br> 1498 <em> 1499 uint32 1500 </em> 1501 </td> 1502 <td> 1503 <p>Requests defines how many requests per unit of time should 1504 be allowed before rate limiting occurs.</p> 1505 </td> 1506 </tr> 1507 <tr> 1508 <td style="white-space:nowrap"> 1509 <code>unit</code> 1510 <br> 1511 <em> 1512 string 1513 </em> 1514 </td> 1515 <td> 1516 <p>Unit defines the period of time within which requests 1517 over the limit will be rate limited. Valid values are 1518 “second”, “minute” and “hour”.</p> 1519 </td> 1520 </tr> 1521 <tr> 1522 <td style="white-space:nowrap"> 1523 <code>burst</code> 1524 <br> 1525 <em> 1526 uint32 1527 </em> 1528 </td> 1529 <td> 1530 <em>(Optional)</em> 1531 <p>Burst defines the number of requests above the requests per 1532 unit that should be allowed within a short period of time.</p> 1533 </td> 1534 </tr> 1535 <tr> 1536 <td style="white-space:nowrap"> 1537 <code>responseStatusCode</code> 1538 <br> 1539 <em> 1540 uint32 1541 </em> 1542 </td> 1543 <td> 1544 <em>(Optional)</em> 1545 <p>ResponseStatusCode is the HTTP status code to use for responses 1546 to rate-limited requests. Codes must be in the 400-599 range 1547 (inclusive). If not specified, the Envoy default of 429 (Too 1548 Many Requests) is used.</p> 1549 </td> 1550 </tr> 1551 <tr> 1552 <td style="white-space:nowrap"> 1553 <code>responseHeadersToAdd</code> 1554 <br> 1555 <em> 1556 <a href="#projectcontour.io/v1.HeaderValue"> 1557 []HeaderValue 1558 </a> 1559 </em> 1560 </td> 1561 <td> 1562 <em>(Optional)</em> 1563 <p>ResponseHeadersToAdd is an optional list of response headers to 1564 set when a request is rate-limited.</p> 1565 </td> 1566 </tr> 1567 </tbody> 1568 </table> 1569 <h3 id="projectcontour.io/v1.MatchCondition">MatchCondition 1570 </h3> 1571 <p> 1572 (<em>Appears on:</em> 1573 <a href="#projectcontour.io/v1.Include">Include</a>, 1574 <a href="#projectcontour.io/v1.Route">Route</a>) 1575 </p> 1576 <p> 1577 <p>MatchCondition are a general holder for matching rules for HTTPProxies. 1578 One of Prefix or Header must be provided.</p> 1579 </p> 1580 <table class="table table-striped table-borderless" style="border:none"> 1581 <thead class="border-bottom"> 1582 <tr> 1583 <th>Field</th> 1584 <th>Description</th> 1585 </tr> 1586 </thead> 1587 <tbody class="border-top"> 1588 <tr> 1589 <td style="white-space:nowrap"> 1590 <code>prefix</code> 1591 <br> 1592 <em> 1593 string 1594 </em> 1595 </td> 1596 <td> 1597 <em>(Optional)</em> 1598 <p>Prefix defines a prefix match for a request.</p> 1599 </td> 1600 </tr> 1601 <tr> 1602 <td style="white-space:nowrap"> 1603 <code>header</code> 1604 <br> 1605 <em> 1606 <a href="#projectcontour.io/v1.HeaderMatchCondition"> 1607 HeaderMatchCondition 1608 </a> 1609 </em> 1610 </td> 1611 <td> 1612 <em>(Optional)</em> 1613 <p>Header specifies the header condition to match.</p> 1614 </td> 1615 </tr> 1616 </tbody> 1617 </table> 1618 <h3 id="projectcontour.io/v1.PathRewritePolicy">PathRewritePolicy 1619 </h3> 1620 <p> 1621 (<em>Appears on:</em> 1622 <a href="#projectcontour.io/v1.Route">Route</a>) 1623 </p> 1624 <p> 1625 <p>PathRewritePolicy specifies how a request URL path should be 1626 rewritten. This rewriting takes place after a request is routed 1627 and has no subsequent effects on the proxy’s routing decision. 1628 No HTTP headers or body content is rewritten.</p> 1629 <p>Exactly one field in this struct may be specified.</p> 1630 </p> 1631 <table class="table table-striped table-borderless" style="border:none"> 1632 <thead class="border-bottom"> 1633 <tr> 1634 <th>Field</th> 1635 <th>Description</th> 1636 </tr> 1637 </thead> 1638 <tbody class="border-top"> 1639 <tr> 1640 <td style="white-space:nowrap"> 1641 <code>replacePrefix</code> 1642 <br> 1643 <em> 1644 <a href="#projectcontour.io/v1.ReplacePrefix"> 1645 []ReplacePrefix 1646 </a> 1647 </em> 1648 </td> 1649 <td> 1650 <em>(Optional)</em> 1651 <p>ReplacePrefix describes how the path prefix should be replaced.</p> 1652 </td> 1653 </tr> 1654 </tbody> 1655 </table> 1656 <h3 id="projectcontour.io/v1.RateLimitDescriptor">RateLimitDescriptor 1657 </h3> 1658 <p> 1659 (<em>Appears on:</em> 1660 <a href="#projectcontour.io/v1.GlobalRateLimitPolicy">GlobalRateLimitPolicy</a>) 1661 </p> 1662 <p> 1663 <p>RateLimitDescriptor defines a list of key-value pair generators.</p> 1664 </p> 1665 <table class="table table-striped table-borderless" style="border:none"> 1666 <thead class="border-bottom"> 1667 <tr> 1668 <th>Field</th> 1669 <th>Description</th> 1670 </tr> 1671 </thead> 1672 <tbody class="border-top"> 1673 <tr> 1674 <td style="white-space:nowrap"> 1675 <code>entries</code> 1676 <br> 1677 <em> 1678 <a href="#projectcontour.io/v1.RateLimitDescriptorEntry"> 1679 []RateLimitDescriptorEntry 1680 </a> 1681 </em> 1682 </td> 1683 <td> 1684 <p>Entries is the list of key-value pair generators.</p> 1685 </td> 1686 </tr> 1687 </tbody> 1688 </table> 1689 <h3 id="projectcontour.io/v1.RateLimitDescriptorEntry">RateLimitDescriptorEntry 1690 </h3> 1691 <p> 1692 (<em>Appears on:</em> 1693 <a href="#projectcontour.io/v1.RateLimitDescriptor">RateLimitDescriptor</a>) 1694 </p> 1695 <p> 1696 <p>RateLimitDescriptorEntry is a key-value pair generator. Exactly 1697 one field on this struct must be non-nil.</p> 1698 </p> 1699 <table class="table table-striped table-borderless" style="border:none"> 1700 <thead class="border-bottom"> 1701 <tr> 1702 <th>Field</th> 1703 <th>Description</th> 1704 </tr> 1705 </thead> 1706 <tbody class="border-top"> 1707 <tr> 1708 <td style="white-space:nowrap"> 1709 <code>genericKey</code> 1710 <br> 1711 <em> 1712 <a href="#projectcontour.io/v1.GenericKeyDescriptor"> 1713 GenericKeyDescriptor 1714 </a> 1715 </em> 1716 </td> 1717 <td> 1718 <em>(Optional)</em> 1719 <p>GenericKey defines a descriptor entry with a static key and value.</p> 1720 </td> 1721 </tr> 1722 <tr> 1723 <td style="white-space:nowrap"> 1724 <code>requestHeader</code> 1725 <br> 1726 <em> 1727 <a href="#projectcontour.io/v1.RequestHeaderDescriptor"> 1728 RequestHeaderDescriptor 1729 </a> 1730 </em> 1731 </td> 1732 <td> 1733 <em>(Optional)</em> 1734 <p>RequestHeader defines a descriptor entry that’s populated only if 1735 a given header is present on the request. The descriptor key is static, 1736 and the descriptor value is equal to the value of the header.</p> 1737 </td> 1738 </tr> 1739 <tr> 1740 <td style="white-space:nowrap"> 1741 <code>requestHeaderValueMatch</code> 1742 <br> 1743 <em> 1744 <a href="#projectcontour.io/v1.RequestHeaderValueMatchDescriptor"> 1745 RequestHeaderValueMatchDescriptor 1746 </a> 1747 </em> 1748 </td> 1749 <td> 1750 <em>(Optional)</em> 1751 <p>RequestHeaderValueMatch defines a descriptor entry that’s populated 1752 if the request’s headers match a set of 1+ match criteria. The 1753 descriptor key is “header_match”, and the descriptor value is static.</p> 1754 </td> 1755 </tr> 1756 <tr> 1757 <td style="white-space:nowrap"> 1758 <code>remoteAddress</code> 1759 <br> 1760 <em> 1761 <a href="#projectcontour.io/v1.RemoteAddressDescriptor"> 1762 RemoteAddressDescriptor 1763 </a> 1764 </em> 1765 </td> 1766 <td> 1767 <em>(Optional)</em> 1768 <p>RemoteAddress defines a descriptor entry with a key of “remote_address” 1769 and a value equal to the client’s IP address (from x-forwarded-for).</p> 1770 </td> 1771 </tr> 1772 </tbody> 1773 </table> 1774 <h3 id="projectcontour.io/v1.RateLimitPolicy">RateLimitPolicy 1775 </h3> 1776 <p> 1777 (<em>Appears on:</em> 1778 <a href="#projectcontour.io/v1.Route">Route</a>, 1779 <a href="#projectcontour.io/v1.VirtualHost">VirtualHost</a>) 1780 </p> 1781 <p> 1782 <p>RateLimitPolicy defines rate limiting parameters.</p> 1783 </p> 1784 <table class="table table-striped table-borderless" style="border:none"> 1785 <thead class="border-bottom"> 1786 <tr> 1787 <th>Field</th> 1788 <th>Description</th> 1789 </tr> 1790 </thead> 1791 <tbody class="border-top"> 1792 <tr> 1793 <td style="white-space:nowrap"> 1794 <code>local</code> 1795 <br> 1796 <em> 1797 <a href="#projectcontour.io/v1.LocalRateLimitPolicy"> 1798 LocalRateLimitPolicy 1799 </a> 1800 </em> 1801 </td> 1802 <td> 1803 <em>(Optional)</em> 1804 <p>Local defines local rate limiting parameters, i.e. parameters 1805 for rate limiting that occurs within each Envoy pod as requests 1806 are handled.</p> 1807 </td> 1808 </tr> 1809 <tr> 1810 <td style="white-space:nowrap"> 1811 <code>global</code> 1812 <br> 1813 <em> 1814 <a href="#projectcontour.io/v1.GlobalRateLimitPolicy"> 1815 GlobalRateLimitPolicy 1816 </a> 1817 </em> 1818 </td> 1819 <td> 1820 <em>(Optional)</em> 1821 <p>Global defines global rate limiting parameters, i.e. parameters 1822 defining descriptors that are sent to an external rate limit 1823 service (RLS) for a rate limit decision on each request.</p> 1824 </td> 1825 </tr> 1826 </tbody> 1827 </table> 1828 <h3 id="projectcontour.io/v1.RemoteAddressDescriptor">RemoteAddressDescriptor 1829 </h3> 1830 <p> 1831 (<em>Appears on:</em> 1832 <a href="#projectcontour.io/v1.RateLimitDescriptorEntry">RateLimitDescriptorEntry</a>) 1833 </p> 1834 <p> 1835 <p>RemoteAddressDescriptor defines a descriptor entry with a key of 1836 “remote_address” and a value equal to the client’s IP address 1837 (from x-forwarded-for).</p> 1838 </p> 1839 <h3 id="projectcontour.io/v1.ReplacePrefix">ReplacePrefix 1840 </h3> 1841 <p> 1842 (<em>Appears on:</em> 1843 <a href="#projectcontour.io/v1.PathRewritePolicy">PathRewritePolicy</a>) 1844 </p> 1845 <p> 1846 <p>ReplacePrefix describes a path prefix replacement.</p> 1847 </p> 1848 <table class="table table-striped table-borderless" style="border:none"> 1849 <thead class="border-bottom"> 1850 <tr> 1851 <th>Field</th> 1852 <th>Description</th> 1853 </tr> 1854 </thead> 1855 <tbody class="border-top"> 1856 <tr> 1857 <td style="white-space:nowrap"> 1858 <code>prefix</code> 1859 <br> 1860 <em> 1861 string 1862 </em> 1863 </td> 1864 <td> 1865 <em>(Optional)</em> 1866 <p>Prefix specifies the URL path prefix to be replaced.</p> 1867 <p>If Prefix is specified, it must exactly match the MatchCondition 1868 prefix that is rendered by the chain of including HTTPProxies 1869 and only that path prefix will be replaced by Replacement. 1870 This allows HTTPProxies that are included through multiple 1871 roots to only replace specific path prefixes, leaving others 1872 unmodified.</p> 1873 <p>If Prefix is not specified, all routing prefixes rendered 1874 by the include chain will be replaced.</p> 1875 </td> 1876 </tr> 1877 <tr> 1878 <td style="white-space:nowrap"> 1879 <code>replacement</code> 1880 <br> 1881 <em> 1882 string 1883 </em> 1884 </td> 1885 <td> 1886 <p>Replacement is the string that the routing path prefix 1887 will be replaced with. This must not be empty.</p> 1888 </td> 1889 </tr> 1890 </tbody> 1891 </table> 1892 <h3 id="projectcontour.io/v1.RequestHashPolicy">RequestHashPolicy 1893 </h3> 1894 <p> 1895 (<em>Appears on:</em> 1896 <a href="#projectcontour.io/v1.LoadBalancerPolicy">LoadBalancerPolicy</a>) 1897 </p> 1898 <p> 1899 <p>RequestHashPolicy contains configuration for an individual hash policy 1900 on a request attribute.</p> 1901 </p> 1902 <table class="table table-striped table-borderless" style="border:none"> 1903 <thead class="border-bottom"> 1904 <tr> 1905 <th>Field</th> 1906 <th>Description</th> 1907 </tr> 1908 </thead> 1909 <tbody class="border-top"> 1910 <tr> 1911 <td style="white-space:nowrap"> 1912 <code>terminal</code> 1913 <br> 1914 <em> 1915 bool 1916 </em> 1917 </td> 1918 <td> 1919 <p>Terminal is a flag that allows for short-circuiting computing of a hash 1920 for a given request. If set to true, and the request attribute specified 1921 in the attribute hash options is present, no further hash policies will 1922 be used to calculate a hash for the request.</p> 1923 </td> 1924 </tr> 1925 <tr> 1926 <td style="white-space:nowrap"> 1927 <code>headerHashOptions</code> 1928 <br> 1929 <em> 1930 <a href="#projectcontour.io/v1.HeaderHashOptions"> 1931 HeaderHashOptions 1932 </a> 1933 </em> 1934 </td> 1935 <td> 1936 <p>HeaderHashOptions should be set when request header hash based load 1937 balancing is desired. It must be the only hash option field set, 1938 otherwise this request hash policy object will be ignored.</p> 1939 </td> 1940 </tr> 1941 </tbody> 1942 </table> 1943 <h3 id="projectcontour.io/v1.RequestHeaderDescriptor">RequestHeaderDescriptor 1944 </h3> 1945 <p> 1946 (<em>Appears on:</em> 1947 <a href="#projectcontour.io/v1.RateLimitDescriptorEntry">RateLimitDescriptorEntry</a>) 1948 </p> 1949 <p> 1950 <p>RequestHeaderDescriptor defines a descriptor entry that’s populated only 1951 if a given header is present on the request. The value of the descriptor 1952 entry is equal to the value of the header (if present).</p> 1953 </p> 1954 <table class="table table-striped table-borderless" style="border:none"> 1955 <thead class="border-bottom"> 1956 <tr> 1957 <th>Field</th> 1958 <th>Description</th> 1959 </tr> 1960 </thead> 1961 <tbody class="border-top"> 1962 <tr> 1963 <td style="white-space:nowrap"> 1964 <code>headerName</code> 1965 <br> 1966 <em> 1967 string 1968 </em> 1969 </td> 1970 <td> 1971 <p>HeaderName defines the name of the header to look for on the request.</p> 1972 </td> 1973 </tr> 1974 <tr> 1975 <td style="white-space:nowrap"> 1976 <code>descriptorKey</code> 1977 <br> 1978 <em> 1979 string 1980 </em> 1981 </td> 1982 <td> 1983 <p>DescriptorKey defines the key to use on the descriptor entry.</p> 1984 </td> 1985 </tr> 1986 </tbody> 1987 </table> 1988 <h3 id="projectcontour.io/v1.RequestHeaderValueMatchDescriptor">RequestHeaderValueMatchDescriptor 1989 </h3> 1990 <p> 1991 (<em>Appears on:</em> 1992 <a href="#projectcontour.io/v1.RateLimitDescriptorEntry">RateLimitDescriptorEntry</a>) 1993 </p> 1994 <p> 1995 <p>RequestHeaderValueMatchDescriptor defines a descriptor entry that’s populated 1996 if the request’s headers match a set of 1+ match criteria. The descriptor key 1997 is “header_match”, and the descriptor value is statically defined.</p> 1998 </p> 1999 <table class="table table-striped table-borderless" style="border:none"> 2000 <thead class="border-bottom"> 2001 <tr> 2002 <th>Field</th> 2003 <th>Description</th> 2004 </tr> 2005 </thead> 2006 <tbody class="border-top"> 2007 <tr> 2008 <td style="white-space:nowrap"> 2009 <code>headers</code> 2010 <br> 2011 <em> 2012 <a href="#projectcontour.io/v1.HeaderMatchCondition"> 2013 []HeaderMatchCondition 2014 </a> 2015 </em> 2016 </td> 2017 <td> 2018 <p>Headers is a list of 1+ match criteria to apply against the request 2019 to determine whether to populate the descriptor entry or not.</p> 2020 </td> 2021 </tr> 2022 <tr> 2023 <td style="white-space:nowrap"> 2024 <code>expectMatch</code> 2025 <br> 2026 <em> 2027 bool 2028 </em> 2029 </td> 2030 <td> 2031 <p>ExpectMatch defines whether the request must positively match the match 2032 criteria in order to generate a descriptor entry (i.e. true), or not 2033 match the match criteria in order to generate a descriptor entry (i.e. false). 2034 The default is true.</p> 2035 </td> 2036 </tr> 2037 <tr> 2038 <td style="white-space:nowrap"> 2039 <code>value</code> 2040 <br> 2041 <em> 2042 string 2043 </em> 2044 </td> 2045 <td> 2046 <p>Value defines the value of the descriptor entry.</p> 2047 </td> 2048 </tr> 2049 </tbody> 2050 </table> 2051 <h3 id="projectcontour.io/v1.RetryOn">RetryOn 2052 (<code>string</code> alias)</h3> 2053 <p> 2054 (<em>Appears on:</em> 2055 <a href="#projectcontour.io/v1.RetryPolicy">RetryPolicy</a>) 2056 </p> 2057 <p> 2058 <p>RetryOn is a string type alias with validation to ensure that the value is valid.</p> 2059 </p> 2060 <h3 id="projectcontour.io/v1.RetryPolicy">RetryPolicy 2061 </h3> 2062 <p> 2063 (<em>Appears on:</em> 2064 <a href="#projectcontour.io/v1.Route">Route</a>) 2065 </p> 2066 <p> 2067 <p>RetryPolicy defines the attributes associated with retrying policy.</p> 2068 </p> 2069 <table class="table table-striped table-borderless" style="border:none"> 2070 <thead class="border-bottom"> 2071 <tr> 2072 <th>Field</th> 2073 <th>Description</th> 2074 </tr> 2075 </thead> 2076 <tbody class="border-top"> 2077 <tr> 2078 <td style="white-space:nowrap"> 2079 <code>count</code> 2080 <br> 2081 <em> 2082 int64 2083 </em> 2084 </td> 2085 <td> 2086 <em>(Optional)</em> 2087 <p>NumRetries is maximum allowed number of retries. 2088 If not supplied, the number of retries is one.</p> 2089 </td> 2090 </tr> 2091 <tr> 2092 <td style="white-space:nowrap"> 2093 <code>perTryTimeout</code> 2094 <br> 2095 <em> 2096 string 2097 </em> 2098 </td> 2099 <td> 2100 <em>(Optional)</em> 2101 <p>PerTryTimeout specifies the timeout per retry attempt. 2102 Ignored if NumRetries is not supplied.</p> 2103 </td> 2104 </tr> 2105 <tr> 2106 <td style="white-space:nowrap"> 2107 <code>retryOn</code> 2108 <br> 2109 <em> 2110 <a href="#projectcontour.io/v1.RetryOn"> 2111 []RetryOn 2112 </a> 2113 </em> 2114 </td> 2115 <td> 2116 <em>(Optional)</em> 2117 <p>RetryOn specifies the conditions on which to retry a request.</p> 2118 <p>Supported <a href="https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-on">HTTP conditions</a>:</p> 2119 <ul> 2120 <li><code>5xx</code></li> 2121 <li><code>gateway-error</code></li> 2122 <li><code>reset</code></li> 2123 <li><code>connect-failure</code></li> 2124 <li><code>retriable-4xx</code></li> 2125 <li><code>refused-stream</code></li> 2126 <li><code>retriable-status-codes</code></li> 2127 <li><code>retriable-headers</code></li> 2128 </ul> 2129 <p>Supported <a href="https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-grpc-on">gRPC conditions</a>:</p> 2130 <ul> 2131 <li><code>cancelled</code></li> 2132 <li><code>deadline-exceeded</code></li> 2133 <li><code>internal</code></li> 2134 <li><code>resource-exhausted</code></li> 2135 <li><code>unavailable</code></li> 2136 </ul> 2137 </td> 2138 </tr> 2139 <tr> 2140 <td style="white-space:nowrap"> 2141 <code>retriableStatusCodes</code> 2142 <br> 2143 <em> 2144 []uint32 2145 </em> 2146 </td> 2147 <td> 2148 <em>(Optional)</em> 2149 <p>RetriableStatusCodes specifies the HTTP status codes that should be retried.</p> 2150 <p>This field is only respected when you include <code>retriable-status-codes</code> in the <code>RetryOn</code> field.</p> 2151 </td> 2152 </tr> 2153 </tbody> 2154 </table> 2155 <h3 id="projectcontour.io/v1.Route">Route 2156 </h3> 2157 <p> 2158 (<em>Appears on:</em> 2159 <a href="#projectcontour.io/v1.HTTPProxySpec">HTTPProxySpec</a>) 2160 </p> 2161 <p> 2162 <p>Route contains the set of routes for a virtual host.</p> 2163 </p> 2164 <table class="table table-striped table-borderless" style="border:none"> 2165 <thead class="border-bottom"> 2166 <tr> 2167 <th>Field</th> 2168 <th>Description</th> 2169 </tr> 2170 </thead> 2171 <tbody class="border-top"> 2172 <tr> 2173 <td style="white-space:nowrap"> 2174 <code>conditions</code> 2175 <br> 2176 <em> 2177 <a href="#projectcontour.io/v1.MatchCondition"> 2178 []MatchCondition 2179 </a> 2180 </em> 2181 </td> 2182 <td> 2183 <em>(Optional)</em> 2184 <p>Conditions are a set of rules that are applied to a Route. 2185 When applied, they are merged using AND, with one exception: 2186 There can be only one Prefix MatchCondition per Conditions slice. 2187 More than one Prefix, or contradictory Conditions, will make the 2188 route invalid.</p> 2189 </td> 2190 </tr> 2191 <tr> 2192 <td style="white-space:nowrap"> 2193 <code>services</code> 2194 <br> 2195 <em> 2196 <a href="#projectcontour.io/v1.Service"> 2197 []Service 2198 </a> 2199 </em> 2200 </td> 2201 <td> 2202 <p>Services are the services to proxy traffic.</p> 2203 </td> 2204 </tr> 2205 <tr> 2206 <td style="white-space:nowrap"> 2207 <code>enableWebsockets</code> 2208 <br> 2209 <em> 2210 bool 2211 </em> 2212 </td> 2213 <td> 2214 <em>(Optional)</em> 2215 <p>Enables websocket support for the route.</p> 2216 </td> 2217 </tr> 2218 <tr> 2219 <td style="white-space:nowrap"> 2220 <code>permitInsecure</code> 2221 <br> 2222 <em> 2223 bool 2224 </em> 2225 </td> 2226 <td> 2227 <em>(Optional)</em> 2228 <p>Allow this path to respond to insecure requests over HTTP which are normally 2229 not permitted when a <code>virtualhost.tls</code> block is present.</p> 2230 </td> 2231 </tr> 2232 <tr> 2233 <td style="white-space:nowrap"> 2234 <code>authPolicy</code> 2235 <br> 2236 <em> 2237 <a href="#projectcontour.io/v1.AuthorizationPolicy"> 2238 AuthorizationPolicy 2239 </a> 2240 </em> 2241 </td> 2242 <td> 2243 <em>(Optional)</em> 2244 <p>AuthPolicy updates the authorization policy that was set 2245 on the root HTTPProxy object for client requests that 2246 match this route.</p> 2247 </td> 2248 </tr> 2249 <tr> 2250 <td style="white-space:nowrap"> 2251 <code>timeoutPolicy</code> 2252 <br> 2253 <em> 2254 <a href="#projectcontour.io/v1.TimeoutPolicy"> 2255 TimeoutPolicy 2256 </a> 2257 </em> 2258 </td> 2259 <td> 2260 <em>(Optional)</em> 2261 <p>The timeout policy for this route.</p> 2262 </td> 2263 </tr> 2264 <tr> 2265 <td style="white-space:nowrap"> 2266 <code>retryPolicy</code> 2267 <br> 2268 <em> 2269 <a href="#projectcontour.io/v1.RetryPolicy"> 2270 RetryPolicy 2271 </a> 2272 </em> 2273 </td> 2274 <td> 2275 <em>(Optional)</em> 2276 <p>The retry policy for this route.</p> 2277 </td> 2278 </tr> 2279 <tr> 2280 <td style="white-space:nowrap"> 2281 <code>healthCheckPolicy</code> 2282 <br> 2283 <em> 2284 <a href="#projectcontour.io/v1.HTTPHealthCheckPolicy"> 2285 HTTPHealthCheckPolicy 2286 </a> 2287 </em> 2288 </td> 2289 <td> 2290 <em>(Optional)</em> 2291 <p>The health check policy for this route.</p> 2292 </td> 2293 </tr> 2294 <tr> 2295 <td style="white-space:nowrap"> 2296 <code>loadBalancerPolicy</code> 2297 <br> 2298 <em> 2299 <a href="#projectcontour.io/v1.LoadBalancerPolicy"> 2300 LoadBalancerPolicy 2301 </a> 2302 </em> 2303 </td> 2304 <td> 2305 <em>(Optional)</em> 2306 <p>The load balancing policy for this route.</p> 2307 </td> 2308 </tr> 2309 <tr> 2310 <td style="white-space:nowrap"> 2311 <code>pathRewritePolicy</code> 2312 <br> 2313 <em> 2314 <a href="#projectcontour.io/v1.PathRewritePolicy"> 2315 PathRewritePolicy 2316 </a> 2317 </em> 2318 </td> 2319 <td> 2320 <em>(Optional)</em> 2321 <p>The policy for rewriting the path of the request URL 2322 after the request has been routed to a Service.</p> 2323 </td> 2324 </tr> 2325 <tr> 2326 <td style="white-space:nowrap"> 2327 <code>requestHeadersPolicy</code> 2328 <br> 2329 <em> 2330 <a href="#projectcontour.io/v1.HeadersPolicy"> 2331 HeadersPolicy 2332 </a> 2333 </em> 2334 </td> 2335 <td> 2336 <em>(Optional)</em> 2337 <p>The policy for managing request headers during proxying.</p> 2338 </td> 2339 </tr> 2340 <tr> 2341 <td style="white-space:nowrap"> 2342 <code>responseHeadersPolicy</code> 2343 <br> 2344 <em> 2345 <a href="#projectcontour.io/v1.HeadersPolicy"> 2346 HeadersPolicy 2347 </a> 2348 </em> 2349 </td> 2350 <td> 2351 <em>(Optional)</em> 2352 <p>The policy for managing response headers during proxying. 2353 Rewriting the ‘Host’ header is not supported.</p> 2354 </td> 2355 </tr> 2356 <tr> 2357 <td style="white-space:nowrap"> 2358 <code>rateLimitPolicy</code> 2359 <br> 2360 <em> 2361 <a href="#projectcontour.io/v1.RateLimitPolicy"> 2362 RateLimitPolicy 2363 </a> 2364 </em> 2365 </td> 2366 <td> 2367 <em>(Optional)</em> 2368 <p>The policy for rate limiting on the route.</p> 2369 </td> 2370 </tr> 2371 </tbody> 2372 </table> 2373 <h3 id="projectcontour.io/v1.Service">Service 2374 </h3> 2375 <p> 2376 (<em>Appears on:</em> 2377 <a href="#projectcontour.io/v1.Route">Route</a>, 2378 <a href="#projectcontour.io/v1.TCPProxy">TCPProxy</a>) 2379 </p> 2380 <p> 2381 <p>Service defines an Kubernetes Service to proxy traffic.</p> 2382 </p> 2383 <table class="table table-striped table-borderless" style="border:none"> 2384 <thead class="border-bottom"> 2385 <tr> 2386 <th>Field</th> 2387 <th>Description</th> 2388 </tr> 2389 </thead> 2390 <tbody class="border-top"> 2391 <tr> 2392 <td style="white-space:nowrap"> 2393 <code>name</code> 2394 <br> 2395 <em> 2396 string 2397 </em> 2398 </td> 2399 <td> 2400 <p>Name is the name of Kubernetes service to proxy traffic. 2401 Names defined here will be used to look up corresponding endpoints which contain the ips to route.</p> 2402 </td> 2403 </tr> 2404 <tr> 2405 <td style="white-space:nowrap"> 2406 <code>port</code> 2407 <br> 2408 <em> 2409 int 2410 </em> 2411 </td> 2412 <td> 2413 <p>Port (defined as Integer) to proxy traffic to since a service can have multiple defined.</p> 2414 </td> 2415 </tr> 2416 <tr> 2417 <td style="white-space:nowrap"> 2418 <code>protocol</code> 2419 <br> 2420 <em> 2421 string 2422 </em> 2423 </td> 2424 <td> 2425 <em>(Optional)</em> 2426 <p>Protocol may be used to specify (or override) the protocol used to reach this Service. 2427 Values may be tls, h2, h2c. If omitted, protocol-selection falls back on Service annotations.</p> 2428 </td> 2429 </tr> 2430 <tr> 2431 <td style="white-space:nowrap"> 2432 <code>weight</code> 2433 <br> 2434 <em> 2435 int64 2436 </em> 2437 </td> 2438 <td> 2439 <em>(Optional)</em> 2440 <p>Weight defines percentage of traffic to balance traffic</p> 2441 </td> 2442 </tr> 2443 <tr> 2444 <td style="white-space:nowrap"> 2445 <code>validation</code> 2446 <br> 2447 <em> 2448 <a href="#projectcontour.io/v1.UpstreamValidation"> 2449 UpstreamValidation 2450 </a> 2451 </em> 2452 </td> 2453 <td> 2454 <em>(Optional)</em> 2455 <p>UpstreamValidation defines how to verify the backend service’s certificate</p> 2456 </td> 2457 </tr> 2458 <tr> 2459 <td style="white-space:nowrap"> 2460 <code>mirror</code> 2461 <br> 2462 <em> 2463 bool 2464 </em> 2465 </td> 2466 <td> 2467 <p>If Mirror is true the Service will receive a read only mirror of the traffic for this route.</p> 2468 </td> 2469 </tr> 2470 <tr> 2471 <td style="white-space:nowrap"> 2472 <code>requestHeadersPolicy</code> 2473 <br> 2474 <em> 2475 <a href="#projectcontour.io/v1.HeadersPolicy"> 2476 HeadersPolicy 2477 </a> 2478 </em> 2479 </td> 2480 <td> 2481 <em>(Optional)</em> 2482 <p>The policy for managing request headers during proxying. 2483 Rewriting the ‘Host’ header is not supported.</p> 2484 </td> 2485 </tr> 2486 <tr> 2487 <td style="white-space:nowrap"> 2488 <code>responseHeadersPolicy</code> 2489 <br> 2490 <em> 2491 <a href="#projectcontour.io/v1.HeadersPolicy"> 2492 HeadersPolicy 2493 </a> 2494 </em> 2495 </td> 2496 <td> 2497 <em>(Optional)</em> 2498 <p>The policy for managing response headers during proxying. 2499 Rewriting the ‘Host’ header is not supported.</p> 2500 </td> 2501 </tr> 2502 </tbody> 2503 </table> 2504 <h3 id="projectcontour.io/v1.SubCondition">SubCondition 2505 </h3> 2506 <p> 2507 (<em>Appears on:</em> 2508 <a href="#projectcontour.io/v1.DetailedCondition">DetailedCondition</a>) 2509 </p> 2510 <p> 2511 <p>SubCondition is a Condition-like type intended for use as a subcondition inside a DetailedCondition.</p> 2512 <p>It contains a subset of the Condition fields.</p> 2513 <p>It is intended for warnings and errors, so <code>type</code> names should use abnormal-true polarity, 2514 that is, they should be of the form “ErrorPresent: true”.</p> 2515 <p>The expected lifecycle for these errors is that they should only be present when the error or warning is, 2516 and should be removed when they are not relevant.</p> 2517 </p> 2518 <table class="table table-striped table-borderless" style="border:none"> 2519 <thead class="border-bottom"> 2520 <tr> 2521 <th>Field</th> 2522 <th>Description</th> 2523 </tr> 2524 </thead> 2525 <tbody class="border-top"> 2526 <tr> 2527 <td style="white-space:nowrap"> 2528 <code>type</code> 2529 <br> 2530 <em> 2531 string 2532 </em> 2533 </td> 2534 <td> 2535 <p>Type of condition in <code>CamelCase</code> or in <code>foo.example.com/CamelCase</code>.</p> 2536 <p>This must be in abnormal-true polarity, that is, <code>ErrorFound</code> or <code>controller.io/ErrorFound</code>.</p> 2537 <p>The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)</p> 2538 </td> 2539 </tr> 2540 <tr> 2541 <td style="white-space:nowrap"> 2542 <code>status</code> 2543 <br> 2544 <em> 2545 <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#conditionstatus-v1-meta"> 2546 Kubernetes meta/v1.ConditionStatus 2547 </a> 2548 </em> 2549 </td> 2550 <td> 2551 <p>Status of the condition, one of True, False, Unknown.</p> 2552 </td> 2553 </tr> 2554 <tr> 2555 <td style="white-space:nowrap"> 2556 <code>reason</code> 2557 <br> 2558 <em> 2559 string 2560 </em> 2561 </td> 2562 <td> 2563 <p>Reason contains a programmatic identifier indicating the reason for the condition’s last transition. 2564 Producers of specific condition types may define expected values and meanings for this field, 2565 and whether the values are considered a guaranteed API.</p> 2566 <p>The value should be a CamelCase string.</p> 2567 <p>This field may not be empty.</p> 2568 </td> 2569 </tr> 2570 <tr> 2571 <td style="white-space:nowrap"> 2572 <code>message</code> 2573 <br> 2574 <em> 2575 string 2576 </em> 2577 </td> 2578 <td> 2579 <p>Message is a human readable message indicating details about the transition.</p> 2580 <p>This may be an empty string.</p> 2581 </td> 2582 </tr> 2583 </tbody> 2584 </table> 2585 <h3 id="projectcontour.io/v1.TCPHealthCheckPolicy">TCPHealthCheckPolicy 2586 </h3> 2587 <p> 2588 (<em>Appears on:</em> 2589 <a href="#projectcontour.io/v1.TCPProxy">TCPProxy</a>) 2590 </p> 2591 <p> 2592 <p>TCPHealthCheckPolicy defines health checks on the upstream service.</p> 2593 </p> 2594 <table class="table table-striped table-borderless" style="border:none"> 2595 <thead class="border-bottom"> 2596 <tr> 2597 <th>Field</th> 2598 <th>Description</th> 2599 </tr> 2600 </thead> 2601 <tbody class="border-top"> 2602 <tr> 2603 <td style="white-space:nowrap"> 2604 <code>intervalSeconds</code> 2605 <br> 2606 <em> 2607 int64 2608 </em> 2609 </td> 2610 <td> 2611 <em>(Optional)</em> 2612 <p>The interval (seconds) between health checks</p> 2613 </td> 2614 </tr> 2615 <tr> 2616 <td style="white-space:nowrap"> 2617 <code>timeoutSeconds</code> 2618 <br> 2619 <em> 2620 int64 2621 </em> 2622 </td> 2623 <td> 2624 <em>(Optional)</em> 2625 <p>The time to wait (seconds) for a health check response</p> 2626 </td> 2627 </tr> 2628 <tr> 2629 <td style="white-space:nowrap"> 2630 <code>unhealthyThresholdCount</code> 2631 <br> 2632 <em> 2633 uint32 2634 </em> 2635 </td> 2636 <td> 2637 <em>(Optional)</em> 2638 <p>The number of unhealthy health checks required before a host is marked unhealthy</p> 2639 </td> 2640 </tr> 2641 <tr> 2642 <td style="white-space:nowrap"> 2643 <code>healthyThresholdCount</code> 2644 <br> 2645 <em> 2646 uint32 2647 </em> 2648 </td> 2649 <td> 2650 <em>(Optional)</em> 2651 <p>The number of healthy health checks required before a host is marked healthy</p> 2652 </td> 2653 </tr> 2654 </tbody> 2655 </table> 2656 <h3 id="projectcontour.io/v1.TCPProxy">TCPProxy 2657 </h3> 2658 <p> 2659 (<em>Appears on:</em> 2660 <a href="#projectcontour.io/v1.HTTPProxySpec">HTTPProxySpec</a>) 2661 </p> 2662 <p> 2663 <p>TCPProxy contains the set of services to proxy TCP connections.</p> 2664 </p> 2665 <table class="table table-striped table-borderless" style="border:none"> 2666 <thead class="border-bottom"> 2667 <tr> 2668 <th>Field</th> 2669 <th>Description</th> 2670 </tr> 2671 </thead> 2672 <tbody class="border-top"> 2673 <tr> 2674 <td style="white-space:nowrap"> 2675 <code>loadBalancerPolicy</code> 2676 <br> 2677 <em> 2678 <a href="#projectcontour.io/v1.LoadBalancerPolicy"> 2679 LoadBalancerPolicy 2680 </a> 2681 </em> 2682 </td> 2683 <td> 2684 <em>(Optional)</em> 2685 <p>The load balancing policy for the backend services. Note that the 2686 <code>Cookie</code> and <code>RequestHash</code> load balancing strategies cannot be used 2687 here.</p> 2688 </td> 2689 </tr> 2690 <tr> 2691 <td style="white-space:nowrap"> 2692 <code>services</code> 2693 <br> 2694 <em> 2695 <a href="#projectcontour.io/v1.Service"> 2696 []Service 2697 </a> 2698 </em> 2699 </td> 2700 <td> 2701 <em>(Optional)</em> 2702 <p>Services are the services to proxy traffic</p> 2703 </td> 2704 </tr> 2705 <tr> 2706 <td style="white-space:nowrap"> 2707 <code>include</code> 2708 <br> 2709 <em> 2710 <a href="#projectcontour.io/v1.TCPProxyInclude"> 2711 TCPProxyInclude 2712 </a> 2713 </em> 2714 </td> 2715 <td> 2716 <em>(Optional)</em> 2717 <p>Include specifies that this tcpproxy should be delegated to another HTTPProxy.</p> 2718 </td> 2719 </tr> 2720 <tr> 2721 <td style="white-space:nowrap"> 2722 <code>includes</code> 2723 <br> 2724 <em> 2725 <a href="#projectcontour.io/v1.TCPProxyInclude"> 2726 TCPProxyInclude 2727 </a> 2728 </em> 2729 </td> 2730 <td> 2731 <em>(Optional)</em> 2732 <p>IncludesDeprecated allow for specific routing configuration to be appended to another HTTPProxy in another namespace.</p> 2733 <p>Exists due to a mistake when developing HTTPProxy and the field was marked plural 2734 when it should have been singular. This field should stay to not break backwards compatibility to v1 users.</p> 2735 </td> 2736 </tr> 2737 <tr> 2738 <td style="white-space:nowrap"> 2739 <code>healthCheckPolicy</code> 2740 <br> 2741 <em> 2742 <a href="#projectcontour.io/v1.TCPHealthCheckPolicy"> 2743 TCPHealthCheckPolicy 2744 </a> 2745 </em> 2746 </td> 2747 <td> 2748 <em>(Optional)</em> 2749 <p>The health check policy for this tcp proxy</p> 2750 </td> 2751 </tr> 2752 </tbody> 2753 </table> 2754 <h3 id="projectcontour.io/v1.TCPProxyInclude">TCPProxyInclude 2755 </h3> 2756 <p> 2757 (<em>Appears on:</em> 2758 <a href="#projectcontour.io/v1.TCPProxy">TCPProxy</a>) 2759 </p> 2760 <p> 2761 <p>TCPProxyInclude describes a target HTTPProxy document which contains the TCPProxy details.</p> 2762 </p> 2763 <table class="table table-striped table-borderless" style="border:none"> 2764 <thead class="border-bottom"> 2765 <tr> 2766 <th>Field</th> 2767 <th>Description</th> 2768 </tr> 2769 </thead> 2770 <tbody class="border-top"> 2771 <tr> 2772 <td style="white-space:nowrap"> 2773 <code>name</code> 2774 <br> 2775 <em> 2776 string 2777 </em> 2778 </td> 2779 <td> 2780 <p>Name of the child HTTPProxy</p> 2781 </td> 2782 </tr> 2783 <tr> 2784 <td style="white-space:nowrap"> 2785 <code>namespace</code> 2786 <br> 2787 <em> 2788 string 2789 </em> 2790 </td> 2791 <td> 2792 <em>(Optional)</em> 2793 <p>Namespace of the HTTPProxy to include. Defaults to the current namespace if not supplied.</p> 2794 </td> 2795 </tr> 2796 </tbody> 2797 </table> 2798 <h3 id="projectcontour.io/v1.TLS">TLS 2799 </h3> 2800 <p> 2801 (<em>Appears on:</em> 2802 <a href="#projectcontour.io/v1.VirtualHost">VirtualHost</a>) 2803 </p> 2804 <p> 2805 <p>TLS describes tls properties. The SNI names that will be matched on 2806 are described in the HTTPProxy’s Spec.VirtualHost.Fqdn field.</p> 2807 </p> 2808 <table class="table table-striped table-borderless" style="border:none"> 2809 <thead class="border-bottom"> 2810 <tr> 2811 <th>Field</th> 2812 <th>Description</th> 2813 </tr> 2814 </thead> 2815 <tbody class="border-top"> 2816 <tr> 2817 <td style="white-space:nowrap"> 2818 <code>secretName</code> 2819 <br> 2820 <em> 2821 string 2822 </em> 2823 </td> 2824 <td> 2825 <p>SecretName is the name of a TLS secret in the current namespace. 2826 Either SecretName or Passthrough must be specified, but not both. 2827 If specified, the named secret must contain a matching certificate 2828 for the virtual host’s FQDN.</p> 2829 </td> 2830 </tr> 2831 <tr> 2832 <td style="white-space:nowrap"> 2833 <code>minimumProtocolVersion</code> 2834 <br> 2835 <em> 2836 string 2837 </em> 2838 </td> 2839 <td> 2840 <em>(Optional)</em> 2841 <p>MinimumProtocolVersion is the minimum TLS version this vhost should 2842 negotiate. Valid options are <code>1.2</code> (default) and <code>1.3</code>. Any other value 2843 defaults to TLS 1.2.</p> 2844 </td> 2845 </tr> 2846 <tr> 2847 <td style="white-space:nowrap"> 2848 <code>passthrough</code> 2849 <br> 2850 <em> 2851 bool 2852 </em> 2853 </td> 2854 <td> 2855 <em>(Optional)</em> 2856 <p>Passthrough defines whether the encrypted TLS handshake will be 2857 passed through to the backing cluster. Either Passthrough or 2858 SecretName must be specified, but not both.</p> 2859 </td> 2860 </tr> 2861 <tr> 2862 <td style="white-space:nowrap"> 2863 <code>clientValidation</code> 2864 <br> 2865 <em> 2866 <a href="#projectcontour.io/v1.DownstreamValidation"> 2867 DownstreamValidation 2868 </a> 2869 </em> 2870 </td> 2871 <td> 2872 <em>(Optional)</em> 2873 <p>ClientValidation defines how to verify the client certificate 2874 when an external client establishes a TLS connection to Envoy.</p> 2875 <p>This setting:</p> 2876 <ol> 2877 <li>Enables TLS client certificate validation.</li> 2878 <li>Specifies how the client certificate will be validated (i.e. 2879 validation required or skipped).</li> 2880 </ol> 2881 <p>Note: Setting client certificate validation to be skipped should 2882 be only used in conjunction with an external authorization server that 2883 performs client validation as Contour will ensure client certificates 2884 are passed along.</p> 2885 </td> 2886 </tr> 2887 <tr> 2888 <td style="white-space:nowrap"> 2889 <code>enableFallbackCertificate</code> 2890 <br> 2891 <em> 2892 bool 2893 </em> 2894 </td> 2895 <td> 2896 <p>EnableFallbackCertificate defines if the vhost should allow a default certificate to 2897 be applied which handles all requests which don’t match the SNI defined in this vhost.</p> 2898 </td> 2899 </tr> 2900 </tbody> 2901 </table> 2902 <h3 id="projectcontour.io/v1.TLSCertificateDelegationSpec">TLSCertificateDelegationSpec 2903 </h3> 2904 <p> 2905 (<em>Appears on:</em> 2906 <a href="#projectcontour.io/v1.TLSCertificateDelegation">TLSCertificateDelegation</a>) 2907 </p> 2908 <p> 2909 <p>TLSCertificateDelegationSpec defines the spec of the CRD</p> 2910 </p> 2911 <table class="table table-striped table-borderless" style="border:none"> 2912 <thead class="border-bottom"> 2913 <tr> 2914 <th>Field</th> 2915 <th>Description</th> 2916 </tr> 2917 </thead> 2918 <tbody class="border-top"> 2919 <tr> 2920 <td style="white-space:nowrap"> 2921 <code>delegations</code> 2922 <br> 2923 <em> 2924 <a href="#projectcontour.io/v1.CertificateDelegation"> 2925 []CertificateDelegation 2926 </a> 2927 </em> 2928 </td> 2929 <td> 2930 </td> 2931 </tr> 2932 </tbody> 2933 </table> 2934 <h3 id="projectcontour.io/v1.TLSCertificateDelegationStatus">TLSCertificateDelegationStatus 2935 </h3> 2936 <p> 2937 (<em>Appears on:</em> 2938 <a href="#projectcontour.io/v1.TLSCertificateDelegation">TLSCertificateDelegation</a>) 2939 </p> 2940 <p> 2941 <p>TLSCertificateDelegationStatus allows for the status of the delegation 2942 to be presented to the user.</p> 2943 </p> 2944 <table class="table table-striped table-borderless" style="border:none"> 2945 <thead class="border-bottom"> 2946 <tr> 2947 <th>Field</th> 2948 <th>Description</th> 2949 </tr> 2950 </thead> 2951 <tbody class="border-top"> 2952 <tr> 2953 <td style="white-space:nowrap"> 2954 <code>conditions</code> 2955 <br> 2956 <em> 2957 <a href="#projectcontour.io/v1.DetailedCondition"> 2958 []DetailedCondition 2959 </a> 2960 </em> 2961 </td> 2962 <td> 2963 <em>(Optional)</em> 2964 <p>Conditions contains information about the current status of the HTTPProxy, 2965 in an upstream-friendly container.</p> 2966 <p>Contour will update a single condition, <code>Valid</code>, that is in normal-true polarity. 2967 That is, when <code>currentStatus</code> is <code>valid</code>, the <code>Valid</code> condition will be <code>status: true</code>, 2968 and vice versa.</p> 2969 <p>Contour will leave untouched any other Conditions set in this block, 2970 in case some other controller wants to add a Condition.</p> 2971 <p>If you are another controller owner and wish to add a condition, you <em>should</em> 2972 namespace your condition with a label, like <code>controller.domain.com\ConditionName</code>.</p> 2973 </td> 2974 </tr> 2975 </tbody> 2976 </table> 2977 <h3 id="projectcontour.io/v1.TimeoutPolicy">TimeoutPolicy 2978 </h3> 2979 <p> 2980 (<em>Appears on:</em> 2981 <a href="#projectcontour.io/v1.Route">Route</a>, 2982 <a href="#projectcontour.io/v1alpha1.ExtensionServiceSpec">ExtensionServiceSpec</a>) 2983 </p> 2984 <p> 2985 <p>TimeoutPolicy configures timeouts that are used for handling network requests.</p> 2986 <p>TimeoutPolicy durations are expressed in the Go <a href="https://godoc.org/time#ParseDuration">Duration format</a>. 2987 Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”. 2988 The string “infinity” is also a valid input and specifies no timeout. 2989 A value of “0s” will be treated as if the field were not set, i.e. by using Envoy’s default behavior.</p> 2990 <p>Example input values: “300ms”, “5s”, “1m”.</p> 2991 </p> 2992 <table class="table table-striped table-borderless" style="border:none"> 2993 <thead class="border-bottom"> 2994 <tr> 2995 <th>Field</th> 2996 <th>Description</th> 2997 </tr> 2998 </thead> 2999 <tbody class="border-top"> 3000 <tr> 3001 <td style="white-space:nowrap"> 3002 <code>response</code> 3003 <br> 3004 <em> 3005 string 3006 </em> 3007 </td> 3008 <td> 3009 <em>(Optional)</em> 3010 <p>Timeout for receiving a response from the server after processing a request from client. 3011 If not supplied, Envoy’s default value of 15s applies.</p> 3012 </td> 3013 </tr> 3014 <tr> 3015 <td style="white-space:nowrap"> 3016 <code>idle</code> 3017 <br> 3018 <em> 3019 string 3020 </em> 3021 </td> 3022 <td> 3023 <em>(Optional)</em> 3024 <p>Timeout after which, if there are no active requests for this route, the connection between 3025 Envoy and the backend or Envoy and the external client will be closed. 3026 If not specified, there is no per-route idle timeout, though a connection manager-wide 3027 stream_idle_timeout default of 5m still applies.</p> 3028 </td> 3029 </tr> 3030 </tbody> 3031 </table> 3032 <h3 id="projectcontour.io/v1.UpstreamValidation">UpstreamValidation 3033 </h3> 3034 <p> 3035 (<em>Appears on:</em> 3036 <a href="#projectcontour.io/v1.Service">Service</a>, 3037 <a href="#projectcontour.io/v1alpha1.ExtensionServiceSpec">ExtensionServiceSpec</a>) 3038 </p> 3039 <p> 3040 <p>UpstreamValidation defines how to verify the backend service’s certificate</p> 3041 </p> 3042 <table class="table table-striped table-borderless" style="border:none"> 3043 <thead class="border-bottom"> 3044 <tr> 3045 <th>Field</th> 3046 <th>Description</th> 3047 </tr> 3048 </thead> 3049 <tbody class="border-top"> 3050 <tr> 3051 <td style="white-space:nowrap"> 3052 <code>caSecret</code> 3053 <br> 3054 <em> 3055 string 3056 </em> 3057 </td> 3058 <td> 3059 <p>Name of the Kubernetes secret be used to validate the certificate presented by the backend</p> 3060 </td> 3061 </tr> 3062 <tr> 3063 <td style="white-space:nowrap"> 3064 <code>subjectName</code> 3065 <br> 3066 <em> 3067 string 3068 </em> 3069 </td> 3070 <td> 3071 <p>Key which is expected to be present in the ‘subjectAltName’ of the presented certificate</p> 3072 </td> 3073 </tr> 3074 </tbody> 3075 </table> 3076 <h3 id="projectcontour.io/v1.VirtualHost">VirtualHost 3077 </h3> 3078 <p> 3079 (<em>Appears on:</em> 3080 <a href="#projectcontour.io/v1.HTTPProxySpec">HTTPProxySpec</a>) 3081 </p> 3082 <p> 3083 <p>VirtualHost appears at most once. If it is present, the object is considered 3084 to be a “root”.</p> 3085 </p> 3086 <table class="table table-striped table-borderless" style="border:none"> 3087 <thead class="border-bottom"> 3088 <tr> 3089 <th>Field</th> 3090 <th>Description</th> 3091 </tr> 3092 </thead> 3093 <tbody class="border-top"> 3094 <tr> 3095 <td style="white-space:nowrap"> 3096 <code>fqdn</code> 3097 <br> 3098 <em> 3099 string 3100 </em> 3101 </td> 3102 <td> 3103 <p>The fully qualified domain name of the root of the ingress tree 3104 all leaves of the DAG rooted at this object relate to the fqdn.</p> 3105 </td> 3106 </tr> 3107 <tr> 3108 <td style="white-space:nowrap"> 3109 <code>tls</code> 3110 <br> 3111 <em> 3112 <a href="#projectcontour.io/v1.TLS"> 3113 TLS 3114 </a> 3115 </em> 3116 </td> 3117 <td> 3118 <em>(Optional)</em> 3119 <p>If present the fields describes TLS properties of the virtual 3120 host. The SNI names that will be matched on are described in fqdn, 3121 the tls.secretName secret must contain a certificate that itself 3122 contains a name that matches the FQDN.</p> 3123 </td> 3124 </tr> 3125 <tr> 3126 <td style="white-space:nowrap"> 3127 <code>authorization</code> 3128 <br> 3129 <em> 3130 <a href="#projectcontour.io/v1.AuthorizationServer"> 3131 AuthorizationServer 3132 </a> 3133 </em> 3134 </td> 3135 <td> 3136 <em>(Optional)</em> 3137 <p>This field configures an extension service to perform 3138 authorization for this virtual host. Authorization can 3139 only be configured on virtual hosts that have TLS enabled. 3140 If the TLS configuration requires client certificate 3141 validation, the client certificate is always included in the 3142 authentication check request.</p> 3143 </td> 3144 </tr> 3145 <tr> 3146 <td style="white-space:nowrap"> 3147 <code>corsPolicy</code> 3148 <br> 3149 <em> 3150 <a href="#projectcontour.io/v1.CORSPolicy"> 3151 CORSPolicy 3152 </a> 3153 </em> 3154 </td> 3155 <td> 3156 <em>(Optional)</em> 3157 <p>Specifies the cross-origin policy to apply to the VirtualHost.</p> 3158 </td> 3159 </tr> 3160 <tr> 3161 <td style="white-space:nowrap"> 3162 <code>rateLimitPolicy</code> 3163 <br> 3164 <em> 3165 <a href="#projectcontour.io/v1.RateLimitPolicy"> 3166 RateLimitPolicy 3167 </a> 3168 </em> 3169 </td> 3170 <td> 3171 <em>(Optional)</em> 3172 <p>The policy for rate limiting on the virtual host.</p> 3173 </td> 3174 </tr> 3175 </tbody> 3176 </table> 3177 <hr/> 3178 <h2 id="projectcontour.io/v1alpha1">projectcontour.io/v1alpha1</h2> 3179 <p> 3180 <p>Package v1alpha1 contains API Schema definitions for the projectcontour.io v1alpha1 API group</p> 3181 </p> 3182 Resource Types: 3183 <ul><li> 3184 <a href="#projectcontour.io/v1alpha1.ExtensionService">ExtensionService</a> 3185 </li></ul> 3186 <h3 id="projectcontour.io/v1alpha1.ExtensionService">ExtensionService 3187 </h3> 3188 <p> 3189 <p>ExtensionService is the schema for the Contour extension services API. 3190 An ExtensionService resource binds a network service to the Contour 3191 API so that Contour API features can be implemented by collaborating 3192 components.</p> 3193 </p> 3194 <table class="table table-striped table-borderless" style="border:none"> 3195 <thead class="border-bottom"> 3196 <tr> 3197 <th>Field</th> 3198 <th>Description</th> 3199 </tr> 3200 </thead> 3201 <tbody class="border-top"> 3202 <tr> 3203 <td> 3204 <code>apiVersion</code> 3205 <br> 3206 string</td> 3207 <td> 3208 <code> 3209 projectcontour.io/v1alpha1 3210 </code> 3211 </td> 3212 </tr> 3213 <tr> 3214 <td> 3215 <code>kind</code> 3216 <br> 3217 string 3218 </td> 3219 <td><code>ExtensionService</code></td> 3220 </tr> 3221 <tr> 3222 <td style="white-space:nowrap"> 3223 <code>metadata</code> 3224 <br> 3225 <em> 3226 <a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#objectmeta-v1-meta"> 3227 Kubernetes meta/v1.ObjectMeta 3228 </a> 3229 </em> 3230 </td> 3231 <td> 3232 Refer to the Kubernetes API documentation for the fields of the 3233 <code>metadata</code> field. 3234 </td> 3235 </tr> 3236 <tr> 3237 <td style="white-space:nowrap"> 3238 <code>spec</code> 3239 <br> 3240 <em> 3241 <a href="#projectcontour.io/v1alpha1.ExtensionServiceSpec"> 3242 ExtensionServiceSpec 3243 </a> 3244 </em> 3245 </td> 3246 <td> 3247 <br> 3248 <br> 3249 <table style="border:none"> 3250 <tr> 3251 <td style="white-space:nowrap"> 3252 <code>services</code> 3253 <br> 3254 <em> 3255 <a href="#projectcontour.io/v1alpha1.ExtensionServiceTarget"> 3256 []ExtensionServiceTarget 3257 </a> 3258 </em> 3259 </td> 3260 <td> 3261 <p>Services specifies the set of Kubernetes Service resources that 3262 receive GRPC extension API requests. 3263 If no weights are specified for any of the entries in 3264 this array, traffic will be spread evenly across all the 3265 services. 3266 Otherwise, traffic is balanced proportionally to the 3267 Weight field in each entry.</p> 3268 </td> 3269 </tr> 3270 <tr> 3271 <td style="white-space:nowrap"> 3272 <code>validation</code> 3273 <br> 3274 <em> 3275 <a href="#projectcontour.io/v1.UpstreamValidation"> 3276 UpstreamValidation 3277 </a> 3278 </em> 3279 </td> 3280 <td> 3281 <em>(Optional)</em> 3282 <p>UpstreamValidation defines how to verify the backend service’s certificate</p> 3283 </td> 3284 </tr> 3285 <tr> 3286 <td style="white-space:nowrap"> 3287 <code>protocol</code> 3288 <br> 3289 <em> 3290 string 3291 </em> 3292 </td> 3293 <td> 3294 <em>(Optional)</em> 3295 <p>Protocol may be used to specify (or override) the protocol used to reach this Service. 3296 Values may be h2 or h2c. If omitted, protocol-selection falls back on Service annotations.</p> 3297 </td> 3298 </tr> 3299 <tr> 3300 <td style="white-space:nowrap"> 3301 <code>loadBalancerPolicy</code> 3302 <br> 3303 <em> 3304 <a href="#projectcontour.io/v1.LoadBalancerPolicy"> 3305 LoadBalancerPolicy 3306 </a> 3307 </em> 3308 </td> 3309 <td> 3310 <em>(Optional)</em> 3311 <p>The policy for load balancing GRPC service requests. Note that the 3312 <code>Cookie</code> and <code>RequestHash</code> load balancing strategies cannot be used 3313 here.</p> 3314 </td> 3315 </tr> 3316 <tr> 3317 <td style="white-space:nowrap"> 3318 <code>timeoutPolicy</code> 3319 <br> 3320 <em> 3321 <a href="#projectcontour.io/v1.TimeoutPolicy"> 3322 TimeoutPolicy 3323 </a> 3324 </em> 3325 </td> 3326 <td> 3327 <em>(Optional)</em> 3328 <p>The timeout policy for requests to the services.</p> 3329 </td> 3330 </tr> 3331 <tr> 3332 <td style="white-space:nowrap"> 3333 <code>protocolVersion</code> 3334 <br> 3335 <em> 3336 <a href="#projectcontour.io/v1alpha1.ExtensionProtocolVersion"> 3337 ExtensionProtocolVersion 3338 </a> 3339 </em> 3340 </td> 3341 <td> 3342 <em>(Optional)</em> 3343 <p>This field sets the version of the GRPC protocol that Envoy uses to 3344 send requests to the extension service. Since Contour always uses the 3345 v3 Envoy API, this is currently fixed at “v3”. However, other 3346 protocol options will be available in future.</p> 3347 </td> 3348 </tr> 3349 </table> 3350 </td> 3351 </tr> 3352 <tr> 3353 <td style="white-space:nowrap"> 3354 <code>status</code> 3355 <br> 3356 <em> 3357 <a href="#projectcontour.io/v1alpha1.ExtensionServiceStatus"> 3358 ExtensionServiceStatus 3359 </a> 3360 </em> 3361 </td> 3362 <td> 3363 </td> 3364 </tr> 3365 </tbody> 3366 </table> 3367 <h3 id="projectcontour.io/v1alpha1.ExtensionProtocolVersion">ExtensionProtocolVersion 3368 (<code>string</code> alias)</h3> 3369 <p> 3370 (<em>Appears on:</em> 3371 <a href="#projectcontour.io/v1alpha1.ExtensionServiceSpec">ExtensionServiceSpec</a>) 3372 </p> 3373 <p> 3374 <p>ExtensionProtocolVersion is the version of the GRPC protocol used 3375 to access extension services. The only version currently supported 3376 is “v3”.</p> 3377 </p> 3378 <h3 id="projectcontour.io/v1alpha1.ExtensionServiceSpec">ExtensionServiceSpec 3379 </h3> 3380 <p> 3381 (<em>Appears on:</em> 3382 <a href="#projectcontour.io/v1alpha1.ExtensionService">ExtensionService</a>) 3383 </p> 3384 <p> 3385 <p>ExtensionServiceSpec defines the desired state of an ExtensionService resource.</p> 3386 </p> 3387 <table class="table table-striped table-borderless" style="border:none"> 3388 <thead class="border-bottom"> 3389 <tr> 3390 <th>Field</th> 3391 <th>Description</th> 3392 </tr> 3393 </thead> 3394 <tbody class="border-top"> 3395 <tr> 3396 <td style="white-space:nowrap"> 3397 <code>services</code> 3398 <br> 3399 <em> 3400 <a href="#projectcontour.io/v1alpha1.ExtensionServiceTarget"> 3401 []ExtensionServiceTarget 3402 </a> 3403 </em> 3404 </td> 3405 <td> 3406 <p>Services specifies the set of Kubernetes Service resources that 3407 receive GRPC extension API requests. 3408 If no weights are specified for any of the entries in 3409 this array, traffic will be spread evenly across all the 3410 services. 3411 Otherwise, traffic is balanced proportionally to the 3412 Weight field in each entry.</p> 3413 </td> 3414 </tr> 3415 <tr> 3416 <td style="white-space:nowrap"> 3417 <code>validation</code> 3418 <br> 3419 <em> 3420 <a href="#projectcontour.io/v1.UpstreamValidation"> 3421 UpstreamValidation 3422 </a> 3423 </em> 3424 </td> 3425 <td> 3426 <em>(Optional)</em> 3427 <p>UpstreamValidation defines how to verify the backend service’s certificate</p> 3428 </td> 3429 </tr> 3430 <tr> 3431 <td style="white-space:nowrap"> 3432 <code>protocol</code> 3433 <br> 3434 <em> 3435 string 3436 </em> 3437 </td> 3438 <td> 3439 <em>(Optional)</em> 3440 <p>Protocol may be used to specify (or override) the protocol used to reach this Service. 3441 Values may be h2 or h2c. If omitted, protocol-selection falls back on Service annotations.</p> 3442 </td> 3443 </tr> 3444 <tr> 3445 <td style="white-space:nowrap"> 3446 <code>loadBalancerPolicy</code> 3447 <br> 3448 <em> 3449 <a href="#projectcontour.io/v1.LoadBalancerPolicy"> 3450 LoadBalancerPolicy 3451 </a> 3452 </em> 3453 </td> 3454 <td> 3455 <em>(Optional)</em> 3456 <p>The policy for load balancing GRPC service requests. Note that the 3457 <code>Cookie</code> and <code>RequestHash</code> load balancing strategies cannot be used 3458 here.</p> 3459 </td> 3460 </tr> 3461 <tr> 3462 <td style="white-space:nowrap"> 3463 <code>timeoutPolicy</code> 3464 <br> 3465 <em> 3466 <a href="#projectcontour.io/v1.TimeoutPolicy"> 3467 TimeoutPolicy 3468 </a> 3469 </em> 3470 </td> 3471 <td> 3472 <em>(Optional)</em> 3473 <p>The timeout policy for requests to the services.</p> 3474 </td> 3475 </tr> 3476 <tr> 3477 <td style="white-space:nowrap"> 3478 <code>protocolVersion</code> 3479 <br> 3480 <em> 3481 <a href="#projectcontour.io/v1alpha1.ExtensionProtocolVersion"> 3482 ExtensionProtocolVersion 3483 </a> 3484 </em> 3485 </td> 3486 <td> 3487 <em>(Optional)</em> 3488 <p>This field sets the version of the GRPC protocol that Envoy uses to 3489 send requests to the extension service. Since Contour always uses the 3490 v3 Envoy API, this is currently fixed at “v3”. However, other 3491 protocol options will be available in future.</p> 3492 </td> 3493 </tr> 3494 </tbody> 3495 </table> 3496 <h3 id="projectcontour.io/v1alpha1.ExtensionServiceStatus">ExtensionServiceStatus 3497 </h3> 3498 <p> 3499 (<em>Appears on:</em> 3500 <a href="#projectcontour.io/v1alpha1.ExtensionService">ExtensionService</a>) 3501 </p> 3502 <p> 3503 <p>ExtensionServiceStatus defines the observed state of an 3504 ExtensionService resource.</p> 3505 </p> 3506 <table class="table table-striped table-borderless" style="border:none"> 3507 <thead class="border-bottom"> 3508 <tr> 3509 <th>Field</th> 3510 <th>Description</th> 3511 </tr> 3512 </thead> 3513 <tbody class="border-top"> 3514 <tr> 3515 <td style="white-space:nowrap"> 3516 <code>conditions</code> 3517 <br> 3518 <em> 3519 <a href="#projectcontour.io/v1.DetailedCondition"> 3520 []DetailedCondition 3521 </a> 3522 </em> 3523 </td> 3524 <td> 3525 <em>(Optional)</em> 3526 <p>Conditions contains the current status of the ExtensionService resource.</p> 3527 <p>Contour will update a single condition, <code>Valid</code>, that is in normal-true polarity.</p> 3528 <p>Contour will not modify any other Conditions set in this block, 3529 in case some other controller wants to add a Condition.</p> 3530 </td> 3531 </tr> 3532 </tbody> 3533 </table> 3534 <h3 id="projectcontour.io/v1alpha1.ExtensionServiceTarget">ExtensionServiceTarget 3535 </h3> 3536 <p> 3537 (<em>Appears on:</em> 3538 <a href="#projectcontour.io/v1alpha1.ExtensionServiceSpec">ExtensionServiceSpec</a>) 3539 </p> 3540 <p> 3541 <p>ExtensionServiceTarget defines an Kubernetes Service to target with 3542 extension service traffic.</p> 3543 </p> 3544 <table class="table table-striped table-borderless" style="border:none"> 3545 <thead class="border-bottom"> 3546 <tr> 3547 <th>Field</th> 3548 <th>Description</th> 3549 </tr> 3550 </thead> 3551 <tbody class="border-top"> 3552 <tr> 3553 <td style="white-space:nowrap"> 3554 <code>name</code> 3555 <br> 3556 <em> 3557 string 3558 </em> 3559 </td> 3560 <td> 3561 <p>Name is the name of Kubernetes service that will accept service 3562 traffic.</p> 3563 </td> 3564 </tr> 3565 <tr> 3566 <td style="white-space:nowrap"> 3567 <code>port</code> 3568 <br> 3569 <em> 3570 int 3571 </em> 3572 </td> 3573 <td> 3574 <p>Port (defined as Integer) to proxy traffic to since a service can have multiple defined.</p> 3575 </td> 3576 </tr> 3577 <tr> 3578 <td style="white-space:nowrap"> 3579 <code>weight</code> 3580 <br> 3581 <em> 3582 uint32 3583 </em> 3584 </td> 3585 <td> 3586 <em>(Optional)</em> 3587 <p>Weight defines proportion of traffic to balance to the Kubernetes Service.</p> 3588 </td> 3589 </tr> 3590 </tbody> 3591 </table> 3592 <hr/> 3593 <p><em> 3594 Generated with <code>gen-crd-api-reference-docs</code>. 3595 </em></p>