diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS
index 2528a7bacbf7a0ce44463f3e337118035836d329_LmdpdGxhYi9DT0RFT1dORVJT..b63a5d623ccba2fe14a522e70e1250e069dea303_LmdpdGxhYi9DT0RFT1dORVJT 100644
--- a/.gitlab/CODEOWNERS
+++ b/.gitlab/CODEOWNERS
@@ -3,6 +3,6 @@
 # As described in https://docs.gitlab.com/ee/user/project/code_owners.html
 
 [Documentation]
-.markdownlint.json @marcel.amirault @eread @aqualls @cnorris
+.markdownlint.yml @marcel.amirault @eread @aqualls @cnorris
 /doc/.vale/ @marcel.amirault @eread @aqualls @cnorris
 /doc/ @axil
diff --git a/.markdownlint.json b/.markdownlint.json
deleted file mode 100644
index 2528a7bacbf7a0ce44463f3e337118035836d329_Lm1hcmtkb3dubGludC5qc29u..0000000000000000000000000000000000000000
--- a/.markdownlint.json
+++ /dev/null
@@ -1,148 +0,0 @@
-{
-  "default": true,
-  "first-header-h1": true,
-  "header-style": {
-    "style": "atx"
-  },
-  "ul-style": {
-    "style": "dash"
-  },
-  "no-trailing-spaces": false,
-  "line-length": false,
-  "no-duplicate-header": {
-    "allow_different_nesting": true
-  },
-  "no-trailing-punctuation": {
-    "punctuation": ".,;:!。,;:!?"
-  },
-  "ol-prefix": {
-    "style": "one"
-  },
-  "no-inline-html": false,
-  "hr-style": {
-    "style": "---"
-  },
-  "no-emphasis-as-heading": false,
-  "first-line-h1": false,
-  "code-block-style": {
-    "style": "fenced"
-  },
-  "proper-names": {
-    "names": [
-      "Akismet",
-      "Alertmanager",
-      "API",
-      "Asana",
-      "Auth0",
-      "Authentiq",
-      "Azure",
-      "Bamboo",
-      "Bitbucket",
-      "Bugzilla",
-      "CAS",
-      "CentOS",
-      "Consul",
-      "Debian",
-      "DevOps",
-      "Docker",
-      "DockerSlim",
-      "Elasticsearch",
-      "Facebook",
-      "fastlane",
-      "fluent-plugin-redis-slowlog",
-      "GDK",
-      "Geo",
-      "Git LFS",
-      "git-annex",
-      "Git",
-      "Gitaly",
-      "GitHub",
-      "GitLab Geo",
-      "GitLab Monitor",
-      "GitLab Operator",
-      "GitLab Pages",
-      "GitLab Rails",
-      "GitLab Runner",
-      "GitLab Shell",
-      "GitLab Workhorse",
-      "GitLab",
-      "Gitleaks",
-      "Gmail",
-      "Google",
-      "Grafana",
-      "Gzip",
-      "Helm",
-      "HipChat",
-      "ID",
-      "Ingress",
-      "jasmine-jquery",
-      "JavaScript",
-      "Jaeger",
-      "Jenkins",
-      "Jira",
-      "Jira Cloud",
-      "Jira Server",
-      "jQuery",
-      "JSON",
-      "JupyterHub",
-      "Karma",
-      "Kerberos",
-      "Knative",
-      "Kubernetes",
-      "LDAP",
-      "Let's Encrypt",
-      "Markdown",
-      "markdownlint",
-      "Mattermost",
-      "Microsoft",
-      "Minikube",
-      "MinIO",
-      "ModSecurity",
-      "NGINX Ingress",
-      "NGINX",
-      "OAuth",
-      "OAuth 2",
-      "OmniAuth",
-      "Omnibus GitLab",
-      "OpenID",
-      "OpenShift",
-      "PgBouncer",
-      "PostgreSQL",
-      "Praefect",
-      "Prometheus",
-      "Puma",
-      "puma-worker-killer",
-      "Python",
-      "Rake",
-      "Redis",
-      "Redmine",
-      "reCAPTCHA",
-      "Ruby",
-      "runit",
-      "Salesforce",
-      "SAML",
-      "Sentry",
-      "Sidekiq",
-      "Shibboleth",
-      "Slack",
-      "SMTP",
-      "SpotBugs",
-      "SSH",
-      "Tiller",
-      "TOML",
-      "Trello",
-      "Trello Power-Ups",
-      "TypeScript",
-      "Twitter",
-      "Ubuntu",
-      "Ultra Auth",
-      "Unicorn",
-      "unicorn-worker-killer",
-      "URL",
-      "WebdriverIO",
-      "YAML",
-      "YouTrack"
-    ],
-    "code_blocks": false
-  }
-}
diff --git a/.markdownlint.yml b/.markdownlint.yml
new file mode 100644
index 0000000000000000000000000000000000000000..b63a5d623ccba2fe14a522e70e1250e069dea303_Lm1hcmtkb3dubGludC55bWw=
--- /dev/null
+++ b/.markdownlint.yml
@@ -0,0 +1,140 @@
+# Base Markdownlint configuration
+# Extended Markdownlint configuration in doc/.markdownlint/
+"default":
+"first-header-h1":
+"header-style":
+  "style": "atx"
+"ul-style":
+  "style": "dash"
+"no-trailing-spaces": false
+"line-length": false
+"no-duplicate-header":
+  "allow_different_nesting": true
+"no-trailing-punctuation":
+  "punctuation": ".,;:!。,;:!?"
+"ol-prefix":
+  "style": "one"
+"no-inline-html": false
+"hr-style":
+  "style": "---"
+"no-emphasis-as-heading": false
+"first-line-h1": false
+"code-block-style":
+  "style": "fenced"
+"proper-names":
+  "names": [
+    "Akismet",
+    "Alertmanager",
+    "API",
+    "Asana",
+    "Auth0",
+    "Authentiq",
+    "Azure",
+    "Bamboo",
+    "Bitbucket",
+    "Bugzilla",
+    "CAS",
+    "CentOS",
+    "Consul",
+    "Debian",
+    "DevOps",
+    "Docker",
+    "DockerSlim",
+    "Elasticsearch",
+    "Facebook",
+    "fastlane",
+    "fluent-plugin-redis-slowlog",
+    "GDK",
+    "Geo",
+    "Git LFS",
+    "git-annex",
+    "Git",
+    "Gitaly",
+    "GitHub",
+    "GitLab Geo",
+    "GitLab Monitor",
+    "GitLab Operator",
+    "GitLab Pages",
+    "GitLab Rails",
+    "GitLab Runner",
+    "GitLab Shell",
+    "GitLab Workhorse",
+    "GitLab",
+    "Gitleaks",
+    "Gmail",
+    "Google",
+    "Grafana",
+    "Gzip",
+    "Helm",
+    "HipChat",
+    "ID",
+    "Ingress",
+    "jasmine-jquery",
+    "JavaScript",
+    "Jaeger",
+    "Jenkins",
+    "Jira",
+    "Jira Cloud",
+    "Jira Server",
+    "jQuery",
+    "JSON",
+    "JupyterHub",
+    "Karma",
+    "Kerberos",
+    "Knative",
+    "Kubernetes",
+    "LDAP",
+    "Let's Encrypt",
+    "Markdown",
+    "markdownlint",
+    "Mattermost",
+    "Microsoft",
+    "Minikube",
+    "MinIO",
+    "ModSecurity",
+    "NGINX Ingress",
+    "NGINX",
+    "OAuth",
+    "OAuth 2",
+    "OmniAuth",
+    "Omnibus GitLab",
+    "OpenID",
+    "OpenShift",
+    "PgBouncer",
+    "PostgreSQL",
+    "Praefect",
+    "Prometheus",
+    "Puma",
+    "puma-worker-killer",
+    "Python",
+    "Rake",
+    "Redis",
+    "Redmine",
+    "reCAPTCHA",
+    "Ruby",
+    "runit",
+    "Salesforce",
+    "SAML",
+    "Sentry",
+    "Sidekiq",
+    "Shibboleth",
+    "Slack",
+    "SMTP",
+    "SpotBugs",
+    "SSH",
+    "Tiller",
+    "TOML",
+    "Trello",
+    "Trello Power-Ups",
+    "TypeScript",
+    "Twitter",
+    "Ubuntu",
+    "Ultra Auth",
+    "Unicorn",
+    "unicorn-worker-killer",
+    "URL",
+    "WebdriverIO",
+    "YAML",
+    "YouTrack"
+  ]
+  "code_blocks": false
diff --git a/doc/.markdownlint/markdownlint-no-trailing-spaces.yml b/doc/.markdownlint/markdownlint-no-trailing-spaces.yml
new file mode 100644
index 0000000000000000000000000000000000000000..b63a5d623ccba2fe14a522e70e1250e069dea303_ZG9jLy5tYXJrZG93bmxpbnQvbWFya2Rvd25saW50LW5vLXRyYWlsaW5nLXNwYWNlcy55bWw=
--- /dev/null
+++ b/doc/.markdownlint/markdownlint-no-trailing-spaces.yml
@@ -0,0 +1,3 @@
+# Extended Markdown configuration to enforce no-trailing-spaces rule
+"extends": "../../.markdownlint.yml"
+"no-trailing-spaces": true
diff --git a/doc/update/convert_to_omnibus.md b/doc/update/convert_to_omnibus.md
index 2528a7bacbf7a0ce44463f3e337118035836d329_ZG9jL3VwZGF0ZS9jb252ZXJ0X3RvX29tbmlidXMubWQ=..b63a5d623ccba2fe14a522e70e1250e069dea303_ZG9jL3VwZGF0ZS9jb252ZXJ0X3RvX29tbmlidXMubWQ= 100644
--- a/doc/update/convert_to_omnibus.md
+++ b/doc/update/convert_to_omnibus.md
@@ -9,9 +9,9 @@
 Upgrading from non-Omnibus installations has not been tested by GitLab.com.
 
 Please be advised that you lose your settings in files such as `gitlab.yml`,
