Commit Graph

99 Commits

Author SHA1 Message Date
Dylan Griffith c9b0ac5fc4 GitLab Managed App ensure helm version uses tls opts
The TLS opts were missing from helm version command which meant that it
was just perpetually failing and hence wasting 30s of time waiting for a
command to be successful that was never going to be successful. This
never actually caused any errors because this loop will happily just
fail 30 times without breaking the overall script but it was just a
waste of installation time so now installing apps should be ~30s faster.
2019-07-15 11:38:40 +10:00
Hordur Freyr Yngvason 6971fd261d Give Knative serving permissions to service account
GitLab uses a kubernetes service account to perform deployments. For
serverless deployments to work as expected with externally created
clusters with their own knative installations (e.g. via Cloud Run), this
account requires additional permissions in the serving.knative.dev API
group.
2019-07-11 11:26:15 +00:00
Thong Kuah c7d50ddf55 Fix connection to Tiller error while uninstalling
Both the `install-<app>` and `uninstall-<app>` pods loads the
`values-content-configuration-<app>` configmap into the pod
(see `#volume_specification`). This configmap contains the cert
necessary to connect to Tiller. The cert though is only valid for 30
minutes.

So this fixes the bug where the configmap when uninstalling should be
updated as well.
2019-06-05 00:07:47 +12:00
Jacques Erasmus 3c913df28e Add changelog entry
Added a changelog entry for the feature
2019-05-27 08:23:17 +00:00
Thong Kuah 33a765c17a Teach Helm::Api about #uninstall 2019-04-29 22:55:11 -07:00
Thong Kuah f8326af565 Implement commands to uninstall cluster applications
This is the backend part which just allows uninstalling Prometheus for
now.
2019-04-16 09:10:11 +10:00
Dylan Griffith c239bfcb17 Add more info logging to cluster apps
Log events so that it's easy to see
when different requests are starting.
2019-04-10 06:38:27 +00:00
Mayra Cabrera 135b78bb25 Revert "Merge branch 'bump_kubernetes_1_11_9' into 'master'"
This reverts merge request !26991
2019-04-05 20:22:50 +00:00
Thong Kuah 38b40f9164 Bump Helm to 2.13.1 and kubectl to 1.11.9 2019-04-05 00:08:11 +13:00
Grzegorz Bizon 5cea1e8b80 Merge branch '56937-edit-knative-domain' into 'master'
Edit Knative domain after it has been deployed

Closes #56937

See merge request gitlab-org/gitlab-ce!25386
2019-03-07 12:43:34 +00:00
João Cunha f8234d9a08 Creates Clusterss::ApplciationsController update endpoint
- Creates new route
- Creates new controller action
- Creates call stack:
  Clusterss::ApplciationsController calls -->
  Clusters::Applications::UpdateService calls -->
  Clusters::Applications::ScheduleUpdateService calls -->
  ClusterUpdateAppWorker calls -->
  Clusters::Applications::PatchService -->
  ClusterWaitForAppInstallationWorker

DRY req params

Adds gcp_cluster:cluster_update_app queue

Schedule_update_service is uneeded

Extract common logic to a parent class (UpdateService will need it)

Introduce new UpdateService

Fix rescue class namespace

Fix RuboCop offenses

Adds BaseService for create and update services

Remove request_handler code duplication

Fixes update command

Move update_command to ApplicationCore so all apps can use it

Adds tests for Knative update_command

Adds specs for PatchService

Raise error if update receives an unistalled app

Adds update_service spec

Fix RuboCop offense

Use subject in favor of go

Adds update endpoint specs for project namespace

Adds update endpoint specs for group namespace
2019-03-05 08:32:51 +02:00
Yorick Peterse 03340f0987 Merge branch 'security-kubernetes-local-ssrf' into 'master'
Block local URLs for Kubernetes integration

See merge request gitlab/gitlabhq!2901
2019-03-04 18:36:50 +00:00
Thong Kuah af16fd687e Do not allow local urls in Kubernetes form
Use existing `public_url` validation to block various local urls. Note
that this validation will allow local urls if the "Allow requests to the
local network from hooks and services" admin setting is enabled.

Block KubeClient from using local addresses

It will also respect `allow_local_requests_from_hooks_and_services` so
if that is enabled KubeClinet will allow local addresses
2019-02-21 23:16:11 +13:00
Thong Kuah 8004508943 Bump helm and kubectl versions
Bump the helm and kubectl used in our Kubernetes integration, used e.g.
to install apps.

Note I have only bumped to the latest patch of the v1.11 series for
kubectl as GKE clusters are still on 1.10/1.11
2019-02-20 09:54:07 +13:00
Thong Kuah f67fc23727 Upgrade cluster applications, starting with runner 2019-02-07 21:40:55 +00:00
Thong Kuah f234aef994 Use http_max_redirects opt to replace monkeypatch
http_max_redirects was introduced in 4.2.2, so upgrade kubeclient.

The monkey-patch was global so we will have to check that all instances
of Kubeclient::Client are handled.

Spec all methods of KubeClient

This should provide better confidence that we are indeed disallowing
redirection in all cases
2019-01-25 16:48:37 +13:00
Takuya Noguchi db237d8431 Update Helm to 2.12.2 to address Helm client vulnerability
Signed-off-by: Takuya Noguchi <takninnovationresearch@gmail.com>
2019-01-18 09:21:47 +09:00
Thong Kuah dc18272091 Modify service so that it can be re-run
If the service fails mid-point, then we should be able to re-run this
service. So, detect presence of any previously created Kubernetes
resource and update or create accordingly.

