本地运行的K3s集群上安装Jenkins X
注意
确保你已经登录了GitHub,否则点击以下链接你将得到一个404错误
本篇指南将指导你如何在你使用k3s的笔记本电脑上安装Jenkins X
如果你正在使用Mac OS,你可以参照这篇指南来构建k3s。你无需在剩余部分的教程中安装kalm
前提条件
K3s
确保你已经创建了一个k3s集群
如果你没有安装好的k3s集群,你可以通过执行以下指令安装一个:
# We don't support Kubernetes 1.22+ yet
curl -sfL https://get.k3s.io | INSTALL_K3S_CHANNEL=v1.21 sh -s - --write-kubeconfig-mode 644
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/k3s-config
# Set it also in the bashrc or zshrc file, or you can flatten both of these configs into a single file
export KUBECONFIG=~/.kube/config:~/.kube/k3s-config
使用以下指令验证k3s已经成功安装:
kubectl get nodes
- 你稍后需要开启多个终端,所以设置这些环境变量在bashrc或者zshrc可能对你有帮助
nano ~/.bashrc
#go to the end of the file and paste the export command
export KUBECONFIG=~/.kube/config:~/.kube/k3s-config
可选项
- 如果以上方法未生效,拷贝配置文件到~/.kube/config替换(如果你没有其它的集群,此方法应该有效)
sudo rm ~/.kube/k3s-config #to make k3s uses ~/.kube/config
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
- 如果仍然显示无权限
sudo chmod 777 ~/.kube/config #warning: this maybe vulnerable to multiple users
稍后在安装和配置Jenkins X期间,节点的值将会被使用
更多的安装选项查看k3s安装指南,但是记住我们暂未支持K8s 1.22+ 版本
Docker
你需要安装docker并使用非root用户管理
Vault
安装vault命令行工具。参照vault文档如何在你的平台安装vault。
确保你已经有vault在启用k8s认证的docker容器中运行。
docker run --name jx-k3s-vault -d --cap-add=IPC_LOCK -e 'VAULT_DEV_ROOT_TOKEN_ID=myroot' -e 'VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200' --net host vault:latest
使用docker logs jx-k3s-vault
验证vault是否正确启动
然后在vault中启用k8s认证
export VAULT_ADDR='http://0.0.0.0:8200'
# you may want to set this at the end of the ~/.bashrc file or ~/.zshrc either to be accesible for all terminals you open like the way we did above
vault auth enable kubernetes
注意:如果你看到报错Error enabling kubernetes auth: Post “https://127.0.0.1:8200/v1/sys/auth/kubernetes”: http: server gave HTTP response to HTTPS client,尝试执行命令vault login myroot
。
Github
- 创建一个git机器人用户(不同于你的个人用户)例如:https://github.com/join并生成一个个人准入token,这将被用于Jenkins X和git仓库的交互。例如:https://github.com/settings/tokens/new?scopes=repo,read:user,read:org,user:email,write:repo_hook,delete_repo,admin:repo_hook
- 此机器人用户需要具有写权限,Jenkins X能够用它来写入任意git仓库。通过添加机器人到git组织级别或者独立仓库的协作者可以完成此操作。添加新机器人到你的Git组织,目前要给予它管理员权限,未来我们将削减此权限到普通成员权限。
Jenkins-X
- 确认你已经安装了jx 3.0 binary并且把它放到你的*$PATH*目录,jx admin operator将会使用它
Jenkins X v3 安装
- 通过点击此处,从jx3-k3s-vault模板生成一个集群git仓库
- 编辑jx-requirements.yaml文件中vault url的值。替换"http://:8200"
- 提交并推送你的变更:
git add .
git commit -m "fix: set vault url"
git push origin main
- 设置GIT_USERNAME (机器人用户名) 和 GIT_TOKEN (机器人个人准入凭证) 环境变量并运行:
jx admin operator --username $GIT_USERNAME --token $GIT_TOKEN --url <url of the cluster git repo> --set "jxBootJobEnvVarSecrets.EXTERNAL_VAULT=\"true\"" --set "jxBootJobEnvVarSecrets.VAULT_ADDR=http://<replace with k3s node name>:8200"
注意:第一个任务将会失败
未完待续