{{tag>pulumi docker secret aws go}}
====== Create a Docker config Secret for private image pulling in Pulumi ======
...
// Define the GitHub token secret
ghTokenSecret, err := corev1.NewSecret(ctx, "ghTokenSecret", &corev1.SecretArgs{
Metadata: &metav1.ObjectMetaArgs{
Name: pulumi.String("github-token-secret"),
Namespace: serviceNamespace.Metadata.Name(),
},
StringData: pulumi.StringMap{
".dockerconfigjson": pulumi.String(`{
"auths": {
"ghcr.io": {
"auth": ""
}
}
}`),
},
Type: pulumi.String("kubernetes.io/dockerconfigjson"),
}, pulumi.Provider(k8sProvider))
if err != nil {
return err
}
...
Tweak the "auths" key above to your config. You can get the "auth" base64 value directly from your machine (''~/.docker/config.json'') and c/p it here. The value is just a concatenation of your username and pwd/token and you can create it like this:
echo -n "myusername:password1234" |base64 -w 0
Later you can reference the secret, for example in deployment:
...
_, err = appsv1.NewDeployment(ctx, "my-deployment", &appsv1.DeploymentArgs{
Metadata: &metav1.ObjectMetaArgs{
Labels: appLabels,
Namespace: serviceNamespace.Metadata.Name(),
},
Spec: &appsv1.DeploymentSpecArgs{
Selector: &metav1.LabelSelectorArgs{
MatchLabels: appLabels,
},
Replicas: pulumi.Int(1),
Template: &corev1.PodTemplateSpecArgs{
Metadata: &metav1.ObjectMetaArgs{
Labels: appLabels,
},
Spec: &corev1.PodSpecArgs{
Containers: corev1.ContainerArray{
&corev1.ContainerArgs{
Name: pulumi.String("my-app"),
Image: pulumi.String(dockerImage), // Change to your Docker image
Ports: corev1.ContainerPortArray{
&corev1.ContainerPortArgs{
ContainerPort: pulumi.Int(appPort),
},
},
},
},
ImagePullSecrets: corev1.LocalObjectReferenceArray{
&corev1.LocalObjectReferenceArgs{
Name: ghTokenSecret.Metadata.Name(),
},
},
},
},
},
}, pulumi.Provider(k8sProvider))
...
====== Tested on ======
*
====== See also ======
* [[wiki:nginx_proxy_pass_different_domain_k8s|nginx proxy pass to a different domain in k8s]]
* [[https://github.com/pulumi/examples/|Pulumi examples]]
====== References ======
* https://github.com/pulumi/pulumi-kubernetesx/issues/49