mirror of
https://github.com/kubesphere/kubekey.git
synced 2025-12-26 01:22:51 +00:00
Merge pull request #1881 from pixiake/master
Support for installing calicoctl
This commit is contained in:
commit
7ecb34696e
|
|
@ -37,8 +37,14 @@ func K3sFilesDownloadHTTP(kubeConf *common.KubeConf, path, version, arch string,
|
|||
kubecni := files.NewKubeBinary("kubecni", arch, kubekeyapiv1alpha2.DefaultCniVersion, path, kubeConf.Arg.DownloadCommand)
|
||||
helm := files.NewKubeBinary("helm", arch, kubekeyapiv1alpha2.DefaultHelmVersion, path, kubeConf.Arg.DownloadCommand)
|
||||
k3s := files.NewKubeBinary("k3s", arch, version, path, kubeConf.Arg.DownloadCommand)
|
||||
calicoctl := files.NewKubeBinary("calicoctl", arch, kubekeyapiv1alpha2.DefaultCalicoVersion, path, kubeConf.Arg.DownloadCommand)
|
||||
|
||||
binaries := []*files.KubeBinary{k3s, helm, kubecni, etcd}
|
||||
|
||||
if kubeConf.Cluster.Network.Plugin == "calico" {
|
||||
binaries = append(binaries, calicoctl)
|
||||
}
|
||||
|
||||
binariesMap := make(map[string]*files.KubeBinary)
|
||||
for _, binary := range binaries {
|
||||
if err := binary.CreateBaseDir(); err != nil {
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ func K8sFilesDownloadHTTP(kubeConf *common.KubeConf, path, version, arch string,
|
|||
crictl := files.NewKubeBinary("crictl", arch, kubekeyapiv1alpha2.DefaultCrictlVersion, path, kubeConf.Arg.DownloadCommand)
|
||||
containerd := files.NewKubeBinary("containerd", arch, kubekeyapiv1alpha2.DefaultContainerdVersion, path, kubeConf.Arg.DownloadCommand)
|
||||
runc := files.NewKubeBinary("runc", arch, kubekeyapiv1alpha2.DefaultRuncVersion, path, kubeConf.Arg.DownloadCommand)
|
||||
calicoctl := files.NewKubeBinary("calicoctl", arch, kubekeyapiv1alpha2.DefaultCalicoVersion, path, kubeConf.Arg.DownloadCommand)
|
||||
|
||||
binaries := []*files.KubeBinary{kubeadm, kubelet, kubectl, helm, kubecni, crictl, etcd}
|
||||
|
||||
|
|
@ -52,6 +53,10 @@ func K8sFilesDownloadHTTP(kubeConf *common.KubeConf, path, version, arch string,
|
|||
binaries = append(binaries, containerd, runc)
|
||||
}
|
||||
|
||||
if kubeConf.Cluster.Network.Plugin == "calico" {
|
||||
binaries = append(binaries, calicoctl)
|
||||
}
|
||||
|
||||
binariesMap := make(map[string]*files.KubeBinary)
|
||||
for _, binary := range binaries {
|
||||
if err := binary.CreateBaseDir(); err != nil {
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ const (
|
|||
compose = "compose"
|
||||
containerd = "containerd"
|
||||
runc = "runc"
|
||||
calicoctl = "calicoctl"
|
||||
)
|
||||
|
||||
// KubeBinary Type field const
|
||||
|
|
@ -208,6 +209,13 @@ func NewKubeBinary(name, arch, version, prePath string, getCmd func(path, url st
|
|||
if component.Zone == "cn" {
|
||||
component.Url = fmt.Sprintf("https://kubernetes-release.pek3b.qingstor.com/opencontainers/runc/releases/download/%s/runc.%s", version, arch)
|
||||
}
|
||||
case calicoctl:
|
||||
component.Type = CNI
|
||||
component.FileName = calicoctl
|
||||
component.Url = fmt.Sprintf("https://github.com/projectcalico/calico/releases/download/%s/calicoctl-linux-%s", version, arch)
|
||||
if component.Zone == "cn" {
|
||||
component.Url = fmt.Sprintf("https://kubernetes-release.pek3b.qingstor.com/projectcalico/calico/releases/download/%s/calicoctl-linux-%s", version, arch)
|
||||
}
|
||||
default:
|
||||
logger.Log.Fatalf("unsupported kube binaries %s", name)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,19 +97,22 @@ func (s *SyncKubeBinary) Execute(runtime connector.Runtime) error {
|
|||
}
|
||||
binariesMap := binariesMapObj.(map[string]*files.KubeBinary)
|
||||
|
||||
if err := SyncKubeBinaries(runtime, binariesMap); err != nil {
|
||||
if err := SyncKubeBinaries(s, runtime, binariesMap); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// SyncKubeBinaries is used to sync kubernetes' binaries to each node.
|
||||
func SyncKubeBinaries(runtime connector.Runtime, binariesMap map[string]*files.KubeBinary) error {
|
||||
func SyncKubeBinaries(s *SyncKubeBinary, runtime connector.Runtime, binariesMap map[string]*files.KubeBinary) error {
|
||||
if err := utils.ResetTmpDir(runtime); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
binaryList := []string{"k3s", "helm", "kubecni"}
|
||||
if s.KubeConf.Cluster.Network.Plugin == "calico" {
|
||||
binaryList = append(binaryList, "calicoctl")
|
||||
}
|
||||
for _, name := range binaryList {
|
||||
binary, ok := binariesMap[name]
|
||||
if !ok {
|
||||
|
|
|
|||
|
|
@ -108,19 +108,22 @@ func (i *SyncKubeBinary) Execute(runtime connector.Runtime) error {
|
|||
}
|
||||
binariesMap := binariesMapObj.(map[string]*files.KubeBinary)
|
||||
|
||||
if err := SyncKubeBinaries(runtime, binariesMap); err != nil {
|
||||
if err := SyncKubeBinaries(i, runtime, binariesMap); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// SyncKubeBinaries is used to sync kubernetes' binaries to each node.
|
||||
func SyncKubeBinaries(runtime connector.Runtime, binariesMap map[string]*files.KubeBinary) error {
|
||||
func SyncKubeBinaries(i *SyncKubeBinary, runtime connector.Runtime, binariesMap map[string]*files.KubeBinary) error {
|
||||
if err := utils.ResetTmpDir(runtime); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
binaryList := []string{"kubeadm", "kubelet", "kubectl", "helm", "kubecni"}
|
||||
if i.KubeConf.Cluster.Network.Plugin == "calico" {
|
||||
binaryList = append(binaryList, "calicoctl")
|
||||
}
|
||||
for _, name := range binaryList {
|
||||
binary, ok := binariesMap[name]
|
||||
if !ok {
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ K3S_VERSION=${K3S_VERSION}
|
|||
CONTAINERD_VERSION=${CONTAINERD_VERSION}
|
||||
RUNC_VERSION=${RUNC_VERSION}
|
||||
COMPOSE_VERSION=${COMPOSE_VERSION}
|
||||
CALICO_VERSION=${COMPOSE_VERSION}
|
||||
|
||||
# qsctl
|
||||
QSCTL_ACCESS_KEY_ID=${QSCTL_ACCESS_KEY_ID}
|
||||
|
|
@ -156,7 +157,7 @@ if [ $CNI_VERSION ]; then
|
|||
curl -L -o binaries/cni/$CNI_VERSION/$arch/cni-plugins-linux-$arch-$CNI_VERSION.tgz \
|
||||
https://github.com/containernetworking/plugins/releases/download/$CNI_VERSION/cni-plugins-linux-$arch-$CNI_VERSION.tgz
|
||||
|
||||
qsctl cp binaries/etcd/$CNI_VERSION/$arch/cni-plugins-linux-$arch-$CNI_VERSION.tgz \
|
||||
qsctl cp binaries/cni/$CNI_VERSION/$arch/cni-plugins-linux-$arch-$CNI_VERSION.tgz \
|
||||
qs://containernetworking/plugins/releases/download/$CNI_VERSION/cni-plugins-linux-$arch-$CNI_VERSION.tgz \
|
||||
-c qsctl-config.yaml
|
||||
done
|
||||
|
|
@ -164,6 +165,24 @@ if [ $CNI_VERSION ]; then
|
|||
rm -rf binaries
|
||||
fi
|
||||
|
||||
# Sync CALICOCTL Binary
|
||||
if [ $CALICO_VERSION ]; then
|
||||
for arch in ${ARCHS[@]}
|
||||
do
|
||||
mkdir -p binaries/calicoctl/$CALICO_VERSION/$arch
|
||||
echo "Synchronizing calicoctl-$arch"
|
||||
|
||||
curl -L -o binaries/calicoctl/$CALICO_VERSION/$arch/calicoctl-linux-$arch \
|
||||
https://github.com/projectcalico/calico/releases/download/$CALICO_VERSION/calicoctl-linux-$arch
|
||||
|
||||
qsctl cp binaries/calicoctl/$CALICO_VERSION/$arch/calicoctl-linux-$arch \
|
||||
qs://containernetworking/plugins/releases/download/$CNI_VERSION/calicoctl-linux-$arch \
|
||||
-c qsctl-config.yaml
|
||||
done
|
||||
|
||||
rm -rf binaries
|
||||
fi
|
||||
|
||||
# Sync crictl Binary
|
||||
if [ $CRICTL_VERSION ]; then
|
||||
echo "access_key_id: $ACCESS_KEY_ID" > qsctl-config.yaml
|
||||
|
|
|
|||
|
|
@ -977,5 +977,13 @@
|
|||
"v2.7.0": "1e1e79d451d04a9c9953934b966e5698362e1262a933d098bd3874529f80fd43",
|
||||
"v2.7.1": "b86f161f0b6f4c6b294e62797ff20c24a39c918f4d1fd63728864a0461b3cdc7"
|
||||
}
|
||||
},
|
||||
"calicoctl": {
|
||||
"amd64": {
|
||||
"v3.23.2": "3784200cdfc0106c9987df2048d219bb91147f0cc3fa365b36279ac82ea37c7a"
|
||||
},
|
||||
"arm64": {
|
||||
"v3.23.2": "232b992e6767c68c8c832cc7027a0d9aacb29901a9b5e8871e25baedbbb9c64c"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue