原文地址:jaas.ai/u/mthaddon/…
原文作者:jaas.ai/u/mthaddon/…
发布时间:
说明
该符咒在kubernetes中设置了一个jenkins-agent。
Jenkins代理操作符
该符咒在kubernetes中设置了一个jenkins-agent。
使用MicroK8s测试
安装先决条件
sudo snap install juju --classic
sudo snap install microk8s --classic
# Start MicroK8s and enable needed modules
microk8s.start
microk8s.enable dns storage
使用跨模型关系
魅力支持跨模型关系,以连接到另一模型中已部署的Juju Jenkins实例。
首先我们要在LXC上启动和部署Juju。稍后我们将把我们的MicroK8s模型添加到这个同一控制器中。
juju bootstrap localhost lxd
juju deploy jenkins --config password=admin
然后在浏览器中访问$JENKINS_IP:8080,用用户名admin和密码admin(如上面配置中设置的)登录到jenkins界面。你可以配置你想要的插件,并创建一个初始的管理员用户,或者跳过这一点,继续使用预先创建的用户。
现在我们要创建我们的k8s模型并生成一个跨模型的关系报价。
microk8s.config | juju add-k8s micro --controller=lxd
juju add-model jenkins-agent-k8s micro
juju deploy cs:~jenkins-ci-charmers/jenkins-agent
魅力状态将是 "阻塞",信息是 "缺少必要的配置:jenkins_agent_name jenkins_agent_token jenkins_master_url"。这将通过创建和接受我们的跨模型关系来解决。我们在k8s模型中做这个。
juju offer jenkins-agent:slave
# The output will be something like:
# Application "jenkins-agent" endpoints [slave] available at "admin/jenkins-agent-k8s.jenkins-agent"
切换回你部署 jenkins 的 IaaS 模式并运行。
# Adjust based on the output of your 'juju offer' command above
juju add-relation jenkins <your-controller>:admin/<your-microk8s-model>.jenkins-agent
现在你可以在浏览器中访问$JENKINS_IP:8080/computer/,你会看到jenkins代理已经被添加到你的jenkins实例中。
使用手动配置的节点
魅力也支持手动添加节点,我们将在下面看到。这将允许你手动连接到另一个Juju模型中的Jenkins实例,甚至连接到一个不由Juju管理的Jenkins实例。
使用LXC在本地部署Jenkins
首先我们要在LXC上启动和部署Juju。稍后我们将把我们的MicroK8s模型添加到这个相同的控制器中。
juju bootstrap localhost lxd
juju deploy jenkins --config password=admin
然后进入jenkins界面,暂时手动创建一个名为 "jenkins-agent-k8s-test "的永久节点。你可以通过在浏览器中访问$JENKINS_IP:8080,并以用户名admin和密码admin(如上文配置中的设置)登录来完成。一旦你安装了你想要的插件,并创建了一个初始的管理员用户,你就可以点击 "创建一个代理 "链接。你会被要求设置 "远程根目录",你应该设置为/var/lib/jenkins。如果你在创建代理时看到关于 "要么选择WebSocket模式,要么必须启用入站代理的TCP端口 "的信息,在 "使用WebSocket "复选框下,进入$JENKINS_IP:8080/configureSecurity/,在 "代理 "部分,将 "入站代理的TCP端口 "设为 "固定",端口为8081。
抓取以下变量供以后使用。
# Set this to the value displayed for -secret on $JENKINS_IP:8080/computer/$AGENT_NAME/
export JENKINS_AGENT_TOKEN=SOME_VALUE_PER_URL_ABOVE
export JENKINS_IP=$(juju status --format json jenkins | jq -r '.machines."0"."ip-addresses"[0]')
部署 jenkins-agent charm
你需要在本地部署一个jenkins charm,并定义好以下变量。请参阅 "在本地部署Jenkins"部分。
- JENKINS_AGENT_TOKEN:Jenkins代理的令牌
- JENKINS_IP:你的jenkins charm实例的IP
在这个资源库目录中
microk8s.config | juju add-k8s micro --controller=lxd
juju add-model jenkins-agent-k8s micro
juju model-config logging-config="<root>=DEBUG"
juju deploy cs:~jenkins-ci-charmers/jenkins-agent \
--config "jenkins_agent_name=jenkins-agent-k8s-test" \
--config "jenkins_agent_token=${JENKINS_AGENT_TOKEN:?}" \
--config "jenkins_master_url=http://${JENKINS_IP:?}:8080"
一旦一切部署完毕,你可以用以下方式检查日志。
microk8s.kubectl -n jenkins-agent-k8s logs -f --all-containers=true deployment/jenkins-agent
测试docker镜像
按照上面的章节在本地部署Jenkins,包括设置相关的变量,然后在本地构建镜像,方法如下。
make build-image
docker run --rm -ti --name jenkins-agent-test \
-e JENKINS_API_USER=admin \
-e JENKINS_API_TOKEN="${JENKINS_API_TOKEN}" \
-e JENKINS_URL="http://${JENKINS_IP}:8080" \
-e JENKINS_HOSTNAME="jenkins-agent-test" "jenkins-agent-k8s:devel"
配置
-
镜像 (字符串) 要安装的 docker 镜像。需要。默认为 dockerhub 上的 jenkins-agent 镜像。jenkinscicharmers/jenkinsagent:edge
(string) 逗号分隔的标签列表,将被分配给Jenkins中的代理。如果没有设置,它将默认为代理的硬件标识符,例如:'x86_64'。
(string) 在Jenkins中配置的代理名称。可以用:作为分隔符来输入多个名字。例如。"agent-one:agent-two:agent-three"
(string)由Jenkins提供的代理令牌。可以在你的Jenkins实例中的${JENKINS_URL}/computer/${AGENT_NAME}/找到。可以通过使用:作为分隔符,匹配jenkins_agent_name中的代理顺序,输入多个令牌。例如。"token-one:token-two:token-three"
(string) 将代理配置为使用明确的Jenkins主站而不是使用jenkins-agent关系。这允许代理连接到不由Juju管理的Jenkins实例。
通过www.DeepL.com/Translator(免费版)翻译