社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

无法将私有包/映像从GitHub容器注册表拉入Okteto Kubernetes

Michael • 3 年前 • 1491 次点击  

我希望可以征求你的意见。

简而言之,问题是:我的管道无法从GHCR中提取私人图像。IO变成了Okteto Kubernetes,但来自同一私人回购协议的公开图像。

我在Windows 10上使用WSL2 Ubuntu20.04 LTS和kinD for development,并尝试了minikube。

我在Okto中发现一个错误,它说图像拉取是未经授权的->拉回。

我做的事情:浏览堆栈溢出、RTFM、Okteto FAQ、下载Okteto kubeconfig、拔出头发,花了比我想承认的更多的时间,但仍然没有成功。

无论出于什么原因,我都无法创造一个行之有效的“库贝特秘密”。当登录到ghcr时。io通过——docker登录——用户名——我可以在本地提取私人图像。

无论我尝试了什么,当我试图在Okteo中提取私人图像时,仍然会出现未经授权的错误。

我的设置和最新更新:

  • Windows 10 Pro
  • 喷气式飞机驾驶员
  • WSL2 Ubuntu 20.04 LTS
  • ASP。NET核心MVC应用程序
  • .NET 6 SDK
  • 码头工人
  • 友善的
  • 巧克力味
  • 自制的

设置类型

kind create cluster --name my-name

kubectl create my-namespace

// create a secret to pull images from ghcr.io       
kubectl create secret docker-registry my-secret -n my-namespace --docker-username="my-username" --docker-password="my-password" --docker-email="my-email" --docker-server="https://ghcr.io"

// patch local service account
kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "my-secret"}]}'

库伯内特斯。亚马尔

apiVersion: apps/v1
kind: Deployment
metadata:
  name: okteto-repo
  namespace: my-namespace
spec:
  replicas: 1
  selector:
    matchLabels:
      app: okteto-repo
  template:
    metadata:
      labels:
        app: okteto-repo
    spec:
      containers:
        - name: okteto-repo
          image: ghcr.io/user/okteto-repo:latest
          ports:
            - containerPort: 80
      imagePullSecrets:
        - name: my-secret
---
apiVersion: v1
kind: Service
metadata:
  name: okteto-repo
  annotations:
    dev.okteto.com/auto-ingress: "true"
spec:
  type: ClusterIP
  selector:
    app: okteto-repo
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 80

你知道为什么不行吗?我能做什么?

非常感谢我亲爱的朋友们,非常感谢你们的每一个意见!

希望你们假期愉快。

干杯 迈克尔

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129434
 
1491 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Ramiro Berrelleza
Reply   •   1 楼
Ramiro Berrelleza    3 年前

我可以通过以下操作获取私人图像:

  1. 使用在GitHub中创建个人令牌 repo 通道
  2. 构建图像并将其推送到GitHub的容器注册表(我使用 okteto build -t ghcr.io/rberrelleza/go-getting-started:0.0.1 )
  3. 下载我的 kubeconfig credentials 从Okto Cloud通过运行 okteto context update-kubeconfig .
  4. 使用我的凭据创建一个秘密: kubectl create secret docker-registry gh-regcred --docker-server=ghcr.io --docker-username=rberrelleza --docker-password=ghp_XXXXXX
  5. 对默认帐户进行了修补,以将该机密作为图像拉取机密: kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "gh-regcred"}]}'
  6. 更新了kubernetes清单中的图像名称
  7. 创建了部署( kubectl apply -f k8s.yaml )

以下是我的kubernetes资源的样子,以防有所帮助:

# k8s.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello-world
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - image: ghcr.io/rberrelleza/go-getting-started:0.0.1
        name: hello-world

---

apiVersion: v1
kind: Service
metadata:
  name: hello-world
  annotations:
    dev.okteto.com/auto-ingress: "true"
spec:
  type: ClusterIP  
  ports:
  - name: "hello-world"
    port: 8080
  selector:
    app: hello-world
# default SA
apiVersion: v1
imagePullSecrets:
- name: gh-regcred
- name: okteto-regcred
kind: ServiceAccount
metadata:
  creationTimestamp: "2021-05-21T22:26:38Z"
  name: default
  namespace: rberrelleza
  resourceVersion: "405042662"
  uid: 2b6a6eef-2ce7-40d3-841a-c0a5497279f7
secrets:
- name: default-token-7tm42