kotlin-dsl/kubernetesConnectionProjectFeature.xml (268 lines of code) (raw):
<?xml version="1.0" encoding="UTF-8"?>
<dsl-extension kind="projectFeature" type="OAuthProvider" generateDslJar="true" applicable="params['providerType'] == 'KubernetesConnection'">
<class name="KubernetesConnection">
<description>
Stores information and configuration for the access to a Kubernetes cluster.
</description>
</class>
<init>
<param name="providerType" value="KubernetesConnection" />
</init>
<function name="kubernetesConnection">
<description>
@see KubernetesConnection
</description>
</function>
<params>
<param name="displayName" dslName="name">
<description>
Kubernetes connection display name
</description>
</param>
<param name="apiServerUrl" dslName="apiServerUrl" type="string" mandatory="true">
<description>
Target Kubernetes API server URL
</description>
</param>
<param name="secure:caCertData" dslName="caCertificate" type="string">
<description>
The CA Certificate to connect to the cluster. Leave empty to skip TLS verification (insecure option)
</description>
</param>
<param name="namespace" dslName="namespace" type="string">
<description>
The Kubernetes namespace to use. Leave empty to use the default namespace.
</description>
</param>
<param name="authStrategy" dslName="authStrategy" type="compound" mandatory="true">
<description>
The way how to obtain credentials
</description>
<option name="eks" value="eks">
<description>
Connecting to an AWS EKS (Elastic Kubernetes Service)
</description>
<param name="eksUseInstanceProfile" dslName="eksUseInstanceProfile" type="boolean">
<deprecated strict="false">
Using the AWS credentials provided in the instance is not recommended, as it increases the risk of leaks.
</deprecated>
<description>
Uses the AWS credentials provided in the TeamCity Instance. Should be available under `~/.aws`
</description>
</param>
<param name="eksAccessId" dslName="accessId" type="string">
<description>
AWS Access Key ID
</description>
</param>
<param name="secure:eksSecretKey" dslName="secretKey" type="string">
<description>
AWS Secret Access Key
</description>
</param>
<param name="eksAssumeIAMRole" dslName="assumeIamRole" type="boolean">
<description>
If assuming an IAM role is required to access the cluster. Must fill [iamRoleArn]
</description>
</param>
<param name="eksIAMRoleArn" dslName="iamRoleArn" type="string">
<description>
The IAM Role ARN needed to access the cluster
</description>
</param>
<param name="eksClusterName" dslName="clusterName" type="string" mandatory="true">
<description>
The name of the EKS cluster
</description>
</param>
</option>
<option name="usernameAndPassword" value="user-passwd">
<description>
Connecting to a Kubernetes cluster using a username and password
</description>
<param name="username" dslName="username" type="string" mandatory="true">
<description>
Username
</description>
</param>
<param name="secure:password" dslName="password" type="string" mandatory="true">
<description>
Password
</description>
</param>
</option>
<option name="openId" value="oidc">
<description>
Connecting to a Kubernetes cluster using the OpenID Connect (OIDC) protocol
</description>
<param name="idpIssuerUrl" dslName="idpIssuerUrl" type="string" mandatory="true">
<description>
The IdP Issuer URL
</description>
</param>
<param name="oidcClientId" dslName="clientId" type="string" mandatory="true">
<description>
The Client ID
</description>
</param>
<param name="secure:oidcClientSecret" dslName="clientSecret" type="string" mandatory="true">
<description>
The Client Secret
</description>
</param>
<param name="secure:oidcRefreshToken" dslName="refreshToken" type="string" mandatory="true">
<description>
The Refresh Token
</description>
</param>
</option>
<option name="clientCertificateAndKey" value="client-cert">
<description>
Connecting to a Kubernetes cluster using a client certificate and key
</description>
<param name="secure:clientKeyData" dslName="clientKey" type="string" mandatory="true">
<description>
The Client Key
</description>
</param>
<param name="secure:clientCertData" dslName="clientCertificate" type="string" mandatory="true">
<description>
The Client Certificate
</description>
</param>
</option>
<option name="token" value="token">
<description>
Connecting to a Kubernetes cluster using a Bearer Token
</description>
<param name="secure:authToken" dslName="token" type="string" mandatory="true">
<description>
The Bearer Token
</description>
</param>
</option>
<option name="unauthorized" value="unauthorized">
<description>
Use unauthorized access to the Kubernetes API server
</description>
</option>
<option name="serviceAccount" value="service-account">
<deprecated strict="false">
Using the Kubernetes credentials provided in the instance is not recommended, as it increases the risk of leaks.
</deprecated>
<description>
Uses the Kubernetes credentials provided in the TeamCity Instance. Should be available under `/var/run/secrets/kubernetes.io/serviceaccount/token`
</description>
</option>
</param>
</params>
<examples>
<example>
<description>
Adds a new Connection that allows TeamCity to store and manage a Kubernetes Cluster using a Bearer Token
</description>
<code>
kubernetesConnection {
id = "PROJECT_EXT_3"
name = "Connection"
apiServerUrl = "http://cluster.com"
caCertificate = "credentialsJSON:c77bc0a7-f461-4ca8-959b-ef5c8f6359b2"
namespace = "namespace"
authStrategy = token {
token = "credentialsJSON:fa92592e-ec16-4543-add0-1cdd4de87e5e"
}
}
</code>
</example>
<example>
<description>
Adds a new Connection that allows TeamCity to store and manage a Kubernetes Cluster using a username and password
</description>
<code>
kubernetesConnection {
id = "PROJECT_EXT_3"
name = "Connection"
apiServerUrl = "http://cluster.com"
caCertificate = "credentialsJSON:c77bc0a7-f461-4ca8-959b-ef5c8f6359b2"
namespace = "namespace"
authStrategy = usernameAndPassword {
username = "username"
password = "credentialsJSON:aaef5e7e-5a51-427c-b0ea-3af364cacedd"
}
}
</code>
</example>
<example>
<description>
Adds a new Connection that allows TeamCity to store and manage a Kubernetes Cluster using the OpenID Connect (OIDC) protocol
</description>
<code>
kubernetesConnection {
id = "PROJECT_EXT_3"
name = "Connection"
apiServerUrl = "http://cluster.com"
caCertificate = "credentialsJSON:c77bc0a7-f461-4ca8-959b-ef5c8f6359b2"
namespace = "namespace"
authStrategy = openId {
idpIssuerUrl = "idpurl"
clientId = "clientId"
clientSecret = "credentialsJSON:612f3414-2b25-41ec-9520-12c9669d1f85"
refreshToken = "credentialsJSON:0bb3f85a-7ff4-474e-9c14-8da47099595a"
}
}
</code>
</example>
<example>
<description>
Adds a new Connection that allows TeamCity to store and manage a Kubernetes Cluster using a Client Certificate and Key
</description>
<code>
kubernetesConnection {
id = "PROJECT_EXT_3"
name = "Connection"
apiServerUrl = "http://cluster.com"
caCertificate = "credentialsJSON:c77bc0a7-f461-4ca8-959b-ef5c8f6359b2"
namespace = "namespace"
authStrategy = clientCertificateAndKey {
clientKey = "credentialsJSON:43b46ece-15a7-4621-a271-7d2b33e9e356"
clientCertificate = "credentialsJSON:87a6537c-cb8f-4684-b44d-e0ea183e9fa1"
}
}
</code>
</example>
<example>
<description>
Adds a new Connection that allows TeamCity to store and manage a Kubernetes Cluster in AWS EKS using an access key and secret key
</description>
<code>
kubernetesConnection {
id = "PROJECT_EXT_3"
name = "Connection"
apiServerUrl = "http://cluster.com"
caCertificate = "credentialsJSON:c77bc0a7-f461-4ca8-959b-ef5c8f6359b2"
namespace = "namespace"
authStrategy = eks {
accessId = "accessId"
secretKey = "credentialsJSON:3507800f-ae64-49f1-bbb5-0a4deec5c7b3"
clusterName = "cluster-name"
}
}
</code>
</example>
<example>
<description>
Adds a new Connection that allows TeamCity to store and manage a Kubernetes Cluster.
</description>
<code>
kubernetesConnection {
id = "PROJECT_EXT_3"
name = "Connection"
apiServerUrl = "http://cluster.com"
caCertificate = "credentialsJSON:c77bc0a7-f461-4ca8-959b-ef5c8f6359b2"
namespace = "namespace"
authStrategy = unauthorized()
}
</code>
</example>
</examples>
</dsl-extension>