• Stars
    star
    611
  • Rank 73,401 (Top 2 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 6 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Kubernetes Container Storage Interface driver for Hetzner Cloud Volumes

Container Storage Interface driver for Hetzner Cloud

GitHub Actions status

This is a Container Storage Interface driver for Hetzner Cloud enabling you to use ReadWriteOnce Volumes within Kubernetes & other Container Orchestrators. Please note that this driver requires Kubernetes 1.19 or newer.

Getting Started

Depending on your Container Orchestrator you need to follow different steps to get started with the Hetzner Cloud csi-driver. You can also find other docs relevant to that Container Orchestrator behind the link:

Kubernetes

Docker Swarm Not officially supported

Tests

Integration Tests

Requirements: Docker

The core operations like publishing and resizing can be tested locally with Docker.

go test $(go list ./... | grep integration) -v

E2E Tests

⚠️ Kubernetes E2E Tests were recently refactored and the docs are now outdated. See the GitHub Actions workflow for an up-to-date script to run the e2e tests.

The Hetzner Cloud CSI Driver was tested against the official k8s e2e tests for a specific version. You can run the tests with the following commands. Keep in mind, that these tests run on real cloud servers and will create volumes that will be billed.

Test Server Setup:

1x CPX21 (Ubuntu 18.04)

Requirements: Docker and Go 1.17

  1. Configure your environment correctly
    export HCLOUD_TOKEN=<specifiy a project token>
    export K8S_VERSION=1.21.0 # The specific (latest) version is needed here
    export USE_SSH_KEYS=key1,key2 # Name or IDs of your SSH Keys within the Hetzner Cloud, the servers will be accessible with that keys
  2. Run the tests
    go test $(go list ./... | grep e2e) -v -timeout 60m

The tests will now run, this will take a while (~30 min).

If the tests fail, make sure to clean up the project with the Hetzner Cloud Console or the hcloud cli.

Local test setup

⚠️ Local Kubernetes Dev Setup was recently refactored and the docs are now outdated. Check out the scripts dev-up.sh & dev-down.sh for an automatic dev setup.

This repository provides skaffold to easily deploy / debug this driver on demand

Requirements

  1. Install hcloud-cli
  2. Install k3sup
  3. Install cilium
  4. Install docker

You will also need to set a HCLOUD_TOKEN in your shell session

Manual Installation guide

  1. Create an SSH key

Assuming you already have created an ssh key via ssh-keygen

hcloud ssh-key create --name ssh-key-csi-test --public-key-from-file ~/.ssh/id_rsa.pub 
  1. Create a server
hcloud server create --name csi-test-server --image ubuntu-20.04 --ssh-key ssh-key-csi-test --type cx11 
  1. Setup k3s on this server
k3sup install --ip $(hcloud server ip csi-test-server) --local-path=/tmp/kubeconfig --cluster --k3s-channel=v1.23 --k3s-extra-args='--no-flannel --no-deploy=servicelb --no-deploy=traefik --disable-cloud-controller --disable-network-policy --kubelet-arg=cloud-provider=external'
  • The kubeconfig will be created under /tmp/kubeconfig
  • Kubernetes version can be configured via --k3s-channel
  1. Switch your kubeconfig to the test cluster
export KUBECONFIG=/tmp/kubeconfig
  1. Install cilium + test your cluster
cilium install
  1. Add your secret to the cluster
kubectl -n kube-system create secret generic hcloud --from-literal="token=$HCLOUD_TOKEN"
  1. Install hcloud-cloud-controller-manager + test your cluster
kubectl apply -f  https://github.com/hetznercloud/hcloud-cloud-controller-manager/releases/latest/download/ccm.yaml
kubectl config set-context default
kubectl get node -o wide
  1. Deploy your CSI driver
SKAFFOLD_DEFAULT_REPO=naokiii skaffold dev
  • docker login required
  • Skaffold is using your own dockerhub repo to push the CSI image.

On code change, skaffold will repack the image & deploy it to your test cluster again. Also, it is printing all logs from csi components.

License

MIT license

More Repositories

1

cli

A command-line interface for Hetzner Cloud
Go
1,052
star
2

awesome-hcloud

A curated list of awesome libraries, tools, and integrations for Hetzner Cloud
926
star
3

hcloud-cloud-controller-manager

Kubernetes cloud-controller-manager for Hetzner Cloud
Go
690
star
4

terraform-provider-hcloud

Terraform Hetzner Cloud provider
Go
484
star
5

hcloud-go

A Go library for the Hetzner Cloud API
Go
362
star
6

hcloud-python

A Python library for the Hetzner Cloud API
Python
262
star
7

apps

Hetzner Cloud Apps
Ruby
114
star
8

packer-plugin-hcloud

Packer plugin for Hetzner Cloud Builder
Go
22
star
9

kubecon-europe-2021

This repository is part of a live demo at KubeCon Europe 2021 that shows how different official integrations can be used to deploy a Kubernetes (k3s) cluster at Hetzner Cloud.
Jinja
19
star
10

hc-utils

A set of tools for the Hetzner Cloud platform
Shell
17
star
11

protractor-test-helper

Helper functions to make e2e testing with protractor more fun
TypeScript
15
star
12

ceph-s3-box

Containerized Ceph and Radosgw Playground
Shell
14
star
13

setup-hcloud

GitHub action to install the Hetzner Cloud CLI.
TypeScript
13
star
14

kubecon-europe-2022

This repository is part of a live demo at KubeCon Europe 2022 that shows how different official integrations can be used to deploy a Kubernetes (k3s) cluster at Hetzner Cloud.
Jinja
10
star
15

ngx-translate-mock

TypeScript
9
star
16

kubernetes-dev-env

Kubernetes development environment for our Integrations.
HCL
6
star
17

ansible-role-aptly

Ansible Role - Install and configure Aptly
Python
5
star
18

ansible-role-ipxe-ca

Ansible Role - Cross-Sign all Root CAs for iPXE
Python
5
star
19

cilium-tests

4
star
20

bnxt_en_xdp_redirect_reproducer

Simple reproducer for an eBPF XDP redirect issue we observe with BroadCom NetExtreme NICs (bnxt_en driver).
C
4
star
21

helm-charts

Helm Chart Repository for Hetzner Cloud projects
3
star
22

ngx-prepare-test-environment

TypeScript
3
star
23

fleeting-plugin-hetzner

Mirror of https://gitlab.com/hetznercloud/fleeting-plugin-hetzner
Go
1
star
24

tps-action

Github Action to setup a temporary Hetzner Cloud Token
Shell
1
star