MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Docs Menu
Docs Home
/ /
/ / /

AtlasThirdPartyIntegration Custom Resource

The AtlasThirdPartyIntegration custom resource configures third party integrations in an Atlas project. These resources allow you to manage third-party integrations with various monitoring services to collect and analyze the performance of your Atlas deployment.

Important

Custom Resources No Longer Delete Objects by Default

  • Atlas Kubernetes Operator uses custom resource configuration files to manage your Atlas configuration, but as of Atlas Kubernetes Operator 2.0, custom resources you delete in Kubernetes are no longer (by default) deleted in Atlas. Instead, Atlas Kubernetes Operator simply stops managing those resources in Atlas. For example, if you delete an AtlasProject Custom Resource in Kubernetes, by default the Atlas Kubernetes Operator no longer automatically deletes the corresponding project from Atlas. This change in behavior is intended to help prevent accidental or unexpected deletions. To learn more, including how to revert this behavior to the default used prior to Atlas Kubernetes Operator 2.0, see New Default: Deletion Protection in Atlas Kubernetes Operator 2.0.

    Similarly, Atlas Kubernetes Operator does not delete teams from Atlas if you remove them from an Atlas project in Kubernetes with the Atlas Kubernetes Operator.

  • Explicitly define your desired configuration details in order to avoid implicitly using default Atlas configuration values. In some cases, inheriting Atlas defaults may result in a reconciliation loop which can prevent your custom resource from achieving a READY state. For example, explicitly defining your desired autoscaling behavior in your AtlasDeployment custom resource, as shown in the included example, ensures that a static instance size in your custom resource is not being repeatedly applied to an Atlas deployment which has autoscaling enabled.

    autoScaling:
    diskGB:
    enabled: true
    compute:
    enabled: true
    scaleDownEnabled: true
    minInstanceSize: M30
    maxInstanceSize: M40

Atlas Kubernetes Operator takes one of the following actions using the Atlas Third-Party Service Integration API Resource:

  • Creates a new third-party service integration.

  • Updates an existing third-party service integration.

The following example shows an AtlasThirdPartyIntegration custom resource that defines a Datadog integration within the my-project project.

apiVersion: atlas.mongodb.com/v1
kind: AtlasThirdPartyIntegration
metadata:
name: my-atlas-integ
spec:
projectRef:
name: my-project
namespace: my-operator-namespace
type: DATADOG
datadog:
apiKeySecretRef:
name: datadog-secret
region: US
sendCollectionLatencyMetrics: enabled
sendDatabaseMetrics: enabled

The following example shows an AtlasThirdPartyIntegration independent CRD that defines the same Datadog integration defined in the Basic Example. This custom resource definition allows you to create this third-party integration in a project you don't manage in the same instance of Atlas Kubernetes Operator with which you define this resource. To enable independent operation, you must use an externalProjectRef instead of a projectRef, and you must supply a connectionSecret directly since this resource can't inherit API credentials from its parent project.

apiVersion: atlas.mongodb.com/v1
kind: AtlasThirdPartyIntegration
metadata:
name: my-atlas-integ
spec:
externalProjectRef:
projectID: 66e2f2b621571b7e69a89b66
connectionSecret:
name: atlas-connection-secret
type: DATADOG
datadog:
apiKeySecretRef:
name: datadog-secret
region: US
sendCollectionLatencyMetrics: enabled
sendDatabaseMetrics: enabled

AtlasThirdPartyIntegration is the Schema for the atlas 3rd party integrations API.

Name
Type
Description
Required

apiVersion

string

atlas.mongodb.com/v1

true

kind

string

AtlasThirdPartyIntegration

true

metadata

object

Refer to the Kubernetes API documentation for the fields of the metadata field.

true

spec

object