-`puma.rb` and `smtp_settings.rb`. You will have to
+`puma.rb` and `smtp_settings.rb`. You need to
 [configure those settings in `/etc/gitlab/gitlab.rb`](../index.md#configuring).
 
 Before starting the migration, ensure that you are moving to **exactly the same version** of GitLab.
 To convert your installation to Omnibus:
 
@@ -13,9 +13,9 @@
 [configure those settings in `/etc/gitlab/gitlab.rb`](../index.md#configuring).
 
 Before starting the migration, ensure that you are moving to **exactly the same version** of GitLab.
 To convert your installation to Omnibus:
 
-1. If your current GitLab installation uses MySQL, you will first need to migrate
+1. If your current GitLab installation uses MySQL, you first need to migrate
    your data to PostgreSQL, because starting with GitLab 12.1, PostgreSQL is the
    only supported database management system. If you already use PostgreSQL, skip this step.
    1. Verify the [PostgreSQL requirements and supported versions](https://docs.gitlab.com/ee/install/requirements.html#postgresql-requirements),
@@ -38,7 +38,7 @@
    sudo gitlab-backup restore BACKUP=<FILE_NAME>
    ```
 
-   The restore will take a few minutes depending on the size of you database and Git data.
+   The restore takes a few minutes depending on the size of you database and Git data.
 
 1. Configure the new installation as in Omnibus GitLab all settings are stored in
    `/etc/gitlab/gitlab.rb`. Individual settings need to be manually moved from
@@ -47,7 +47,7 @@
    for all available options.
 1. To finalize the configuration process, copy the secrets from the old installation
    to the new one. GitLab uses secrets to multiple purposes, like database encryption,
-   session encryption, etc. In Omnibus GitLab all secrets are placed in a single
+   session encryption, and so on. In Omnibus GitLab all secrets are placed in a single
    file `/etc/gitlab/gitlab-secrets.json`, whereas in source installations, the
    secrets are placed in multiple files:
    1. First, you need to restore secrets related to Rails. Copy the values of
diff --git a/gitlab-ci-config/gitlab-com.yml b/gitlab-ci-config/gitlab-com.yml
index 2528a7bacbf7a0ce44463f3e337118035836d329_Z2l0bGFiLWNpLWNvbmZpZy9naXRsYWItY29tLnltbA==..b63a5d623ccba2fe14a522e70e1250e069dea303_Z2l0bGFiLWNpLWNvbmZpZy9naXRsYWItY29tLnltbA== 100644
--- a/gitlab-ci-config/gitlab-com.yml
+++ b/gitlab-ci-config/gitlab-com.yml
@@ -240,7 +240,7 @@
     # Lint prose
     - vale --minAlertLevel error doc
     # Lint Markdown
-    - markdownlint --config .markdownlint.json 'doc/**/*.md'
+    - markdownlint --config .markdownlint.yml 'doc/**/*.md'
   except:
     refs:
       - /./@gitlab/omnibus-gitlab