我正在準備一個 k8 清單來部署一個自定義應用程式,這需要在某些 pod 中使用“git clone”,但我遇到了一個錯誤。
所以我想到了先把 git 部分隔離出來,在一個簡單的 pod 中測驗。但是我在那里也遇到了同樣的錯誤。
錯誤是:
URL using bad/illegal format or missing URL
我的測驗 pod 和秘密 YAML 清單如下:
apiVersion: v1
kind: Secret
metadata:
name: secret-manager
namespace: sec-manager
type: Opaque
data:
gitlab-access-token: SOMETOKEN
---
apiVersion: v1
kind: Pod
metadata:
name: "sec-manager"
namespace: sec-manager
labels:
app: sec-manager
use: passwordmanager
spec:
containers:
- name: disk-checker
image: "alpine:latest"
command: ["/bin/sh"]
args:
- "-c"
- |
apk add --no-cache git;
git --version;
cd /root;
git clone https://gitlab-ci-token:[email protected]/ORG/infra/deploy/apps/sec-manager.git;
sleep 9999;
env:
- name: GITLABTOKEN
valueFrom:
secretKeyRef:
name: secret-manager
key: gitlab-access-token
Pod 日志顯示 git clone 命令失敗:
→ kubectl -n sec-manager logs sec-manager
fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/community/x86_64/APKINDEX.tar.gz
(1/7) Installing ca-certificates (20220614-r0)
(2/7) Installing brotli-libs (1.0.9-r6)
(3/7) Installing nghttp2-libs (1.47.0-r0)
(4/7) Installing libcurl (7.83.1-r4)
(5/7) Installing expat (2.5.0-r0)
(6/7) Installing pcre2 (10.40-r0)
(7/7) Installing git (2.36.3-r0)
Executing busybox-1.35.0-r17.trigger
Executing ca-certificates-20220614-r0.trigger
OK: 19 MiB in 21 packages
git version 2.36.3
Cloning into '@gitlab.com/ORG/infra/deploy/apps/sec-manager.git'...
fatal: unable to access 'https://gitlab-ci-token:glpat-252jb98b39/': URL using bad/illegal format or missing URL
但是,如果我在同一個 pod 中手動運行以下命令,它就可以正常作業。
git clone https://gitlab-ci-token:[email protected]/ORG/infra/deploy/apps/sec-manager.git
所以我相信 Pod 中 shell 命令中某些字符的 YAML 決議錯誤,但無法弄清楚是哪一個以及如何準確地更正這些行。
有任何想法嗎?
uj5u.com熱心網友回復:
找到問題所在。
問題是自動將換行符添加到 base64 編碼的字串中。
例如,如果原始令牌是 12345,我們可以 base64 編碼如下:
? echo "12345" | base64
MTIzNDUK
但是很有可能在字串末尾出現尾隨空格或換行符,并且編碼的字串可能是錯誤的,而不是我們實際標記的編碼字串。
要防止任何尾隨換行符或空格,請使用以下-n標志echo:
? echo -n "12345" | base64
MTIzNDU=
您可以看到與第一個結果相比編碼的令牌差異。
gitlab-access-token基本上,我在 Kubernetes secret 中的值也發生了同樣的問題secret-manager。換行符在 env 變數之后破壞了 git repo URL$GITLABTOKEN

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/531310.html
上一篇:自動rebase整個repo以重組和應用Prettier
下一篇:你能切換一個脈沖影片嗎?
