58 lines
3 KiB
Markdown
58 lines
3 KiB
Markdown
|
---
|
||
|
title: DigitalOcean Kubernetes
|
||
|
description: Connects to DigitalOcean Kubernetes cluster
|
||
|
sidebar_label: 81 DigitalOcean Kubernetes
|
||
|
slug: /scripts/after/run_onchange_after_81-k8s-digitalocean.sh.tmpl
|
||
|
githubLocation: https://github.com/megabyte-labs/install.doctor/blob/master/home/.chezmoiscripts/universal/run_onchange_after_81-k8s-digitalocean.sh.tmpl
|
||
|
scriptLocation: https://github.com/megabyte-labs/install.doctor/raw/master/home/.chezmoiscripts/universal/run_onchange_after_81-k8s-digitalocean.sh.tmpl
|
||
|
repoLocation: home/.chezmoiscripts/universal/run_onchange_after_81-k8s-digitalocean.sh.tmpl
|
||
|
---
|
||
|
# DigitalOcean Kubernetes
|
||
|
|
||
|
Connects to DigitalOcean Kubernetes cluster
|
||
|
|
||
|
## Overview
|
||
|
|
||
|
This script runs when `DIGITALOCEAN_ACCESS_TOKEN` is defined as an environment variable or as an encrypted key (see
|
||
|
[Secrets documentation](https://install.doctor/docs/customization/secrets#encrypted-secrets)). If the check passes,
|
||
|
then the script ensures the DigitalOcean CLI is installed (i.e. `doctl`). Then, it uses `doctl` to connect to the Kubernetes
|
||
|
cluster defined by the the configuration stored under `.user.digitalOceanClusterId` in `home/.chezmoi.yaml.tmpl`.
|
||
|
|
||
|
|
||
|
|
||
|
## Source Code
|
||
|
|
||
|
```
|
||
|
{{- if (and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "DIGITALOCEAN_ACCESS_TOKEN")) (env "DIGITALOCEAN_ACCESS_TOKEN")) -}}
|
||
|
#!/usr/bin/env bash
|
||
|
# @file DigitalOcean Kubernetes
|
||
|
# @brief Connects to DigitalOcean Kubernetes cluster
|
||
|
# @description
|
||
|
# This script runs when `DIGITALOCEAN_ACCESS_TOKEN` is defined as an environment variable or as an encrypted key (see
|
||
|
# [Secrets documentation](https://install.doctor/docs/customization/secrets#encrypted-secrets)). If the check passes,
|
||
|
# then the script ensures the DigitalOcean CLI is installed (i.e. `doctl`). Then, it uses `doctl` to connect to the Kubernetes
|
||
|
# cluster defined by the the configuration stored under `.user.digitalOceanClusterId` in `home/.chezmoi.yaml.tmpl`.
|
||
|
|
||
|
{{ includeTemplate "universal/profile" }}
|
||
|
{{ includeTemplate "universal/logg" }}
|
||
|
|
||
|
### Ensure `DIGITALOCEAN_ACCESS_TOKEN` is defined (used for headlessly connecting to the k8s cluster)
|
||
|
export DIGITALOCEAN_ACCESS_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "DIGITALOCEAN_ACCESS_TOKEN")) }}{{ includeTemplate "secrets/DIGITALOCEAN_ACCESS_TOKEN" | decrypt }}{{ else }}{{ env "DIGITALOCEAN_ACCESS_TOKEN" }}{{ end }}"
|
||
|
|
||
|
if [ -n "$DIGITALOCEAN_ACCESS_TOKEN" ] && [ -n '{{ .user.digitalOceanClusterId }}' ]; then
|
||
|
### Ensure DigitalOcean CLI is instaled
|
||
|
if ! command -v doctl > /dev/null; then
|
||
|
logg info '`doctl` is missing - installing via Homebrew'
|
||
|
brew install doctl
|
||
|
fi
|
||
|
|
||
|
### Connect to the k8s cluster with `doctl`
|
||
|
logg info 'Connecting to the DigitalOcean k8s cluster with `doctl`'
|
||
|
doctl kubernetes cluster kubeconfig save {{ .user.digitalOceanClusterId }}
|
||
|
else
|
||
|
logg info 'Skipping connecting to the DigitalOcean k8s cluster because either the `DIGITALOCEAN_ACCESS_TOKEN` or the `.user.digitalOceanClusterId` is not defined'
|
||
|
fi
|
||
|
|
||
|
{{ end -}}
|
||
|
```
|