AtlasThirdPartyIntegrationSpec contains the expected configuration for an integration Validations:

  • (has(self.``externalProjectRef``) && !has(self.``projectRef``)) || (!has(self.``externalProjectRef``) && has(self.``projectRef``)): must define only one project reference through externalProjectRef or projectRef

  • (has(self.``externalProjectRef``) && has(self.``connectionSecret``)) || !has(self.``externalProjectRef``): must define a local connection secret when referencing an external project

  • has(self.type) && self.type.size() != 0: must define a type of integration

  • !has(self.datadog) || (self.type == 'DATADOG' && has(self.datadog)): only DATADOG type may set datadog fields

  • !has(self.``microsoftTeams``) || (self.type == 'MICROSOFT_TEAMS' && has(self.``microsoftTeams``)): only MICROSOFT_TEAMS type may set microsoftTeams fields

  • !has(self.``newRelic``) || (self.type == 'NEW_RELIC' && has(self.``newRelic``)): only NEW_RELIC type may set newRelic fields

  • !has(self.``opsGenie``) || (self.type == 'OPS_GENIE' && has(self.``opsGenie``)): only OPS_GENIE type may set opsGenie fields

  • !has(self.prometheus) || (self.type == 'PROMETHEUS' && has(self.prometheus)): only PROMETHEUS type may set prometheus fields

  • !has(self.``pagerDuty``) || (self.type == 'PAGER_DUTY' && has(self.``pagerDuty``)): only PAGER_DUTY type may set pagerDuty fields

  • !has(self.slack) || (self.type == 'SLACK' && has(self.slack)): only SLACK type may set slack fields

  • !has(self.``victorOps``) || (self.type == 'VICTOR_OPS' && has(self.``victorOps``)): only VICTOR_OPS type may set victorOps fields

  • !has(self.webhook) || (self.type == 'WEBHOOK' && has(self.webhook)): only WEBHOOK type may set webhook fields

false

status

object

AtlasThirdPartyIntegrationStatus holds the status of an integration

false

AtlasThirdPartyIntegrationSpec contains the expected configuration for an integration

Name
Type
Description
Required

type

enum

Type of the integration. Enum: DATADOG, MICROSOFT_TEAMS, NEW_RELIC, OPS_GENIE, PAGER_DUTY, PROMETHEUS, SLACK, VICTOR_OPS, WEBHOOK

true

connectionSecret

object

Name of the secret containing Atlas API private and public keys.

false

datadog

object

Datadog contains the config fields for Datadog's Integration.

false

externalProjectRef

object

externalProjectRef holds the parent Atlas project ID. Mutually exclusive with the "projectRef" field.

false

microsoftTeams

object

MicrosoftTeams contains the config fields for Microsoft Teams's Integration.

false

newRelic

object

NewRelic contains the config fields for New Relic's Integration.

false

opsGenie

object

OpsGenie contains the config fields for Ops Genie's Integration.

false

pagerDuty

object

PagerDuty contains the config fields for PagerDuty's Integration.

false

projectRef

object

projectRef is a reference to the parent AtlasProject resource. Mutually exclusive with the "externalProjectRef" field.

false

prometheus

object

Prometheus contains the config fields for Prometheus's Integration.

false

slack

object

Slack contains the config fields for Slack's Integration.

false

victorOps

object

VictorOps contains the config fields for VictorOps's Integration.

false

webhook

object

Webhook contains the config fields for Webhook's Integration.

false

Name of the secret containing Atlas API private and public keys.

Datadog contains the config fields for Datadog's Integration.

Name
Type
Description
Required

apiKeySecretRef

object

APIKeySecretRef holds the name of a secret containing the Datadog API key.

true

region

string

Region is the Datadog region

true

sendCollectionLatencyMetrics

enum

SendCollectionLatencyMetrics toggles sending collection latency metrics. Enum: enabled, disabled Default: disabled

false

sendDatabaseMetrics

enum

SendDatabaseMetrics toggles sending database metrics, including database and collection names Enum: enabled, disabled Default: disabled

false

APIKeySecretRef holds the name of a secret containing the Datadog API key.

Name
Type
Description
Required

name

string

true

externalProjectRef holds the parent Atlas project ID. Mutually exclusive with the "projectRef" field.

Name
Type
Description
Required

id

string

ID is the Atlas project ID.

true

MicrosoftTeams contains the config fields for Microsoft Teams's Integration.

Name
Type
Description
Required

