Create a values.yaml file on your local
# File: values.yaml
injector:
enabled: false
server:
auditStorage:
enabled: true
size: 1Gi
storageClass: csi-disk
dataStorage:
enabled: true
size: 1Gi
storageClass: csi-disk
ingress:
enabled: true
hosts:
- host: vault-🚒.pea-workshops.odd.works
ingressClassName: nginx
Add repo
helm repo add hashicorp <https://helm.releases.hashicorp.com>
Update repo
helm repo update
Install Vault
helm -n vault-🚒 install vault-🚒 hashicorp/vault -f values.yaml
Check pods
kubectl -n vault-🚒 get pods
Execute to the pod
kubectl -n vault-🚒 exec -it vault-🚒-0 -- sh
Log in
vault login
Enable KV v2 at path secret
vault secrets enable -path=secret kv-v2
Write a secret
vault kv put secret/myapp username=admin password=pass123
Read a secret
vault kv get secret/myapp
Update a secret
vault kv put secret/myapp username=admin password=newpass456
Delete a secret version (soft delete)
vault kv delete secret/myapp
// File: main.go
package main
import (
"fmt"
"log"
"os"
"github.com/hashicorp/vault/api"
)
func main() {
client, err := api.NewClient(&api.Config{
Address: "<https://vault-atb.pea-workshops.odd.works>",
})
if err != nil {
log.Fatal(err)
}
client.SetToken(os.Getenv("VAULT_TOKEN"))
secret, err := client.Logical().Read("secret/data/myapp")
if err != nil {
log.Fatal(err)
}
if secret != nil {
data := secret.Data["data"].(map[string]interface{})
fmt.Println("🍊 Retrieved secret data with Golang:")
fmt.Println("Username:", data["username"])
fmt.Println("Password:", data["password"])
}
}
Run
go mod tidy
export VAULT_TOKEN=🚒
go run main.go