creds-init
creds-init initializes credentials from the provided flags and the
mounted secrets. This currently supports:
- git credentials
- docker config credentials
git credentials
The binary will either create an ssh configuration file (with
-ssh-git flag) or a git configuration .gitconfig file and a
git credential .git-credentials file (with -basic-git flag).
-ssh-git
This uses the ssh-privatekey and known_hosts keys of the secret to generate:
- a
~/.ssh/id_{secret} private key
- a
~/.ssh/config file
- a
~/.ssh/known_hosts
With a Secret that looks like:
apiVersion: v1
kind: Secret
metadata:
name: ssh-key
annotations:
tekton.dev/git-0: github.com # Described below
type: kubernetes.io/ssh-auth
data:
ssh-privatekey: <base64 encoded>
# This is non-standard, but its use is encouraged to make this more secure.
known_hosts: <base64 encoded>
The flag -ssh-git=ssh-key=github.com (with the environment variable
HOME=/tekton/home) would result with the following files:
-
~/.ssh/config
HostName github.com
IdentityFile /tekton/home/.ssh/id_foo
Port 22
-
~/.ssh/id_rsa with the content of ssh-privatekey decoded
-
~/.ssh/known_hosts with the content of known_hosts decoded
-basic-git
This uses username and password credentials from a
kubernetes.io/basic-auth secret and add it in the generated docker's
.gitconfig file.
With a Secret that looks like:
apiVersion: v1
kind: Secret
metadata:
name: foo
annotations:
tekton.dev/git-0: https://github.com # Described below
type: kubernetes.io/basic-auth
stringData:
username: <username>
password: <password>
The flag -basic-git=foo=github.com (with the environment variable
HOME=/tekton/home) would result of the following files:
-
/tekton/home/.gitconfig
[credential]
helper = store
[credential "https://github.com"]
username = <username>
-
/tekton/home/.git-credentials
https://<username>:<password>@github.com
docker credentials
The binary will create a Docker config.json
file
with the provided flags (either -basic-docker, -docker-config or
-docker-cfg). This is documented
here.
If all the following flag are provided (-basic-docker,
-docker-config and -docker-cfg), creds-init will merge the
credentials from those ; -basic-auth taking precedence over
-docker-config taking precedence over -docker-cfg.
-basic-docker
This uses username and password credentials from a
kubernetes.io/basic-auth secret and add it in the generated docker's
config.json file.
With a Secret that looks like:
apiVersion: v1
kind: Secret
metadata:
name: foo
type: kubernetes.io/basic-auth
stringData:
username: admin
password: foobar
The flag -basic-docker=foo=https://us.gcr.io would result of a
docker's config.json file looking like:
{
"auths": {
"https://us.gcr.io" : {
"username": "admin",
"password": "foobar",
"auth": "YWRtaW46Zm9vYmFy"
}
}
}
Note that auth field is base64(username+":"+password).
-docker-config
This uses the config.json key from a secret of type
kubernetes.io/dockerconfigjson to populate the generated docker's
config.json file.
-docker-cfg
This uses the .dockercfg key from a secret of type
kubernetes.io/dockercfg to populate the generated docker's
config.json file. The .dockercfg file is the old, deprecated
docker's client configuration format.