Git Product home page Git Product logo

arcas's Introduction

Service Installer for VMware Tanzu (Project Arcas)

This write up focuses at a TKGs install with AVI (NSX advanced loadbalancer) Further down is the TKGm install

TKGs

A nice network spread sheet is located here

https://github.com/ogelbric/Arcas/blob/main/Arcasdeploymentspreadsheet.xlsx

My vCenter set up (3 ESXi hosts with vSAN)

Version

Download the Tanzu Service Installer OVA

Send e-mail or [email protected] to get access

https://www.dropbox.com/sh/xxx/AADU_xxxxxxxxxxztl7ESHa?dl=0

Deploy the Tanzu Service Installer OVA

Version

Version

Version

Version

Power on once deployed

Version

DNS set up

Version

Setup the AVI OVA in the content library in vCenter

Version

Version

Use broswser and connect to port 8888 on the Tanzu Service Installer

(In my case http://192.168.1.39:8888)

Version

Here are the network settings for a 3 network setup

Version

Version

Version

Version

Version

Version

Version

Version

Version

Version

Version

Version

Version

cd /opt/vmware/arcas/src
arcas --env vsphere --file vsphere.json --avi_configuration --avi_wcp_configuration --enable_wcp

Version

Please wait for about ~10-20 min for the WCp enablement to take place

The error can be ignored! If you have this error you may have to pull the kubectl-vsphere binary from the API endpoint

wget --no-check-certificate https://192.168.4.71/wcp/plugin/linux-amd64/vsphere-plugin.zip

And unzip it and place it in /usr/local/bin

Version

Outcome in WCP enable vCenter

Version

Outcome in vCenter with AVI service engines deployed

Version

Outcome loggin onto supervisor cluster

/usr/local/bin/kubectl-vsphere login --vsphere-username [email protected] --server=https://192.168.4.71 --insecure-skip-tls-verify
kubectl config use-context 192.168.4.71
kubectl get nodes

Version

Deploying a namespace (a user needs to be added in the vCenter GUI!)

arcas --env vsphere --file vsphere.json --create_supervisor_namespace

Version

TKGs json file example

root@arcas [ /opt/vmware/arcas/src ]# cat vsphere.json
{
    "env-spec": {
        "vcenter-details": {
            "vcenter-address": "192.168.1.50",
            "vcenter-sso-user": "[email protected]",
            "vcenter-sso-password-base64": "Vk13YXJlMSE=",
            "vcenter-datacenter": "avi-Datacenter",
            "vcenter-cluster": "avi-Cluster",
            "vcenter-datastore": "vsanDatastore",
            "content-library-name": "avi",
            "avi-ova-name": "controller-21.1.2-9124"
        },
        "env-type": "tkgs",
        "marketplace-spec": {
            "refresh-token": ""
        },
        "saas-endpoints": {
            "tmc-details": {
                "tmc-availability": "false",
                "tmc-refresh-token": "",
                "tmc-supervisor-cluster-name": ""
            }
        },
        "infra-components": {
            "dns-servers-ip": "192.168.1.7",
            "search_domains": "lab.local",
            "ntp-servers": "10.128.152.81"
        }
    },
    "tkgs-component-spec": {
        "control-plane-size": "MEDIUM",
        "avi-mgmt-network": {
            "avi-mgmt-network-name": "DVPG-Management Network",
            "avi-mgmt-network-gateway-cidr": "192.168.1.1/24",
            "avi-mgmt-service-ip-startrange": "192.168.1.60",
            "avi-mgmt-service-ip-endrange": "192.168.1.70"
        },
        "avi-components": {
            "avi-password-base64": "Vk13YXJlMSE=",
            "avi-backup-passphrase-base64": "Vk13YXJlMSE=",
            "avi-controller01-ip": "192.168.1.40",
            "avi-controller01-fqdn": "avi.lab.local"
        },
        "tkgs-vip-network": {
            "tkgs-vip-network-name": "DVPG-Frontend Network",
            "tkgs-vip-network-gateway-cidr": "192.168.4.1/24",
            "tkgs-vip-ip-startrange": "192.168.4.70",
            "tkgs-vip-ip-endrange": "192.168.4.100"
        },
        "tkgs-mgmt-network-spec": {
            "tkgs-mgmt-network-name": "DVPG-Management Network",
            "tkgs-mgmt-network-gateway-cidr": "192.168.1.1/24",
            "tkgs-mgmt-network-starting-ip": "192.168.1.80",
            "tkgs-mgmt-network-dns-server": "192.168.1.7",
            "tkgs-mgmt-network-search-domains": "lab.local",
            "tkgs-mgmt-network-ntp": "10.128.152.81"
        },
        "tkgs-primary-workload-network": {
            "tkgs-primary-workload-network-name": "DVPG-Workload Network",
            "tkgs-primary-workload-network-gateway-cidr": "192.168.5.1/24",
            "tkgs-primary-workload-network-start-range": "192.168.5.70",
            "tkgs-primary-workload-network-end-range": "192.168.5.100",
            "tkgs-workload-dns-server": "192.168.1.7",
            "tkgs-workload-service-cidr": "10.96.0.0/22"
        },
        "tkgs-storage-policy-spec": {
            "master-storage-policy": "vSAN Default Storage Policy",
            "ephemeral-storage-policy": "vSAN Default Storage Policy",
            "image-storage-policy": "vSAN Default Storage Policy"
        },
        "tkgs-vsphere-namespace-spec": {
            "tkgs-vsphere-namespace-name": "namespace1000",
            "tkgs-vsphere-namespace-description": "",
            "tkgs-vsphere-namespace-workload-network": "DVPG-Workload Network",
            "tkgs-vsphere-namespace-content-library": "avi",
            "tkgs-vsphere-namespace-vm-classes": [
                "best-effort-small",
                "best-effort-2xlarge",
                "best-effort-large",
                "best-effort-xsmall",
                "best-effort-medium",
                "best-effort-xlarge"
            ],
            "tkgs-vsphere-namespace-resource-spec": {},
            "tkgs-vsphere-namespace-storage-spec": [
                {
                    "storage-policy": "vSAN Default Storage Policy"
                }
            ],
            "tkgs-vsphere-workload-cluster-spec": {
                "tkgs-vsphere-namespace-name": "namespace1000",
                "tkgs-vsphere-workload-cluster-name": "tkg-cluster",
                "allowed-storage-classes": [
                    "vSAN Default Storage Policy"
                ],
                "default-storage-class": "vSAN Default Storage Policy",
                "node-storage-class": "vSAN Default Storage Policy",
                "service-cidr-blocks": "192.168.0.0/16",
                "pod-cidr-blocks": "10.96.0.0/12",
                "control-plane-vm-class": "best-effort-medium",
                "worker-vm-class": "best-effort-medium",
                "worker-node-count": "3",
                "enable-control-planne-ha": "false"
            }
        }
    }
}

TKGm

This write up focuses at a TKGm install with AVI (NSX advanced loadbalancer)

Arcas is deployed(use previous section for that) And here are the input screens

Version

Version

Version

Version

Version

Version

Version

Version

Version

Version

Version

Version

Version

Deploy from JSON file:

arcas --env vsphere --file /opt/vmware/arcas/src/vsphere.json --avi_configuration --tkg_mgmt_configuration

Follow in the log:

journalctl -u arcas.service --follow

Deploy the rest of the clusters:

arcas --env vsphere --file /opt/vmware/arcas/src/vsphere.json --avi_configuration --tkg_mgmt_configuration --shared_service_configuration --workload_preconfig --workload_deploy

Result from Arcas deploy

Version

Commands for the below output and adding the harbor IP to DNS

kubectl config get-contexts
kubectl config use-context sharedtkg1-admin@sharedtkg1
kubectl get svc -A
kubectl get httpproxy -A

Version

DNS

Version

TKGm json file example

{
    "env-spec": {
        "vcenter-details": {
            "vcenter-address": "192.168.1.50",
            "vcenter-sso-user": "[email protected]",
            "vcenter-sso-password-base64": "Vk13YXJlMSE=",
            "vcenter-datacenter": "avi-Datacenter",
            "vcenter-cluster": "avi-Cluster",
            "vcenter-datastore": "vsanDatastore",
            "content-library-name": "avi",
            "avi-ova-name": "controller-21.1.2-9124",
            "resource-pool-name": ""
        },
        "env-type": "tkgm",
        "marketplace-spec": {
            "refresh-token": ""
        },
        "custom-repository-spec": {
            "tkg_custom_image_repository": "",
            "tkg_custom_image_repository_public_ca_cert": ""
        },
        "saas-endpoints": {
            "tmc-details": {
                "tmc-availability": "false",
                "tmc-refresh-token": ""
            },
            "tanzu-observability-details": {
                "tanzu-observability-availability": "false",
                "tanzu-observability-url": "",
                "tanzu-observability-refresh-token": ""
            }
        },
        "infra-components": {
            "dns-servers-ip": "192.168.1.7",
            "ntp-servers": "10.128.152.81",
            "search_domains": "lab.local"
        },
        "proxy-spec": {
            "arcas-vm": {
                "enable-proxy": "false",
                "http-proxy": "",
                "https-proxy": "",
                "no-proxy": ""
            },
            "tkg-mgmt": {
                "enable-proxy": "false",
                "http-proxy": "",
                "https-proxy": "",
                "no-proxy": ""
            },
            "tkg-sharedservice": {
                "enable-proxy": "false",
                "http-proxy": "",
                "https-proxy": "",
                "no-proxy": ""
            },
            "tkg-workload": {
                "enable-proxy": "false",
                "http-proxy": "",
                "https-proxy": "",
                "no-proxy": ""
            }
        }
    },
    "tkg-component-spec": {
        "avi-mgmt-network": {
            "avi-mgmt-network-name": "DVPG-Management Network",
            "avi-mgmt-network-gateway-cidr": "192.168.1.1/24",
            "avi-mgmt-service-ip-startrange": "192.168.1.60",
            "avi-mgmt-service-ip-endrange": "192.168.1.70"
        },
        "tkg-cluster-vip-network": {
            "tkg-cluster-vip-network-name": "DVPG-Frontend Network",
            "tkg-cluster-vip-network-gateway-cidr": "192.168.4.1/24",
            "tkg-cluster-vip-ip-startrange": "192.168.4.70",
            "tkg-cluster-vip-ip-endrange": "192.168.4.100"
        },
        "avi-components": {
            "avi-password-base64": "Vk13YXJlMSE=",
            "avi-backup-passphrase-base64": "Vk13YXJlMSE=",
            "avi-controller01-ip": "192.168.1.40",
            "avi-controller01-fqdn": "avi.lab.local"
        },
        "tkg-mgmt-components": {
            "tkg-mgmt-network-name": "DVPG-Management Network",
            "tkg-mgmt-gateway-cidr": "192.168.1.1/24",
            "tkg-mgmt-cluster-name": "tkgmgt1",
            "tkg-mgmt-size": "medium",
            "tkg-mgmt-deployment-type": "dev",
            "tkg-mgmt-cluster-cidr": "100.96.0.0/11",
            "tkg-mgmt-service-cidr": "100.64.0.0/13",
            "tkg-mgmt-base-os": "photon",
            "tkg-sharedservice-cluster-name": "sharedtkg1",
            "tkg-sharedservice-size": "large",
            "tkg-sharedservice-deployment-type": "dev",
            "tkg-sharedservice-worker-machine-count": "1",
            "tkg-sharedservice-cluster-cidr": "100.96.0.0/11",
            "tkg-sharedservice-service-cidr": "100.64.0.0/13",
            "tkg-sharedservice-base-os": "photon",
            "tkg-sharedservice-kube-version": "v1.21.2"
        }
    },
    "tkg-mgmt-data-network": {
        "tkg-mgmt-data-network-name": "DVPG-Management Network",
        "tkg-mgmt-data-network-gateway-cidr": "192.168.1.1/24",
        "tkg-mgmt-avi-service-ip-startrange": "192.168.1.80",
        "tkg-mgmt-avi-service-ip-endrange": "192.168.1.100"
    },
    "tkg-workload-data-network": {
        "tkg-workload-data-network-name": "DVPG-Workload Network",
        "tkg-workload-data-network-gateway-cidr": "192.168.5.1/24",
        "tkg-workload-avi-service-ip-startrange": "192.168.5.70",
        "tkg-workload-avi-service-ip-endRange": "192.168.5.100"
    },
    "tkg-workload-components": {
        "tkg-workload-network-name": "DVPG-Workload Network",
        "tkg-workload-gateway-cidr": "192.168.5.1/24",
        "tkg-workload-cluster-name": "worktkg1",
        "tkg-workload-size": "medium",
        "tkg-workload-deployment-type": "dev",
        "tkg-workload-worker-machine-count": "1",
        "tkg-workload-cluster-cidr": "100.96.0.0/11",
        "tkg-workload-service-cidr": "100.64.0.0/13",
        "tkg-workload-base-os": "photon",
        "tkg-workload-kube-version": "v1.21.2",
        "tkg-workload-tsm-integration": "false",
        "namespace-exclusions": {
            "exact-name": "",
            "starts-with": ""
        }
    },
    "harbor-spec": {
        "enable-harbor-extension": "true",
        "harbor-fqdn": "harbor.lab.local",
        "harbor-password-base64": "Vk13YXJlMSE=",
        "harbor-cert-path": "",
        "harbor-certkey-path": ""
    },
    "tanzu-extensions": {
        "enable-extensions": "false",
        "tkg-clusters_name": "",
        "logging": {
            "syslog_endpoint": {
                "enable_syslog_endpoint": "false",
                "syslog_endpoint_address": "",
                "syslog_endpoint_port": "",
                "syslog_endpoint_mode": "",
                "syslog_endpoint_format": ""
            },
            "http_endpoint": {
                "enable_http_endpoint": "false",
                "http_endpoint_address": "",
                "http_endpoint_port": "",
                "http_endpoint_uri": "",
                "http_endpoint_header_key_value": ""
            },
            "elastic_search_endpoint": {
                "enable_elastic_search_endpoint": "false",
                "elastic_search_endpoint_address": "",
                "elastic_search_endpoint_port": ""
            },
            "kafka_endpoint": {
                "enable_kafka_endpoint": "false",
                "kafka_broker_service_name": "",
                "kafka_topic_name": ""
            },
            "splunk_endpoint": {
                "enable_splunk_endpoint": "false",
                "splunk_endpoint_address": "",
                "splunk_endpoint_port": "",
                "splunk_endpoint_token": ""
            }
        },
        "monitoring": {
            "enable-logging-extension": "false",
            "prometheus-fqdn": "",
            "prometheus-cert-path": "",
            "prometheus-certkey-path": "",
            "grafana-fqdn": "",
            "grafana-cert-path": "",
            "grafana-certkey-path": "",
            "grafana-password-base64": ""
        }
    }
}

arcas's People

Contributors

ogelbric avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.