Step 1- Install the cf CLI Using a Package Manager
# Add the Cloud Foundry Foundation public key and package repository to your system by running:
$ wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add -
$ echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list
# Update your local package index by running:
sudo apt-get update
# To install cf CLI v7, run:
sudo apt-get install cf7-cli
$ cf version
$ cf --help
Step 2- You will need kubectl to interact with your cluster kubectl install instructions
# Download the latest release with the command:
$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# Install kubectl
$ sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
$ kubectl
kubectl version --client
Step 3 – KinD (Kubernetes in Docker) to instantiate your local cluster
$ curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
$ chmod +x ./kind
$ mv ./kind /usr/local/bin/kind
$ kind version
$ kind
Step 4 – Install Bosh CLI
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
$ wget https://github.com/cloudfoundry/bosh-cli/releases/download/v6.4.4/bosh-cli-6.4.4-linux-amd64
$ chmod +x ./bosh
$ mv bosh-cli-6.4.4-linux-amd64 bosh
$ sudo mv ./bosh /usr/local/bin/bosh
$ bosh
Step 5- kapp (v0.21.0+) will aid you to deploy cf-for-k8s to your cluster
$ wget -O- https://carvel.dev/install.sh | bash
# or with curl...
$ curl -L https://carvel.dev/install.sh | bash
$ kapp --version
Step 6- ytt (v0.26.0+) will help create templates to deploy cf-for-k8s
$ wget https://github.com/vmware-tanzu/carvel-ytt/releases/download/v0.35.1/ytt-linux-amd64
$ mv ytt-linux-amd64 ytt
$ chmod +x ./ytt
$ sudo mv ./ytt /usr/local/bin/ytt
$ ytt version
Step 7- DockerHub is the image registry used in this guide please make an account if you don’t have one they are free and quickly made.
Username - devopsschools
Password/Token -
Step 8- Clone cf-for-k8s github repo
git clone https://github.com/cloudfoundry/cf-for-k8s.git && cd cf-for-k8s
Step 9- Install Docker
apt install docker.io
Step 10 – Create a kubernetes cluster of version of v1.20.2
# Review ./deploy/kind/cluster.yml
$ kind create cluster --config=./deploy/kind/cluster.yml --image kindest/node:v1.20.2
# Latest kubernetes cluster but its not working with v1.21.X
$ kind create cluster --config=./deploy/kind/cluster.yml
$ kubectl cluster-info --context kind-kind
$ kubectl config use-context
$ kubectl --context kind-kind get nodes
$ kubectl --context kind-kind get pods --all-namespaces
Step 11 – Generate the yaml used to deploy CF for k8s
$ ./hack/generate-values.sh -d vcap.me > ./cf-install-values.yml
WARNING: The hack scripts are intended for development of cf-for-k8s.
They are not officially supported product bits. Their interface and behavior
may change at any time without notice.
Step 12 – 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.
cat >> cf-install-values.yml << EOL
app_registry:
hostname: https://index.docker.io/v1/
repository_prefix: "devopsschools"
username: "devopsschools"
password: "d6b938ab-4bf2-4b49-b7c9-ddddddddd"
EOL
Step 13 – There are a few more lines to add to your cf-install-values.yml, like adding a metrics server because KinD doesn’t come with one.
cat >> cf-install-values.yml << EOL
add_metrics_server_components: true
enable_automount_service_account_token: true
metrics_server_prefer_internal_kubelet_address: true
remove_resource_requirements: true
use_first_party_jwt_tokens: true
load_balancer:
enable: false
EOL
Step 14 – Now, use cf-install-values.yml to render the final Kubernetes template to raw Kubernetes configuration.
$ ytt -f config -f ./cf-install-values.yml > ./cf-for-k8s-rendered.yml
Step 15 – Deploy CF for k8s
You are ready to deploy cf-for-k8s using the ./cf-for-k8s-rendered.yml file created above. Once you deploy it should take around 10 minutes to finish.
$ kapp deploy -a cf -f ./cf-for-k8s-rendered.yml -y
$ kapp list
Step 16 – Validate the deployment & Create and target an organization and space.
Target your CF CLI to point to the new CF instance.
$ cf api --skip-ssl-validation https://api.vcap.me
Set the CF_ADMIN_PASSWORD environment variable to the CF administrative password, stored in the cf_admin_password key in the configuration-values/deployment-values.yml file:
$ CF_ADMIN_PASSWORD="$(bosh interpolate ./cf-install-values.yml --path /cf_admin_password)"
Log into the installation as the admin user.
$ cf auth admin "$CF_ADMIN_PASSWORD"
Enable Docker
$ cf enable-feature-flag diego_docker
A powerful feature provided by CF is multi-tenancy, where you can create a space for a team, an app or whatever your workflow requires.
Create and target an organization and space.
$ cf create-org test-org
$ cf create-space -o test-org test-space
$ cf target -o test-org -s test-space
Step 17 – Deploy an application with cf push
At last you can push the included sample test-node-app.
$ cf push test-node-app -p ./tests/smoke/assets/test-node-app
Or you can push any app you wish just cd into the directory and push the app with the following command.
$ cf push APP-NAME
Once your app stages you can find it in Cloud Foundry with this command.
$ cf apps
The output in the terminal should look something as follows.
Getting apps in org test-org / space test-space as admin...
OK
name requested state instances memory disk urls
test-node-app started 1/1 1G 1G test-node-app.vcap.me
To see the pods that have applications on your Cloud Foundry instance look in the cf-workloads namespace.
$ kubectl get pods -n cf-workloads
# Access using https
curl -k https://test-node-app.apps.vcap.me
Step 18 – Deploy another application with cf push
$ git clone https://github.com/cloudfoundry-samples/test-app.git
$ cd test-app
$ cf push test-app
# Access using following urls
curl -k https://test-node-app.apps.vcap.me
curl -k https://test-app-grumpy-wallaby-gi.apps.vcap.me
curl -k https://test-app-grumpy-wallaby-gi.apps.vcap.me/env
curl -k https://test-app-grumpy-wallaby-gi.apps.vcap.me/exit
curl -k https://test-app-grumpy-wallaby-gi.apps.vcap.me/index
curl -k https://test-app-grumpy-wallaby-gi.apps.vcap.me/port
Last: Delete the cf-for-k8s deployment & Kind cluster
$ kapp delete -a cf
$ kind delete cluster
Reference
- https://tanzu.vmware.com/developer/guides/kubernetes/cf4k8s-gs/
- https://cf-for-k8s.io/docs/
- https://katacoda.com/cloudfoundry-tutorials/scenarios/trycf
1
/
2
Kubernetes Advance Tutorial for Beginners with Demo 2020 — By DevOpsSchool
Kubernetes Tutorials using EKS – Part 1 – Introduction and Architecture
Kubernetes Tutorials using EKS – Part 2 – Architecture with Master and worker
Kubernetes Tutorials using EKS – Part 5 – Namespaces and PODs
Kubernetes Tutorials using EKS – Part 6 – ReplicationControllers and Deployment
Kubernetes Tutorials using EKS – Part 7 – Services
Kubernetes Tutorials using EKS – Part 8 – Volume
Kubernetes Tutorials using EKS – Part 9 – Volume
Kubernetes Tutorials using EKS – Part 10 – Helm and Networking
Kubernetes Essentials Tutorial for Beginners with Demo 2019 using KOPS – Part – 1
Kubernetes Essentials Tutorial for Beginners with Demo 2019 using KOPS – Part – 2
Kubernetes Crash Tutorial for Beginners with Demo using Minikube 2019 – Part – 1
Kubernetes Crash Tutorial for Beginners with Demo using Minikube 2019 – Part – 2
Kubernetes Setting up AWS EKS Clustor Step by Step 2019
Kubernetes Advance Tutorial for Beginners with Demo 2020 (Aws kops ) — By DevOpsSchool
1
/
2
Latest posts by Rajesh Kumar (see all)
- Best AI tools for Software Engineers - November 4, 2024
- Installing Jupyter: Get up and running on your computer - November 2, 2024
- An Introduction of SymOps by SymOps.com - October 30, 2024