我在 M1 MacOS 上有一个 Rancher Deskop(dockerd),当我尝试在 dockerfile 下构建时,我收到如下错误。这是我尝试构建图像的命令docker build -t te-grafana-dashboards-toolchain --no-cache .
我尝试更换平台,但其中一些对我有用。我对 M1 的这个平台问题有点迷失,但任何帮助将不胜感激,我做错了什么?造成这种情况的根本原因可能是什么?
Removing intermediate container 70af516d5d6b
---> a69229847153
Step 5/6 : RUN GO111MODULE="on" go get github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb; ln -s $(go env GOPATH)/bin/jb /usr/bin/jb
---> Running in 13545862fffe
qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory
qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory
Removing intermediate container 13545862fffe
Run Code Online (Sandbox Code Playgroud)
Dockerfile
FROM --platform=linux/amd64 ubuntu:focal
RUN apt update; apt install -y curl jq build-essential python3.8 python3-pip …
Run Code Online (Sandbox Code Playgroud) 我有一个 dockerfile 如下,但在RUN npm ci
步骤中,有一个npm WARN old lockfile The package-lock.json file was created with an old version of npm
我无法弄清楚的警告..
我尝试使用 npm install 而不是 npm ci,添加了--package-lock
标志但仍然收到此警告。这是我必须忽略的一种警告,或者我应该怎么解决这个问题
Step 12/26 : RUN npm ci --production --package-lock && npm ci --production --package-lock --prefix ./ui-runner
---> Running in 3473c209b98c
npm WARN old lockfile
npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm WARN old lockfile so supplemental metadata must be fetched from …
Run Code Online (Sandbox Code Playgroud) 我使用helm create
Helm v3 命令创建了一个 helm 图表,它为我创建了标准模板。由于我是使用 Helm 的新手,所以我对使用选择器和标签感到有些困惑。
那么应该如何使用deployment.yaml和services.yaml之间的标签呢?
使用include-road-dashboard.labels
命令已经执行与下面相同的操作,或者我需要单独指定标签,如下例命令所示。我的问题对于命令来说也是一样的{{ include "road-dashboard.selectorLabels" . }}
。
更新模板
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "road-dashboard.fullname" . }}
labels:
app.kubernetes.io/name: {{ include "road-dashboard.name" . }}
helm.sh/chart: {{ include "road-dashboard.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
Run Code Online (Sandbox Code Playgroud)
Helm 标准模板
部署.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "road-dashboard.fullname" . }}
labels:
{{- include "road-dashboard.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount …
Run Code Online (Sandbox Code Playgroud) 我有两个关于 Jenkins 管道中帖子部分的使用问题
1.我们可以在 Jenkins 声明式管道中的每个阶段使用多个 post 部分吗?
2.我们可以在post部分运行sh命令吗?
pipeline{
stages{
stage("....") {
steps {
script {
....
}
}
post {
failure{
sh "....."
}
}
stage("Second stage") {
when {
expression { /*condition */ }
}
steps {
script{
....
}
post {
always {
script {
sh "..."
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我使用以下命令通过 Jenkins 将 Docker 镜像推送到我们的私有注册表:
def dockerImage = docker.build("repo/myapp:${env.BUILD_NUMBER}")
Run Code Online (Sandbox Code Playgroud)
(BUILD_NUMBER
每次构建后都会增加。)
因为我是 Helm 的新手,所以我无法决定如何为values.yaml
.
我想将我的应用程序部署到多个环境,例如:
dev
test
prod
假设我能够通过 Helm 将应用程序部署到dev
,最新的BUILD_NUMBER
是:
dev
test
prod
那么标签值应该是多少呢?
image:
repository: registryt/myrepo/image
tag:
Run Code Online (Sandbox Code Playgroud) 我想集成我们的 Jenkins 和 Kubernetes 集群,它们在不同的服务器上工作。我每个stage
和2 个集群production
。我已经在舞台集群上创建了 2 个命名空间来划分development
和stage
。我将我的 values.yaml 划分为如下所示。
所以根据 GIT_BRANCH 值;我想设置命名空间变量并通过helm install
命令进行部署。在这种情况下,
我的问题是,在这种情况下,在 Jenkinsfile 中连接 2 个集群的最佳方法是什么,因为开发和测试命名空间我需要一个集群,生产我需要部署另一个集群。
stage('deploy') {
steps {
script {
if (env.GIT_BRANCH == "origin/master") {
def namepsace="dev"
sh "helm upgrade --install -f values.dev.yaml --namespace ${namespace}"
} else if (env.GIT_BRANCH =="origin/test"){
def namepsace="stage"
sh "helm upgrade --install -f values.stage.yaml --namespace ${namespace}"
} else {
def namepsace="prod"
sh "helm upgrade --install -f values.prod.yaml --namespace …
Run Code Online (Sandbox Code Playgroud) 我们有 Helm 3.0.3 和 1.18 k8s,一年以来我们没有遇到过像下面这样的任何问题。我们通过 helm 将多个微服务部署到 k8s,到目前为止一切正常。但即使我们没有对服务字段进行任何更改,我们也会收到如下错误。
这是我如何部署到 k8s 的命令。当我在 k8s 中卸载该服务并开始重新构建时,它可以正常工作,但是当我需要推送新更改时?再次面对这个错误。
+ helm upgrade --install --debug --force xx-ui-dev --values values.dev.yaml --namespace dev --set image.tag=608 .
Run Code Online (Sandbox Code Playgroud)
错误
history.go:52: [debug] getting history for release xx-ui-dev
upgrade.go:120: [debug] preparing upgrade for xx-ui-dev
upgrade.go:128: [debug] performing update for xx-ui-dev
upgrade.go:292: [debug] creating upgraded release for xx-ui-dev
client.go:173: [debug] checking 7 resources for changes
client.go:432: [debug] Replaced "xx-ui-dev" with kind NetworkPolicy for kind NetworkPolicy
client.go:432: [debug] Replaced "xx-ui-dev" with kind ServiceAccount for …
Run Code Online (Sandbox Code Playgroud) 我想根据环境变量有条件地 proxy_pass 到相关服务。我的意思是,prox_pass 地址应该根据 NODE_ENV 变量进行更改。
这样做的最佳方法是什么?我可以对 proxy_pass 使用如下 if 语句吗?如果是的话我应该怎么做?除此之外,我尝试创建一个如下所示的 bash 将环境变量传递给 nginx,但无法以$NGINX_BACKEND_ADDRESS
某种方式设置并传递给 nginx conf。任何帮助将不胜感激
if ($NODE_ENV == "development) {
proxy_pass http://myservice-dev;
}
Run Code Online (Sandbox Code Playgroud)
nginx.conf
server {
listen 3000;
location / {
root /usr/src/app;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /csrf/token {
proxy_pass ${NGINX_BACKEND_ADDRESS}/csrf/token;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /export/apis {
proxy_pass ${NGINX_BACKEND_ADDRESS}/export/apis;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
Run Code Online (Sandbox Code Playgroud)
入口点.sh
#!/usr/bin/env sh
set -eu
export NODE_ENV=development
if …
Run Code Online (Sandbox Code Playgroud) 我们正在开发基于微服务的应用程序。它们将使用 Helm Package Manager 部署到 kubernetes,并且所有这些都存储自己的存储库和 helm 图表。以下是我们微服务的名称。
我的困惑是,在部署之前,我如何指定后端的 pod 需要与 UI、API 和 Auth 的 Pods 进行通信。应用程序可以知道与 UI/AUTH/其他内容建立连接,但是在微服务之间管理此操作的最佳方法是什么豆荚。
抱歉,这可能是一个简单的问题,但是使用工具和 docker agent 之间有什么区别。我认为使用 docker agent 比使用工具更灵活。我什么时候应该使用 docker 代理或工具?
pipeline {
agent any
tools {
maven 'Maven 3.3.9'
jdk 'jdk8'
}
stages {
stage ('Initialize') {
steps {
sh '''
echo "PATH = ${PATH}"
echo "M2_HOME = ${M2_HOME}"
'''
}
}
stage ('Build') {
steps {
sh 'mvn -Dmaven.test.failure.ignore=true install'
}
Run Code Online (Sandbox Code Playgroud)
pipeline {
agent none
stages {
stage('Back-end') {
agent {
docker { image 'maven:3-alpine' }
}
steps {
sh 'mvn --version'
}
}
Run Code Online (Sandbox Code Playgroud) jenkins ×4
kubernetes ×4
docker ×3
apple-m1 ×1
dockerfile ×1
go ×1
nginx ×1
node.js ×1
npm ×1
rancher ×1