mmv1/products/apigee/TargetServer.yaml (147 lines of code) (raw):
# Copyright 2024 Google Inc.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
name: 'TargetServer'
description: |
TargetServer configuration. TargetServers are used to decouple a proxy TargetEndpoint HTTPTargetConnections from concrete URLs for backend services.
references:
guides:
'Load balancing across backend servers': 'https://cloud.google.com/apigee/docs/api-platform/deploy/load-balancing-across-backend-servers'
api: 'https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.environments.targetservers/create'
docs:
base_url: '{{env_id}}/targetservers'
self_link: '{{env_id}}/targetservers/{{name}}'
create_url: '{{env_id}}/targetservers'
update_url: '{{env_id}}/targetservers/{{name}}'
delete_url: '{{env_id}}/targetservers/{{name}}'
import_format:
- '{{env_id}}/targetservers/{{name}}'
- '{{env_id}}/{{name}}'
timeouts:
insert_minutes: 1
update_minutes: 1
delete_minutes: 1
autogen_async: true
custom_code:
custom_import: 'templates/terraform/custom_import/apigee_target_server.go.tmpl'
exclude_sweeper: true
examples:
- name: 'apigee_target_server_test_basic'
primary_resource_id: 'apigee_target_server'
vars:
project_id: 'my-project'
environment_name: 'my-environment-name'
target_server: 'my-target-server'
test_env_vars:
org_id: 'ORG_ID'
billing_account: 'BILLING_ACCT'
exclude_test: true
- name: 'apigee_target_server_test'
primary_resource_id: 'apigee_target_server'
test_env_vars:
org_id: 'ORG_ID'
billing_account: 'BILLING_ACCT'
exclude_docs: true
external_providers: ["time"]
parameters:
- name: 'envId'
type: String
description: |
The Apigee environment group associated with the Apigee environment,
in the format `organizations/{{org_name}}/environments/{{env_name}}`.
url_param_only: true
required: true
immutable: true
properties:
- name: 'name'
type: String
description: |
The resource id of this reference. Values must match the regular expression [\w\s-.]+.
required: true
immutable: true
- name: 'description'
type: String
description: |
A human-readable description of this TargetServer.
- name: 'host'
type: String
description: |
The host name this target connects to. Value must be a valid hostname as described by RFC-1123.
required: true
- name: 'port'
type: Integer
description: |
The port number this target connects to on the given host. Value must be between 1 and 65535, inclusive.
required: true
- name: 'isEnabled'
type: Boolean
description: |
Enabling/disabling a TargetServer is useful when TargetServers are used in load balancing configurations, and one or more TargetServers need to taken out of rotation periodically. Defaults to true.
default_value: true
- name: 'sSLInfo'
type: NestedObject
description: Specifies TLS configuration info for this TargetServer. The JSON name is sSLInfo for legacy/backwards compatibility reasons -- Edge originally supported SSL, and the name is still used for TLS configuration.
properties:
- name: 'enabled'
type: Boolean
description: |
Enables TLS. If false, neither one-way nor two-way TLS will be enabled.
required: true
- name: 'clientAuthEnabled'
type: Boolean
description: |
Enables two-way TLS.
- name: 'keyStore'
type: String
description: |
Required if clientAuthEnabled is true. The resource ID of the keystore.
- name: 'keyAlias'
type: String
description: |
Required if clientAuthEnabled is true. The resource ID for the alias containing the private key and cert.
- name: 'trustStore'
type: String
description: |
The resource ID of the truststore.
- name: 'ignoreValidationErrors'
type: Boolean
description: |
If true, Edge ignores TLS certificate errors. Valid when configuring TLS for target servers and target endpoints, and when configuring virtual hosts that use 2-way TLS. When used with a target endpoint/target server, if the backend system uses SNI and returns a cert with a subject Distinguished Name (DN) that does not match the hostname, there is no way to ignore the error and the connection fails.
- name: 'protocols'
type: Array
description: |
The TLS versioins to be used.
item_type:
type: String
- name: 'ciphers'
type: Array
description: |
The SSL/TLS cipher suites to be used. For programmable proxies, it must be one of the cipher suite names listed in: http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites. For configurable proxies, it must follow the configuration specified in: https://commondatastorage.googleapis.com/chromium-boringssl-docs/ssl.h.html#Cipher-suite-configuration. This setting has no effect for configurable proxies when negotiating TLS 1.3.
item_type:
type: String
- name: 'commonName'
type: NestedObject
description: The TLS Common Name of the certificate.
properties:
- name: 'value'
type: String
description: |
The TLS Common Name string of the certificate.
- name: 'wildcardMatch'
type: Boolean
description: |
Indicates whether the cert should be matched against as a wildcard cert.
- name: 'enforce'
type: Boolean
description: |
If true, TLS is strictly enforced.
- name: 'protocol'
type: Enum
description: |
Immutable. The protocol used by this TargetServer.
immutable: true
default_from_api: true
enum_values:
- 'HTTP'
- 'HTTP2'
- 'GRPC_TARGET'
- 'GRPC'
- 'EXTERNAL_CALLOUT'