urlSecretRef

object

URLSecretRef holds the name of a secret containing the Microsoft Teams secret URL.

true

URLSecretRef holds the name of a secret containing the Microsoft Teams secret URL.

Name
Type
Description
Required

name

string

true

NewRelic contains the config fields for New Relic's Integration.

Name
Type
Description
Required

credentialsSecretRef

object

CredentialsSecretRef holds the name of a secret containing new relic's credentials: account id, license key, read and write tokens.

true

CredentialsSecretRef holds the name of a secret containing new relic's credentials: account id, license key, read and write tokens.

Name
Type
Description
Required

name

string

true

OpsGenie contains the config fields for Ops Genie's Integration.

Name
Type
Description
Required

apiKeySecretRef

object

APIKeySecretRef holds the name of a secret containing Ops Genie's API key.

true

region

string

Region is the Ops Genie region.

true

APIKeySecretRef holds the name of a secret containing Ops Genie's API key.

Name
Type
Description
Required

name

string

true

PagerDuty contains the config fields for PagerDuty's Integration.

Name
Type
Description
Required

region

string

Region is the Pager Duty region.

true

serviceKeySecretRef

object

ServiceKeySecretRef holds the name of a secret containing Pager Duty service key.

true

ServiceKeySecretRef holds the name of a secret containing Pager Duty service key.

Name
Type
Description
Required

name

string

true

projectRef is a reference to the parent AtlasProject resource. Mutually exclusive with the "externalProjectRef" field.

Name
Type
Description
Required

name

string

Name of the Kubernetes Resource

true

namespace

string

Namespace of the Kubernetes Resource

false

Prometheus contains the config fields for Prometheus's Integration.

Name
Type
Description
Required

enabled

string

Enabled is true when Prometheus integration is enabled.

true

prometheusCredentialsSecretRef

object

PrometheusCredentialsSecretRef holds the name of a secret containing the Prometheus. username & password

true

serviceDiscovery

enum

ServiceDiscovery to be used by Prometheus. Enum: file, http

true

PrometheusCredentialsSecretRef holds the name of a secret containing the Prometheus. username & password

Name
Type
Description
Required

name

string

true

Slack contains the config fields for Slack's Integration.

Name
Type
Description
Required

apiTokenSecretRef

object

APITokenSecretRef holds the name of a secret containing the Slack API token.

true

channelName

string

ChannelName to be used by Prometheus.

true

teamName

string

TeamName flags whether Prometheus integration is enabled.

true

APITokenSecretRef holds the name of a secret containing the Slack API token.

Name
Type
Description
Required

name

string

true

VictorOps contains the config fields for VictorOps's Integration.

Name
Type
Description
Required

apiKeySecretRef

object

APIKeySecretRef is the name of a secret containing Victor Ops API key.

true

routingKey

string

RoutingKey holds VictorOps routing key.

true

APIKeySecretRef is the name of a secret containing Victor Ops API key.

Name
Type
Description
Required

name

string

true

Webhook contains the config fields for Webhook's Integration.

Name
Type
Description
Required

urlSecretRef

object

URLSecretRef holds the name of a secret containing Webhook URL and secret.

true

URLSecretRef holds the name of a secret containing Webhook URL and secret.

Name
Type
Description
Required

name

string

true

AtlasThirdPartyIntegrationStatus holds the status of an integration

Name
Type
Description
Required

conditions

[]object

Conditions holding the status details

false

id

string

ID of the third party integration resource in Atlas

false

Condition contains details for one aspect of the current state of this API Resource.

Name
Type
Description
Required

lastTransitionTime

string

lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. Format: date-time

true

message

string

message is a human readable message indicating details about the transition. This may be an empty string.

true

reason

string

reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

true

status

enum

status of the condition, one of True, False, Unknown. Enum: True, False, Unknown

true

type

string

type of condition in CamelCase or in foo.example.com/CamelCase.

true

observedGeneration

integer

observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].``observedGeneration`` is 9, the condition is out of date with respect to the current state of the instance. Format: int64 Minimum: 0

false

Back

AtlasStreamWorkspace

On this page