{"id":39390,"date":"2025-07-15T09:30:00","date_gmt":"2025-07-15T07:30:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=39390"},"modified":"2025-07-11T12:08:04","modified_gmt":"2025-07-11T10:08:04","slug":"install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/","title":{"rendered":"Install a single node Kubernetes cluster with SUSE RKE2 and deploy your own YaK instance"},"content":{"rendered":"\n<p>I bought a mini PC last year and I use it as a home lab to test things and play around.<br>So I thought, why not install a RKE2 Kubernetes cluster and deploy my own YaK instance on it?<\/p>\n\n\n\n<p>Let\u2019s dive-in.<\/p>\n\n\n\n<p>In this article, I will explain how I installed a single node Kubernetes cluster with SUSE RKE2 and deployed my own local YaK instance.<\/p>\n\n\n\n<p>Here is my setup:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Intel NUC 13 Pro (with Intel Core i5-1340P)<\/li>\n\n\n\n<li>64GB of RAM DDR4<\/li>\n\n\n\n<li>1TB SSD<\/li>\n<\/ul>\n\n\n\n<p>I\u2019m using <a href=\"https:\/\/www.proxmox.com\/en\/\">Proxmox<\/a> as a virtualisation platform on this mini PC, and I\u2019ve chosen SUSE Leap 15.6 as the operating system for the virtual machine that will host my RKE2 installation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-create-my-vm-in-proxmox\">Create my VM in Proxmox<\/h2>\n\n\n\n<p>First, I created a VM and dedicated some resources to my instance.<\/p>\n\n\n\n<p>SUSE recommends at least 8GB of RAM and 4vCPU for RKE2 to run smoothly.<\/p>\n\n\n\n<p>Let\u2019s start with that, I can adjust later if the system struggles.<\/p>\n\n\n\n<p>I added 50GB of storage, that should be more than enough (that\u2019s a lot of storage, we really don\u2019t need that much for the YaK itself, but I might reuse this VM for other purposes too)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"904\" height=\"478\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-9.png\" alt=\"\" class=\"wp-image-39392\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-9.png 904w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-9-300x159.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-9-768x406.png 768w\" sizes=\"auto, (max-width: 904px) 100vw, 904px\" \/><\/figure>\n\n\n\n<p>I\u2019m passing the installation steps of SUSE Leap in server mode, as they are straightforward.<br>But, just in case, I&#8217;m adding the links to <a href=\"https:\/\/www.proxmox.com\/en\/products\/proxmox-virtual-environment\/get-started\">Proxmox<\/a> and to <a href=\"https:\/\/doc.opensuse.org\/documentation\/leap\/startup\/html\/book-startup\/art-opensuse-installquick.html\">SUSE Leap<\/a> install docs here.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-install-packages\">Install packages<\/h2>\n\n\n\n<p>First of all, we need to install the following packages on the VM hosting the YaK:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tar<\/li>\n\n\n\n<li>Git<\/li>\n\n\n\n<li>Helm<\/li>\n<\/ul>\n\n\n\n<p>Let\u2019s check what is already installed by default with SUSE Leap 15.6:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [12,20,25]; title: ; notranslate\" title=\"\">\nlocalhost:~ # zypper se --installed-only tar\nLoading repository data...\nReading installed packages...\n\nS  | Name                    | Summary                                          | Type\n---+-------------------------+--------------------------------------------------+--------\ni  | cantarell-fonts         | Contemporary Humanist Sans Serif Font            | package\ni  | deltarpm                | Tools to Create and Apply deltarpms              | package\ni  | shared-python-startup   | Startup script shared by all Python interpreters | package\ni  | star                    | POSIX.1-2001-Compliant Tar Implementation        | package\ni  | star-rmt                | Magnetic tape control and server                 | package\ni  | tar                     | GNU implementation of ((t)ape (ar)chiver)        | package\ni  | tar-lang                | Translations for package tar                     | package\ni  | tar-rmt                 | Remote tape drive control server by GNU          | package\ni  | zypper-needs-restarting | needs-restarting compatibility with zypper       | package\n\nlocalhost:~ # zypper se --installed-only git\nLoading repository data...\nReading installed packages...\nNo matching items found.\n\nlocalhost:~ # zypper se --installed-only helm\nLoading repository data...\nReading installed packages...\nNo matching items found.\n<\/pre><\/div>\n\n\n<p>As you can see, <strong>Tar<\/strong> is already installed but not <strong>Git<\/strong> nor <strong>Helm<\/strong>. Let\u2019s install them:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nlocalhost:~ # zypper install git\nlocalhost:~ # zypper install helm\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-stop-firewalld\">Stop firewalld<\/h2>\n\n\n\n<p>As a <a href=\"https:\/\/dbi-services.gitbook.io\/yak-user-doc\/installation\/system-requirements\">pre-requisite<\/a>, Firewalld must be stopped. <br>Let\u2019s check its status:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [4]; title: ; notranslate\" title=\"\">\nlocalhost:~ # systemctl status firewalld\n\u25cf firewalld.service - firewalld - dynamic firewall daemon\n     Loaded: loaded (\/usr\/lib\/systemd\/system\/firewalld.service; enabled; preset: disabled)\n     Active: active (running) since Wed 2025-04-30 12:12:43 CEST; 2h 7min ago\n       Docs: man:firewalld(1)\n   Main PID: 743 (firewalld)\n      Tasks: 2 (limit: 4915)\n        CPU: 349ms\n     CGroup: \/system.slice\/firewalld.service\n             \u2514\u2500743 \/usr\/bin\/python3 \/usr\/sbin\/firewalld --nofork --nopid\n\nApr 30 12:12:43 localhost systemd&#x5B;1]: Starting firewalld - dynamic firewall daemon...\nApr 30 12:12:43 localhost systemd&#x5B;1]: Started firewalld - dynamic firewall daemon.\n\n<\/pre><\/div>\n\n\n<p>Firewalld is active. I need to stop and disable the service so that it does not restart at system startup:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nlocalhost:~ # systemctl stop firewalld\nlocalhost:~ # systemctl disable firewalld\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-install-rke2\">Install RKE2<\/h2>\n\n\n\n<p>Next, I installed RKE2. To do so, I simply followed the official procedure: <a href=\"https:\/\/docs.rke2.io\/install\/quickstart\">https:\/\/docs.rke2.io\/install\/quickstart<\/a><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nlocalhost:~ # curl -sfL https:\/\/get.rke2.io | sh -\nlocalhost:~ # systemctl enable rke2-server.service\nlocalhost:~ # systemctl start rke2-server.service\n\n<\/pre><\/div>\n\n\n<p>As mentioned in the RKE2 documentation: <em>\u201cadditional utilities will be installed at&nbsp;<code>\/var\/lib\/rancher\/rke2\/bin\/<\/code>. They include:&nbsp;kubectl,&nbsp;crictl, and&nbsp;ctr.<br>Note that these are not on your path by default.\u201d<\/em><\/p>\n\n\n\n<p>I\u2019m adding the repository to my default PATH (this step can be done temporarily or permanently, by editing your <code>~\/.bashrc file<\/code>). I chose to make it permanent by editing my <code>~\/.bashrc file<\/code>, but it\u2019s up to you.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nexport PATH=&quot;\/var\/lib\/rancher\/rke2\/bin:$PATH&quot;\n<\/pre><\/div>\n\n\n<p>RKE2 install writes a kubeconfig file to&nbsp;<code>\/etc\/rancher\/rke2\/rke2.yaml<\/code><strong>.<\/strong><br>Again, I\u2019m adding this into my <code>~\/.bashrc<\/code> file<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nexport KUBECONFIG=\/etc\/rancher\/rke2\/rke2.yaml\n<\/pre><\/div>\n\n\n<p>I check that the Kubernetes cluster is up and pods are running:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,5]; title: ; notranslate\" title=\"\">\nlocalhost:~ # kubectl get nodes\nNAME        STATUS   ROLES                       AGE   VERSION\nlocalhost   Ready    control-plane,etcd,master   22m   v1.31.7+rke2r1\n\nlocalhost:~ # kubectl get pods -A\nNAMESPACE     NAME                                                    READY   STATUS      RESTARTS      AGE\nkube-system   cloud-controller-manager-localhost                      1\/1     Running     1 (23m ago)   22m\nkube-system   etcd-localhost                                          1\/1     Running     0             22m\nkube-system   helm-install-rke2-canal-nxphw                           0\/1     Completed   0             23m\nkube-system   helm-install-rke2-coredns-2whps                         0\/1     Completed   0             23m\nkube-system   helm-install-rke2-ingress-nginx-9mpwb                   0\/1     Completed   0             23m\nkube-system   helm-install-rke2-metrics-server-t8g27                  0\/1     Completed   0             23m\nkube-system   helm-install-rke2-runtimeclasses-nbq2v                  0\/1     Completed   0             23m\nkube-system   helm-install-rke2-snapshot-controller-crd-fmwqh         0\/1     Completed   0             23m\nkube-system   helm-install-rke2-snapshot-controller-nqq5g             0\/1     Completed   1             23m\nkube-system   kube-apiserver-localhost                                1\/1     Running     0             22m\nkube-system   kube-controller-manager-localhost                       1\/1     Running     0             22m\nkube-system   kube-proxy-localhost                                    1\/1     Running     0             22m\nkube-system   kube-scheduler-localhost                                1\/1     Running     0             22m\nkube-system   rke2-canal-qlk8b                                        2\/2     Running     0             22m\nkube-system   rke2-coredns-rke2-coredns-autoscaler-596dcdf688-dsjjz   1\/1     Running     0             22m\nkube-system   rke2-coredns-rke2-coredns-cf7df985b-zqwqn               1\/1     Running     0             22m\nkube-system   rke2-ingress-nginx-controller-b52nh                     1\/1     Running     0             21m\nkube-system   rke2-metrics-server-58ff89f9c7-dndfb                    0\/1     Running     0             21m\nkube-system   rke2-snapshot-controller-58dbcfd956-srw5z               1\/1     Running     0             21m\n\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-add-a-persistent-volume\">Add a persistent volume<\/h2>\n\n\n\n<p>We need some storage, don&#8217;t we?<br>By default, RKE2 does not provide persistent volumes.<br>However, \u201cLocal Path Provisioner\u201d provides a way for the Kubernetes users to utilize the local storage in each node (<a href=\"https:\/\/github.com\/rancher\/local-path-provisioner\">https:\/\/github.com\/rancher\/local-path-provisioner<\/a>). Let&#8217;s use that.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nlocalhost:~ # kubectl apply -f https:\/\/raw.githubusercontent.com\/rancher\/local-path-provisioner\/v0.0.31\/deploy\/local-path-storage.yaml\nnamespace\/local-path-storage created\nserviceaccount\/local-path-provisioner-service-account created\nrole.rbac.authorization.k8s.io\/local-path-provisioner-role created\nclusterrole.rbac.authorization.k8s.io\/local-path-provisioner-role created\nrolebinding.rbac.authorization.k8s.io\/local-path-provisioner-bind created\nclusterrolebinding.rbac.authorization.k8s.io\/local-path-provisioner-bind created\ndeployment.apps\/local-path-provisioner created\nstorageclass.storage.k8s.io\/local-path created\nconfigmap\/local-path-config created\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-install-yak\">Install YaK<\/h2>\n\n\n\n<p>Alright, I now have a fully functional Kubernetes cluster.<br>Let\u2019s install the YaK on it now.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create a namespace:<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nkubectl create ns yak\n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Add yak repo<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nhelm repo add yak https:\/\/gitlab.com\/api\/v4\/projects\/63133284\/packages\/helm\/stable &amp;&amp; helm repo update\n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Create the yak.values.yaml definition file<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nlocalhost:~ # vi yak.values.yaml\n<\/pre><\/div>\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nglobal:\n  hostname: yak.lab\n  admin_credentials:\n    password: &quot;ABCdef1234@&quot; #default password to be changed to your need\n\nyak-postgres:\n  postgresPassword: &quot;&quot; # Randomly generated if not set\n  persistence:\n    size: 20Gi\n    storageClassName: &quot;local-path&quot; # Uses default if empty\n\nyak-graphile:\n  # Archive storage stores the component types archives at import time\n  persistence: &amp;archives_storage\n    size: 20Gi\n    storageClassName: &quot;local-path&quot; # Uses default if empty\n  # If using a multi-node cluster, uncomment these 2 lines:\n    #accessModes:\n     # - ReadWriteMany\n\n  # If you want to expose the rest API at https:\/\/hostname\/data\/graphql and have the postgraphile UI at https:\/\/yak.my-domain.local\/data\/graphiql\n  ingress:\n    enabled: true\n    className: &quot;&quot; # Uses default if empty\n    tls:\n     - secretName: yak-tls-secret\n       hosts:\n       - yak.lab\n\nyak-runner:\n  image:\n    pullPolicy: Always\n  persistence:\n  # Runner shares the archives storage with graphile\n    graphile: *archives_storage\n    components:\n      enabled: true\n      storageClassName: &quot;local-path&quot; # Uses default if empty\n      size: 8Gi\n    sshconfig:\n      enabled: true\n      storageClassName: &quot;local-path&quot; # Uses default if empty\n      size: 1Gi\n\nyak-ui:\n  # Mandatory if you want to access the UI through ingress\n  ingress:\n    enabled: true\n    className: &quot;&quot; # Uses default if empty\n    tls:\n     - secretName: yak-tls-secret\n       hosts:\n       - yak.lab\n\n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Run Helm install YaK<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nhelm install yak yak\/yak -f yak.values.yaml -n yak\n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Check that YaK is properly deployed (all 4 pods should be Running after a few minutes)<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nlocalhost:~ # kubectl get pods -n yak\nNAME                            READY   STATUS    RESTARTS   AGE\nyak-graphile-5b5454fd64-hmk2c   1\/1     Running   0          1m\nyak-postgres-7bcf4f9897-7mrdg   1\/1     Running   0          1m\nyak-runner-6669948599-9ggwn     1\/1     Running   0          1m\nyak-ui-7f6d77c765-spgfn         1\/1     Running   0          1m\n\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-connect-to-the-yak-with-https\">Connect to the YaK with https<\/h2>\n\n\n\n<p>Finally, let&#8217;s connect to our web app!<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Update your local <code>\/etc\/hosts<\/code> file and add your YaK server, in my case:<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n192.168.10.185   yak.lab\n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Open a web browser and navigate to your URL : https:\/\/yak.lab\n<ul class=\"wp-block-list\">\n<li>Default credentials :\n<ul class=\"wp-block-list\">\n<li>User: admin<\/li>\n\n\n\n<li>Password: ABCdef1234@<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"650\" height=\"500\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-15.png\" alt=\"YaK login page\" class=\"wp-image-39435\" style=\"width:650px;height:auto\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-15.png 650w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-15-300x231.png 300w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"692\" height=\"446\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-16.png\" alt=\"YaK Dashboard\" class=\"wp-image-39436\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-16.png 692w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-16-300x193.png 300w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/figure>\n\n\n\n<p>Voil\u00e0!!<\/p>\n\n\n\n<p>I\u2019ve now got a local YaK on RKE2 running at home, ready to deploy infrastructures, servers and components wherever I want.<\/p>\n\n\n\n<p>For more info about the YaK, visit <a href=\"https:\/\/yak4all.io\">yak4all.io<\/a><\/p>\n\n\n\n<p>And if you can&#8217;t be bothered installing your own YaK, you can bring up a fully functional YaK demo environment, within minutes : <a href=\"https:\/\/yak4all.io\/demo\/\">yak4all.io\/demo<\/a><br>Feel free to play around and explore our <a href=\"https:\/\/dbi-services.gitbook.io\/yak-user-doc\/yak-demo\">use cases<\/a> <\/p>\n\n\n\n<p>Happy YaKing \ud83d\ude09 !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I bought a mini PC last year and I use it as a home lab to test things and play around.So I thought, why not install a RKE2 Kubernetes cluster and deploy my own YaK instance on it? Let\u2019s dive-in. In this article, I will explain how I installed a single node Kubernetes cluster with [&hellip;]<\/p>\n","protected":false},"author":83,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2721],"tags":[2716,2634],"type_dbi":[],"class_list":["post-39390","post","type-post","status-publish","format-standard","hentry","category-yak","tag-yak","tag-kubernetes-2"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Install a single node RKE2 cluster and deploy YaK on it<\/title>\n<meta name=\"description\" content=\"This blog is a step by step guide to installing SUSE RKE2 and deploying your own YaK instance in a lab environment.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Install a single node Kubernetes cluster with SUSE RKE2 and deploy your own YaK instance\" \/>\n<meta property=\"og:description\" content=\"This blog is a step by step guide to installing SUSE RKE2 and deploying your own YaK instance in a lab environment.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-15T07:30:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-9.png\" \/>\n\t<meta property=\"og:image:width\" content=\"904\" \/>\n\t<meta property=\"og:image:height\" content=\"478\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"R\u00e9my Gaudey\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"R\u00e9my Gaudey\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/\"},\"author\":{\"name\":\"R\u00e9my Gaudey\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/fcee587f8949b463b8deef8a03f1a4e1\"},\"headline\":\"Install a single node Kubernetes cluster with SUSE RKE2 and deploy your own YaK instance\",\"datePublished\":\"2025-07-15T07:30:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/\"},\"wordCount\":663,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-9.png\",\"keywords\":[\"#yak\",\"kubernetes\"],\"articleSection\":[\"YaK\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/\",\"name\":\"Install a single node RKE2 cluster and deploy YaK on it\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-9.png\",\"datePublished\":\"2025-07-15T07:30:00+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/fcee587f8949b463b8deef8a03f1a4e1\"},\"description\":\"This blog is a step by step guide to installing SUSE RKE2 and deploying your own YaK instance in a lab environment.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-9.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-9.png\",\"width\":904,\"height\":478},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Install a single node Kubernetes cluster with SUSE RKE2 and deploy your own YaK instance\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/fcee587f8949b463b8deef8a03f1a4e1\",\"name\":\"R\u00e9my Gaudey\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/5306e0ba7080fbbd90f039442ffbef577ef354978cd14eaed1e338a28694e16f?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5306e0ba7080fbbd90f039442ffbef577ef354978cd14eaed1e338a28694e16f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5306e0ba7080fbbd90f039442ffbef577ef354978cd14eaed1e338a28694e16f?s=96&d=mm&r=g\",\"caption\":\"R\u00e9my Gaudey\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/remygaudey\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Install a single node RKE2 cluster and deploy YaK on it","description":"This blog is a step by step guide to installing SUSE RKE2 and deploying your own YaK instance in a lab environment.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/","og_locale":"en_US","og_type":"article","og_title":"Install a single node Kubernetes cluster with SUSE RKE2 and deploy your own YaK instance","og_description":"This blog is a step by step guide to installing SUSE RKE2 and deploying your own YaK instance in a lab environment.","og_url":"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/","og_site_name":"dbi Blog","article_published_time":"2025-07-15T07:30:00+00:00","og_image":[{"width":904,"height":478,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-9.png","type":"image\/png"}],"author":"R\u00e9my Gaudey","twitter_card":"summary_large_image","twitter_misc":{"Written by":"R\u00e9my Gaudey","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/"},"author":{"name":"R\u00e9my Gaudey","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/fcee587f8949b463b8deef8a03f1a4e1"},"headline":"Install a single node Kubernetes cluster with SUSE RKE2 and deploy your own YaK instance","datePublished":"2025-07-15T07:30:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/"},"wordCount":663,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-9.png","keywords":["#yak","kubernetes"],"articleSection":["YaK"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/","url":"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/","name":"Install a single node RKE2 cluster and deploy YaK on it","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-9.png","datePublished":"2025-07-15T07:30:00+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/fcee587f8949b463b8deef8a03f1a4e1"},"description":"This blog is a step by step guide to installing SUSE RKE2 and deploying your own YaK instance in a lab environment.","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-9.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/07\/image-9.png","width":904,"height":478},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/install-a-single-node-kubernetes-cluster-with-suse-rke2-and-deploy-your-own-yak-instance\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Install a single node Kubernetes cluster with SUSE RKE2 and deploy your own YaK instance"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/fcee587f8949b463b8deef8a03f1a4e1","name":"R\u00e9my Gaudey","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5306e0ba7080fbbd90f039442ffbef577ef354978cd14eaed1e338a28694e16f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5306e0ba7080fbbd90f039442ffbef577ef354978cd14eaed1e338a28694e16f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5306e0ba7080fbbd90f039442ffbef577ef354978cd14eaed1e338a28694e16f?s=96&d=mm&r=g","caption":"R\u00e9my Gaudey"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/remygaudey\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/39390","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/83"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=39390"}],"version-history":[{"count":52,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/39390\/revisions"}],"predecessor-version":[{"id":39461,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/39390\/revisions\/39461"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=39390"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=39390"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=39390"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=39390"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}