diff options
| author | Kamil Trzciński <ayufan@ayufan.eu> | 2017-07-06 13:05:50 +0000 |
|---|---|---|
| committer | Kamil Trzciński <ayufan@ayufan.eu> | 2017-07-06 13:05:50 +0000 |
| commit | e0b3257b36396a43495a148b7642435c6cae82a5 (patch) | |
| tree | bdee0e945bcacf24709daaf7299375dd359621cc /lib | |
| parent | a33fb2132cc9c1924fe986ce562cd7bea084a5c9 (diff) | |
| parent | dbb313c26f79e5bebf197af8eba24411fced51bb (diff) | |
| download | gitlab-ce-e0b3257b36396a43495a148b7642435c6cae82a5.tar.gz | |
Merge branch '33360-generate-kubeconfig' into 'master'
Generate KUBECONFIG in KubernetesService#predefined_variables
Closes #33360
See merge request !12223
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/gitlab/kubernetes.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/gitlab/kubernetes.rb b/lib/gitlab/kubernetes.rb index c56c1a4322f..cdbdfa10d0e 100644 --- a/lib/gitlab/kubernetes.rb +++ b/lib/gitlab/kubernetes.rb @@ -76,5 +76,44 @@ module Gitlab url.to_s end + + def to_kubeconfig(url:, namespace:, token:, ca_pem: nil) + config = { + apiVersion: 'v1', + clusters: [ + name: 'gitlab-deploy', + cluster: { + server: url + } + ], + contexts: [ + name: 'gitlab-deploy', + context: { + cluster: 'gitlab-deploy', + namespace: namespace, + user: 'gitlab-deploy' + } + ], + 'current-context': 'gitlab-deploy', + kind: 'Config', + users: [ + { + name: 'gitlab-deploy', + user: { token: token } + } + ] + } + + kubeconfig_embed_ca_pem(config, ca_pem) if ca_pem + + config.deep_stringify_keys + end + + private + + def kubeconfig_embed_ca_pem(config, ca_pem) + cluster = config.dig(:clusters, 0, :cluster) + cluster[:'certificate-authority-data'] = Base64.encode64(ca_pem) + end end end |
