Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing namespace in deploy step when using kustomize deployment target #239

Open
bcho opened this issue Nov 28, 2023 · 1 comment
Open
Labels
bug Something isn't working

Comments

@bcho
Copy link
Member

bcho commented Nov 28, 2023

Describe the bug

When creating a project using deployment type kustomize, the cli wizard will ask for target namespace:

✔ Please enter  the namespace to place new resources in (default: default): 

When using a non-default namespace, for example foo, the wizard will create the k8s deployment configuration like this:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: draft-demo
  labels:
    app: draft-demo
  namespace: foo

However, the later workflow setup wizard will not prompt for target namespace, and generate a deployment step like this:

# Deploys application based on manifest files from previous step
      - name: Deploy application
        uses: Azure/k8s-deploy@v4
        with:
          action: deploy
          manifests: ${{ steps.bake.outputs.manifestsBundle }}
          images: |
            ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.sha }}

This deployment step will deploy to default namespace by default:

Run Azure/k8s-deploy@v4
  with:
    action: deploy
    manifests: <omitted>
    images: <omitted>
  
    namespace: default # <---- default value for namespace
    pull-images: true
    strategy: basic
    route-method: service
    version-switch-buffer: 0
    traffic-split-method: pod
    percentage: 0
    force: false
    token: ***
    annotate-namespace: true
    private-cluster: false
    skip-tls-verify: false

Hence, the deployment will fail with error like:

the namespace from the provided object "foo" does not match the namespace "default". You must pass '--namespace=foo' to perform this operation.

Mention the platform you are using

OSS draft

To Reproduce
Steps to reproduce the behavior:

See above description.

Expected behavior

When using kustomize deployment target:

  1. the namespace should be set in kustomization.yaml instead of k8s object spec. By using a kustomization level namespace settings, we can ensure all controlled k8s objects are created under the same namespace.
  2. namespace settings should set in the deploy GitHub Action step.
@qpetraroia qpetraroia added the bug Something isn't working label Nov 28, 2023
@davidgamero
Copy link
Collaborator

thanks for this issue! yes i see the namespace is set in the object specs, which is unnecessary for kustomize, and overrides the supplied namespace later

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants