Skip to content
This repository has been archived by the owner on Mar 31, 2023. It is now read-only.

Commit

Permalink
Work with new capei provider
Browse files Browse the repository at this point in the history
  • Loading branch information
weave-e2e-quickstart committed Oct 7, 2020
1 parent ca0f53d commit ec613e0
Show file tree
Hide file tree
Showing 6 changed files with 424 additions and 231 deletions.
33 changes: 24 additions & 9 deletions cmd/wksctl/apply/apply.go
@@ -1,13 +1,15 @@
package apply

import (
"bytes"
"io/ioutil"
"path/filepath"
"strings"

"github.com/pkg/errors"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
existinginfrav1 "github.com/weaveworks/cluster-api-provider-existinginfra/apis/cluster.weave.works/v1alpha3"
"github.com/weaveworks/cluster-api-provider-existinginfra/pkg/apis/wksprovider/machine/config"
capeios "github.com/weaveworks/cluster-api-provider-existinginfra/pkg/apis/wksprovider/machine/os"
"github.com/weaveworks/cluster-api-provider-existinginfra/pkg/utilities/kubeadm"
Expand Down Expand Up @@ -95,6 +97,12 @@ func (a *Applier) Apply() error {
return a.initiateCluster(clusterPath, machinesPath)
}

// parseCluster converts the manifest file into a Cluster
func parseCluster(clusterManifest []byte) (eic *existinginfrav1.ExistingInfraCluster, err error) {
_, b, err := specs.ParseCluster(ioutil.NopCloser(bytes.NewReader(clusterManifest)))
return b, err
}

func (a *Applier) initiateCluster(clusterManifestPath, machinesManifestPath string) error {
sp := specs.NewFromPaths(clusterManifestPath, machinesManifestPath)
sshClient, err := ssh.NewClientForMachine(sp.MasterSpec, sp.ClusterSpec.User, a.Params.sshKeyPath, log.GetLevel() > log.InfoLevel)
Expand Down Expand Up @@ -155,12 +163,17 @@ func (a *Applier) initiateCluster(clusterManifestPath, machinesManifestPath stri
}
}

// Read manifests and pass in the contents
clusterManifest, err := ioutil.ReadFile(clusterManifestPath)
if err != nil {
return errors.Wrap(err, "failed to read cluster manifest: ")
}

// Read manifests and pass in the contents
cluster, err := parseCluster(clusterManifest)
if err != nil {
return errors.Wrap(err, "failed to parse cluster manifest: ")
}

machinesManifest, err := ioutil.ReadFile(machinesManifestPath)
if err != nil {
return errors.Wrap(err, "failed to read machines manifest: ")
Expand All @@ -172,15 +185,17 @@ func (a *Applier) initiateCluster(clusterManifestPath, machinesManifestPath stri
return errors.Wrap(err, "failed to read ssh key: ")
}

log.Infof("CLUSTER SPEC: %s", clusterManifest)
if err := capeios.SetupSeedNode(installer, capeios.SeedNodeParams{
PublicIP: sp.GetMasterPublicAddress(),
PrivateIP: sp.GetMasterPrivateAddress(),
ServicesCIDRBlocks: sp.Cluster.Spec.ClusterNetwork.Services.CIDRBlocks,
PodsCIDRBlocks: sp.Cluster.Spec.ClusterNetwork.Pods.CIDRBlocks,
ClusterManifest: string(clusterManifest),
MachinesManifest: string(machinesManifest),
SSHKey: string(sshKey),
BootstrapToken: token,
PublicIP: sp.GetMasterPublicAddress(),
PrivateIP: sp.GetMasterPrivateAddress(),
ServicesCIDRBlocks: sp.Cluster.Spec.ClusterNetwork.Services.CIDRBlocks,
PodsCIDRBlocks: sp.Cluster.Spec.ClusterNetwork.Pods.CIDRBlocks,
ExistingInfraCluster: *cluster,
ClusterManifest: string(clusterManifest),
MachinesManifest: string(machinesManifest),
SSHKey: string(sshKey),
BootstrapToken: token,
KubeletConfig: config.KubeletConfig{
NodeIP: sp.GetMasterPrivateAddress(),
CloudProvider: sp.GetCloudProvider(),
Expand Down
141 changes: 138 additions & 3 deletions examples/footloose/cluster.yaml
Expand Up @@ -13,29 +13,164 @@ spec:
infrastructureRef:
apiVersion: cluster.weave.works/v1alpha3
kind: ExistingInfraCluster
name: example-provider
name: example
---
apiVersion: cluster.weave.works/v1alpha3
kind: ExistingInfraCluster
metadata:
name: example-provider
name: example
spec:
user: ec2-user
controlPlaneMachineCount: "1"
workerMachineCount: "1"
cri:
kind: docker
package: docker-ce
version: 19.03.8
kubernetesVersion: 1.17.5
os:
files:
- destination: /etc/yum.repos.d/kubernetes.repo
source:
configmap: repo
contents: |
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kube*
key: kubernetes.repo
- destination: /etc/yum.repos.d/docker-ce.repo
source:
configmap: repo
contents: |
[docker-ce-stable]
name=Docker CE Stable - \$basearch
baseurl=https://download.docker.com/linux/centos/7/\$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo \$basearch
baseurl=https://download.docker.com/linux/centos/7/debug-\$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://download.docker.com/linux/centos/7/source/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-edge]
name=Docker CE Edge - \$basearch
baseurl=https://download.docker.com/linux/centos/7/\$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-edge-debuginfo]
name=Docker CE Edge - Debuginfo \$basearch
baseurl=https://download.docker.com/linux/centos/7/debug-\$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-edge-source]
name=Docker CE Edge - Sources
baseurl=https://download.docker.com/linux/centos/7/source/edge
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-test]
name=Docker CE Test - \$basearch
baseurl=https://download.docker.com/linux/centos/7/\$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo \$basearch
baseurl=https://download.docker.com/linux/centos/7/debug-\$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://download.docker.com/linux/centos/7/source/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-nightly]
name=Docker CE Nightly - \$basearch
baseurl=https://download.docker.com/linux/centos/7/\$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo \$basearch
baseurl=https://download.docker.com/linux/centos/7/debug-\$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://download.docker.com/linux/centos/7/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
key: docker-ce.repo
- destination: /tmp/cloud-google-com.gpg.b64
source:
configmap: repo
contents: |
mQENBFUd6rIBCAD6mhKRHDn3UrCeLDp7U5IE7AhhrOCPpqGF7mfTemZYHf/5JdjxcOxoSFlK7zwm
Fr3lVqJ+tJ9L1wd1K6P7RrtaNwCiZyeNPf/Y86AJ5NJwBe0VD0xHTXzPNTqRSByVYtdN94NoltXU
YFAAPZYQls0x0nUD1hLMlOlC2HdTPrD1PMCnYq/NuL/Vk8sWrcUt4DIS+0RDQ8tKKe5PSV0+Pnma
JvdF5CKawhh0qGTklS2MXTyKFoqjXgYDfY2EodI9ogT/LGr9Lm/+u4OFPvmN9VN6UG+s0DgJjWvp
bmuHL/ZIRwMEn/tpuneaLTO7h1dCrXC849PiJ8wSkGzBnuJQUbXnABEBAAG0QEdvb2dsZSBDbG91
ZCBQYWNrYWdlcyBBdXRvbWF0aWMgU2lnbmluZyBLZXkgPGdjLXRlYW1AZ29vZ2xlLmNvbT6JAT4E
EwECACgFAlUd6rICGy8FCQWjmoAGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEDdGwginMXsP
cLcIAKi2yNhJMbu4zWQ2tM/rJFovazcY28MF2rDWGOnc9giHXOH0/BoMBcd8rw0lgjmOosBdM2JT
0HWZIxC/Gdt7NSRA0WOlJe04u82/o3OHWDgTdm9MS42noSP0mvNzNALBbQnlZHU0kvt3sV1Ysnrx
ljoIuvxKWLLwren/GVshFLPwONjw3f9Fan6GWxJyn/dkX3OSUGaduzcygw51vksBQiUZLCD2Tlxy
r9NvkZYTqiaWW78L6regvATsLc9L/dQUiSMQZIK6NglmHE+cuSaoK0H4ruNKeTiQUw/EGFaLecay
6Qy/s3Hk7K0QLd+gl0hZ1w1VzIeXLo2BRlqnjOYFX4CwAgADmQENBFrBaNsBCADrF18KCbsZlo4N
jAvVecTBCnp6WcBQJ5oSh7+E98jX9YznUCrNrgmeCcCMUvTDRDxfTaDJybaHugfba43nqhkbNpJ4
7YXsIa+YL6eEE9emSmQtjrSWIiY+2YJYwsDgsgckF3duqkb02OdBQlh6IbHPoXB6H//b1PgZYsom
B+841XW1LSJPYlYbIrWfwDfQvtkFQI90r6NknVTQlpqQh5GLNWNYqRNrGQPmsB+NrUYrkl1nUt1L
RGu+rCe4bSaSmNbwKMQKkROE4kTiB72DPk7zH4Lm0uo0YFFWG4qsMIuqEihJ/9KNX8GYBr+tWgyL
ooLlsdK3l+4dVqd8cjkJM1ExABEBAAG0QEdvb2dsZSBDbG91ZCBQYWNrYWdlcyBBdXRvbWF0aWMg
U2lnbmluZyBLZXkgPGdjLXRlYW1AZ29vZ2xlLmNvbT6JAT4EEwECACgFAlrBaNsCGy8FCQWjmoAG
CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEGoDCyG6B/T78e8H/1WH2LN/nVNhm5TS1VYJG8B+
IW8zS4BqyozxC9iJAJqZIVHXl8g8a/Hus8RfXR7cnYHcg8sjSaJfQhqO9RbKnffiuQgGrqwQxuC2
jBa6M/QKzejTeP0Mgi67pyrLJNWrFI71RhritQZmzTZ2PoWxfv6b+Tv5v0rPaG+ut1J47pn+kYgt
UaKdsJz1umi6HzK6AacDf0C0CksJdKG7MOWsZcB4xeOxJYuy6NuO6KcdEz8/XyEUjIuIOlhYTd0h
H8E/SEBbXXft7/VBQC5wNq40izPi+6WFK/e1O42DIpzQ749ogYQ1eodexPNhLzekKR3XhGrNXJ95
r5KO10VrsLFNd8KwAgAD
key: cloud-google-com.gpg.b64
user: root
- destination: /etc/docker/daemon.json
source:
configmap: docker
contents: |
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"exec-opts": [
"native.cgroupdriver=cgroupfs"
]
}
key: daemon.json
16 changes: 11 additions & 5 deletions examples/footloose/machines.yaml
Expand Up @@ -5,15 +5,18 @@ metadata:
set: master
name: master-1
spec:
clusterName: example
bootstrap: {}
version: 1.17.5
infrastructureRef:
apiVersion: cluster.weave.works/v1alpha3
kind: ExistingInfraMachine
name: master-1-provider
name: master-1
---
apiVersion: cluster.weave.works/v1alpha3
kind: ExistingInfraMachine
metadata:
name: master-1-provider
name: master-1
spec:
private:
address: 172.17.0.2
Expand All @@ -29,19 +32,22 @@ metadata:
set: worker
name: worker-1
spec:
clusterName: example
bootstrap: {}
version: 1.17.5
infrastructureRef:
apiVersion: cluster.weave.works/v1alpha3
kind: ExistingInfraMachine
name: worker-1-provider
name: worker-1
---
apiVersion: cluster.weave.works/v1alpha3
kind: ExistingInfraMachine
metadata:
name: worker-1-provider
name: worker-1
spec:
private:
address: 172.17.0.3
port: 22
public:
address: 127.0.0.1
port: 2223
port: 2223

0 comments on commit ec613e0

Please sign in to comment.