---
# System prepended metadata

title: kubernetes private container registry secret setup
tags: [DevOps]

---

---
tags: DevOps
title: kube config with gitlab
---

## pull private container registry from gitlab
1. to your repo > setting > repository
2. expand `Deploy Token` and set tokennam, username and scope
3. click `create deploy token`
4. then  run: 
    ```shell
    kubectl create secret docker-registry <secrect_name> --docker-server=registry.gitlab.com --docker-username=<username> --docker-password=<gitlab_token> -n <namespace>
    ```
3. in deployment or image spec:
    * add `imagePullSecrets`
    ```yaml
    spec:
      containers:
        - name: <arbitrary name>
          image: registry.gitlab.com/<username>/<container-registry-path>:<tag>
          imagePullPolicy: Always
          securityContext:
            privileged: false
      imagePullSecrets:
        - name: <secrect_name>
      restartPolicy: Always
      dnsPolicy: ClusterFirst
      nodeSelector: #this can be use to specify node
        kubernetes.io/hostname: <node-name>
      schedulerName: default-scheduler
    ```
    
## pull private image from github registry (ghcr.io)
1. apply a personal access token
4. then  run: 
    ```shell
    kubectl create secret docker-registry <secrect_name> --docker-server=ghcr.io --docker-username=<github-username> --docker-password=<personal-access-token> -n <namespace>
    ```
3. in deployment or image spec:
    * add `imagePullSecrets`
    ```yaml
    spec:
      containers:
        - name: <arbitrary name>
          image: ghcr.io/<username>/<container-registry-path>:<tag>
          imagePullPolicy: Always
          securityContext:
            privileged: false
      imagePullSecrets:
        - name: <secrect_name>
      restartPolicy: Always
      dnsPolicy: ClusterFirst
      nodeSelector: #this can be use to specify node
        kubernetes.io/hostname: <node-name>
      schedulerName: default-scheduler