Fix specs accordingly. In the case of finalize_creation_service_spec.rb,
I decided to stub out the async worker rather than maintaining
individual stubs for various kubeclient calls for that worker.

Also add test cases for group clusters
2018-12-04 15:46:46 +13:00
Stan Hu 681d7139a9 Merge branch 'json-logging-for-k8s' into 'master'
Json logging for k8s Integration

See merge request gitlab-org/gitlab-ce!23328
2018-11-27 16:51:34 +00:00
Dylan Griffith 7e7fb6deba Use JSON logging for helm install services 2018-11-27 15:23:02 +01:00
Dylan Griffith 6a66e4a1f1 Don't remove failed install pods
We want to keep failed install pods around so that it is easier to debug
why a failure occured. With this change we also need to ensure that we
remove a previous pod with the same name before installing so that
re-install does not fail.

Another change here is that we no longer need to catch errors from
delete_pod! in CheckInstallationProgressService as we now catch the
ResourceNotFoundError in Helm::Api. The catch statement in
CheckInstallationProgressService was also probably too broad before and
should have been narrowed down simply to ResourceNotFoundError.
2018-11-27 12:54:32 +01:00
Amit Rathi c3bad68d1c Merge branch 'master' into certmanager-temp 2018-11-20 17:58:10 +05:30
Amit Rathi 2bb7573380 Updated schema.rb and remove extra char from install_command 2018-11-20 00:02:07 +05:30
Amit Rathi 1c7372ad56 Merge branch 'master' into certmanager-temp 2018-11-19 23:12:52 +05:30
Amit Rathi feee33e0dc Remove application flags 2018-11-19 22:47:59 +05:30
gfyoung 7ec8af5017 Enable even more frozen string for lib/gitlab
Enables frozen string for the following:

* lib/gitlab/hook_data/**/*.rb
* lib/gitlab/i18n/**/*.rb
* lib/gitlab/import/**/*.rb
* lib/gitlab/import_export/**/*.rb
* lib/gitlab/kubernetes/**/*.rb
* lib/gitlab/legacy_github_import/**/*.rb
* lib/gitlab/manifest_import/**/*.rb
* lib/gitlab/metrics/**/*.rb
* lib/gitlab/middleware/**/*.rb

Partially addresses gitlab-org/gitlab-ce#47424.
2018-11-16 17:41:14 -08:00
Kamil Trzciński 5b75fcf6f2 Merge branch '49726-upgrade-helm-to-2-11' into 'master'
Resolve "Upgrade Helm Tiller Version Used By GitLab Managed Apps"

Closes #49726

See merge request gitlab-org/gitlab-ce!22693
2018-11-16 12:09:26 +00:00
Dylan Griffith 1244533b77 Remove unnecessary --tiller-namespace 2018-11-16 10:57:48 +00:00
Dylan Griffith 9b1a99b03d Use helm version loop instead of sleep in ClientCommand 2018-11-16 10:57:27 +00:00
Dylan Griffith a71b3f6a7c Extract Helm::ClientCommand for shared commands 2018-11-16 10:57:20 +00:00
Dylan Griffith fe1469e12f Upgrade helm to 2.11.0 and upgrade on every install 2018-11-16 10:22:40 +00:00
Kamil Trzciński 5059c15d06 Merge branch '53626-update-config-map-on-install-retry' into 'master'
Update config map if already present on install

Closes #53626

See merge request gitlab-org/gitlab-ce!22969
2018-11-15 12:33:40 +00:00
Amit Rathi 161e66890c Set appropriate RBAC flag for cluster applications 2018-11-15 17:52:41 +05:30
Chris Baumbauer 327892b23e Add knative client to kubeclient library 2018-11-15 11:39:43 +00:00
Thong Kuah 429d3e4952 Update config map if already present on install
When an application install fails, and the user retries install, the
configmap for the application will already exists. If so, we simply
update instead of create.
2018-11-15 22:39:42 +13:00
Amit Rathi 5c275490ec Merge branch 'master' into certmanager-temp 2018-11-14 10:14:50 +05:30
Amit Rathi 631ab89885 Use email on the account 2018-11-13 20:36:06 +05:30
Thong Kuah 14b3033a0d Show HTTP response code for Kubernetes errors 2018-11-13 12:46:01 +00:00
Amit Rathi 0e4ad53c92 Remove logging from pod.rb 2018-11-13 17:42:34 +05:30
Amit Rathi 7be10a7c21 Remove logging changes 2018-11-13 17:40:38 +05:30
Amit Rathi 6dda43d67e Cleanup 2018-11-13 17:38:04 +05:30
Amit Rathi 206f6747ec Updated logging 2018-11-13 16:57:49 +05:30
Amit Rathi c2407dab3e Merge branch 'master' into certmanager-temp 2018-11-12 12:06:59 +05:30
Dylan Griffith da7836956e Improve Debugging Capabilities For Helm Application Installs 2018-11-09 15:03:24 +00:00
Chris Baumbauer 26673cc827 Fix double-negation 2018-11-06 12:06:37 -08:00
Chris Baumbauer 008126a878 Refactor preinstall/postinstall methods in the helm installer 2018-11-06 12:00:16 -08:00
Chris Baumbauer 97441486ce Fix issue with missing knative cluster role binding, and cleanup tests 2018-11-05 23:55:18 -08:00
Chris Baumbauer c10452d285 Resolve issues raised by Kamil 2018-11-03 10:48:48 -07:00
Chris Baumbauer aa44393e8f Merge branch 'master' into triggermesh-phase1-knative 2018-11-03 10:13:35 -07:00
Amit Rathi 8837519445 Pushing WIP state for backup 2018-11-03 09:08:21 +05:30