我正在尝试使用jenkins和minikube在本地构建ci / cd。 我使用docker驱动程序在机器(主机)上运行minikube,并在容器中也运行jenkins。
两者都在同一个docker网络上。
要在詹金斯管道中运行kubectl
命令,我需要
从运行jenkins的容器访问minikube。
我尝试使用容器名称作为主机,但是没有用。
我没有尝试的想法,有人可以帮助我吗?
答案 0 :(得分:0)
从pod(容器)运行kubectl命令是可能的,并且很容易实现。虽然更实用,建议改用Kubernetes API。
对于他们两个人,都需要为其pod授予正确的权限,以便他们可以进行身份验证以进行k8s API调用(kubectl只是通过API与您的集群通信的应用程序)。
mster是一个很好的例子:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: k8s-101
spec:
replicas: 3
template:
metadata:
labels:
app: k8s-101
spec:
serviceAccountName: k8s-101-role
containers:
- name: k8s-101
imagePullPolicy: Always
image: yourrepo/yourcontainer
ports:
- name: app
containerPort: 3000
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: k8s-101-role
subjects:
- kind: ServiceAccount
name: k8s-101-role
namespace: default
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: k8s-101-role
在这里,我们为Deployment Pod授予了群集角色的权限,并认为这是一个不好的例子,因为它很危险,会暴露您的群集。
接下来,您必须准备容器以内置kubectl:
kubectl
kubectl
复制到您的容器中kubectl
为管理您的kubernetes集群提供了丰富的条件。如果您希望直接与API通讯,则无需执行其他任何操作。只需转到documentation了解如何拨打电话,然后检查Access Clusters Using the Kubernetes API。
答案 1 :(得分:0)
遇到了同样的问题:无法从外部 docker 容器访问 $(minikube ip)
,而从主机访问是可以的。
使用 --network host
选项运行 docker 容器解决了该问题。