=s_('You can also test your %{gitlab_ci_yml} in %{lint_link_start}CI Lint%{lint_link_end}').html_safe%{gitlab_ci_yml: '.gitlab-ci.yml',lint_link_start: lint_link_start,lint_link_end: '</a>'.html_safe}
=s_('You can also test your %{gitlab_ci_yml} in %{lint_link_start}CI Lint%{lint_link_end}').html_safe%{gitlab_ci_yml: '.gitlab-ci.yml',lint_link_start: lint_link_start,lint_link_end: '</a>'.html_safe}
info:To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
---
# Install the Kubernetes Agent Server (KAS) **(PREMIUM SELF)**
The Kubernetes Agent Server (KAS) is a GitLab backend service dedicated to
For GitLab [Helm Chart](https://docs.gitlab.com/charts/)
installations, you must set `global.kas.enabled` to `true`.
For example, in a shell with `helm` and `kubectl`
installed, run:
```shell
helm repo add gitlab https://charts.gitlab.io/
helm repo update
helm upgrade --install gitlab gitlab/gitlab \
--timeout 600s \
--set global.hosts.domain=<YOUR_DOMAIN> \
--set global.hosts.externalIP=<YOUR_IP> \
--set certmanager-issuer.email=<YOUR_EMAIL> \
--set global.kas.enabled=true# <-- without this, KAS will not be installed
```
To configure KAS, use a `gitlab.kas` sub-section in your `values.yaml` file:
```yaml
gitlab:
kas:
# put your KAS custom options here
```
For details, see [how to use the GitLab-KAS chart](https://docs.gitlab.com/charts/charts/gitlab/kas/).
### Use an external KAS installation
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/299850) in GitLab 13.10.
Besides installing KAS with GitLab, you can opt to configure GitLab to use an external KAS.
For GitLab instances installed through the GitLab Helm Chart, see [how to configure your external KAS](https://docs.gitlab.com/charts/charts/globals.html#external-kas).
For GitLab instances installed through Omnibus packages:
1. Edit `/etc/gitlab/gitlab.rb` adding the paths to your external KAS:
```ruby
gitlab_kas['enable']=false
gitlab_kas['api_secret_key']='Your shared secret between GitLab and KAS'
gitlab_rails['gitlab_kas_enabled']=true
gitlab_rails['gitlab_kas_external_url']='wss://kas.gitlab.example.com'# User-facing URL for the in-cluster agentk
gitlab_rails['gitlab_kas_internal_url']='grpc://kas.internal.gitlab.example.com'# Internal URL for the GitLab backend
In Omnibus GitLab, find the logs in `/var/log/gitlab/gitlab-kas/`.
See also the [user documentation](../../user/clusters/agent/index.md#troubleshooting)
for troubleshooting problems with individual agents.
### KAS logs - GitOps: failed to get project info
If you get the following error message:
```json
{"level":"warn","time":"2020-10-30T08:37:26.123Z","msg":"GitOps: failed to get project info","agent_id":4,"project_id":"root/kas-manifest001","error":"error kind: 0; status: 404"}
```
It means that the specified manifest project `root/kas-manifest001`
doesn't exist or the manifest project is private. To fix it, make sure the project path is correct
and its visibility is [set to public](../../public_access/public_access.md).
### KAS logs - Configuration file not found
If you get the following error message:
```plaintext
time="2020-10-29T04:44:14Z" level=warning msg="Config: failed to fetch" agent_id=2 error="configuration file not found: \".gitlab/agents/test-agent/config.yaml\
```
It means that the path to the configuration project is incorrect,
or the path to `config.yaml` inside the project is not valid.
To fix this, ensure that the paths to the configuration repo and to the `config.yaml` file
| `severity` | [`[VulnerabilitySeverity!]`](#vulnerabilityseverity) | Filter vulnerabilities by severity. |
| `severity` | [`[VulnerabilitySeverity!]`](#vulnerabilityseverity) | Filter vulnerabilities by severity. |
| `sort` | [`VulnerabilitySort`](#vulnerabilitysort) | List vulnerabilities by sort order. |
| `sort` | [`VulnerabilitySort`](#vulnerabilitysort) | List vulnerabilities by sort order. |
| `state` | [`[VulnerabilityState!]`](#vulnerabilitystate) | Filter vulnerabilities by state. |
| `state` | [`[VulnerabilityState!]`](#vulnerabilitystate) | Filter vulnerabilities by state. |
...
@@ -4745,7 +4746,7 @@ An edge in a connection.
...
@@ -4745,7 +4746,7 @@ An edge in a connection.
| `alertManagementIntegrations` | [`AlertManagementIntegrationConnection`](#alertmanagementintegrationconnection) | Integrations which can receive alerts for the project. |
| `alertManagementIntegrations` | [`AlertManagementIntegrationConnection`](#alertmanagementintegrationconnection) | Integrations which can receive alerts for the project. |
| `alertManagementPayloadFields` | [`[AlertManagementPayloadAlertField!]`](#alertmanagementpayloadalertfield) | Extract alert fields from payload for custom mapping. |
| `alertManagementPayloadFields` | [`[AlertManagementPayloadAlertField!]`](#alertmanagementpayloadalertfield) | Extract alert fields from payload for custom mapping. |
| `allowMergeOnSkippedPipeline` | [`Boolean`](#boolean) | If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs. |
| `allowMergeOnSkippedPipeline` | [`Boolean`](#boolean) | If `only_allow_merge_if_pipeline_succeeds` is true, indicates if merge requests of the project can also be merged with skipped jobs. |
| `apiFuzzingCiConfiguration` | [`ApiFuzzingCiConfiguration`](#apifuzzingciconfiguration) | API fuzzing configuration for the project. Null unless feature flag `api_fuzzing_configuration_ui` is enabled. |
| `apiFuzzingCiConfiguration` | [`ApiFuzzingCiConfiguration`](#apifuzzingciconfiguration) | API fuzzing configuration for the project. |
| `archived` | [`Boolean`](#boolean) | Indicates the archived status of the project. |
| `archived` | [`Boolean`](#boolean) | Indicates the archived status of the project. |
| `autocloseReferencedIssues` | [`Boolean`](#boolean) | Indicates if issues referenced by merge requests and commits within the default branch are closed automatically. |
| `autocloseReferencedIssues` | [`Boolean`](#boolean) | Indicates if issues referenced by merge requests and commits within the default branch are closed automatically. |
| `avatarUrl` | [`String`](#string) | URL to avatar image file of the project. |
| `avatarUrl` | [`String`](#string) | URL to avatar image file of the project. |
@@ -74,10 +74,6 @@ starting in GitLab 14.0, GitLab will not check your repository's root for config
...
@@ -74,10 +74,6 @@ starting in GitLab 14.0, GitLab will not check your repository's root for config
### Configuration form
### Configuration form
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/299234) in GitLab 13.10.
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/299234) in GitLab 13.10.
> - It's [deployed behind a feature flag](../../../user/feature_flags.md), enabled by default.
> - It's enabled on GitLab.com.
> - It's recommended for production use.
> - For GitLab self-managed instances, GitLab administrators can opt to [disable it](#enable-or-disable-api-fuzzing-configuration-form). **(ULTIMATE)**
WARNING:
WARNING:
This feature might not be available to you. Check the **version history** note above for details.
This feature might not be available to you. Check the **version history** note above for details.
...
@@ -103,25 +99,6 @@ to your project's `.gitlab-ci.yml` file where you can paste the YAML configurati
...
@@ -103,25 +99,6 @@ to your project's `.gitlab-ci.yml` file where you can paste the YAML configurati
Select **Copy code only** to copy the snippet to your clipboard and close the modal.
Select **Copy code only** to copy the snippet to your clipboard and close the modal.
#### Enable or disable API Fuzzing configuration form **(ULTIMATE)**
The API Fuzzing configuration form is under development but ready for production use.
It is deployed behind a feature flag that is **enabled by default**.
[GitLab administrators with access to the GitLab Rails console](../../../administration/feature_flags.md)
@@ -68,7 +68,7 @@ For more details, please refer to our [full architecture documentation](https://
...
@@ -68,7 +68,7 @@ For more details, please refer to our [full architecture documentation](https://
The setup process involves a few steps to enable GitOps deployments:
The setup process involves a few steps to enable GitOps deployments:
1.[Install the Agent server](#install-the-kubernetes-agent-server) for your GitLab instance.
1.[Set up the Kubernetes Agent Server](#set-up-the-kubernetes-agent-server) for your GitLab instance.
1.[Define a configuration repository](#define-a-configuration-repository).
1.[Define a configuration repository](#define-a-configuration-repository).
1.[Create an Agent record in GitLab](#create-an-agent-record-in-gitlab).
1.[Create an Agent record in GitLab](#create-an-agent-record-in-gitlab).
1.[Generate and copy a Secret token used to connect to the Agent](#create-the-kubernetes-secret).
1.[Generate and copy a Secret token used to connect to the Agent](#create-the-kubernetes-secret).
...
@@ -83,7 +83,7 @@ neither stable nor versioned yet. For this reason, GitLab only guarantees compat
...
@@ -83,7 +83,7 @@ neither stable nor versioned yet. For this reason, GitLab only guarantees compat
between corresponding major.minor (X.Y) versions of GitLab and its cluster side
between corresponding major.minor (X.Y) versions of GitLab and its cluster side
component, `agentk`.
component, `agentk`.
Upgrade your agent installations together with GitLab upgrades. To decide which version of `agentk`to install follow:
Upgrade your agent installations together with GitLab upgrades. To decide which version of `agentk`to install follow:
1. Open the [`GITLAB_KAS_VERSION`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/GITLAB_KAS_VERSION) file from the GitLab Repository, which contains the latest `agentk` version associated with the `master` branch.
1. Open the [`GITLAB_KAS_VERSION`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/GITLAB_KAS_VERSION) file from the GitLab Repository, which contains the latest `agentk` version associated with the `master` branch.
1. Change the `master` branch and select the Git tag associated with your version. For instance, you could change it to GitLab [v13.5.3-ee release](https://gitlab.com/gitlab-org/gitlab/-/blob/v13.5.3-ee/GITLAB_KAS_VERSION)
1. Change the `master` branch and select the Git tag associated with your version. For instance, you could change it to GitLab [v13.5.3-ee release](https://gitlab.com/gitlab-org/gitlab/-/blob/v13.5.3-ee/GITLAB_KAS_VERSION)
...
@@ -91,88 +91,14 @@ Upgrade your agent installations together with GitLab upgrades. To decide which
...
@@ -91,88 +91,14 @@ Upgrade your agent installations together with GitLab upgrades. To decide which
The available `agentk` and `kas` versions can be found in
The available `agentk` and `kas` versions can be found in
### Install the Kubernetes Agent Server **(FREE SELF)**
### Set up the Kubernetes Agent Server
[Introduced](https://gitlab.com/groups/gitlab-org/-/epics/3834) in GitLab 13.10,
> [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/3834) in [GitLab Premium](https://about.gitlab.com/pricing/) 13.10, the GitLab Kubernetes Agent Server (KAS) became available on GitLab.com under `wss://kas.gitlab.com`.
the GitLab Kubernetes Agent Server (KAS) is available on GitLab.com under `wss://kas.gitlab.com`.
If you are a GitLab.com user, skip this step and directly
[set up the configuration repository](#define-a-configuration-repository)
for your agent.
The GitLab Kubernetes Agent Server (KAS) can be installed through Omnibus GitLab or
To use the KAS:
through the GitLab Helm Chart. If you don't already have
GitLab installed, please refer to our [installation
You can install the KAS within GitLab as explained below according to your GitLab installation method.
You can also opt to use an [external KAS](#use-an-external-kas-installation).
#### Install KAS with Omnibus
- If you are a self-managed user, follow the instructions to [install the Kubernetes Agent Server](../../../administration/clusters/kas.md).
- If you are a GitLab.com user, when you [set up the configuration repository](#define-a-configuration-repository) for your agent, use `wss://kas.gitlab.com` as the `--kas-address`.
For [Omnibus](https://docs.gitlab.com/omnibus/) package installations:
1. Edit `/etc/gitlab/gitlab.rb` to enable the Kubernetes Agent Server:
For GitLab [Helm Chart](https://gitlab.com/gitlab-org/charts/gitlab) installations, consider the following Helm v3 example.
If you're using Helm v2, you must modify this example. See our [notes regarding deploy with Helm](https://docs.gitlab.com/charts/installation/deployment.html#deploy-using-helm).
You must set `global.kas.enabled=true` for the KAS to be properly installed and configured:
```shell
helm repo add gitlab https://charts.gitlab.io/
helm repo update
helm upgrade --install gitlab gitlab/gitlab \
--timeout 600s \
--set global.hosts.domain=<YOUR_DOMAIN> \
--set global.hosts.externalIP=<YOUR_IP> \
--set certmanager-issuer.email=<YOUR_EMAIL> \
--set global.kas.enabled=true
```
To specify other options related to the KAS sub-chart, create a `gitlab.kas` sub-section
of your `values.yaml` file:
```shell
gitlab:
kas:
# put your KAS custom options here
```
For details, read [Using the GitLab-KAS chart](https://docs.gitlab.com/charts/charts/gitlab/kas/).
#### Use an external KAS installation
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/299850) in GitLab 13.10.
Besides installing KAS with GitLab, you can opt to configure GitLab to use an external KAS.
For GitLab instances installed through the GitLab Helm Chart, see [how to configure your external KAS](https://docs.gitlab.com/charts/charts/globals.html#external-kas).
For GitLab instances installed through Omnibus packages:
1. Edit `/etc/gitlab/gitlab.rb` adding the paths to your external KAS:
```ruby
gitlab_kas['enable']=false
gitlab_kas['api_secret_key']='Your shared secret between GitLab and KAS'
gitlab_rails['gitlab_kas_enabled']=true
gitlab_rails['gitlab_kas_external_url']='wss://kas.gitlab.example.com'# User-facing URL for the in-cluster agentk
gitlab_rails['gitlab_kas_internal_url']='grpc://kas.internal.gitlab.example.com'# Internal URL for the GitLab backend
{"level":"warn","time":"2020-10-30T08:37:26.123Z","msg":"GitOps: failed to get project info","agent_id":4,"project_id":"root/kas-manifest001","error":"error kind: 0; status: 404"}
```
This error is shown if the specified manifest project `root/kas-manifest001`
doesn't exist, or if a project is private. To fix it, make sure the project exists
and its visibility is [set to public](../../../public_access/public_access.md).
'StatusPage|Configure file storage settings to link issues in this project to an external status page.',
'StatusPage|Configure file storage settings to link issues in this project to an external status page.',
),
),
introText:s__(
introText:s__(
'StatusPage|To publish incidents to an external status page, GitLab will store a JSON file in your Amazon S3 account in a location accessible to your external status page service. Make sure to also set up %{docsLink}',
'StatusPage|To publish incidents to an external status page, GitLab stores a JSON file in your Amazon S3 account at a location that your external status page service can access. Make sure to also set up %{docsLink}',
),
),
introLinkText:s__('StatusPage|your status page frontend.'),
introLinkText:s__('StatusPage|your status page frontend.'),
activeLabel:s__('StatusPage|Active'),
activeLabel:s__('StatusPage|Active'),
...
@@ -46,8 +46,8 @@ export default {
...
@@ -46,8 +46,8 @@ export default {
},
},
region:{
region:{
label:s__('StatusPage|AWS region'),
label:s__('StatusPage|AWS region'),
helpText:s__('StatusPage|For help with configuration, visit %{docsLink}'),
requires:name,type: String,desc: 'The name of the rule'
requires:external_url,type: String,desc: 'The URL to notify when MR receives new commits'
optional:protected_branch_ids,type: Array[Integer],coerce_with: ::API::Validations::Types::CommaSeparatedToIntegerArray.coerce,desc: 'The protected branch ids for this rule'
end
desc'Create a new external approval rule'do
desc'Create a new external approval rule'do
success::API::Entities::ExternalApprovalRule
success::API::Entities::ExternalApprovalRule
detail'This feature is gated by the :ff_compliance_approval_gates feature flag.'
detail'This feature is gated by the :ff_compliance_approval_gates feature flag.'
end
end
paramsdo
requires:name,type: String,desc: 'The name of the external approval rule'
requires:external_url,type: String,desc: 'The URL to notify when MR receives new commits'
detail'This feature is gated by the :ff_compliance_approval_gates feature flag.'
detail'This feature is gated by the :ff_compliance_approval_gates feature flag.'
end
end
paramsdo
paramsdo
requires:rule_id,type: Integer,desc: 'The approval rule ID'
requires:rule_id,type: Integer,desc: 'The ID of the external approval rule'
optional:name,type: String,desc: 'The approval rule\'s name'
optional:name,type: String,desc: 'The name of the approval rule'
optional:external_url,type: String,desc: 'The URL to notify when MR receives new commits'
optional:external_url,type: String,desc: 'The URL to notify when MR receives new commits'
optional:protected_branch_ids,type: Array[Integer],coerce_with: ::API::Validations::Types::CommaSeparatedToIntegerArray.coerce,desc: 'The protected branch ids for this rule'
@@ -39,7 +39,7 @@ exports[`Status Page settings form default state should match the default snapsh
...
@@ -39,7 +39,7 @@ exports[`Status Page settings form default state should match the default snapsh
>
>
<p>
<p>
<gl-sprintf-stub
<gl-sprintf-stub
message="To publish incidents to an external status page, GitLab will store a JSON file in your Amazon S3 account in a location accessible to your external status page service. Make sure to also set up %{docsLink}"
message="To publish incidents to an external status page, GitLab stores a JSON file in your Amazon S3 account at a location that your external status page service can access. Make sure to also set up %{docsLink}"
/>
/>
</p>
</p>
...
@@ -117,7 +117,7 @@ exports[`Status Page settings form default state should match the default snapsh
...
@@ -117,7 +117,7 @@ exports[`Status Page settings form default state should match the default snapsh
class="form-text text-muted"
class="form-text text-muted"
>
>
<gl-sprintf-stub
<gl-sprintf-stub
message="For help with configuration, visit %{docsLink}"
msgid "StatusPage|To publish incidents to an external status page, GitLab will store a JSON file in your Amazon S3 account in a location accessible to your external status page service. Make sure to also set up %{docsLink}"
msgid "StatusPage|To publish incidents to an external status page, GitLab stores a JSON file in your Amazon S3 account at a location that your external status page service can access. Make sure to also set up %{docsLink}"