web-dev-qa-db-ja.com

プルイメージAzureContainer Registry-Kubernetes

Azureコンテナサービス(kubernetes)内で実行しているときにAzureコンテナレジストリからプルする方法についてアドバイスはありますか?

次のようなサンプル展開を試しましたが、イメージのプルが失敗します。

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: jenkins-master
spec:
  replicas: 1
  template:
    metadata:
      name: jenkins-master
      labels:
        name: jenkins-master
    spec:
      containers:
      - name: jenkins-master
        image: myregistry.azurecr.io/infrastructure/jenkins-master:1.0.0
        imagePullPolicy: Always
        readinessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 20
          timeoutSeconds: 5
        ports:
        - name: jenkins-web
          containerPort: 8080
        - name: jenkins-agent
          containerPort: 50000
10
eggsy84

この情報を読んだ後、これが機能するようになりました。

http://kubernetes.io/docs/user-guide/images/#specifying-imagepullsecrets-on-a-pod

したがって、最初にレジストリアクセスキーを作成します

kubectl create secret docker-registry myregistrykey --docker-server=https://myregistry.azurecr.io --docker-username=ACR_USERNAME --docker-password=ACR_PASSWORD --docker-email=ANY_EMAIL_ADDRESS

サーバーアドレスをACRアドレスのアドレスに置き換え、USERNAME、PASSWORD、およびEMAILアドレスをACRの管理者ユーザーからの値に置き換えます。注:メールアドレスは値にすることができます。

次に、デプロイでは、次のようにイメージをプルするためにそのキーを使用するようにkubernetesに指示するだけです。

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: jenkins-master
spec:
  replicas: 1
  template:
    metadata:
      name: jenkins-master
      labels:
        name: jenkins-master
    spec:
      containers:
      - name: jenkins-master
        image: myregistry.azurecr.io/infrastructure/jenkins-master:1.0.0
        imagePullPolicy: Always
        readinessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 20
          timeoutSeconds: 5
        ports:
        - name: jenkins-web
          containerPort: 8080
        - name: jenkins-agent
          containerPort: 50000
      imagePullSecrets:
        - name: myregistrykey
13
eggsy84

これは私たちが実際に簡単にしたものです。 Azure CLIを介してKubernetesクラスターをプロビジョニングすると、コントリビューター権限でサービスプリンシパルが作成されます。これにより、サブスクリプション内の任意のAzure ContainerRegistryのプルリクエストが有効になります。

PRがありました: https://github.com/kubernetes/kubernetes/pull/40142 これはKubernetesの新しいデプロイにマージされました。既存のkubernetesインスタンスでは機能しません。

2
Steve Lasker