-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaction.yaml
85 lines (78 loc) · 2.93 KB
/
action.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
name: get-kubeconfig-from-vault
description: ''
inputs:
vault_addr:
description: ''
required: false
vault_token:
description: ''
required: false
vault_kubernetes_backend:
description: ''
required: true
vault_kubernetes_role:
description: ''
required: true
kubeconfig_template:
description: ''
required: false
default: |
apiVersion: v1
kind: Config
current-context: default
clusters:
- name: cluster
cluster:
certificate-authority-data: ${KUBERNETES_CA_CERT}
server: ${KUBERNETES_HOST}
users:
- name: user
user:
token: ${SERVICE_ACCOUNT_TOKEN}
contexts:
- name: default
context:
cluster: cluster
user: user
namespace: default
runs:
using: composite
steps:
# Install HashiCorp Vault #################################################
- run: |
export VERSION=$(gh release list --repo hashicorp/vault | grep Latest | awk '{sub(/v/,X,$0);print $1}')
wget -q https://releases.hashicorp.com/vault/${VERSION}/vault_${VERSION}_linux_amd64.zip
sudo unzip vault_${VERSION}_linux_amd64.zip vault -d /usr/bin
shell: bash
env:
GH_TOKEN: ${{ github.token }}
# Load Vault address ######################################################
- if: inputs.vault_addr
run: echo "VAULT_ADDR=${{ inputs.vault_addr }}" >> ${GITHUB_ENV}
shell: bash
# Load Vault token ########################################################
- if: inputs.vault_token
run: echo "VAULT_TOKEN=${{ inputs.vault_token }}" >> ${GITHUB_ENV}
shell: bash
# Fetch service account token #############################################
- run: echo "SERVICE_ACCOUNT_TOKEN=$(vault write -force -field service_account_token ${{ inputs.vault_kubernetes_backend }}/creds/${{ inputs.vault_kubernetes_role }})" >> ${GITHUB_ENV}
shell: bash
# Fetch kubernetes host ###################################################
- run: |
echo "KUBERNETES_HOST=$(vault read -field kubernetes_host ${{ inputs.vault_kubernetes_backend }}/config)" >> ${GITHUB_ENV}
echo "::add-mask::${KUBERNETES_HOST}"
shell: bash
# Fetch kubernetes CA token ###############################################
- run: |
echo "KUBERNETES_CA_CERT=$(vault read -field kubernetes_ca_cert ${{ inputs.vault_kubernetes_backend }}/config | base64 -w 0)" >> ${GITHUB_ENV}
echo "::add-mask::${KUBERNETES_CA_CERT}"
shell: bash
# Generate kubeconfig file ################################################
- run: |
mkdir -p ${{ github.workspace }}/.kube
echo "${{ inputs.kubeconfig_template }}" | envsubst | tee -a ${KUBECONFIG}
chmod 0600 ${KUBECONFIG}
echo "KUBECONFIG=${KUBECONFIG}" >> ${GITHUB_ENV}
shell: bash
env:
KUBECONFIG: ${{ github.workspace }}/.kube/config