{"id":22992,"date":"2021-08-03T04:49:41","date_gmt":"2021-08-03T04:49:41","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=22992"},"modified":"2025-01-23T12:45:26","modified_gmt":"2025-01-23T12:45:26","slug":"getting-started-with-cloud-foundry-for-kubernetes-using-cf-for-k8s-in-linuxubuntu","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/getting-started-with-cloud-foundry-for-kubernetes-using-cf-for-k8s-in-linuxubuntu\/","title":{"rendered":"Getting Started with Cloud Foundry for Kubernetes using cf-for-k8s in Linux(Ubuntu)"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Step 1- Install the cf CLI Using a Package Manager<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Add the Cloud Foundry Foundation public key and package repository to your system by running:<\/span>\n$ wget -q -O - https:<span class=\"hljs-comment\">\/\/packages.cloudfoundry.org\/debian\/cli.cloudfoundry.org.key | sudo apt-key add -<\/span>\n$ <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"deb https:\/\/packages.cloudfoundry.org\/debian stable main\"<\/span> | sudo tee \/etc\/apt\/sources.<span class=\"hljs-keyword\">list<\/span>.d\/cloudfoundry-cli.<span class=\"hljs-keyword\">list<\/span>\n\n<span class=\"hljs-comment\"># Update your local package index by running:<\/span>\nsudo apt-get update\n\n<span class=\"hljs-comment\"># To install cf CLI v7, run:<\/span>\nsudo apt-get install cf7-cli\n\n$ cf version\n$ cf --help<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 2- You will need kubectl to interact with your cluster kubectl install instructions<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Download the latest release with the command:<\/span>\n$ curl -LO <span class=\"hljs-string\">\"https:\/\/dl.k8s.io\/release\/$(curl -L -s https:\/\/dl.k8s.io\/release\/stable.txt)\/bin\/linux\/amd64\/kubectl\"<\/span>\n\n<span class=\"hljs-comment\"># Install kubectl<\/span>\n$ sudo install -o root -g root -m <span class=\"hljs-number\">0755<\/span> kubectl \/usr\/local\/bin\/kubectl\n\n$ kubectl\nkubectl version --client<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 3 &#8211; KinD (Kubernetes in Docker) to instantiate your local cluster<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">$ curl -Lo .\/kind https:<span class=\"hljs-comment\">\/\/kind.sigs.k8s.io\/dl\/v0.11.1\/kind-linux-amd64<\/span>\n$ chmod +x .\/kind\n$ mv .\/kind \/usr\/local\/bin\/kind\n$ kind version\n$ kind<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 4 &#8211; Install Bosh CLI<\/h2>\n\n\n\n<p>Bosh CLI the .\/hack\/generate-values.sh script will use the Bosh CLI to generate certificates, keys, and passwords in the file .\/cf-install-values.yml<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">$ wget https:<span class=\"hljs-comment\">\/\/github.com\/cloudfoundry\/bosh-cli\/releases\/download\/v6.4.4\/bosh-cli-6.4.4-linux-amd64<\/span>\n$ chmod +x .\/bosh\n$ mv bosh-cli<span class=\"hljs-number\">-6.4<\/span><span class=\"hljs-number\">.4<\/span>-linux-amd64 bosh\n$ sudo mv .\/bosh \/usr\/local\/bin\/bosh\n$ bosh <\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 5- kapp (v0.21.0+) will aid you to deploy cf-for-k8s to your cluster<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$ wget -O- https:<span class=\"hljs-comment\">\/\/carvel.dev\/install.sh | bash<\/span>\n<span class=\"hljs-comment\"># or with curl...<\/span>\n$ curl -L https:<span class=\"hljs-comment\">\/\/carvel.dev\/install.sh | bash<\/span>\n$ kapp --version<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 6- ytt (v0.26.0+) will help create templates to deploy cf-for-k8s<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">$ wget https:<span class=\"hljs-comment\">\/\/github.com\/vmware-tanzu\/carvel-ytt\/releases\/download\/v0.35.1\/ytt-linux-amd64<\/span>\n$ mv ytt-linux-amd64 ytt\n$ chmod +x .\/ytt\n$ sudo mv .\/ytt \/usr\/local\/bin\/ytt\n$ ytt version<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 7- DockerHub is the image registry used in this guide please make an account if you don\u2019t have one they are free and quickly made.<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">Username - devopsschools\nPassword\/Token - <\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 8- Clone cf-for-k8s github repo<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">git <span class=\"hljs-keyword\">clone<\/span> https:<span class=\"hljs-comment\">\/\/github.com\/cloudfoundry\/cf-for-k8s.git &amp;&amp; cd cf-for-k8s<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 9- Install Docker<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">apt<\/span> <span class=\"hljs-selector-tag\">install<\/span> <span class=\"hljs-selector-tag\">docker<\/span><span class=\"hljs-selector-class\">.io<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 10 &#8211; Create a kubernetes cluster of version of v1.20.2<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Review .\/deploy\/kind\/cluster.yml<\/span>\n$ kind create cluster --config=.\/deploy\/kind\/cluster.yml --image kindest\/node:v1<span class=\"hljs-number\">.20<\/span><span class=\"hljs-number\">.2<\/span>\n\n<span class=\"hljs-comment\"># Latest kubernetes cluster but its not working with v1.21.X<\/span>\n$ kind create cluster --config=.\/deploy\/kind\/cluster.yml\n\n$ kubectl cluster-info --context kind-kind\n$ kubectl config <span class=\"hljs-keyword\">use<\/span>-<span class=\"hljs-title\">context<\/span>\n$ <span class=\"hljs-title\">kubectl<\/span> --<span class=\"hljs-title\">context<\/span> <span class=\"hljs-title\">kind<\/span>-<span class=\"hljs-title\">kind<\/span> <span class=\"hljs-title\">get<\/span> <span class=\"hljs-title\">nodes<\/span>\n$ <span class=\"hljs-title\">kubectl<\/span> --<span class=\"hljs-title\">context<\/span> <span class=\"hljs-title\">kind<\/span>-<span class=\"hljs-title\">kind<\/span> <span class=\"hljs-title\">get<\/span> <span class=\"hljs-title\">pods<\/span> --<span class=\"hljs-title\">all<\/span>-<span class=\"hljs-title\">namespaces<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 11 &#8211; Generate the yaml used to deploy CF for k8s<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$ .\/hack\/generate-values.sh -d vcap.me &gt; .\/cf-install-values.yml\n\nWARNING: The hack scripts are intended <span class=\"hljs-keyword\">for<\/span> development of cf-<span class=\"hljs-keyword\">for<\/span>-k8s.\n  They are not officially supported product bits.  Their <span class=\"hljs-class\"><span class=\"hljs-keyword\">interface<\/span> <span class=\"hljs-title\">and<\/span> <span class=\"hljs-title\">behavior<\/span>\n  <span class=\"hljs-title\">may<\/span> <span class=\"hljs-title\">change<\/span> <span class=\"hljs-title\">at<\/span> <span class=\"hljs-title\">any<\/span> <span class=\"hljs-title\">time<\/span> <span class=\"hljs-title\">without<\/span> <span class=\"hljs-title\">notice<\/span>.<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 12 &#8211; Append the app_registry credentials to your DockerHub registry to the bottom of the .\/cf-install-values.yml replacing with your information. You can copy\/paste or use the following command.<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">cat &gt;&gt; cf-install-values.yml &lt;&lt; EOL\n<span class=\"hljs-attr\">app_registry<\/span>:\n  hostname: https:<span class=\"hljs-comment\">\/\/index.docker.io\/v1\/<\/span>\n  repository_prefix: <span class=\"hljs-string\">\"devopsschools\"<\/span>\n  <span class=\"hljs-attr\">username<\/span>: <span class=\"hljs-string\">\"devopsschools\"<\/span>\n  <span class=\"hljs-attr\">password<\/span>: <span class=\"hljs-string\">\"d6b938ab-4bf2-4b49-b7c9-ddddddddd\"<\/span>\nEOL<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 13 &#8211; There are a few more lines to add to your cf-install-values.yml, like adding a metrics server because KinD doesn\u2019t come with one.<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">cat &gt;&gt; cf-install-values.yml &lt;&lt; EOL\n<span class=\"hljs-attr\">add_metrics_server_components<\/span>: <span class=\"hljs-literal\">true<\/span>\n<span class=\"hljs-attr\">enable_automount_service_account_token<\/span>: <span class=\"hljs-literal\">true<\/span>\n<span class=\"hljs-attr\">metrics_server_prefer_internal_kubelet_address<\/span>: <span class=\"hljs-literal\">true<\/span>\n<span class=\"hljs-attr\">remove_resource_requirements<\/span>: <span class=\"hljs-literal\">true<\/span>\n<span class=\"hljs-attr\">use_first_party_jwt_tokens<\/span>: <span class=\"hljs-literal\">true<\/span>\n\n\n<span class=\"hljs-attr\">load_balancer<\/span>:\n  enable: <span class=\"hljs-literal\">false<\/span>\nEOL<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 14 &#8211; Now, use cf-install-values.yml to render the final Kubernetes template to raw Kubernetes configuration.<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">$ ytt -f config -f .\/cf-install-values.yml &gt; .\/cf-for-k8s-rendered.yml<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 15 &#8211; Deploy CF for k8s<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">You are ready to deploy cf-<span class=\"hljs-keyword\">for<\/span>-k8s using the .\/cf-<span class=\"hljs-keyword\">for<\/span>-k8s-rendered.yml file created above. Once you deploy it should take around <span class=\"hljs-number\">10<\/span> minutes to finish.\n\n$ kapp deploy -a cf -f .\/cf-<span class=\"hljs-keyword\">for<\/span>-k8s-rendered.yml -y\n$ kapp <span class=\"hljs-keyword\">list<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\"> Step 16 &#8211;  Validate the deployment &amp;  Create and target an organization and space. <\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">\nTarget your CF CLI to point to the <span class=\"hljs-keyword\">new<\/span> CF instance.\n\n$ cf api --skip-ssl-validation https:<span class=\"hljs-comment\">\/\/api.vcap.me<\/span>\n\n<span class=\"hljs-built_in\">Set<\/span> the CF_ADMIN_PASSWORD environment variable to the CF administrative password, stored <span class=\"hljs-keyword\">in<\/span> the cf_admin_password key <span class=\"hljs-keyword\">in<\/span> the configuration-values\/deployment-values.yml file:\n\n$ CF_ADMIN_PASSWORD=<span class=\"hljs-string\">\"$(bosh interpolate .\/cf-install-values.yml --path \/cf_admin_password)\"<\/span>\n\nLog into the installation <span class=\"hljs-keyword\">as<\/span> the admin user.\n\n$ cf auth admin <span class=\"hljs-string\">\"$CF_ADMIN_PASSWORD\"<\/span>\n\nEnable Docker\n\n$ cf enable-feature-flag diego_docker\n\nA powerful feature provided by CF is multi-tenancy, where you can create a space <span class=\"hljs-keyword\">for<\/span> a team, an app or whatever your workflow requires.\n\nCreate and target an organization and space.\n\n$ cf create-org test-org\n$ cf create-space -o test-org test-space\n$ cf target -o test-org -s test-space<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\"> Step 17 &#8211;   Deploy an application with cf push<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">At last you can push the included sample test-node-app.\n\n$ cf push test-node-app -p .\/tests\/smoke\/assets\/test-node-app\n\nOr you can push any app you wish just cd into the directory and push the app <span class=\"hljs-keyword\">with<\/span> the following command.\n\n$ cf push APP-NAME\n\nOnce your app stages you can find it <span class=\"hljs-keyword\">in<\/span> Cloud Foundry <span class=\"hljs-keyword\">with<\/span> <span class=\"hljs-keyword\">this<\/span> command.\n\n$ cf apps\n\nThe output <span class=\"hljs-keyword\">in<\/span> the terminal should look something <span class=\"hljs-keyword\">as<\/span> follows.\n\nGetting apps <span class=\"hljs-keyword\">in<\/span> org test-org \/ space test-space <span class=\"hljs-keyword\">as<\/span> admin...\nOK\n\nname            requested state   instances   memory   disk   urls\ntest-node-app   started           <span class=\"hljs-number\">1<\/span>\/<span class=\"hljs-number\">1<\/span>         <span class=\"hljs-number\">1<\/span>G       <span class=\"hljs-number\">1<\/span>G     test-node-app.vcap.me\nTo see the pods that have applications on your Cloud Foundry instance look <span class=\"hljs-keyword\">in<\/span> the cf-workloads namespace.\n\n$ kubectl <span class=\"hljs-keyword\">get<\/span> pods -n cf-workloads\n\n# Access using https\ncurl -k https:\/\/test-node-app.apps.vcap.me\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Step 18 &#8211;   Deploy another application with cf push <\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">$ git <span class=\"hljs-keyword\">clone<\/span> https:<span class=\"hljs-comment\">\/\/github.com\/cloudfoundry-samples\/test-app.git<\/span>\n$ cd test-app\n$ cf push test-app\n\n<span class=\"hljs-comment\"># Access using following urls<\/span>\n\ncurl -k https:<span class=\"hljs-comment\">\/\/test-node-app.apps.vcap.me<\/span>\ncurl -k https:<span class=\"hljs-comment\">\/\/test-app-grumpy-wallaby-gi.apps.vcap.me<\/span>\ncurl -k https:<span class=\"hljs-comment\">\/\/test-app-grumpy-wallaby-gi.apps.vcap.me\/env<\/span>\ncurl -k https:<span class=\"hljs-comment\">\/\/test-app-grumpy-wallaby-gi.apps.vcap.me\/exit<\/span>\ncurl -k https:<span class=\"hljs-comment\">\/\/test-app-grumpy-wallaby-gi.apps.vcap.me\/index<\/span>\ncurl -k https:<span class=\"hljs-comment\">\/\/test-app-grumpy-wallaby-gi.apps.vcap.me\/port<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Last: Delete the cf-for-k8s deployment &amp; Kind cluster<\/h2>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-17\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">$ kapp <span class=\"hljs-keyword\">delete<\/span> -a cf\n$ kind <span class=\"hljs-keyword\">delete<\/span> cluster\n\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-17\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Reference<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>https:\/\/tanzu.vmware.com\/developer\/guides\/kubernetes\/cf4k8s-gs\/<\/li><li>https:\/\/cf-for-k8s.io\/docs\/<\/li><li>https:\/\/katacoda.com\/cloudfoundry-tutorials\/scenarios\/trycf<\/li><\/ul>\n\n\n<div class=\"epyt-gallery\" data-currpage=\"1\" id=\"epyt_gallery_47898\"><iframe loading=\"lazy\"  id=\"_ytid_34917\"  width=\"760\" height=\"427\"  data-origwidth=\"760\" data-origheight=\"427\" src=\"https:\/\/www.youtube.com\/embed\/?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;disablekb=0&#038;\" class=\"__youtube_prefs__  no-lazyload\" title=\"YouTube player\"  data-epytgalleryid=\"epyt_gallery_47898\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><div class=\"epyt-gallery-list\"><div>Sorry, there was a YouTube error.<\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Step 1- Install the cf CLI Using a Package Manager Step 2- You will need kubectl to interact with your cluster kubectl install instructions Step 3 &#8211; KinD (Kubernetes in&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[4859],"tags":[],"class_list":["post-22992","post","type-post","status-publish","format-standard","hentry","category-kubernetes"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/22992","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=22992"}],"version-history":[{"count":16,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/22992\/revisions"}],"predecessor-version":[{"id":24235,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/22992\/revisions\/24235"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=22992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=22992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=22992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}