Skip to content

Commit 0344456

Browse files
authored
Merge pull request #16 from SUSE/develop
Merge PR #13, #14 and #15
2 parents fe56bee + dbb236f commit 0344456

23 files changed

+386
-26
lines changed

.github/workflows/ci.yml

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ jobs:
6363
- name: Add dependency Helm chart repositories
6464
run: |
6565
helm repo add bitnami https://charts.bitnami.com/bitnami
66+
helm repo add nfs-ganesha-server-and-external-provisioner https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner/
6667
helm repo update
6768
- name: Install Python
6869
uses: actions/setup-python@v5

.github/workflows/pkg.yml

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ jobs:
4848
- name: Add dependency Helm chart repositories
4949
run: |
5050
helm repo add bitnami https://charts.bitnami.com/bitnami
51+
helm repo add nfs-ganesha-server-and-external-provisioner https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner/
5152
helm repo update
5253
- name: Host charts repository on GitHub Pages
5354
uses: helm/[email protected]

charts/README.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* [Game 2048](game-2048/README.md)
77
* [Let's Encrypt](letsencrypt/README.md)
88
* [NFS-Ganesha](nfs-ganesha/README.md)
9+
* [NFS Server Provisioner](nfs-server-provisioner/README.md)
910
* [Rancher Cluster Template](rancher-cluster-templates/README.md)
1011
* [WordPress](wordpress/README.md)
1112

@@ -22,6 +23,6 @@ helm template <releasename> . -f values.yaml -f values_mine.yaml --namespace dem
2223

2324
# installs a chart from local source
2425
helm upgrade --install <releasename> . -f values.yaml \
25-
# --debug > output.yaml \
26-
--create-namespace --namespace nfs-ganesha
26+
# --debug > output.yaml \
27+
--create-namespace --namespace nfs-ganesha
2728
```
+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
dependencies:
2+
- name: nfs-server-provisioner
3+
repository: https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner/
4+
version: 1.8.0
5+
digest: sha256:17d02ec93947c92806da70bda22b675ce7001873b0a68cb908b9714256704503
6+
generated: "2024-09-19T16:06:10.718178856+02:00"
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: v2
2+
name: nfs-server-provisioner
3+
description: Helm chart for managing WordPress
4+
type: application
5+
version: 0.1.0
6+
appVersion: "4.0.8"
7+
dependencies:
8+
- name: nfs-server-provisioner
9+
version: 1.8.0
10+
repository: https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner/
11+
home: https://github.com/SUSE/lab-setup/tree/main/charts/nfs-server-provisioner
12+
maintainers:
13+
- name: devpro
14+
+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# NFS server provisioner
2+
3+
This Helm chart will install [NFS Server Provisioner](https://github.com/kubernetes-sigs/nfs-ganesha-server-and-external-provisioner) in a Kubernetes cluster.
4+
5+
## Quick start
6+
7+
Install the application with the default settings:
8+
9+
```bash
10+
# adds the repo
11+
helm repo add suse-lab-setup https://opensource.suse.com/lab-setup
12+
helm repo update
13+
14+
# installs the chart
15+
helm upgrade --install nfs-server-provisioner suse-lab-setup/nfs-server-provisioner --namespace nfs-provisioner --create-namespace
16+
```
17+
18+
Look at [values.yaml](values.yaml) for the configuration.
19+
20+
Clean-up:
21+
22+
```bash
23+
helm delete nfs-server-provisioner
24+
kubectl delete ns nfs-provisioner
25+
```
26+
27+
## Upstream version update
28+
29+
- Look for the available versions:
30+
31+
```bash
32+
# adds bitnami helm chart repository
33+
helm repo add nfs-ganesha-server-and-external-provisioner https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner/
34+
helm repo update
35+
36+
# lists available charts
37+
helm search repo nfs-server-provisioner
38+
```
39+
40+
- Update [Chart.yaml](Chart.yaml)
41+
42+
- Update Chart.lock file:
43+
44+
```bash
45+
helm dependency update
46+
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# refers to https://github.com/kubernetes-sigs/nfs-ganesha-server-and-external-provisioner/blob/master/charts/nfs-server-provisioner/values.yaml
2+
nfs-server-provisioner:
3+
storageClass:
4+
defaultClass: true
5+
mountOptions:
6+
- vers=3
7+
- nolock

charts/wordpress/Chart.lock

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
dependencies:
22
- name: wordpress
33
repository: https://charts.bitnami.com/bitnami
4-
version: 19.2.5
5-
digest: sha256:9ecd8b6020982dfb58440e219ed45aadb2856be4c8719b94b364f85fc079e557
6-
generated: "2024-09-04T14:30:06.1580989+02:00"
4+
version: 23.1.15
5+
digest: sha256:75e86638c376cf1a29ffe65dd2d723e30201f21964d90b39d35a73f40c3f3e7e
6+
generated: "2024-09-19T16:23:42.643837319+02:00"

charts/wordpress/Chart.yaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ apiVersion: v2
22
name: wordpress
33
description: Helm chart for managing WordPress
44
type: application
5-
version: 0.1.1
6-
appVersion: "6.4.3"
5+
version: 0.1.2
6+
appVersion: "6.6.2"
77
dependencies:
88
- name: wordpress
9-
version: 19.2.5
9+
version: 23.1.15
1010
repository: https://charts.bitnami.com/bitnami
1111
home: https://github.com/SUSE/lab-setup/tree/main/charts/wordpress
1212
maintainers:

charts/wordpress/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ wordpress:
3636
global:
3737
storageClass: azureblob-fuse
3838
wordpressUsername: myuser
39-
wordpressBlogName: "My Wordpress!"
39+
wordpressBlogName: "My WordPress!"
4040
existingSecret: wordpress-credentials
4141
ingress:
4242
enabled: true

scripts/README.md

+27-17
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,33 @@
33
## Bash functions
44

55
Name | Source
6-
-----------------------------------------------|---------------------------------------------------------------------------------------------
7-
`k3s_copy_kubeconfig` | [scripts/k3s/cluster-lifecycle.sh](scripts/k3s/cluster-lifecycle.sh)
8-
`k3s_create_cluster` | [scripts/k3s/cluster-lifecycle.sh](scripts/k3s/cluster-lifecycle.sh)
9-
`k8s_create_letsencryptclusterissuer` | [scripts/kubernetes/certificate-management.sh](scripts/kubernetes/certificate-management.sh)
10-
`k8s_install_certmanager` | [scripts/kubernetes/certificate-management.sh](scripts/kubernetes/certificate-management.sh)
11-
`k8s_wait_fornodesandpods` | [scripts/kubernetes/cluster-status.sh](scripts/kubernetes/cluster-status.sh)
12-
`rancher_create_apikey` | [scripts/rancher/user-actions.sh](scripts/rancher/user-actions.sh)
13-
`rancher_create_customcluster` | [scripts/rancher/cluster-actions.sh](scripts/rancher/cluster-actions.sh)
14-
`rancher_first_login` | [scripts/rancher/manager-lifecycle.sh](scripts/rancher/manager-lifecycle.sh)
15-
`rancher_get_clusterid` | [scripts/rancher/cluster-actions.sh](scripts/rancher/cluster-actions.sh)
16-
`rancher_get_clusterregistrationcommand` | [scripts/rancher/cluster-actions.sh](scripts/rancher/cluster-actions.sh)
17-
`rancher_install_withcertmanagerclusterissuer` | [scripts/rancher/manager-lifecycle.sh](scripts/rancher/manager-lifecycle.sh)
18-
`rancher_list_clusters` | [scripts/rancher/cluster-actions.sh](scripts/rancher/cluster-actions.sh)
19-
`rancher_login_withpassword` | [scripts/rancher/user-actions.sh](scripts/rancher/user-actions.sh)
20-
`rancher_update_password` | [scripts/rancher/user-actions.sh](scripts/rancher/user-actions.sh)
21-
`rancher_update_serverurl` | [scripts/rancher/manager-settings.sh](scripts/rancher/manager-settings.sh)
22-
`rancher_wait_capiready` | [scripts/rancher/manager-lifecycle.sh](scripts/rancher/manager-lifecycle.sh)
6+
-----------------------------------------------|-----------------------------------------------------------------------------
7+
`k3s_copy_kubeconfig` | [k3s/cluster_lifecycle.sh](k3s/cluster_lifecycle.sh)
8+
`k3s_create_cluster` | [k3s/cluster_lifecycle.sh](k3s/cluster_lifecycle.sh)
9+
`k8s_create_letsencryptclusterissuer` | [kubernetes/certificate_management.sh](kubernetes/certificate_management.sh)
10+
`k8s_install_certmanager` | [kubernetes/certificate_management.sh](kubernetes/certificate_management.sh)
11+
`k8s_wait_fornodesandpods` | [kubernetes/cluster_status.sh](kubernetes/cluster_status.sh)
12+
`keycloak_login` | [authentication/keycloak.sh](authentication/keycloak.sh)
13+
`keycloak_create_user` | [authentication/keycloak.sh](authentication/keycloak.sh)
14+
`keycloak_delete_user` | [authentication/keycloak.sh](authentication/keycloak.sh)
15+
`observability_check_stackpack` | [observability/stackpack.sh](observability/stackpack.sh)
16+
`observability_create_ingestion_api_key` | [observability/api_key.sh](observability/api_key.sh)
17+
`observability_delete_ingestion_api_key` | [observability/api_key.sh](observability/api_key.sh)
18+
`observability_delete_stackpack` | [observability/stackpack.sh](observability/stackpack.sh)
19+
`observability_get_component_snapshot` | [observability/stql.sh](observability/stql.sh)
20+
`observability_get_component_state` | [observability/stql.sh](observability/stql.sh)
21+
`observability_install_cli` | [observability/cli.sh](observability/cli.sh)
22+
`rancher_create_apikey` | [rancher/user_actions.sh](rancher/user_actions.sh)
23+
`rancher_create_customcluster` | [rancher/cluster_actions.sh](rancher/cluster_actions.sh)
24+
`rancher_first_login` | [rancher/manager_lifecycle.sh](rancher/manager_lifecycle.sh)
25+
`rancher_get_clusterid` | [rancher/cluster_actions.sh](rancher/cluster_actions.sh)
26+
`rancher_get_clusterregistrationcommand` | [rancher/cluster_actions.sh](rancher/cluster_actions.sh)
27+
`rancher_install_withcertmanagerclusterissuer` | [rancher/manager_lifecycle.sh](rancher/manager_lifecycle.sh)
28+
`rancher_list_clusters` | [rancher/cluster_actions.sh](rancher/cluster_actions.sh)
29+
`rancher_login_withpassword` | [rancher/user_actions.sh](rancher/user_actions.sh)
30+
`rancher_update_password` | [rancher/user_actions.sh](rancher/user_actions.sh)
31+
`rancher_update_serverurl` | [rancher/manager_settings.sh](rancher/manager_settings.sh)
32+
`rancher_wait_capiready` | [rancher/manager_lifecycle.sh](rancher/manager_lifecycle.sh)
2333

2434
## Concrete examples
2535

scripts/authentication/keycloak.sh

+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#!/bin/bash
2+
3+
#######################################
4+
# Login to Keycloak and get an access token
5+
# Globals:
6+
# SSO_ACCESS_TOKEN
7+
# Arguments:
8+
# kc_url (Keycloak)
9+
# kc_realm (Keycloak)
10+
# kc_client_id (Keycloak)
11+
# kc_client_secret (Keycloak)
12+
# kc_username (Keycloak)
13+
# kc_password (Keycloak)
14+
# Examples:
15+
# keycloak_login https://sso.suse.com instruqt suse xxxxxx admin password
16+
#######################################
17+
keycloak_login() {
18+
local kc_url=$1
19+
local kc_realm=$2
20+
local kc_client_id=$3
21+
local kc_client_secret=$4
22+
local kc_username=$5
23+
local kc_password=$6
24+
25+
local response
26+
response=$(curl -s -X POST "$kc_url/realms/$kc_realm/protocol/openid-connect/token" \
27+
-H 'Content-Type: application/x-www-form-urlencoded' \
28+
--data-urlencode "client_id=$kc_client_id" \
29+
--data-urlencode "client_secret=$kc_client_secret" \
30+
--data-urlencode "username=$kc_username" \
31+
--data-urlencode "password=$kc_password" \
32+
--data-urlencode 'grant_type=password')
33+
34+
echo $response | jq -r .access_token
35+
}
36+
37+
#######################################
38+
# Create a user in Keycloak
39+
# Arguments:
40+
# kc_url (Keycloak)
41+
# kc_realm (Keycloak)
42+
# kc_access_token (Keycloak)
43+
# username
44+
# password
45+
# Examples:
46+
# keycloak_create_user https://sso.suse.com instruqt $SSO_ACCESS_TOKEN user password group
47+
#######################################
48+
keycloak_create_user() {
49+
local kc_url=$1
50+
local kc_realm=$2
51+
local kc_access_token=$3
52+
local username=$4
53+
local password=$5
54+
local group=$6
55+
56+
local user_request
57+
user_request=$(cat <<EOF
58+
{
59+
"username": "$username",
60+
"enabled": true,
61+
"emailVerified": true,
62+
"requiredActions": [],
63+
"email": "$username@instruqt.suse.io",
64+
"groups": ["$group"],
65+
"credentials": [
66+
{
67+
"type": "password",
68+
"value": "$password"
69+
}
70+
]
71+
}
72+
EOF
73+
)
74+
75+
curl -s -X POST "$kc_url/admin/realms/$kc_realm/users" \
76+
-H "Authorization: Bearer $kc_access_token" \
77+
-H 'Content-Type: application/json' \
78+
--data-binary "$user_request"
79+
}
80+
81+
#######################################
82+
# Delete a user in Keycloak
83+
# Arguments:
84+
# kc_url (Keycloak)
85+
# kc_realm (Keycloak)
86+
# kc_access_token (Keycloak)
87+
# username
88+
# Examples:
89+
# keycloak_delete_user https://sso.suse.com instruqt $SSO_ACCESS_TOKEN user
90+
#######################################
91+
keycloak_delete_user() {
92+
local kc_url=$1
93+
local kc_realm=$2
94+
local kc_access_token=$3
95+
local username=$4
96+
97+
local user_id
98+
user_id=$(curl -s -X GET "$kc_url/admin/realms/$kc_realm/users?username=$username" \
99+
-H "Authorization: Bearer $kc_access_token" | jq -r .[0].id)
100+
101+
curl -s -X DELETE "$kc_url/admin/realms/$kc_realm/users/$user_id" \
102+
-H "Authorization: Bearer $kc_access_token"
103+
}
File renamed without changes.

scripts/observability/api_key.sh

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/bin/bash
2+
3+
#######################################
4+
# Create an Ingestion API key for SUSE Observability
5+
# Output:
6+
# The ingestion API key
7+
# Arguments:
8+
# url (SUSE Observability)
9+
# service_token (SUSE Observability)
10+
# cluster_name
11+
# Examples:
12+
# observability_create_ingestion_api_key https://obs.suse.com/ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx demo
13+
#######################################
14+
observability_create_ingestion_api_key() {
15+
local url=$1
16+
local service_token=$2
17+
local cluster_name=$3
18+
19+
local resp
20+
resp=$(/usr/local/bin/sts ingestion-api-key create --name $cluster_name -o json --url $url --service-token $service_token)
21+
22+
echo $resp | jq -r '."ingestion-api-key".apiKey'
23+
}
24+
25+
#######################################
26+
# Delete an Ingestion API key for SUSE Observability
27+
# Arguments:
28+
# url (SUSE Observability)
29+
# service_token (SUSE Observability)
30+
# cluster_name
31+
# Examples:
32+
# observability_delete_ingestion_api_key https://obs.suse.com/ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx demo
33+
#######################################
34+
observability_delete_ingestion_api_key() {
35+
local url=$1
36+
local service_token=$2
37+
local cluster_name=$3
38+
39+
local keys key_id
40+
41+
keys=$(/usr/local/bin/sts ingestion-api-key list -o json --url $url --service-token $service_token)
42+
key_id=$(echo $keys | jq -r '."ingestion-api-keys"[] | select(.name == "'$cluster_name'") | .id')
43+
if [ -n "$key_id" ]; then
44+
/usr/local/bin/sts ingestion-api-key delete --id $key_id --url $url --service-token $service_token
45+
echo ">>> Ingestion API key for cluster '${cluster_name}' deleted"
46+
else
47+
echo ">>> Ingestion API key for cluster '${cluster_name}' not found"
48+
fi
49+
}

scripts/observability/cli.sh

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/bash
2+
3+
#######################################
4+
# Install the SUSE Observability CLI
5+
#######################################
6+
observability_install_cli() {
7+
if ! [ -x "$(command -v sts)" ]; then
8+
curl -o- https://dl.stackstate.com/stackstate-cli/install.sh | STS_CLI_LOCATION=/usr/local/bin bash
9+
else
10+
echo ">>> sts CLI already installed"
11+
fi
12+
}

0 commit comments

Comments
 (0)